]> granicus.if.org Git - clang/commitdiff
second half of PR3940: #line requires simple digit sequence.
authorChris Lattner <sabre@nondot.org>
Sat, 18 Apr 2009 06:38:24 +0000 (06:38 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 18 Apr 2009 06:38:24 +0000 (06:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69422 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticLexKinds.td
lib/Lex/PPDirectives.cpp
test/Preprocessor/line-directive.c

index 17ff3f0683a6b6029480402449996531de0a583c..564608865e62bb96891afd324b47118295afdc7b 100644 (file)
@@ -229,6 +229,8 @@ def err_pp_line_invalid_filename : Error<
   "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<
index e4b36fd15733d3496d4dc0c4c6de5eda96ccaf94..3d312748f9569a980c6062a2dae1bb436f19ef48 100644 (file)
@@ -654,7 +654,8 @@ static bool GetLineValue(Token &DigitTok, unsigned &Val,
   // 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;
 }
 
index 8877406adc23adf6de82ede28120963f9c4c0fc3..98f92f130c65719847906933a45f8ec1614b8d17 100644 (file)
@@ -70,3 +70,6 @@ typedef int w;  // expected-error {{redefinition of typedef 'w' is invalid in C}
 
 // PR3940
 #line 0xf  // expected-warning {{#line directive requires decimal line number}}
+#line 42U  // expected-warning {{#line directive requires a simple digit sequence}}
+
+