mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 01:11:29 +01: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
	 florian
						florian