aboutsummaryrefslogtreecommitdiff
path: root/gcc/collect-utils.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@adacore.com>2019-08-13 08:07:18 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2019-08-13 08:07:18 +0000
commit258325dddf752c578f1da15f63577090b1db2de5 (patch)
treeca59335f2e7442884a652520b533a5e973a44d5c /gcc/collect-utils.c
parent2e8362bc219d6e900756128450c365dd31045a7b (diff)
downloadgcc-258325dddf752c578f1da15f63577090b1db2de5.zip
gcc-258325dddf752c578f1da15f63577090b1db2de5.tar.gz
gcc-258325dddf752c578f1da15f63577090b1db2de5.tar.bz2
[Ada] Spurious error on nested instantiation
This fixes a spurious error given by the compiler for a call to a subprogram which is the formal subprogram parameter of a generic package, if the generic package is instantiated in the body of an enclosing generic package with two formal types and two formal subprogram parameter homonyms taking them, and this instantiation takes one the two formal types as actual, and the enclosing generic package is instantiated on the same actual type with a single actual subprogram parameter, and the aforementioned call is overloaded. In this case, the renaming generated for the actual subprogram parameter in the nested instantiation is ambiguous and must be disambiguated using the corresponding formal parameter of the enclosing instantiation, otherwise a (sub)type mismatch is created and later subprogram disambiguation is not really possible. 2019-08-13 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_ch4.adb (Analyze_One_Call): Remove bypass for type mismatch in nested instantiations. * sem_ch8.adb (Find_Nearer_Entity): New function. (Find_Renamed_Entity): Use it to disambiguate the candidates for the renaming generated for an instantiation when it is ambiguous. gcc/testsuite/ * gnat.dg/generic_inst9.adb, gnat.dg/generic_inst9.ads, gnat.dg/generic_inst9_pkg1-operator.ads, gnat.dg/generic_inst9_pkg1.ads, gnat.dg/generic_inst9_pkg2.adb, gnat.dg/generic_inst9_pkg2.ads: New testcase. From-SVN: r274343
Diffstat (limited to 'gcc/collect-utils.c')
0 files changed, 0 insertions, 0 deletions