summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-02-21 18:36:56 +0000
committerDouglas Gregor <dgregor@apple.com>2010-02-21 18:36:56 +0000
commit90d554ecb30d5282aff54aca2f9b0f3751e83c8c (patch)
tree5a7fde105ec946945bbd76347cc49828f8340300 /clang/lib/Sema/SemaExprCXX.cpp
parent901e717f9295e5d9616777ad2a0c89c86ef5268d (diff)
downloadbcm5719-llvm-90d554ecb30d5282aff54aca2f9b0f3751e83c8c.tar.gz
bcm5719-llvm-90d554ecb30d5282aff54aca2f9b0f3751e83c8c.zip
Implement support for parsing pseudo-destructor expression with a nested-name-specifier, e.g.,
typedef int Int; int *p; p->Int::~Int(); This weakens the invariant that the only types in nested-name-specifiers are tag types (restricted to class types in C++98/03). However, we weaken this invariant as little as possible, accepting arbitrary types in nested-name-specifiers only when we're in a member access expression that looks like a pseudo-destructor expression. llvm-svn: 96743
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index 4cb58d8d19c..7e32f17131e 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -85,10 +85,11 @@ Action::TypeTy *Sema::getDestructorName(SourceLocation TildeLoc,
isDependent = SearchType->isDependentType();
} else {
LookupCtx = computeDeclContext(SS, EnteringContext);
- isDependent = LookupCtx->isDependentContext();
+ if (LookupCtx)
+ isDependent = LookupCtx->isDependentContext();
}
- LookInScope = false;
+ LookInScope = (LookupCtx == 0) && !isDependent;
} else if (ObjectTypePtr) {
// C++ [basic.lookup.classref]p3:
// If the unqualified-id is ~type-name, the type-name is looked up
OpenPOWER on IntegriCloud