Browse Source

fcl-passrc: resolver: fixed unit without implementation

mattias 4 years ago
parent
commit
648a86be7e

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

@@ -5830,7 +5830,8 @@ begin
     begin
     begin
     // unit
     // unit
     FinishSection(CurModule.InterfaceSection);
     FinishSection(CurModule.InterfaceSection);
-    FinishSection(CurModule.ImplementationSection);
+    if CurModule.ImplementationSection<>nil then
+      FinishSection(CurModule.ImplementationSection);
     if CurModule.FinalizationSection<>nil then
     if CurModule.FinalizationSection<>nil then
       // finalization section finished -> resolve
       // finalization section finished -> resolve
       ResolveImplBlock(CurModule.FinalizationSection);
       ResolveImplBlock(CurModule.FinalizationSection);

+ 1 - 0
compiler/packages/fcl-passrc/src/pasuseanalyzer.pas

@@ -2680,6 +2680,7 @@ begin
   {$IFDEF VerbosePasAnalyzer}
   {$IFDEF VerbosePasAnalyzer}
   writeln('TPasAnalyzer.EmitSectionHints ',GetElModName(Section));
   writeln('TPasAnalyzer.EmitSectionHints ',GetElModName(Section));
   {$ENDIF}
   {$ENDIF}
+  if Section=nil then exit;
   // initialization, program or library sections
   // initialization, program or library sections
   aModule:=Section.GetModule;
   aModule:=Section.GetModule;
   UsesClause:=Section.UsesClause;
   UsesClause:=Section.UsesClause;