[Bug c++/103177] incorrect error message for ambiguous lookup with a static member function from a private base

2022-03-15 Thread ppalka at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103177

Patrick Palka  changed:

   What|Removed |Added

 Resolution|--- |FIXED
   Target Milestone|--- |12.0
   Assignee|unassigned at gcc dot gnu.org  |ppalka at gcc dot 
gnu.org
 CC||ppalka at gcc dot gnu.org
 Status|NEW |RESOLVED

--- Comment #3 from Patrick Palka  ---
Fixed for GCC 12.

[Bug c++/103177] incorrect error message for ambiguous lookup with a static member function from a private base

2022-03-15 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103177

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Patrick Palka :

https://gcc.gnu.org/g:ffe9c0a0d3564a6083ea6194eb3374a89c29c085

commit r12-7656-gffe9c0a0d3564a6083ea6194eb3374a89c29c085
Author: Patrick Palka 
Date:   Tue Mar 15 08:50:24 2022 -0400

c++: extraneous access error with ambiguous lookup [PR103177]

When a lookup is ambiguous, lookup_member still attempts to check
access of the first member found before diagnosing the ambiguity and
propagating the error, and this may cause us to issue an extraneous
access error as in the testcase below (for B1::foo).

This patch fixes this by swapping the order of the ambiguity and access
checks within lookup_member.  In passing, since the only thing that could
go wrong during lookup_field_r is ambiguity, we might as well hardcode
that in lookup_member and get rid of lookup_field_info::errstr.

PR c++/103177

gcc/cp/ChangeLog:

* search.cc (lookup_field_info::errstr): Remove this data
member.
(lookup_field_r): Don't set errstr.
(lookup_member): Check ambiguity before checking access.
Simplify accordingly after errstr removal.  Exit early upon
error or empty result.

gcc/testsuite/ChangeLog:

* g++.dg/lookup/ambig6.C: New test.

[Bug c++/103177] incorrect error message for ambiguous lookup with a static member function from a private base

2021-11-10 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103177

Andrew Pinski  changed:

   What|Removed |Added

Summary|incorrect error message for |incorrect error message for
   |ambiguous lookup|ambiguous lookup with a
   ||static member function from
   ||a private base

--- Comment #1 from Andrew Pinski  ---
So if I remove static from B::foo, the inaccessible error message is gone.