diff options
author | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-06-13 08:05:28 +0000 |
---|---|---|
committer | mattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2019-06-13 08:05:28 +0000 |
commit | d0680f29e112864b4583ef34bec2a3a0e349ea65 (patch) | |
tree | 7c2ebc9146eef194d8395f76f31bf8160a88931d | |
parent | 832c8f890863acc2064e3e5ea8c1087af2fa3706 (diff) | |
download | fpc-d0680f29e112864b4583ef34bec2a3a0e349ea65.tar.gz |
pastojs: fixed var a: somearray = nil
git-svn-id: https://svn.freepascal.org/svn/fpc/trunk@42218 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | packages/pastojs/src/fppas2js.pp | 6 | ||||
-rw-r--r-- | packages/pastojs/tests/tcmodules.pas | 31 |
2 files changed, 36 insertions, 1 deletions
diff --git a/packages/pastojs/src/fppas2js.pp b/packages/pastojs/src/fppas2js.pp index 53315c08b0..be4f36ceed 100644 --- a/packages/pastojs/src/fppas2js.pp +++ b/packages/pastojs/src/fppas2js.pp @@ -15848,11 +15848,15 @@ begin else if ExprResolved.BaseType in btAllStringAndChars then begin US:=StrToJSString(aResolver.ComputeConstString(Expr,false,true)); - ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,El)); + ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,Expr)); Result:=ArrLit; for i:=1 to length(US) do ArrLit.Elements.AddElement.Expr:=CreateLiteralJSString(Expr,US[i]); end + else if ExprResolved.BaseType=btNil then + begin + Result:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,Expr)); + end else RaiseNotSupported(Expr,AContext,20170223133034); end diff --git a/packages/pastojs/tests/tcmodules.pas b/packages/pastojs/tests/tcmodules.pas index 29590b73da..c4ed504232 100644 --- a/packages/pastojs/tests/tcmodules.pas +++ b/packages/pastojs/tests/tcmodules.pas @@ -335,6 +335,7 @@ type Procedure TestProc_ConstOrder; Procedure TestProc_DuplicateConst; Procedure TestProc_LocalVarAbsolute; + Procedure TestProc_LocalVarInit; Procedure TestProc_ReservedWords; // anonymous functions @@ -4338,6 +4339,36 @@ begin ])); end; +procedure TTestModule.TestProc_LocalVarInit; +begin + StartProgram(false); + Add([ + 'type TBytes = array of byte;', + 'procedure DoIt;', + 'const c = 4;', + 'var', + ' b: byte = 1;', + ' w: word = 2+c;', + ' p: pointer = nil;', + ' Buffer: TBytes = nil;', + 'begin', + 'end;', + 'begin']); + ConvertProgram; + CheckSource('TestProc_LocalVarInit', + LinesToStr([ // statements + 'var c = 4;', + 'this.DoIt = function () {', + ' var b = 1;', + ' var w = 2 + 4;', + ' var p = null;', + ' var Buffer = [];', + '};', + '']), + LinesToStr([ + ])); +end; + procedure TTestModule.TestProc_ReservedWords; begin StartProgram(false); |