summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2013-06-07 20:03:01 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2013-06-07 20:03:01 +0000
commit5ed79566d603c3070055153b4f52630f33558b88 (patch)
tree7db9655bec0259183e978639c1e8fe9e7a84a735
parent705d841bb696e3823fc3d85928b0c226346f7d9e (diff)
downloadbcm5719-llvm-5ed79566d603c3070055153b4f52630f33558b88.tar.gz
bcm5719-llvm-5ed79566d603c3070055153b4f52630f33558b88.zip
PR16273: Weaken a bogus assertion.
llvm-svn: 183550
-rw-r--r--clang/lib/Sema/SemaTemplate.cpp3
-rw-r--r--clang/test/SemaCXX/trailing-return-0x.cpp8
2 files changed, 10 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 8621a2d42dc..9531b2e91df 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -256,7 +256,8 @@ void Sema::LookupTemplateName(LookupResult &Found,
assert(!SS.isSet() && "ObjectType and scope specifier cannot coexist");
LookupCtx = computeDeclContext(ObjectType);
isDependent = ObjectType->isDependentType();
- assert((isDependent || !ObjectType->isIncompleteType()) &&
+ assert((isDependent || !ObjectType->isIncompleteType() ||
+ ObjectType->castAs<TagType>()->isBeingDefined()) &&
"Caller should have completed object type");
// Template names cannot appear inside an Objective-C class or object type.
diff --git a/clang/test/SemaCXX/trailing-return-0x.cpp b/clang/test/SemaCXX/trailing-return-0x.cpp
index bd601db2ac1..f7e3433a760 100644
--- a/clang/test/SemaCXX/trailing-return-0x.cpp
+++ b/clang/test/SemaCXX/trailing-return-0x.cpp
@@ -94,3 +94,11 @@ namespace DR1608 {
auto f() -> decltype((*this)[0]); // expected-error {{cannot be overloaded}}
};
}
+
+namespace PR16273 {
+ struct A {
+ template <int N> void f();
+ auto g()->decltype(this->f<0>());
+ };
+}
+
OpenPOWER on IntegriCloud