diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-01-27 10:33:53 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-01-27 10:33:53 +0000 |
commit | e6f7c7d230c4b79f168e1363d2839134d2a15032 (patch) | |
tree | 57cde11ffd610b4fdd4c49f026c71eecc4a35cc4 | |
parent | 639695ece56586fa5f4e50f6676c43c7b7e2833c (diff) | |
download | fpc-e6f7c7d230c4b79f168e1363d2839134d2a15032.tar.gz |
fcl-passrc: removed okgeneric, it bites generic interface
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@41083 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/fcl-passrc/src/pastree.pp | 24 | ||||
-rw-r--r-- | packages/fcl-passrc/src/pparser.pp | 12 | ||||
-rw-r--r-- | packages/pastojs/src/pas2jsfiler.pp | 2 |
3 files changed, 15 insertions, 23 deletions
diff --git a/packages/fcl-passrc/src/pastree.pp b/packages/fcl-passrc/src/pastree.pp index b32ed1236f..f132d2fc61 100644 --- a/packages/fcl-passrc/src/pastree.pp +++ b/packages/fcl-passrc/src/pastree.pp @@ -57,10 +57,10 @@ resourcestring SPasTreeObjectType = 'object'; SPasTreeClassType = 'class'; SPasTreeInterfaceType = 'interface'; - SPasTreeGenericType = 'generic class'; SPasTreeSpecializedType = 'specialized class type'; - SPasClassHelperType = 'Class helper type'; - SPasRecordHelperType = 'Record helper type'; + SPasClassHelperType = 'class helper type'; + SPasRecordHelperType = 'record helper type'; + SPasTypeHelperType = 'type helper type'; SPasTreeArgument = 'argument'; SPasTreeProcedureType = 'procedure type'; SPasTreeResultElement = 'function result'; @@ -737,12 +737,12 @@ type TPasObjKind = ( okObject, okClass, okInterface, - okGeneric, // MG: what is okGeneric? + // okGeneric removed in FPC 3.3.1 check instead GenericTemplateTypes // okSpecialize removed in FPC 3.1.1 okClassHelper,okRecordHelper,okTypeHelper, okDispInterface); const - okWithFields = [okObject, okClass, okGeneric]; + okWithFields = [okObject, okClass]; okAllHelpers = [okClassHelper,okRecordHelper,okTypeHelper]; okWithClassFields = okWithFields+okAllHelpers; @@ -778,7 +778,6 @@ type ExternalNameSpace : String; ExternalName : String; InterfaceType: TPasClassInterfaceType; - Procedure SetGenericTemplates(AList : TFPList); override; Function FindMember(MemberClass : TPTreeElement; Const MemberName : String) : TPasElement; Function FindMemberInAncestors(MemberClass : TPTreeElement; Const MemberName : String) : TPasElement; Function InterfaceGUID : string; @@ -1630,8 +1629,9 @@ const 'strict private', 'strict protected'); ObjKindNames: array[TPasObjKind] of string = ( - 'object', 'class', 'interface', 'class', - 'class helper','record helper','type helper','dispinterface'); + 'object', 'class', 'interface', + 'class helper','record helper','type helper', + 'dispinterface'); InterfaceTypeNames: array[TPasClassInterfaceType] of string = ( 'COM', @@ -3037,9 +3037,9 @@ begin okObject: Result := SPasTreeObjectType; okClass: Result := SPasTreeClassType; okInterface: Result := SPasTreeInterfaceType; - okGeneric : Result := SPasTreeGenericType; okClassHelper : Result:=SPasClassHelperType; okRecordHelper : Result:=SPasRecordHelperType; + okTypeHelper : Result:=SPasTypeHelperType; else Result:='ObjKind('+IntToStr(ord(ObjKind))+')'; end; @@ -3059,12 +3059,6 @@ begin ForEachChildCall(aMethodCall,Arg,GUIDExpr,false); end; -procedure TPasClassType.SetGenericTemplates(AList: TFPList); -begin - ObjKind:=okGeneric; - inherited SetGenericTemplates(AList); -end; - function TPasClassType.FindMember(MemberClass: TPTreeElement; const MemberName: String): TPasElement; Var diff --git a/packages/fcl-passrc/src/pparser.pp b/packages/fcl-passrc/src/pparser.pp index 20a1b07876..9398428bda 100644 --- a/packages/fcl-passrc/src/pparser.pp +++ b/packages/fcl-passrc/src/pparser.pp @@ -6719,7 +6719,7 @@ begin tkType: begin case AType.ObjKind of - okClass,okObject,okGeneric, + okClass,okObject, okClassHelper,okRecordHelper,okTypeHelper: ; else ParseExc(nParserXNotAllowedInY,SParserXNotAllowedInY,['TYPE',ObjKindNames[AType.ObjKind]]); @@ -6732,7 +6732,7 @@ begin ParseExc(nParserExpectToken2Error,SParserExpectToken2Error, ['Procedure','Var']); case AType.ObjKind of - okClass,okObject,okGeneric, + okClass,okObject, okClassHelper,okRecordHelper,okTypeHelper: ; else ParseExc(nParserXNotAllowedInY,SParserXNotAllowedInY,['CONST',ObjKindNames[AType.ObjKind]]); @@ -6789,7 +6789,7 @@ begin if not haveClass then SaveComments; case AType.ObjKind of - okObject,okClass,okGeneric: ; + okObject,okClass: ; okClassHelper,okTypeHelper,okRecordHelper: begin if (CurToken=tkdestructor) and not haveClass then @@ -6836,7 +6836,7 @@ begin tkclass: begin case AType.ObjKind of - okClass,okObject,okGeneric, + okClass,okObject, okClassHelper,okRecordHelper,okTypeHelper: ; else ParseExc(nParserXNotAllowedInY,SParserXNotAllowedInY,['CLASS',ObjKindNames[AType.ObjKind]]); @@ -6876,7 +6876,7 @@ var Expr: TPasExpr; begin - if (CurToken=tkIdentifier) and (AType.ObjKind in [okClass,okGeneric]) then + if (CurToken=tkIdentifier) and (AType.ObjKind=okClass) then begin s := LowerCase(CurTokenString); if (s = 'sealed') or (s = 'abstract') then @@ -6896,7 +6896,7 @@ begin CheckToken(tkend); NextToken; AType.AncestorType := ParseTypeReference(AType,false,Expr); - if AType.ObjKind in [okClass,okGeneric] then + if AType.ObjKind=okClass then while CurToken=tkComma do begin NextToken; diff --git a/packages/pastojs/src/pas2jsfiler.pp b/packages/pastojs/src/pas2jsfiler.pp index 39be849691..512e7471cf 100644 --- a/packages/pastojs/src/pas2jsfiler.pp +++ b/packages/pastojs/src/pas2jsfiler.pp @@ -349,7 +349,6 @@ const 'Object', 'Class', 'Interface', - 'Generic', 'ClassHelper', 'RecordHelper', 'TypeHelper', @@ -5694,7 +5693,6 @@ begin 'Object': CreateClassType(okObject,Name); 'Class': CreateClassType(okClass,Name); 'Interface': CreateClassType(okInterface,Name); - 'Generic': CreateClassType(okGeneric,Name); 'ClassHelper': CreateClassType(okClassHelper,Name); 'RecordHelper': CreateClassType(okRecordHelper,Name); 'TypeHelper': CreateClassType(okTypeHelper,Name); |