[Ada] Incorrect diagnostic on illegal with clause

Programming / Compilers / GCC - pmderodat [138bc75d-0d04-0410-961f-82ee72b054a4] - 11 January 2018 08:54 EST

This patch updates the detection of illegal with clauses which import private child packages to properly detect a grandchild of Ada.


-- Source --


-- fake.ads

package Fake is end Fake;

-- fake-ada.ads

package Fake.Ada is end Fake.Ada;

-- fake-ada-text_io.ads

package Fake.Ada.Text_IO is end Fake.Ada.Text_IO;

-- fake-ada-text_io-float_io.ads

private generic type Num is digits <>;

package Fake.Ada.Text_IO.Float_IO is end Fake.Ada.Text_IO.Float_IO;

-- fake-float_io.ads

private generic type Num is digits <>;

package Fake.Float_IO is end Fake.Float_IO;

-- main.ads

with Fake.Ada.Text_IO.Float_IO; with Fake.Float_IO;

package Main is end Main;


-- Compilation and output --


$ gcc -c main.ads main.ads:1:06: unit in with clause is private child unit main.ads:1:06: current unit must also have parent "Text_IO" main.ads:2:06: unit in with clause is private child unit main.ads:2:06: current unit must also have parent "Fake"

2018-01-11 Hristian Kirtchev

gcc/ada/

- sem_ch10.adb (Check_Private_Child_Unit): Ensure that the enclosing scope of package Ada is Standard.

854e93fdd64 [Ada] Incorrect diagnostic on illegal with clause
gcc/ada/ChangeLog | 5 +++++
gcc/ada/sem_ch10.adb | 4 +++-
2 files changed, 8 insertions(+), 1 deletion(-)

Upstream: gcc.gnu.org


  • Share