Explorar el Código

fcl-passrc: scanner: added option po_CheckModeswitches to stop on unknown modeswitch, default off

git-svn-id: trunk@35940 -
Mattias Gaertner hace 8 años
padre
commit
da8e72b4fe
Se han modificado 2 ficheros con 9 adiciones y 3 borrados
  1. 1 1
      packages/fcl-passrc/src/pasresolver.pp
  2. 8 2
      packages/fcl-passrc/src/pscanner.pp

+ 1 - 1
packages/fcl-passrc/src/pasresolver.pp

@@ -2901,7 +2901,7 @@ begin
   if CurrentParser<>nil then
     CurrentParser.Options:=CurrentParser.Options
       +[po_resolvestandardtypes,po_nooverloadedprocs,po_keepclassforward,
-        po_arrayrangeexpr];
+        po_arrayrangeexpr,po_CheckModeswitches];
 end;
 
 procedure TPasResolver.CheckTopScope(ExpectedClass: TPasScopeClass);

+ 8 - 2
packages/fcl-passrc/src/pscanner.pp

@@ -386,7 +386,8 @@ type
     po_NoOverloadedProcs,    // do not create TPasOverloadedProc for procs with same name
     po_KeepClassForward,     // disabled: delete class fowards when there is a class declaration
     po_ArrayRangeExpr,       // enable: create TPasArrayType.IndexRange, disable: create TPasArrayType.Ranges
-    po_SelfToken             // Self is a token. For backward compatibility.
+    po_SelfToken,            // Self is a token. For backward compatibility.
+    po_CheckModeswitches     // stop on unknown modeswitch
     );
   TPOptions = set of TPOption;
 
@@ -1691,7 +1692,12 @@ begin
   While (MS<>msNone) and (SModeSwitchNames[MS]<>MSN) do
     MS:=Pred(MS);
   if (MS=msNone) or not (MS in AllowedModeSwitches) then
-    Error(nErrInvalidModeSwitch,SErrInvalidModeSwitch,[Param]);
+    begin
+    if po_CheckModeswitches in Options then
+      Error(nErrInvalidModeSwitch,SErrInvalidModeSwitch,[Param])
+    else
+      exit; // ignore
+    end;
   if (PM='-') or (PM='OFF') then
     CurrentModeSwitches:=CurrentModeSwitches-[MS]
   else