|
@@ -89,8 +89,15 @@ interface
|
|
function consume_sym(var srsym:tsym;var srsymtable:TSymtable):boolean;
|
|
function consume_sym(var srsym:tsym;var srsymtable:TSymtable):boolean;
|
|
function consume_sym_orgid(var srsym:tsym;var srsymtable:TSymtable;var s : string):boolean;
|
|
function consume_sym_orgid(var srsym:tsym;var srsymtable:TSymtable;var s : string):boolean;
|
|
|
|
|
|
- function try_consume_unitsym(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;consume_id,allow_specialize:boolean;out is_specialize:boolean;sympattern:TSymStr):boolean;
|
|
|
|
- function try_consume_unitsym_no_specialize(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;consume_id:boolean;sympattern:TSymStr):boolean;
|
|
|
|
|
|
+ type
|
|
|
|
+ tconsume_unitsym_flag = (
|
|
|
|
+ cuf_consume_id,
|
|
|
|
+ cuf_allow_specialize
|
|
|
|
+ );
|
|
|
|
+ tconsume_unitsym_flags = set of tconsume_unitsym_flag;
|
|
|
|
+
|
|
|
|
+ function try_consume_unitsym(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;flags:tconsume_unitsym_flags;out is_specialize:boolean;sympattern:TSymStr):boolean;
|
|
|
|
+ function try_consume_unitsym_no_specialize(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;flags:tconsume_unitsym_flags;sympattern:TSymStr):boolean;
|
|
|
|
|
|
function try_consume_hintdirective(var symopt:tsymoptions; var deprecatedmsg:pshortstring):boolean;
|
|
function try_consume_hintdirective(var symopt:tsymoptions; var deprecatedmsg:pshortstring):boolean;
|
|
|
|
|
|
@@ -205,7 +212,7 @@ implementation
|
|
end;
|
|
end;
|
|
searchsym(pattern,srsym,srsymtable);
|
|
searchsym(pattern,srsym,srsymtable);
|
|
{ handle unit specification like System.Writeln }
|
|
{ handle unit specification like System.Writeln }
|
|
- try_consume_unitsym_no_specialize(srsym,srsymtable,t,true,pattern);
|
|
|
|
|
|
+ try_consume_unitsym_no_specialize(srsym,srsymtable,t,[cuf_consume_id],pattern);
|
|
{ if nothing found give error and return errorsym }
|
|
{ if nothing found give error and return errorsym }
|
|
if assigned(srsym) then
|
|
if assigned(srsym) then
|
|
check_hints(srsym,srsym.symoptions,srsym.deprecatedmsg)
|
|
check_hints(srsym,srsym.symoptions,srsym.deprecatedmsg)
|
|
@@ -238,7 +245,7 @@ implementation
|
|
end;
|
|
end;
|
|
searchsym(pattern,srsym,srsymtable);
|
|
searchsym(pattern,srsym,srsymtable);
|
|
{ handle unit specification like System.Writeln }
|
|
{ handle unit specification like System.Writeln }
|
|
- try_consume_unitsym_no_specialize(srsym,srsymtable,t,true,pattern);
|
|
|
|
|
|
+ try_consume_unitsym_no_specialize(srsym,srsymtable,t,[cuf_consume_id],pattern);
|
|
{ if nothing found give error and return errorsym }
|
|
{ if nothing found give error and return errorsym }
|
|
if assigned(srsym) then
|
|
if assigned(srsym) then
|
|
check_hints(srsym,srsym.symoptions,srsym.deprecatedmsg)
|
|
check_hints(srsym,srsym.symoptions,srsym.deprecatedmsg)
|
|
@@ -254,7 +261,7 @@ implementation
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
- function try_consume_unitsym(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;consume_id,allow_specialize:boolean;out is_specialize:boolean;sympattern:TSymStr):boolean;
|
|
|
|
|
|
+ function try_consume_unitsym(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;flags:tconsume_unitsym_flags;out is_specialize:boolean;sympattern:TSymStr):boolean;
|
|
var
|
|
var
|
|
hmodule: tmodule;
|
|
hmodule: tmodule;
|
|
ns:ansistring;
|
|
ns:ansistring;
|
|
@@ -318,7 +325,7 @@ implementation
|
|
internalerror(201001120);
|
|
internalerror(201001120);
|
|
if hmodule.unit_index=current_filepos.moduleindex then
|
|
if hmodule.unit_index=current_filepos.moduleindex then
|
|
begin
|
|
begin
|
|
- if consume_id then
|
|
|
|
|
|
+ if cuf_consume_id in flags then
|
|
consume(_ID);
|
|
consume(_ID);
|
|
consume(_POINT);
|
|
consume(_POINT);
|
|
if srsym.typ=namespacesym then
|
|
if srsym.typ=namespacesym then
|
|
@@ -365,7 +372,7 @@ implementation
|
|
searchsym_in_module(tunitsym(srsym).module,'ANSICHAR',srsym,srsymtable)
|
|
searchsym_in_module(tunitsym(srsym).module,'ANSICHAR',srsym,srsymtable)
|
|
end
|
|
end
|
|
else
|
|
else
|
|
- if allow_specialize and (idtoken=_SPECIALIZE) then
|
|
|
|
|
|
+ if (cuf_allow_specialize in flags) and (idtoken=_SPECIALIZE) then
|
|
begin
|
|
begin
|
|
consume(_ID);
|
|
consume(_ID);
|
|
is_specialize:=true;
|
|
is_specialize:=true;
|
|
@@ -405,11 +412,12 @@ implementation
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
|
|
- function try_consume_unitsym_no_specialize(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;consume_id:boolean;sympattern:TSymStr):boolean;
|
|
|
|
|
|
+ function try_consume_unitsym_no_specialize(var srsym:tsym;var srsymtable:TSymtable;var tokentoconsume:ttoken;flags:tconsume_unitsym_flags;sympattern:TSymStr):boolean;
|
|
var
|
|
var
|
|
dummy: Boolean;
|
|
dummy: Boolean;
|
|
begin
|
|
begin
|
|
- result:=try_consume_unitsym(srsym,srsymtable,tokentoconsume,consume_id,false,dummy,sympattern);
|
|
|
|
|
|
+ exclude(flags,cuf_allow_specialize);
|
|
|
|
+ result:=try_consume_unitsym(srsym,srsymtable,tokentoconsume,flags,dummy,sympattern);
|
|
end;
|
|
end;
|
|
|
|
|
|
function try_consume_hintdirective(var symopt:tsymoptions; var deprecatedmsg:pshortstring):boolean;
|
|
function try_consume_hintdirective(var symopt:tsymoptions; var deprecatedmsg:pshortstring):boolean;
|