The following program, using generics, compiles without an error
message:
generic
package pak1 is
end pak1;
generic
package pak1.foo is
end pak1.foo;
with pak1.foo;
package Test_118 is
package pak3 is
foo: integer;
end pak3;
use pak3;
package new_pak1 is new pak1;
use new_pak1;
x: integer := foo; -- ERROR: foo hidden by use clauses
end Test_118;
In contrast, the following program, not using generics, produces a
correct error message:
package pak1 is
end pak1;
package pak1.foo is
end pak1.foo;
with pak1; use pak1;
with pak1.foo;
package Test_118 is
package pak3 is
foo : Integer;
end pak3;
use pak3;
x: integer := foo; -- ERROR: foo hidden by use clauses
end Test_118;
test_120.ads:10:18: "Foo" is not visible
test_120.ads:10:18: multiple use clauses cause hiding
test_120.ads:10:18: hidden declaration at line 6
test_120.ads:10:18: hidden declaration at pak1-foo.ads:2
gnatmake: "test_120.ads" compilation error