From 617d7429dc0750b9664d5e38270189c78d2c2a69 Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 20 Jun 2019 20:38:53 +0000 Subject: pastojs: fixed pas2jsfiler git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42258 3ad0048d-3df7-0310-abae-a5850022a9f2 --- packages/pastojs/src/pas2jsfiler.pp | 41 +++++++------------------------------ packages/pastojs/tests/tcfiler.pas | 3 ++- 2 files changed, 9 insertions(+), 35 deletions(-) diff --git a/packages/pastojs/src/pas2jsfiler.pp b/packages/pastojs/src/pas2jsfiler.pp index f16276e4b3..acf05a3d73 100644 --- a/packages/pastojs/src/pas2jsfiler.pp +++ b/packages/pastojs/src/pas2jsfiler.pp @@ -747,7 +747,6 @@ type procedure WriteAliasType(Obj: TJSONObject; El: TPasAliasType; aContext: TPCUWriterContext); virtual; procedure WritePointerType(Obj: TJSONObject; El: TPasPointerType; aContext: TPCUWriterContext); virtual; procedure WriteSpecializeType(Obj: TJSONObject; El: TPasSpecializeType; aContext: TPCUWriterContext); virtual; - procedure WriteInlineTypeExpr(Obj: TJSONObject; Expr: TInlineTypeExpr; aContext: TPCUWriterContext); virtual; procedure WriteInlineSpecializeExpr(Obj: TJSONObject; Expr: TInlineSpecializeExpr; aContext: TPCUWriterContext); virtual; procedure WriteRangeType(Obj: TJSONObject; El: TPasRangeType; aContext: TPCUWriterContext); virtual; procedure WriteArrayType(Obj: TJSONObject; El: TPasArrayType; aContext: TPCUWriterContext); virtual; @@ -842,7 +841,6 @@ type procedure Set_Variable_VarType(RefEl: TPasElement; Data: TObject); procedure Set_AliasType_DestType(RefEl: TPasElement; Data: TObject); procedure Set_PointerType_DestType(RefEl: TPasElement; Data: TObject); - procedure Set_InlineTypeExpr_DestType(RefEl: TPasElement; Data: TObject); procedure Set_ArrayType_ElType(RefEl: TPasElement; Data: TObject); procedure Set_FileType_ElType(RefEl: TPasElement; Data: TObject); procedure Set_SetType_EnumType(RefEl: TPasElement; Data: TObject); @@ -951,7 +949,6 @@ type procedure ReadAliasType(Obj: TJSONObject; El: TPasAliasType; aContext: TPCUReaderContext); virtual; procedure ReadPointerType(Obj: TJSONObject; El: TPasPointerType; aContext: TPCUReaderContext); virtual; procedure ReadSpecializeType(Obj: TJSONObject; El: TPasSpecializeType; aContext: TPCUReaderContext); virtual; - procedure ReadInlineTypeExpr(Obj: TJSONObject; Expr: TInlineTypeExpr; aContext: TPCUReaderContext); virtual; procedure ReadInlineSpecializeExpr(Obj: TJSONObject; Expr: TInlineSpecializeExpr; aContext: TPCUReaderContext); virtual; procedure ReadRangeType(Obj: TJSONObject; El: TPasRangeType; aContext: TPCUReaderContext); virtual; procedure ReadArrayType(Obj: TJSONObject; El: TPasArrayType; aContext: TPCUReaderContext); virtual; @@ -3299,17 +3296,12 @@ begin WriteElementList(Obj,El,'Params',El.Params,aContext); end; -procedure TPCUWriter.WriteInlineTypeExpr(Obj: TJSONObject; Expr: TInlineTypeExpr; - aContext: TPCUWriterContext); -begin - WritePasExpr(Obj,Expr,pekSpecialize,eopNone,aContext); - WriteElType(Obj,Expr,'Dest',Expr.DestType,aContext); -end; - procedure TPCUWriter.WriteInlineSpecializeExpr(Obj: TJSONObject; Expr: TInlineSpecializeExpr; aContext: TPCUWriterContext); begin - WriteInlineTypeExpr(Obj,Expr,aContext); + WritePasExpr(Obj,Expr,pekSpecialize,eopNone,aContext); + WriteExpr(Obj,Expr,'Name',Expr.NameExpr,aContext); + WriteElementList(Obj,Expr,'Params',Expr.Params,aContext); end; procedure TPCUWriter.WriteRangeType(Obj: TJSONObject; El: TPasRangeType; @@ -4186,21 +4178,6 @@ begin RaiseMsg(20180211121757,El,GetObjName(RefEl)); end; -procedure TPCUReader.Set_InlineTypeExpr_DestType(RefEl: TPasElement; - Data: TObject); -var - El: TInlineTypeExpr absolute Data; -begin - if RefEl is TPasType then - begin - El.DestType:=TPasType(RefEl); - if RefEl.Parent<>El then - RefEl.AddRef{$IFDEF CheckPasTreeRefCount}('TInlineTypeExpr.DestType'){$ENDIF}; - end - else - RaiseMsg(20180211121750,El,GetObjName(RefEl)); -end; - procedure TPCUReader.Set_ArrayType_ElType(RefEl: TPasElement; Data: TObject); var El: TPasArrayType absolute Data; @@ -6632,18 +6609,14 @@ begin aContext); end; -procedure TPCUReader.ReadInlineTypeExpr(Obj: TJSONObject; - Expr: TInlineTypeExpr; aContext: TPCUReaderContext); -begin - ReadPasExpr(Obj,Expr,Expr.Kind,aContext); - ReadElType(Obj,'Dest',Expr,@Set_InlineTypeExpr_DestType,aContext); -end; - procedure TPCUReader.ReadInlineSpecializeExpr(Obj: TJSONObject; Expr: TInlineSpecializeExpr; aContext: TPCUReaderContext); begin Expr.Kind:=pekSpecialize; - ReadInlineTypeExpr(Obj,Expr,aContext); + Expr.NameExpr:=ReadExpr(Obj,Expr,'Name',aContext); + ReadElementList(Obj,Expr,'Params',Expr.Params, + {$IFDEF CheckPasTreeRefCount}'TPasSpecializeType.Params'{$ELSE}true{$ENDIF}, + aContext); end; procedure TPCUReader.ReadRangeType(Obj: TJSONObject; El: TPasRangeType; diff --git a/packages/pastojs/tests/tcfiler.pas b/packages/pastojs/tests/tcfiler.pas index 464b2608b2..491a2f62c9 100644 --- a/packages/pastojs/tests/tcfiler.pas +++ b/packages/pastojs/tests/tcfiler.pas @@ -1358,7 +1358,8 @@ end; procedure TCustomTestPrecompile.CheckRestoredInlineSpecializedExpr( const Path: string; Orig, Rest: TInlineSpecializeExpr); begin - CheckRestoredElOrRef(Path+'.DestType',Orig,Orig.DestType,Rest,Rest.DestType); + CheckRestoredElement(Path+'.NameExpr',Orig.NameExpr,Rest.NameExpr); + CheckRestoredElementList(Path+'.Params',Orig.Params,Rest.Params); end; procedure TCustomTestPrecompile.CheckRestoredRangeType(const Path: string; -- cgit v1.2.1