Fix missing style violation report for package instantiation

Unlike for subprogram instantiation, -gnatyr does not report style violation
for package instantiation, more precisely for the generic package's name.

Fixing it uncovered style violations in the sources of the compiler itself!

gcc/ada/
	PR ada/122295
	* sem_ch12.adb (Analyze_Package_Instantiation): Force Style_Check
	to False only after possibly installing the parent.
	* aspects.adb (UAD_Pragma_Map): Fix style violation.
	* inline.adb (To_Pending_Instantiations): Likewise.
	* lib.ads (Unit_Names): Likewise.
	* repinfo.adb (Relevant_Entities): Likewise.
	* sem_ch7.adb (Subprogram_Table): Likewise.
	(Traversed_Table): Likewise.
	* sem_util.adb (Interval_Sorting): Likewise.

gcc/testsuite/
	* gnat.dg/specs/style1.ads: New test.
This commit is contained in:
Eric Botcazou 2025-10-17 11:02:28 +02:00
parent c591c2aff5
commit cdb08b4bd2
8 changed files with 34 additions and 15 deletions

View File

@ -578,7 +578,7 @@ package body Aspects is
return UAD_Pragma_Map_Header
is (UAD_Pragma_Map_Header (Chars mod UAD_Pragma_Map_Size));
package UAD_Pragma_Map is new GNAT.Htable.Simple_Htable
package UAD_Pragma_Map is new GNAT.HTable.Simple_HTable
(Header_Num => UAD_Pragma_Map_Header,
Key => Name_Id,
Element => Opt_N_Pragma_Id,

View File

@ -151,7 +151,7 @@ package body Inline is
function Node_Hash (Id : Node_Id) return Node_Header_Num;
-- Simple hash function for Node_Ids
package To_Pending_Instantiations is new GNAT.Htable.Simple_HTable
package To_Pending_Instantiations is new GNAT.HTable.Simple_HTable
(Header_Num => Node_Header_Num,
Element => Int,
No_Element => -1,

View File

@ -901,7 +901,7 @@ private
function Unit_Name_Hash (Id : Unit_Name_Type) return Unit_Name_Header_Num;
-- Simple hash function for Unit_Name_Types
package Unit_Names is new GNAT.Htable.Simple_HTable
package Unit_Names is new GNAT.HTable.Simple_HTable
(Header_Num => Unit_Name_Header_Num,
Element => Unit_Number_Type,
No_Element => No_Unit,

View File

@ -119,7 +119,7 @@ package body Repinfo is
function Entity_Hash (Id : Entity_Id) return Entity_Header_Num;
-- Simple hash function for Entity_Ids
package Relevant_Entities is new GNAT.Htable.Simple_HTable
package Relevant_Entities is new GNAT.HTable.Simple_HTable
(Header_Num => Entity_Header_Num,
Element => Boolean,
No_Element => False,

View File

@ -4990,14 +4990,6 @@ package body Sem_Ch12 is
Preanalyze_Actuals (N, Act_Decl_Id);
-- Turn off style checking in instances. If the check is enabled on the
-- generic unit, a warning in an instance would just be noise. If not
-- enabled on the generic, then a warning in an instance is just wrong.
-- This must be done after analyzing the actuals, which do come from
-- source and are subject to style checking.
Style_Check := False;
Init_Env;
Env_Installed := True;
@ -5016,6 +5008,14 @@ package body Sem_Ch12 is
Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
end if;
-- Turn off style checking in instances. If the check is enabled on the
-- generic unit, a warning in an instance would just be noise. If not
-- enabled on the generic, then a warning in an instance is just wrong.
-- This must be done after analyzing the actuals and possibly installing
-- the parent, which come from source and are subject to style checking.
Style_Check := False;
Gen_Unit := Entity (Gen_Id);
-- A package instantiation is Ghost when it is subject to pragma Ghost

View File

@ -206,7 +206,7 @@ package body Sem_Ch7 is
function Node_Hash (Id : Entity_Id) return Entity_Header_Num;
-- Simple hash function for Entity_Ids
package Subprogram_Table is new GNAT.Htable.Simple_HTable
package Subprogram_Table is new GNAT.HTable.Simple_HTable
(Header_Num => Entity_Header_Num,
Element => Boolean,
No_Element => False,
@ -216,7 +216,7 @@ package body Sem_Ch7 is
-- Hash table to record which subprograms are referenced. It is declared
-- at library level to avoid elaborating it for every call to Analyze.
package Traversed_Table is new GNAT.Htable.Simple_HTable
package Traversed_Table is new GNAT.HTable.Simple_HTable
(Header_Num => Entity_Header_Num,
Element => Boolean,
No_Element => False,

View File

@ -31148,7 +31148,7 @@ package body Sem_Util is
----------------------
package Interval_Sorting is
new Gnat.Heap_Sort_G (Move_Interval, Lt_Interval);
new GNAT.Heap_Sort_G (Move_Interval, Lt_Interval);
-------------
-- Is_Null --

View File

@ -0,0 +1,19 @@
-- { dg-do compile }
-- { dg-options "-gnatyr" }
with Ada.Containers.Vectors;
with Ada.Unchecked_Conversion;
package Style1 is
package My_Vector is new ada.containers.vectors -- { dg-warning " bad casing" }
(Index_Type => Positive,
Element_Type => Integer);
type Word is mod 2**32;
function My_Conv is new ada.unchecked_conversion -- { dg-warning " bad casing" }
(Source => Integer,
Target => Word);
end Style1;