52 lines
1.5 KiB
C
52 lines
1.5 KiB
C
// 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 {{.*}} <line:9
|
|
// CHECK-NEXT: StringLiteral {{.*}} <col:3>
|
|
|
|
// 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 {{.*}} <line:1000
|
|
// CHECK: StringLiteral {{.*}} <col:3>
|
|
|
|
// 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__\
|
|
);
|
|
}
|