https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78313
Bug ID: 78313 Summary: [7 Regression] Misleading spelling suggestion Product: gcc Version: 7.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jakub at gcc dot gnu.org CC: bernds at gcc dot gnu.org, chengniansun at gmail dot com, jakub at gcc dot gnu.org, unassigned at gcc dot gnu.org, webrown.cpp at gmail dot com Depends on: 72774 Target Milestone: --- +++ This bug was initially created as a clone of Bug #72774 +++ // PR c++/72774 // { dg-do compile } void baz (); namespace A { void foo (); } void bar () { using A::foo; 0 ? static_cast<foo> (0) : baz; // { dg-error "does not name a type" } } Actually, the suggestion looks wrong: pr72774.C:9:19: error: ‘foo’ does not name a type; did you mean ‘foo’? We call lookup_name_fuzzy with kind that we want a typename, but we actually except for members consider even FUNCTION_DECLs/VAR_DECLs. That doesn't look right. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72774 [Bug 72774] [7 Regression] ICE on invalid C++ code on x86_64-linux-gnu (tree check: expected tree that contains ‘decl minimal’ structure, have ‘tree_list’ in consider_binding_level, at cp/name-lookup.c:4721)