|
@@ -7345,6 +7345,20 @@ var
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+ procedure ConvCharToInt(var Arg: TJSElement; Param: TPasElement);
|
|
|
|
+ begin
|
|
|
|
+ if (Arg is TJSLiteral) and (TJSLiteral(Arg).Value.ValueType=jstString) then
|
|
|
|
+ begin
|
|
|
|
+ // convert char literal to int
|
|
|
|
+ ConvertCharLiteralToInt(TJSLiteral(Arg),Param,ArgContext);
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ begin
|
|
|
|
+ // convert char to int -> Arg.charCodeAt(0)
|
|
|
|
+ Arg:=CreateCallCharCodeAt(Arg,0,Param);
|
|
|
|
+ end;
|
|
|
|
+ end;
|
|
|
|
+
|
|
procedure ConvertArray(ArrayEl: TPasArrayType);
|
|
procedure ConvertArray(ArrayEl: TPasArrayType);
|
|
var
|
|
var
|
|
BracketEx, Sub: TJSBracketMemberExpression;
|
|
BracketEx, Sub: TJSBracketMemberExpression;
|
|
@@ -7455,22 +7469,16 @@ var
|
|
end
|
|
end
|
|
else
|
|
else
|
|
Int:=ord(TResEvalString(LowRg).S[1]);
|
|
Int:=ord(TResEvalString(LowRg).S[1]);
|
|
- if (Arg is TJSLiteral) and (TJSLiteral(Arg).Value.ValueType=jstString) then
|
|
|
|
- begin
|
|
|
|
- // convert char literal to int
|
|
|
|
- ConvertCharLiteralToInt(TJSLiteral(Arg),Param,ArgContext);
|
|
|
|
- end
|
|
|
|
- else
|
|
|
|
- begin
|
|
|
|
- // convert char to int -> Arg.charCodeAt(0)
|
|
|
|
- Arg:=CreateCallCharCodeAt(Arg,0,Param);
|
|
|
|
- end;
|
|
|
|
|
|
+ ConvCharToInt(Arg,Param);
|
|
end;
|
|
end;
|
|
revkUnicodeString:
|
|
revkUnicodeString:
|
|
|
|
+ begin
|
|
if length(TResEvalUTF16(LowRg).S)<>1 then
|
|
if length(TResEvalUTF16(LowRg).S)<>1 then
|
|
ArgContext.Resolver.RaiseXExpectedButYFound(20170910213247,'char','string',Param)
|
|
ArgContext.Resolver.RaiseXExpectedButYFound(20170910213247,'char','string',Param)
|
|
else
|
|
else
|
|
Int:=ord(TResEvalUTF16(LowRg).S[1]);
|
|
Int:=ord(TResEvalUTF16(LowRg).S[1]);
|
|
|
|
+ ConvCharToInt(Arg,Param);
|
|
|
|
+ end
|
|
else
|
|
else
|
|
RaiseNotSupported(Param,ArgContext,20170910170446);
|
|
RaiseNotSupported(Param,ArgContext,20170910170446);
|
|
end;
|
|
end;
|