Browse Source

* Fix generic as record field name, bug ID #30718

git-svn-id: trunk@34880 -
michael 8 years ago
parent
commit
16d8435fde
2 changed files with 12 additions and 0 deletions
  1. 1 0
      packages/fcl-passrc/src/pparser.pp
  2. 11 0
      packages/fcl-passrc/tests/tctypeparser.pas

+ 1 - 0
packages/fcl-passrc/src/pparser.pp

@@ -4495,6 +4495,7 @@ begin
         else
         else
           ARec.Members.Add(Proc);
           ARec.Members.Add(Proc);
         end;
         end;
+      tkGeneric, // Counts as field name
       tkIdentifier :
       tkIdentifier :
         begin
         begin
 //        If (po_delphi in Scanner.Options) then
 //        If (po_delphi in Scanner.Options) then

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

@@ -234,6 +234,7 @@ type
     Procedure TestOnePlatformFieldDeprecated;
     Procedure TestOnePlatformFieldDeprecated;
     Procedure TestOnePlatformFieldPlatform;
     Procedure TestOnePlatformFieldPlatform;
     Procedure TestOneConstOneField;
     Procedure TestOneConstOneField;
+    Procedure TestOneGenericField;
     Procedure TestTwoFields;
     Procedure TestTwoFields;
     procedure TestTwoFieldProtected;
     procedure TestTwoFieldProtected;
     procedure TestTwoFieldStrictPrivate;
     procedure TestTwoFieldStrictPrivate;
@@ -1776,6 +1777,16 @@ begin
   AssertField2([]);
   AssertField2([]);
 end;
 end;
 
 
+procedure TTestRecordTypeParser.TestOneGenericField;
+begin
+  TestFields(['Generic : Integer;'],'',False);
+  AssertEquals('Member 1 field type',TPasVariable,TObject(TheRecord.Members[0]).ClassType);
+  AssertEquals('Field 1 name','Generic',Field1.Name);
+  AssertNotNull('Have 1 Field type',Field1.VarType);
+  AssertEquals('Field 1 type',TPasUnresolvedTypeRef,Field1.VarType.ClassType);
+  AssertEquals('Field 1 type name','Integer',Field1.VarType.Name);
+end;
+
 procedure TTestRecordTypeParser.TestTwoFields;
 procedure TTestRecordTypeParser.TestTwoFields;
 begin
 begin
   TestFields(['x : integer;','y : integer'],'',False);
   TestFields(['x : integer;','y : integer'],'',False);