Fixes PR13758.
llvm-svn: 168521
return SourceRange();
}
+ SourceLocation getExprLoc() const LLVM_READONLY { return Loc; }
+
static bool classof(const Stmt *T) {
return T->getStmtClass() == CXXDefaultArgExprClass;
}
S.IsDerivedFrom(From->getType(), ToType)))
ConstructorsOnly = true;
- S.RequireCompleteType(From->getLocStart(), ToType, 0);
+ S.RequireCompleteType(From->getExprLoc(), ToType, 0);
// RequireCompleteType may have returned true due to some invalid decl
// during template instantiation, but ToType may be complete enough now
// to try to recover.
{
}
}
+
+namespace PR13758 {
+ template <typename T> struct move_from {
+ T invalid; // expected-error {{field has incomplete type 'void'}}
+ };
+ template <class K>
+ struct unordered_map {
+ explicit unordered_map(int n = 42);
+ unordered_map(move_from<K> other);
+ };
+ template<typename T>
+ void StripedHashTable() {
+ new unordered_map<void>(); // expected-note {{in instantiation of template class 'PR13758::move_from<void>' requested here}}
+ }
+ void tt() {
+ StripedHashTable<int>(); // expected-note {{in instantiation of function template specialization 'PR13758::StripedHashTable<int>' requested here}}
+ }
+}