Browse Source

pastojs: forbid external class const expr

git-svn-id: trunk@38057 -
Mattias Gaertner 7 years ago
parent
commit
eb3ba71b98
1 changed files with 26 additions and 11 deletions
  1. 26 11
      packages/pastojs/tests/tcmodules.pas

+ 26 - 11
packages/pastojs/tests/tcmodules.pas

@@ -427,7 +427,7 @@ type
 
     // external class
     Procedure TestExternalClass_Var;
-    //ToDo Procedure TestExternalClass_Const;
+    Procedure TestExternalClass_ConstFail;
     Procedure TestExternalClass_Dollar;
     Procedure TestExternalClass_DuplicateVarFail;
     Procedure TestExternalClass_Method;
@@ -10456,16 +10456,17 @@ end;
 procedure TTestModule.TestExternalClass_Var;
 begin
   StartProgram(false);
-  Add('{$modeswitch externalclass}');
-  Add('type');
-  Add('  TExtA = class external name ''ExtObj''');
-  Add('    Id: longint external name ''$Id'';');
-  Add('    B: longint;');
-  Add('  end;');
-  Add('var Obj: TExtA;');
-  Add('begin');
-  Add('  obj.id:=obj.id+1;');
-  Add('  obj.B:=obj.B+1;');
+  Add([
+  '{$modeswitch externalclass}',
+  'type',
+  '  TExtA = class external name ''ExtObj''',
+  '    Id: longint external name ''$Id'';',
+  '    B: longint;',
+  '  end;',
+  'var Obj: TExtA;',
+  'begin',
+  '  obj.id:=obj.id+1;',
+  '  obj.B:=obj.B+1;']);
   ConvertProgram;
   CheckSource('TestExternalClass_Var',
     LinesToStr([ // statements
@@ -10477,6 +10478,20 @@ begin
     '']));
 end;
 
+procedure TTestModule.TestExternalClass_ConstFail;
+begin
+  StartProgram(false);
+  Add([
+  '{$modeswitch externalclass}',
+  'type',
+  '  TExtA = class external name ''ExtObj''',
+  '    const Id: longint = 3;',
+  '  end;',
+  'begin']);
+  SetExpectedPasResolverError('illegal qualifier "="',nIllegalQualifier);
+  ConvertProgram;
+end;
+
 procedure TTestModule.TestExternalClass_Dollar;
 begin
   StartProgram(false);