mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-15 16:09:27 +02:00
pastojs: Unicode character constants outside of BMP
git-svn-id: trunk@39126 -
This commit is contained in:
parent
df71ab3ecf
commit
a452e2dd5f
@ -3944,13 +3944,21 @@ begin
|
|||||||
'A'..'F': u:=u*16+ord(c)-ord('A')+10;
|
'A'..'F': u:=u*16+ord(c)-ord('A')+10;
|
||||||
else break;
|
else break;
|
||||||
end;
|
end;
|
||||||
if u>$ffff then
|
if u>$10FFFF then
|
||||||
RangeError(20170523115712);
|
RangeError(20170523115712);
|
||||||
inc(p);
|
inc(p);
|
||||||
until false;
|
until false;
|
||||||
if p=StartP then
|
if p=StartP then
|
||||||
RaiseInternalError(20170207164956);
|
RaiseInternalError(20170207164956);
|
||||||
AddHash(u);
|
if u>$ffff then
|
||||||
|
begin
|
||||||
|
// split into two
|
||||||
|
dec(u,$10000);
|
||||||
|
AddHash($D800+(u shr 10));
|
||||||
|
AddHash($DC00+(u and $3ff));
|
||||||
|
end
|
||||||
|
else
|
||||||
|
AddHash(u);
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
|
@ -4083,25 +4083,27 @@ end;
|
|||||||
procedure TTestResolver.TestStringOperators;
|
procedure TTestResolver.TestStringOperators;
|
||||||
begin
|
begin
|
||||||
StartProgram(false);
|
StartProgram(false);
|
||||||
Add('var');
|
Add([
|
||||||
Add(' i,j:string;');
|
'var',
|
||||||
Add(' k:char;');
|
' i,j:string;',
|
||||||
Add(' w:widechar;');
|
' k:char;',
|
||||||
Add('begin');
|
' w:widechar;',
|
||||||
Add(' i:='''';');
|
'begin',
|
||||||
Add(' i:=''''+'''';');
|
' i:='''';',
|
||||||
Add(' i:=k+'''';');
|
' i:=''''+'''';',
|
||||||
Add(' i:=''''+k;');
|
' i:=k+'''';',
|
||||||
Add(' i:=''a''+j;');
|
' i:=''''+k;',
|
||||||
Add(' i:=''abc''+j;');
|
' i:=''a''+j;',
|
||||||
Add(' k:=#65;');
|
' i:=''abc''+j;',
|
||||||
Add(' k:=#$42;');
|
' k:=#65;',
|
||||||
Add(' k:=''a'';');
|
' k:=#$42;',
|
||||||
Add(' k:='''''''';');
|
' k:=''a'';',
|
||||||
Add(' k:=j[1];');
|
' k:='''''''';',
|
||||||
Add(' w:=k;');
|
' k:=j[1];',
|
||||||
Add(' w:=#66;');
|
' w:=k;',
|
||||||
Add(' w:=#6666;');
|
' w:=#66;',
|
||||||
|
' w:=#6666;',
|
||||||
|
'']);
|
||||||
ParseProgram;
|
ParseProgram;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -5597,6 +5597,8 @@ begin
|
|||||||
' s:=''foo''#13''bar'';',
|
' s:=''foo''#13''bar'';',
|
||||||
' s:=''"'';',
|
' s:=''"'';',
|
||||||
' s:=''"''''"'';',
|
' s:=''"''''"'';',
|
||||||
|
' s:=#$20AC;', // euro
|
||||||
|
' s:=#$10437;', //
|
||||||
' s:=default(string);',
|
' s:=default(string);',
|
||||||
'']);
|
'']);
|
||||||
ConvertProgram;
|
ConvertProgram;
|
||||||
@ -5612,6 +5614,8 @@ begin
|
|||||||
'$mod.s="foo\rbar";',
|
'$mod.s="foo\rbar";',
|
||||||
'$mod.s=''"'';',
|
'$mod.s=''"'';',
|
||||||
'$mod.s=''"\''"'';',
|
'$mod.s=''"\''"'';',
|
||||||
|
'$mod.s="€";',
|
||||||
|
'$mod.s="'#$F0#$90#$90#$B7'";',
|
||||||
'$mod.s="";'
|
'$mod.s="";'
|
||||||
]));
|
]));
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user