Browse Source

fcl-passrc: ignore unknown functions in directive conditions, issue #31799

git-svn-id: trunk@36182 -
Mattias Gaertner 8 years ago
parent
commit
9eb7248817
2 changed files with 8 additions and 2 deletions
  1. 1 1
      packages/fcl-passrc/src/pasresolver.pp
  2. 7 1
      packages/fcl-passrc/src/pscanner.pp

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

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

+ 7 - 1
packages/fcl-passrc/src/pscanner.pp

@@ -479,7 +479,8 @@ type
     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_CheckModeSwitches    // stop on unknown modeswitch with an error
+    po_CheckModeSwitches,    // stop on unknown modeswitch with an error
+    po_CheckCondFunction     // stop on unknown function in conditional expression, default: return '0'
     );
   TPOptions = set of TPOption;
 
@@ -3358,6 +3359,11 @@ begin
   if Assigned(OnEvalFunction) then
     begin
     Result:=OnEvalFunction(Sender,Name,Param,Value);
+    if not (po_CheckCondFunction in Options) then
+      begin
+      Value:='0';
+      Result:=true;
+      end;
     exit;
     end;
   Value:='';