summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-06-13 08:05:28 +0000
committermattias <mattias@3ad0048d-3df7-0310-abae-a5850022a9f2>2019-06-13 08:05:28 +0000
commitd0680f29e112864b4583ef34bec2a3a0e349ea65 (patch)
tree7c2ebc9146eef194d8395f76f31bf8160a88931d
parent832c8f890863acc2064e3e5ea8c1087af2fa3706 (diff)
downloadfpc-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.pp6
-rw-r--r--packages/pastojs/tests/tcmodules.pas31
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);