mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 17:09:09 +02:00
pastojs: fixed var a: somearray = nil
git-svn-id: trunk@42218 -
This commit is contained in:
parent
a889888f2a
commit
d1830fc589
@ -15848,11 +15848,15 @@ begin
|
|||||||
else if ExprResolved.BaseType in btAllStringAndChars then
|
else if ExprResolved.BaseType in btAllStringAndChars then
|
||||||
begin
|
begin
|
||||||
US:=StrToJSString(aResolver.ComputeConstString(Expr,false,true));
|
US:=StrToJSString(aResolver.ComputeConstString(Expr,false,true));
|
||||||
ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,El));
|
ArrLit:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,Expr));
|
||||||
Result:=ArrLit;
|
Result:=ArrLit;
|
||||||
for i:=1 to length(US) do
|
for i:=1 to length(US) do
|
||||||
ArrLit.Elements.AddElement.Expr:=CreateLiteralJSString(Expr,US[i]);
|
ArrLit.Elements.AddElement.Expr:=CreateLiteralJSString(Expr,US[i]);
|
||||||
end
|
end
|
||||||
|
else if ExprResolved.BaseType=btNil then
|
||||||
|
begin
|
||||||
|
Result:=TJSArrayLiteral(CreateElement(TJSArrayLiteral,Expr));
|
||||||
|
end
|
||||||
else
|
else
|
||||||
RaiseNotSupported(Expr,AContext,20170223133034);
|
RaiseNotSupported(Expr,AContext,20170223133034);
|
||||||
end
|
end
|
||||||
|
@ -335,6 +335,7 @@ type
|
|||||||
Procedure TestProc_ConstOrder;
|
Procedure TestProc_ConstOrder;
|
||||||
Procedure TestProc_DuplicateConst;
|
Procedure TestProc_DuplicateConst;
|
||||||
Procedure TestProc_LocalVarAbsolute;
|
Procedure TestProc_LocalVarAbsolute;
|
||||||
|
Procedure TestProc_LocalVarInit;
|
||||||
Procedure TestProc_ReservedWords;
|
Procedure TestProc_ReservedWords;
|
||||||
|
|
||||||
// anonymous functions
|
// anonymous functions
|
||||||
@ -4338,6 +4339,36 @@ begin
|
|||||||
]));
|
]));
|
||||||
end;
|
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;
|
procedure TTestModule.TestProc_ReservedWords;
|
||||||
begin
|
begin
|
||||||
StartProgram(false);
|
StartProgram(false);
|
||||||
|
Loading…
Reference in New Issue
Block a user