aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-08-09 22:38:14 +0000
committerDouglas Gregor <dgregor@apple.com>2010-08-09 22:38:14 +0000
commite26f0432c20de7034f414809628d10bfd961ca04 (patch)
treea4d28ecae9615e458f5bc3866f6a94f9e0718978
parentb1c031be513705d924038f497279b9b599868ba1 (diff)
When attempting to recover from a failed unqualified name lookup, make
sure to clear out the LookupResult structure after looking into each class. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110615 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaExpr.cpp2
-rw-r--r--test/SemaCXX/crash-PR7625.cpp6
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index 96ac69c7ff..d573ca9bbb 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -917,6 +917,8 @@ bool Sema::DiagnoseEmptyLookup(Scope *S, CXXScopeSpec &SS, LookupResult &R,
// Tell the callee to try to recover.
return false;
}
+
+ R.clear();
}
}
diff --git a/test/SemaCXX/crash-PR7625.cpp b/test/SemaCXX/crash-PR7625.cpp
new file mode 100644
index 0000000000..3ddf5e5ed2
--- /dev/null
+++ b/test/SemaCXX/crash-PR7625.cpp
@@ -0,0 +1,6 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+template<typename T> struct a : T {
+ struct x : T {
+ int aa() { return p; } // expected-error{{use of undeclared identifier 'p'}}
+ };
+};