mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 17:19:19 +02:00
+ tsym.prettyname
* don't complain about unused compiler generated type symbols of generic specializations, resolves #13405 git-svn-id: trunk@13523 -
This commit is contained in:
parent
65690b9eee
commit
a1179733a7
@ -583,11 +583,11 @@ implementation
|
|||||||
MessagePos(tsym(sym).fileinfo,sym_w_function_result_not_set)
|
MessagePos(tsym(sym).fileinfo,sym_w_function_result_not_set)
|
||||||
end
|
end
|
||||||
else if (tsym(sym).owner.symtabletype=parasymtable) then
|
else if (tsym(sym).owner.symtabletype=parasymtable) then
|
||||||
MessagePos1(tsym(sym).fileinfo,sym_h_para_identifier_not_used,tsym(sym).realname)
|
MessagePos1(tsym(sym).fileinfo,sym_h_para_identifier_not_used,tsym(sym).prettyname)
|
||||||
else if (tsym(sym).owner.symtabletype=ObjectSymtable) then
|
else if (tsym(sym).owner.symtabletype=ObjectSymtable) then
|
||||||
MessagePos2(tsym(sym).fileinfo,sym_n_private_identifier_not_used,tsym(sym).owner.realname^,tsym(sym).realname)
|
MessagePos2(tsym(sym).fileinfo,sym_n_private_identifier_not_used,tsym(sym).owner.realname^,tsym(sym).prettyname)
|
||||||
else
|
else
|
||||||
MessagePos1(tsym(sym).fileinfo,sym_n_local_identifier_not_used,tsym(sym).realname);
|
MessagePos1(tsym(sym).fileinfo,sym_n_local_identifier_not_used,tsym(sym).prettyname);
|
||||||
end
|
end
|
||||||
else if tabstractvarsym(sym).varstate in [vs_written,vs_initialised] then
|
else if tabstractvarsym(sym).varstate in [vs_written,vs_initialised] then
|
||||||
begin
|
begin
|
||||||
@ -595,16 +595,16 @@ implementation
|
|||||||
begin
|
begin
|
||||||
if not(tabstractvarsym(sym).varspez in [vs_var,vs_out]) and
|
if not(tabstractvarsym(sym).varspez in [vs_var,vs_out]) and
|
||||||
not(vo_is_funcret in tabstractvarsym(sym).varoptions) then
|
not(vo_is_funcret in tabstractvarsym(sym).varoptions) then
|
||||||
MessagePos1(tsym(sym).fileinfo,sym_h_para_identifier_only_set,tsym(sym).realname)
|
MessagePos1(tsym(sym).fileinfo,sym_h_para_identifier_only_set,tsym(sym).prettyname)
|
||||||
end
|
end
|
||||||
else if (tsym(sym).owner.symtabletype=ObjectSymtable) then
|
else if (tsym(sym).owner.symtabletype=ObjectSymtable) then
|
||||||
MessagePos2(tsym(sym).fileinfo,sym_n_private_identifier_only_set,tsym(sym).owner.realname^,tsym(sym).realname)
|
MessagePos2(tsym(sym).fileinfo,sym_n_private_identifier_only_set,tsym(sym).owner.realname^,tsym(sym).prettyname)
|
||||||
else if tabstractvarsym(sym).varoptions*[vo_is_funcret,vo_is_public,vo_is_external]=[] then
|
else if tabstractvarsym(sym).varoptions*[vo_is_funcret,vo_is_public,vo_is_external]=[] then
|
||||||
MessagePos1(tsym(sym).fileinfo,sym_n_local_identifier_only_set,tsym(sym).realname);
|
MessagePos1(tsym(sym).fileinfo,sym_n_local_identifier_only_set,tsym(sym).prettyname);
|
||||||
end
|
end
|
||||||
else if (tabstractvarsym(sym).varstate = vs_read_not_warned) and
|
else if (tabstractvarsym(sym).varstate = vs_read_not_warned) and
|
||||||
([vo_is_public,vo_is_external] * tabstractvarsym(sym).varoptions = []) then
|
([vo_is_public,vo_is_external] * tabstractvarsym(sym).varoptions = []) then
|
||||||
MessagePos1(tsym(sym).fileinfo,sym_w_identifier_only_read,tsym(sym).realname)
|
MessagePos1(tsym(sym).fileinfo,sym_w_identifier_only_read,tsym(sym).prettyname)
|
||||||
end
|
end
|
||||||
else if ((tsym(sym).owner.symtabletype in
|
else if ((tsym(sym).owner.symtabletype in
|
||||||
[ObjectSymtable,parasymtable,localsymtable,staticsymtable])) then
|
[ObjectSymtable,parasymtable,localsymtable,staticsymtable])) then
|
||||||
@ -613,20 +613,23 @@ implementation
|
|||||||
(sp_internal in tsym(sym).symoptions) then
|
(sp_internal in tsym(sym).symoptions) then
|
||||||
exit;
|
exit;
|
||||||
{ do not claim for inherited private fields !! }
|
{ do not claim for inherited private fields !! }
|
||||||
if (Tsym(sym).refs=0) and (tsym(sym).owner.symtabletype=ObjectSymtable) then
|
if (tsym(sym).refs=0) and (tsym(sym).owner.symtabletype=ObjectSymtable) then
|
||||||
MessagePos2(tsym(sym).fileinfo,sym_n_private_method_not_used,tsym(sym).owner.realname^,tsym(sym).realname)
|
MessagePos2(tsym(sym).fileinfo,sym_n_private_method_not_used,tsym(sym).owner.realname^,tsym(sym).prettyname)
|
||||||
{ units references are problematic }
|
{ units references are problematic }
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
if (Tsym(sym).refs=0) and
|
if (tsym(sym).refs=0) and
|
||||||
not(tsym(sym).typ in [enumsym,unitsym]) and
|
not(tsym(sym).typ in [enumsym,unitsym]) and
|
||||||
not(is_funcret_sym(tsym(sym))) and
|
not(is_funcret_sym(tsym(sym))) and
|
||||||
|
{ don't complain about compiler generated syms for specializations, see also #13405 }
|
||||||
|
not((tsym(sym).typ=typesym) and (df_specialization in ttypesym(sym).typedef.defoptions) and
|
||||||
|
(pos('$',ttypesym(sym).Realname)<>0)) and
|
||||||
(
|
(
|
||||||
(tsym(sym).typ<>procsym) or
|
(tsym(sym).typ<>procsym) or
|
||||||
((tsym(sym).owner.symtabletype=staticsymtable) and
|
((tsym(sym).owner.symtabletype=staticsymtable) and
|
||||||
not current_module.is_unit)
|
not current_module.is_unit)
|
||||||
) then
|
) then
|
||||||
MessagePos2(tsym(sym).fileinfo,sym_h_local_symbol_not_used,SymTypeName[tsym(sym).typ],tsym(sym).realname);
|
MessagePos2(tsym(sym).fileinfo,sym_h_local_symbol_not_used,SymTypeName[tsym(sym).typ],tsym(sym).prettyname);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -105,6 +105,7 @@ interface
|
|||||||
constructor create(st:tsymtyp;const aname:string);
|
constructor create(st:tsymtyp;const aname:string);
|
||||||
destructor destroy;override;
|
destructor destroy;override;
|
||||||
function mangledname:string; virtual;
|
function mangledname:string; virtual;
|
||||||
|
function prettyname:string; virtual;
|
||||||
procedure buildderef;virtual;
|
procedure buildderef;virtual;
|
||||||
procedure deref;virtual;
|
procedure deref;virtual;
|
||||||
procedure ChangeOwner(st:TSymtable);
|
procedure ChangeOwner(st:TSymtable);
|
||||||
@ -388,6 +389,12 @@ implementation
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
function tsym.prettyname : string;
|
||||||
|
begin
|
||||||
|
result:=realname;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure tsym.ChangeOwner(st:TSymtable);
|
procedure tsym.ChangeOwner(st:TSymtable);
|
||||||
begin
|
begin
|
||||||
Owner:=st;
|
Owner:=st;
|
||||||
|
Loading…
Reference in New Issue
Block a user