Browse Source

fcl-passrc: fixed parsing variable list with modifiers

git-svn-id: trunk@41495 -
Mattias Gaertner 6 years ago
parent
commit
4f9ce09c1c
2 changed files with 5 additions and 3 deletions
  1. 3 3
      packages/fcl-passrc/src/pparser.pp
  2. 2 0
      packages/pastojs/tests/tcfiler.pas

+ 3 - 3
packages/fcl-passrc/src/pparser.pp

@@ -4326,7 +4326,7 @@ begin
     UngetToken;
     exit;
     end;
-  Include(varMods,ExtMod);
+  Include(VarMods,ExtMod);
   Result:=Result+';'+CurTokenText;
 
   NextToken;
@@ -4444,14 +4444,14 @@ begin
       NextToken;
       If Curtoken<>tkSemicolon then
         UnGetToken;
-      VarEl:=TPasVariable(VarList[0]);
+      VarEl:=TPasVariable(VarList[OldListCount]);
       AllowedVarMods:=[];
       if ExternalStruct then
         AllowedVarMods:=[vmExternal]
       else
         AllowedVarMods:=[vmCVar,vmExternal,vmPublic,vmExport];
       Mods:=GetVariableModifiers(VarEl,VarMods,aLibName,aExpName,AllowedVarMods);
-      if (mods='') and (CurToken<>tkSemicolon) then
+      if (Mods='') and (CurToken<>tkSemicolon) then
         NextToken;
       end
     else

+ 2 - 0
packages/pastojs/tests/tcfiler.pas

@@ -1745,11 +1745,13 @@ procedure TTestPrecompile.TestPC_Record;
 begin
   StartUnit(false);
   Add([
+  '{$ModeSwitch externalclass}',
   'interface',
   'type',
   '  TRec = record',
   '    i: longint;',
   '    s: string;',
+  '    b: boolean external name ''ext'';',
   '  end;',
   '  P = pointer;', // alias type to built-in type
   '  TArrOfRec = array of TRec;',