[Bug c++/77829] New: Bad fix-it for nested-name-specifier
redi at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Oct 3 16:28:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77829
Bug ID: 77829
Summary: Bad fix-it for nested-name-specifier
Product: gcc
Version: 6.2.1
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: redi at gcc dot gnu.org
Target Milestone: ---
namespace detail {
int _foo(int i) { return i; }
}
void bar(int i) {
detail::foo(i);
}
This says:
fixit.cc: In function ‘void bar(int)’:
fixit.cc:6:3: error: ‘foo’ is not a member of ‘detail’
detail::foo(i);
^~~~~~
fixit.cc:6:3: note: suggested alternative: ‘bool’
detail::foo(i);
^~~~~~
bool
There are two problems here. Firstly, the range info for the rich location
suggests replacing "detail" when it should be "foo". The patch generated by
-fdiagnostics-generate-patch is:
--- fixit.cc
+++ fixit.cc
@@ -3,5 +3,5 @@
}
void bar(int i) {
- detail::foo(i);
+ bool::foo(i);
}
Secondly, detail::_foo should be a better match for detail::foo than
detail::bool (which wouldn't be valid, because bool is not an identifier).
More information about the Gcc-bugs
mailing list