|
@@ -771,7 +771,10 @@ var S: string;
|
|
begin
|
|
begin
|
|
case Typ of
|
|
case Typ of
|
|
abstractsym : S:='abst';
|
|
abstractsym : S:='abst';
|
|
- varsym : S:='var';
|
|
|
|
|
|
+ fieldvarsym : S:='member';
|
|
|
|
+ globalvarsym,
|
|
|
|
+ localvarsym,
|
|
|
|
+ paravarsym : S:='var';
|
|
typesym : S:='type';
|
|
typesym : S:='type';
|
|
procsym : if VType=nil then
|
|
procsym : if VType=nil then
|
|
S:='proc'
|
|
S:='proc'
|
|
@@ -784,7 +787,7 @@ begin
|
|
errorsym : S:='error';
|
|
errorsym : S:='error';
|
|
syssym : S:='sys';
|
|
syssym : S:='sys';
|
|
labelsym : S:='label';
|
|
labelsym : S:='label';
|
|
- absolutesym : S:='abs';
|
|
|
|
|
|
+ absolutevarsym : S:='abs';
|
|
propertysym : S:='prop';
|
|
propertysym : S:='prop';
|
|
macrosym : S:='macro';
|
|
macrosym : S:='macro';
|
|
else S:='';
|
|
else S:='';
|
|
@@ -1431,8 +1434,10 @@ end;
|
|
begin
|
|
begin
|
|
New(Symbol, Init(Sym.Name,Sym.Typ,'',nil));
|
|
New(Symbol, Init(Sym.Name,Sym.Typ,'',nil));
|
|
case Sym.Typ of
|
|
case Sym.Typ of
|
|
- varsym :
|
|
|
|
- with tvarsym(sym) do
|
|
|
|
|
|
+ globalvarsym,
|
|
|
|
+ localvarsym,
|
|
|
|
+ paravarsym :
|
|
|
|
+ with tabstractvarsym(sym) do
|
|
begin
|
|
begin
|
|
if assigned(vartype.def) then
|
|
if assigned(vartype.def) then
|
|
if assigned(vartype.def.typesym) then
|
|
if assigned(vartype.def.typesym) then
|
|
@@ -1447,13 +1452,15 @@ end;
|
|
Symbol^.Flags:=(Symbol^.Flags or sfPointer);
|
|
Symbol^.Flags:=(Symbol^.Flags or sfPointer);
|
|
Symbol^.RelatedTypeID:=Ptrint(tpointerdef(vartype.def).pointertype.def);
|
|
Symbol^.RelatedTypeID:=Ptrint(tpointerdef(vartype.def).pointertype.def);
|
|
end;
|
|
end;
|
|
- if Table.symtabletype in [recordsymtable,objectsymtable] then
|
|
|
|
- MemInfo.Addr:=fieldoffset
|
|
|
|
|
|
+ if typ=fieldvarsym then
|
|
|
|
+ MemInfo.Addr:=tfieldvarsym(sym).fieldoffset
|
|
else
|
|
else
|
|
- if localloc.loc=LOC_REFERENCE then
|
|
|
|
- MemInfo.Addr:=localloc.reference.offset
|
|
|
|
- else
|
|
|
|
- MemInfo.Addr:=0;
|
|
|
|
|
|
+ begin
|
|
|
|
+ if tabstractnormalvarsym(sym).localloc.loc=LOC_REFERENCE then
|
|
|
|
+ MemInfo.Addr:=tabstractnormalvarsym(sym).localloc.reference.offset
|
|
|
|
+ else
|
|
|
|
+ MemInfo.Addr:=0;
|
|
|
|
+ end;
|
|
if assigned(vartype.def) and (vartype.def.deftype=arraydef) then
|
|
if assigned(vartype.def) and (vartype.def.deftype=arraydef) then
|
|
begin
|
|
begin
|
|
if tarraydef(vartype.def).highrange<tarraydef(vartype.def).lowrange then
|
|
if tarraydef(vartype.def).highrange<tarraydef(vartype.def).lowrange then
|
|
@@ -1467,6 +1474,20 @@ end;
|
|
MemInfo.PushSize:=paramanager.push_size(varspez,vartype.def,pocall_default);
|
|
MemInfo.PushSize:=paramanager.push_size(varspez,vartype.def,pocall_default);
|
|
Symbol^.SetMemInfo(MemInfo);
|
|
Symbol^.SetMemInfo(MemInfo);
|
|
end;
|
|
end;
|
|
|
|
+ fieldvarsym :
|
|
|
|
+ with tfieldvarsym(sym) do
|
|
|
|
+ begin
|
|
|
|
+ if assigned(vartype.def) and (vartype.def.deftype=arraydef) then
|
|
|
|
+ begin
|
|
|
|
+ if tarraydef(vartype.def).highrange<tarraydef(vartype.def).lowrange then
|
|
|
|
+ MemInfo.Size:=-1
|
|
|
|
+ else
|
|
|
|
+ MemInfo.Size:=getsize;
|
|
|
|
+ end
|
|
|
|
+ else
|
|
|
|
+ MemInfo.Size:=getsize;
|
|
|
|
+ Symbol^.SetMemInfo(MemInfo);
|
|
|
|
+ end;
|
|
constsym :
|
|
constsym :
|
|
SetDType(Symbol,GetConstValueName(tconstsym(sym)));
|
|
SetDType(Symbol,GetConstValueName(tconstsym(sym)));
|
|
enumsym :
|
|
enumsym :
|
|
@@ -1690,7 +1711,7 @@ begin
|
|
C^.Insert(P);
|
|
C^.Insert(P);
|
|
if (P^.typ=typesym) then
|
|
if (P^.typ=typesym) then
|
|
D^.Insert(P);
|
|
D^.Insert(P);
|
|
- if (P^.typ=varsym) and ((P^.flags and sfPointer)<>0) then
|
|
|
|
|
|
+ if (P^.typ in [globalvarsym,localvarsym,paravarsym]) and ((P^.flags and sfPointer)<>0) then
|
|
E^.Insert(P);
|
|
E^.Insert(P);
|
|
if P^.Items<>nil then
|
|
if P^.Items<>nil then
|
|
InsertSymbolCollection(P^.Items);
|
|
InsertSymbolCollection(P^.Items);
|
|
@@ -2122,7 +2143,10 @@ begin
|
|
end.
|
|
end.
|
|
{
|
|
{
|
|
$Log$
|
|
$Log$
|
|
- Revision 1.40 2004-10-14 16:53:26 mazen
|
|
|
|
|
|
+ Revision 1.41 2004-11-09 16:46:05 peter
|
|
|
|
+ * fixed compile
|
|
|
|
+
|
|
|
|
+ Revision 1.40 2004/10/14 16:53:26 mazen
|
|
* use SysUtils unit instead of Dos Unit
|
|
* use SysUtils unit instead of Dos Unit
|
|
+ overload Replace to use AnsiString
|
|
+ overload Replace to use AnsiString
|
|
|
|
|