diff options
Diffstat (limited to 'packages/fcl-passrc/src/pastree.pp')
| -rw-r--r-- | packages/fcl-passrc/src/pastree.pp | 60 |
1 files changed, 54 insertions, 6 deletions
diff --git a/packages/fcl-passrc/src/pastree.pp b/packages/fcl-passrc/src/pastree.pp index 027047e825..57e2d887dd 100644 --- a/packages/fcl-passrc/src/pastree.pp +++ b/packages/fcl-passrc/src/pastree.pp @@ -121,7 +121,7 @@ type end; TPasExprKind = (pekIdent, pekNumber, pekString, pekSet, pekNil, pekBoolConst, pekRange, - pekUnary, pekBinary, pekFuncParams, pekArrayParams, pekListOfExp); + pekUnary, pekBinary, pekFuncParams, pekArrayParams, pekListOfExp, pekInherited, pekSelf); TExprOpCode = (eopNone, eopAdd,eopSubtract,eopMultiply,eopDivide, eopDiv,eopMod, eopPower,// arithmetic @@ -178,6 +178,20 @@ type function GetDeclaration(full : Boolean) : string; override; end; + { TInheritedExpr } + + TInheritedExpr = class(TPasExpr) + constructor Create(AParent : TPasElement); overload; + function GetDeclaration(full : Boolean) : string; override; + end; + + { TSelfExpr } + + TSelfExpr = class(TPasExpr) + constructor Create(AParent : TPasElement); overload; + function GetDeclaration(full : Boolean) : string; override; + end; + { TParamsExpr } TParamsExpr = class(TPasExpr) @@ -454,6 +468,7 @@ type AncestorType: TPasType; // TPasClassType or TPasUnresolvedTypeRef IsPacked: Boolean; // 12/04/04 - Dave - Added IsForward : Boolean; + IsShortDefinition: Boolean;//class(anchestor); without end Members: TList; // array of TPasElement objects InterfaceGUID : string; // 15/06/07 - Inoussa @@ -1346,6 +1361,7 @@ constructor TPasClassType.Create(const AName: string; AParent: TPasElement); begin inherited Create(AName, AParent); IsPacked := False; // 12/04/04 - Dave - Added + IsShortDefinition := False; Members := TList.Create; Modifiers := TStringList.Create; ClassVars := TList.Create; @@ -1388,7 +1404,7 @@ var begin for i := 0 to Args.Count - 1 do TPasArgument(Args[i]).Release; - Args.Free; + FreeAndNil(Args); inherited Destroy; end; @@ -1726,12 +1742,14 @@ begin Result:=TPasImplAssign.Create('', Self); Result.left:=left; Result.right:=right; + AddElement(Result); end; function TPasImplBlock.AddSimple(exp:TPasExpr):TPasImplSimple; begin Result:=TPasImplSimple.Create('', Self); Result.expr:=exp; + AddElement(Result); end; function TPasImplBlock.CloseOnSemicolon: boolean; @@ -2591,7 +2609,7 @@ Var I : Integer; begin - For I:=0 to Length(Params) do + For I:=0 to High(Params) do begin If (Result<>'') then Result:=Result+', '; @@ -2629,7 +2647,7 @@ Function TRecordValues.GetDeclaration(Full : Boolean):AnsiString; Var I : Integer; begin - For I:=0 to Length(Fields) do + For I:=0 to High(Fields) do begin If Result='' then Result:=Result+'; '; @@ -2661,20 +2679,36 @@ begin Fields[i].ValueExp:=Value; end; -{ TArrayValues } +{ TNilExpr } Function TNilExpr.GetDeclaration(Full :Boolean):AnsiString; begin Result:='Nil'; end; +{ TInheritedExpr } + +Function TInheritedExpr.GetDeclaration(Full :Boolean):AnsiString; +begin + Result:='Inherited'; +end; + +{ TSelfExpr } + +Function TSelfExpr.GetDeclaration(Full :Boolean):AnsiString; +begin + Result:='Self'; +end; + +{ TArrayValues } + Function TArrayValues.GetDeclaration(Full: Boolean):AnsiString; Var I : Integer; begin - For I:=0 to Length(Values) do + For I:=0 to High(Values) do begin If Result='' then Result:=Result+', '; @@ -2712,6 +2746,20 @@ begin inherited Create(AParent,pekNil, eopNone); end; +{ TInheritedExpr } + +constructor TInheritedExpr.Create(AParent : TPasElement); +begin + inherited Create(AParent,pekInherited, eopNone); +end; + +{ TSelfExpr } + +constructor TSelfExpr.Create(AParent : TPasElement); +begin + inherited Create(AParent,pekSelf, eopNone); +end; + { TPasLabels } constructor TPasLabels.Create(const AName:string;AParent:TPasElement); |
