forked from OSchip/llvm-project
After reporting ill-formed copy constructor(12.8.p3)
don't recurs and crash. llvm-svn: 78323
This commit is contained in:
parent
b4764e5b7f
commit
11a8e95a1a
|
@ -1344,7 +1344,8 @@ bool Sema::IsUserDefinedConversion(Expr *From, QualType ToType,
|
||||||
= ToRecordDecl->lookup(ConstructorName);
|
= ToRecordDecl->lookup(ConstructorName);
|
||||||
Con != ConEnd; ++Con) {
|
Con != ConEnd; ++Con) {
|
||||||
CXXConstructorDecl *Constructor = cast<CXXConstructorDecl>(*Con);
|
CXXConstructorDecl *Constructor = cast<CXXConstructorDecl>(*Con);
|
||||||
if (Constructor->isConvertingConstructor())
|
if (!Constructor->isInvalidDecl() &&
|
||||||
|
Constructor->isConvertingConstructor())
|
||||||
AddOverloadCandidate(Constructor, &From, 1, CandidateSet,
|
AddOverloadCandidate(Constructor, &From, 1, CandidateSet,
|
||||||
/*SuppressUserConversions=*/true, ForceRValue);
|
/*SuppressUserConversions=*/true, ForceRValue);
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
// RUN: clang-cc -fsyntax-only -verify %s
|
||||||
|
|
||||||
|
struct S { // expected-note {{candidate function}}
|
||||||
|
S (S); // expected-error {{copy constructor must pass its first argument by reference}} \\
|
||||||
|
// expected-note {{candidate function}}
|
||||||
|
};
|
||||||
|
|
||||||
|
S f();
|
||||||
|
|
||||||
|
void g() {
|
||||||
|
S a( f() ); // expected-error {{call to constructor of 'a' is ambiguous}}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue