Prechádzať zdrojové kódy

pastojs: error on nested type, bug #31983

git-svn-id: trunk@36460 -
Mattias Gaertner 8 rokov pred
rodič
commit
bff64521b3

+ 8 - 0
packages/pastojs/src/fppas2js.pp

@@ -877,6 +877,7 @@ type
     procedure RenameSubOverloads(Declarations: TFPList);
     procedure PushOverloadScope(Scope: TPasIdentifierScope);
     procedure PopOverloadScope;
+    procedure AddType(El: TPasType); override;
     procedure ResolveImplAsm(El: TPasImplAsmStatement); override;
     procedure ResolveNameExpr(El: TPasExpr; const aName: string;
       Access: TResolvedRefAccess); override;
@@ -1814,6 +1815,13 @@ begin
   FOverloadScopes.Delete(FOverloadScopes.Count-1);
 end;
 
+procedure TPas2JSResolver.AddType(El: TPasType);
+begin
+  inherited AddType(El);
+  if TopScope is TPasClassScope then
+    RaiseNotYetImplemented(20170608232534,El,'nested types');
+end;
+
 procedure TPas2JSResolver.ResolveImplAsm(El: TPasImplAsmStatement);
 {type
   TAsmToken = (

+ 17 - 0
packages/pastojs/tests/tcmodules.pas

@@ -386,6 +386,9 @@ type
     Procedure TestClassOf_TypeCast;
     Procedure TestClassOf_ImplicitFunctionCall;
 
+    // nested class
+    Procedure TestNestedClass_Fail;
+
     // external class
     Procedure TestExternalClass_Var;
     //ToDo Procedure TestExternalClass_Const;
@@ -8906,6 +8909,20 @@ begin
     '']));
 end;
 
+procedure TTestModule.TestNestedClass_Fail;
+begin
+  StartProgram(false);
+  Add([
+  'type',
+  '  TObject = class',
+  '    type TNested = longint;',
+  '  end;',
+  'begin']);
+  SetExpectedPasResolverError('not yet implemented: TNested:TPasAliasType [20170608232534] nested types',
+    nNotYetImplemented);
+  ConvertProgram;
+end;
+
 procedure TTestModule.TestExternalClass_Var;
 begin
   StartProgram(false);