Browse Source

* properly read +/- for the warn directive, resolves #41105

florian 6 months ago
parent
commit
56fa196b03
2 changed files with 29 additions and 1 deletions
  1. 7 1
      compiler/scandir.pas
  2. 22 0
      tests/webtbs/tw41105.pp

+ 7 - 1
compiler/scandir.pas

@@ -1801,7 +1801,13 @@ unit scandir;
         current_scanner.skipspace;
         ident:=current_scanner.readid;
         current_scanner.skipspace;
-        state:=current_scanner.readid;
+        if c in ['+','-'] then
+          begin
+            state:=c;
+            current_scanner.readchar;
+          end
+        else
+          state:=current_scanner.readid;
 
         { support both delphi and fpc switches }
         { use local ms_on/off/error tmsgstate values }

+ 22 - 0
tests/webtbs/tw41105.pp

@@ -0,0 +1,22 @@
+program Project1;
+
+// id
+// {$WARN 5023 ON}    // compiles
+// {$WARN 5023 OFF}   // compiles
+{$WARN 5023 +}     // ERROR
+{$WARN 5023 -}     // ERROR
+{$WARN 5023+}      // ERROR
+{$WARN 5023-}      // ERROR
+{$WARN 5023 ERROR} // compiles
+
+// name
+{$WARN NO_RETVAL ON}    // compiles
+{$WARN NO_RETVAL OFF}   // compiles
+{$WARN NO_RETVAL +}     // ERROR
+{$WARN NO_RETVAL -}     // ERROR
+{$WARN NO_RETVAL+}      // ERROR
+{$WARN NO_RETVAL-}      // ERROR
+{$WARN NO_RETVAL ERROR} // compiles
+
+begin
+end.