* always print the fully qualified type name in case a type is nested

git-svn-id: trunk@17172 -
This commit is contained in:
Jonas Maebe 2011-03-23 22:24:37 +00:00
parent c0423b6a78
commit 9ae0414dda
2 changed files with 25 additions and 13 deletions

View File

@ -76,6 +76,7 @@ interface
function is_publishable : boolean;override;
function needs_inittable : boolean;override;
function rtti_mangledname(rt:trttitype):string;override;
function OwnerHierarchyName: string; override;
function in_currentunit: boolean;
{ regvars }
function is_intregable : boolean;
@ -1029,6 +1030,22 @@ implementation
end;
function tstoreddef.OwnerHierarchyName: string;
var
tmp: tdef;
begin
tmp:=self;
result:='';
repeat
if tmp.owner.symtabletype in [ObjectSymtable,recordsymtable] then
tmp:=tdef(tmp.owner.defowner)
else
break;
result:=tabstractrecorddef(tmp).objrealname^+'.'+result;
until tmp=nil;
end;
function tstoreddef.in_currentunit: boolean;
var
st: tsymtable;
@ -2684,15 +2701,7 @@ implementation
var
tmp: tabstractrecorddef;
begin
Result:=objrealname^;
tmp:=self;
repeat
if tmp.owner.symtabletype in [ObjectSymtable,recordsymtable] then
tmp:=tabstractrecorddef(tmp.owner.defowner)
else
break;
Result:=tmp.objrealname^+'.'+Result;
until tmp=nil;
Result:=OwnerHierarchyName+objrealname^;
end;
function tabstractrecorddef.search_enumerator_get: tprocdef;

View File

@ -73,6 +73,7 @@ interface
function mangledparaname:string;
function getmangledparaname:string;virtual;
function rtti_mangledname(rt:trttitype):string;virtual;abstract;
function OwnerHierarchyName: string; virtual; abstract;
function size:asizeint;virtual;abstract;
function packedbitsize:asizeint;virtual;
function alignment:shortint;virtual;abstract;
@ -258,12 +259,13 @@ implementation
function tdef.typename:string;
begin
result:=OwnerHierarchyName;
if assigned(typesym) and
not(typ in [procvardef,procdef]) and
(typesym.realname[1]<>'$') then
result:=typesym.realname
result:=result+typesym.realname
else
result:=GetTypeName;
result:=result+GetTypeName;
end;
@ -275,10 +277,11 @@ implementation
function tdef.typesymbolprettyname:string;
begin
result:=OwnerHierarchyName;
if assigned(typesym) then
result:=typesym.prettyname
result:=result+typesym.prettyname
else
result:='<no type symbol>'
result:=result+'<no type symbol>'
end;
function tdef.mangledparaname:string;