Browse Source

* Export statement allows index and name

Michaël Van Canneyt 3 years ago
parent
commit
14f62b06d2
2 changed files with 17 additions and 3 deletions
  1. 6 3
      packages/fcl-passrc/src/pparser.pp
  2. 11 0
      packages/fcl-passrc/tests/tcmoduleparser.pas

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

@@ -4398,9 +4398,12 @@ begin
       if CurTokenIsIdentifier('INDEX') then
         begin
         NextToken;
-        E.Exportindex:=DoParseExpression(E,Nil)
-        end
-      else if CurTokenIsIdentifier('NAME') then
+        E.Exportindex:=DoParseExpression(E,Nil);
+        nextToken;
+        if not CurTokenIsIdentifier('NAME') then
+          UngetToken;
+        end;
+      if CurTokenIsIdentifier('NAME') then
         begin
         NextToken;
         E.ExportName:=DoParseExpression(E,Nil)

+ 11 - 0
packages/fcl-passrc/tests/tcmoduleparser.pas

@@ -47,6 +47,7 @@ Type
     Procedure TestEmptyLibraryExports;
     Procedure TestEmptyLibraryExportsAlias;
     Procedure TestEmptyLibraryExportsIndex;
+    Procedure TestEmptyLibraryExportsIndexAndName;
     Procedure TestEmptyLibraryExportsTwo;
     Procedure TestEmptyLibraryExportsTwoAlias;
     Procedure TestEmptyLibraryExportsTwoIndex;
@@ -367,6 +368,16 @@ begin
   AssertExportSymbol('Export symbol a',0,'A','',23);
 end;
 
+procedure TTestModuleParser.TestEmptyLibraryExportsIndexAndName;
+begin
+  StartLibrary('');
+  UsesClause(['b']);
+  Add('exports A index 23 name ''funa'';');
+  ParseLibrary;
+  AssertEquals('1 export symbol',1,PasLibrary.LibrarySection.ExportSymbols.Count);
+  AssertExportSymbol('Export symbol a',0,'A','funa',23);
+end;
+
 procedure TTestModuleParser.TestEmptyLibraryExportsTwo;
 begin
   StartLibrary('');