diff options
author | Arnaud Charlet <charlet@adacore.com> | 2020-09-08 16:09:16 -0400 |
---|---|---|
committer | Pierre-Marie de Rodat <derodat@adacore.com> | 2020-10-26 04:58:56 -0400 |
commit | 1ab538527f9a67d2af427d1d65015611f4c46a6d (patch) | |
tree | 05627e5c21ec5bd764fe0ebf8b8320f0f584793f /gcc/ada | |
parent | 8cb66f960911050e557629447a0cacfab5fc68b1 (diff) | |
download | gcc-1ab538527f9a67d2af427d1d65015611f4c46a6d.zip gcc-1ab538527f9a67d2af427d1d65015611f4c46a6d.tar.gz gcc-1ab538527f9a67d2af427d1d65015611f4c46a6d.tar.bz2 |
[Ada] Improve error on missing with clause
gcc/ada/
* sem_ch8.adb (Find_Direct_Name.Undefined): Handle known unit
names with 3 selectors.
Diffstat (limited to 'gcc/ada')
-rw-r--r-- | gcc/ada/sem_ch8.adb | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb index 35c6f60..69430a6 100644 --- a/gcc/ada/sem_ch8.adb +++ b/gcc/ada/sem_ch8.adb @@ -5551,9 +5551,25 @@ package body Sem_Ch8 is and then N = Prefix (Parent (N)) and then Is_Known_Unit (Parent (N)) then - Error_Msg_Node_2 := Selector_Name (Parent (N)); - Error_Msg_N -- CODEFIX - ("\\missing `WITH &.&;`", Prefix (Parent (N))); + declare + P : Node_Id := Parent (N); + begin + Error_Msg_Name_1 := Chars (N); + Error_Msg_Name_2 := Chars (Selector_Name (P)); + + if Nkind (Parent (P)) = N_Selected_Component + and then Is_Known_Unit (Parent (P)) + then + P := Parent (P); + Error_Msg_Name_3 := Chars (Selector_Name (P)); + Error_Msg_N -- CODEFIX + ("\\missing `WITH %.%.%;`", N); + + else + Error_Msg_N -- CODEFIX + ("\\missing `WITH %.%;`", N); + end if; + end; end if; -- Now check for possible misspellings |