+2018-09-26 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Add extra condition
+ to check for unmarked subprogram references coming from
+ renamings.
+
2018-09-26 Arnaud Charlet <charlet@adacore.com>
* back_end.adb (Scan_Compiler_Arguments): Store -G xxx switches.
-- and mark any use_package_clauses that affect the visibility of the
-- implicit generic actual.
+ -- Also, we may be looking at an internal renaming of a user-defined
+ -- subprogram created for a generic formal subprogram association,
+ -- which will also have to be marked here. This can occur when the
+ -- corresponding formal subprogram contains references to other generic
+ -- formals.
+
if Is_Generic_Actual_Subprogram (New_S)
- and then (Is_Intrinsic_Subprogram (New_S) or else From_Default (N))
+ and then (Is_Intrinsic_Subprogram (New_S)
+ or else From_Default (N)
+ or else Nkind (N) = N_Subprogram_Renaming_Declaration)
then
Mark_Use_Clauses (New_S);
+2018-09-26 Justin Squirek <squirek@adacore.com>
+
+ * gnat.dg/warn16.adb: New testcase.
+
2018-09-26 Hristian Kirtchev <kirtchev@adacore.com>
* gnat.dg/elab7.adb, gnat.dg/elab7_pkg1.adb,
--- /dev/null
+-- { dg-do compile }
+-- { dg-options "-gnatwa" }
+
+procedure Warn16 is
+
+ package Define is
+ type Key_Type is record
+ Value : Integer := 0;
+ end record;
+
+ function "=" (Left : in Key_Type;
+ Right : in Key_Type)
+ return Boolean;
+ end;
+ package body Define is
+ function "=" (Left : in Key_Type;
+ Right : in Key_Type)
+ return Boolean is
+ begin
+ return Left.Value = Right.Value;
+ end;
+ end;
+
+ generic
+ type Key_Type is private;
+ with function "=" (Left : in Key_Type;
+ Right : in Key_Type)
+ return Boolean;
+ package Oper is end;
+
+ use type Define.Key_Type; -- !!!
+
+ package Inst is new Oper (Key_Type => Define.Key_Type,
+ "=" => "=");
+ pragma Unreferenced (Inst);
+begin
+ null;
+end;