second half of PR3940: #line requires simple digit sequence.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69422 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td
index 17ff3f0..5646088 100644
--- a/include/clang/Basic/DiagnosticLexKinds.td
+++ b/include/clang/Basic/DiagnosticLexKinds.td
@@ -229,6 +229,8 @@
"invalid filename for #line directive">;
def warn_pp_line_decimal : Warning<
"#line directive requires decimal line number">;
+def warn_pp_line_digit_sequence : Warning<
+ "#line directive requires a simple digit sequence">;
def err_pp_linemarker_requires_integer : Error<
"line marker directive requires a positive integer argument">;
def err_pp_linemarker_invalid_filename : Error<
diff --git a/lib/Lex/PPDirectives.cpp b/lib/Lex/PPDirectives.cpp
index e4b36fd..3d31274 100644
--- a/lib/Lex/PPDirectives.cpp
+++ b/lib/Lex/PPDirectives.cpp
@@ -654,7 +654,8 @@
// because it is octal.
if (Literal.getRadix() != 10)
PP.Diag(DigitTok, diag::warn_pp_line_decimal);
-
+ else if (Literal.hasSuffix())
+ PP.Diag(DigitTok, diag::warn_pp_line_digit_sequence);
return false;
}
diff --git a/test/Preprocessor/line-directive.c b/test/Preprocessor/line-directive.c
index 8877406..98f92f1 100644
--- a/test/Preprocessor/line-directive.c
+++ b/test/Preprocessor/line-directive.c
@@ -70,3 +70,6 @@
// PR3940
#line 0xf // expected-warning {{#line directive requires decimal line number}}
+#line 42U // expected-warning {{#line directive requires a simple digit sequence}}
+
+