diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 4fc05014ff..46ee4b041a 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -540,6 +540,7 @@ resourcestring sInvalidVariableModifier = 'Invalid variable modifier "%s"'; sPublishedNameMustMatchExternal = 'Published name must match external'; sAWaitOnlyInAsyncProcedure = 'await only available in async procedure'; + sAsyncFunctionOrPromise = 'async function or promise'; sNewInstanceFunctionMustBeVirtual = 'NewInstance function must be virtual'; sNewInstanceFunctionMustHaveTwoParameters = 'NewInstance function must have two parameters'; sNewInstanceFunctionMustNotHaveOverloadAtX = 'NewInstance function must not have overload at %s'; @@ -6157,7 +6158,8 @@ var {$ENDIF} if RaiseOnError then - RaiseMsg(20201229232446,nXExpectedButYFound,sXExpectedButYFound,['async function or a promise',GetResolverResultDescription(ParamResolved)],Expr); + RaiseMsg(20201229232446, nXExpectedButYFound, sXExpectedButYFound, [ + sAsyncFunctionOrPromise, GetResolverResultDescription(ParamResolved)], Expr); end; end; diff --git a/packages/pastojs/tests/tcgenerics.pas b/packages/pastojs/tests/tcgenerics.pas index e6b6022766..8e47fb5a88 100644 --- a/packages/pastojs/tests/tcgenerics.pas +++ b/packages/pastojs/tests/tcgenerics.pas @@ -40,7 +40,8 @@ type procedure TestGen_Class_OverloadsInUnit; procedure TestGen_ClassForward_CircleRTTI; procedure TestGen_Class_Nested_RTTI; - Procedure TestGen_Class_ClassVarRecord_UnitImpl; + procedure TestGen_Class_ClassVarRecord_UnitImpl; + procedure TestGen_Class_Field_ArrayOfSpec; // generic external class procedure TestGen_ExtClass_VarArgsOfType; @@ -1289,6 +1290,47 @@ begin ''])); end; +procedure TTestGenerics.TestGen_Class_Field_ArrayOfSpec; +begin + StartProgram(false); + Add([ + '{$mode delphi}', + 'type', + ' TObject = class', + ' end;', + ' TWing = class', + ' end;', + ' TBird = class', + ' Wings: array of TWing;', + ' end;', + 'begin', + 'end.']); + ConvertProgram; + CheckSource('TestGen_Class_Field_ArrayOfSpec', + LinesToStr([ // statements + 'rtl.createClass(this, "TObject", null, function () {', + ' this.$init = function () {', + ' };', + ' this.$final = function () {', + ' };', + '});', + 'rtl.createClass(this, "TWing$G1", this.TObject, function () {', + '}, "TWing");', + 'rtl.createClass(this, "TBird", this.TObject, function () {', + ' this.$init = function () {', + ' $mod.TObject.$init.call(this);', + ' this.Wings = [];', + ' };', + ' this.$final = function () {', + ' this.Wings = undefined;', + ' $mod.TObject.$final.call(this);', + ' };', + '});', + '']), + LinesToStr([ // $mod.$main + ''])); +end; + procedure TTestGenerics.TestGen_ExtClass_VarArgsOfType; begin StartProgram(false); diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index 1179e7b35c..fe4038ecc9 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -35171,7 +35171,7 @@ begin 'end;', 'begin', ' Fly(1);']); - SetExpectedPasResolverError('async function expected, but Result:Word found',nXExpectedButYFound); + SetExpectedPasResolverError('async function or promise expected, but Result:Word found',nXExpectedButYFound); ConvertProgram; end;