aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2017-01-31 21:30:42 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2017-01-31 21:30:42 +0000
commitfcb2cdfcfecc800d537fffa13dad17e4a3a34ae2 (patch)
tree7f5c133ae0da42f91989beacdd969964f5e9c73f /gcc
parent7cfa044d991a2622ca82c92b042ca06824994acd (diff)
downloadgcc-fcb2cdfcfecc800d537fffa13dad17e4a3a34ae2.zip
gcc-fcb2cdfcfecc800d537fffa13dad17e4a3a34ae2.tar.gz
gcc-fcb2cdfcfecc800d537fffa13dad17e4a3a34ae2.tar.bz2
Fix ICE with spelling hints within explicit namespace aliases (PR c++/79298)
gcc/cp/ChangeLog: PR c++/79298 * name-lookup.c (suggest_alternative_in_explicit_scope): Resolve any namespace aliases. gcc/testsuite/ChangeLog: PR c++/79298 * g++.dg/spellcheck-pr79298.C: New test case. From-SVN: r245072
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/name-lookup.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/spellcheck-pr79298.C17
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2a86607..04d2a60 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/79298
+ * name-lookup.c (suggest_alternative_in_explicit_scope): Resolve
+ any namespace aliases.
+
2017-01-31 Nathan Sidwell <nathan@acm.org>
PR c++/79290
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c
index a3cb7ee..994f7f0 100644
--- a/gcc/cp/name-lookup.c
+++ b/gcc/cp/name-lookup.c
@@ -4545,6 +4545,9 @@ bool
suggest_alternative_in_explicit_scope (location_t location, tree name,
tree scope)
{
+ /* Resolve any namespace aliases. */
+ scope = ORIGINAL_NAMESPACE (scope);
+
cp_binding_level *level = NAMESPACE_LEVEL (scope);
best_match <tree, tree> bm (name);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index f7cf0f4..ef50eda 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2017-01-31 David Malcolm <dmalcolm@redhat.com>
+ PR c++/79298
+ * g++.dg/spellcheck-pr79298.C: New test case.
+
+2017-01-31 David Malcolm <dmalcolm@redhat.com>
+
PR preprocessor/79210
* gcc.dg/format/pr79210.c: New test case.
* gcc.dg/plugin/diagnostic-test-string-literals-2.c (test_pr79210):
diff --git a/gcc/testsuite/g++.dg/spellcheck-pr79298.C b/gcc/testsuite/g++.dg/spellcheck-pr79298.C
new file mode 100644
index 0000000..4d7bbf9
--- /dev/null
+++ b/gcc/testsuite/g++.dg/spellcheck-pr79298.C
@@ -0,0 +1,17 @@
+// Ensure that we can offer suggestions for misspellings via a
+// namespace alias.
+
+namespace N { int x; int color; }
+namespace M = N;
+namespace O = M;
+
+int foo ()
+{
+ return M::y; // { dg-error ".y. is not a member of .M." }
+}
+
+int bar ()
+{
+ return O::colour; // { dg-error ".colour. is not a member of .O." }
+ // { dg-message "suggested alternative: .color." "" { target *-*-* } .-1 }
+}