// RUN: %clang_cc1 -std=c2x -ast-dump %s | FileCheck %s /* WG14 N2322: partial * Preprocessor line numbers unspecified */ void n2322() { // The line number associated with a pp-token should be the line number of // the first character of the pp-token. "this string literal \ spans multiple lines \ before terminating"; // CHECK: ImplicitCastExpr {{.*}} // The line number associated with a pp-directive should be the line number // of the line with the first # token. // Possible FIXME: The AST node should be on line 1002 if we take the line // number to be associated with the first # token. However, this relies on an // interpretation of the standard definition of "presumed line" to be before // line splices are removed. The standard leaves this unspecified, so this // may not represent an actual issue. #\ line\ 1000 "string literal"; // CHECK: ImplicitCastExpr {{.*}} // The line number associated with a macro invocation should be the line // number of the first character of the macro name in the invocation. // // Reset the line number to make it easier to understand the next test. // FIXME: The line number should be 2005 (first letter of the macro name) and // not 2007 (closing parenthesis of the macro invocation). #line 2000 #define F( \ ) \ _\ _LINE__ _Static_assert(F(\ \ ) == 2007); // Reset the line number again for ease. #line 2000 _Static_assert(2001 == \ __LI\ NE__\ ); }