|
@@ -149,7 +149,7 @@ uses
|
|
symtable,
|
|
symtable,
|
|
defutil,defcmp,
|
|
defutil,defcmp,
|
|
{ pass 1 }
|
|
{ pass 1 }
|
|
- htypechk,procinfo,
|
|
|
|
|
|
+ htypechk,procinfo,pass_1,
|
|
nmem,ncnv,ninl,ncon,nld,nadd,
|
|
nmem,ncnv,ninl,ncon,nld,nadd,
|
|
{ parser specific stuff }
|
|
{ parser specific stuff }
|
|
pbase,pexpr,
|
|
pbase,pexpr,
|
|
@@ -844,10 +844,20 @@ function get_next_varsym(def: tabstractrecorddef; const SymList:TFPHashObjectLis
|
|
{ maybe pchar ? }
|
|
{ maybe pchar ? }
|
|
else
|
|
else
|
|
if is_char(def.pointeddef) and
|
|
if is_char(def.pointeddef) and
|
|
- ((node.nodetype=stringconstn) or is_constcharnode(node)) then
|
|
|
|
|
|
+ ((node.nodetype=stringconstn) or is_constcharnode(node) or is_constwidecharnode(node)) then
|
|
begin
|
|
begin
|
|
{ ensure that a widestring is converted to the current codepage }
|
|
{ ensure that a widestring is converted to the current codepage }
|
|
- if is_wide_or_unicode_string(node.resultdef) then
|
|
|
|
|
|
+ if is_constwidecharnode(node) then
|
|
|
|
+ begin
|
|
|
|
+ initwidestring(pw);
|
|
|
|
+ concatwidestringchar(pw,tcompilerwidechar(word(tordconstnode(node).value.svalue)));
|
|
|
|
+ hp:=cstringconstnode.createunistr(pw);
|
|
|
|
+ donewidestring(pw);
|
|
|
|
+ node.free;
|
|
|
|
+ do_typecheckpass(hp);
|
|
|
|
+ node:=hp;
|
|
|
|
+ end;
|
|
|
|
+ if (node.nodetype=stringconstn) and is_wide_or_unicode_string(node.resultdef) then
|
|
tstringconstnode(node).changestringtype(getansistringdef);
|
|
tstringconstnode(node).changestringtype(getansistringdef);
|
|
{ create a tcb for the string data (it's placed in a separate
|
|
{ create a tcb for the string data (it's placed in a separate
|
|
asmlist) }
|
|
asmlist) }
|