From e15a370084f376be480072c06ebd94bbeac6663c Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Thu, 6 Oct 2016 23:12:58 +0000 Subject: PR25890: Fix incoherent error handling in PerformImplicitConversion and CheckSingleAssignmentConstraints. These no longer produce ExprError() when they have not emitted an error, and reliably inform the caller when they *have* emitted an error. This fixes some serious issues where we would fail to emit any diagnostic for invalid code and then attempt to emit code for an invalid AST, and conversely some issues where we would emit two diagnostics for the same problem. llvm-svn: 283508 --- clang/test/SemaCXX/ambig-user-defined-conversions.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'clang/test/SemaCXX/ambig-user-defined-conversions.cpp') diff --git a/clang/test/SemaCXX/ambig-user-defined-conversions.cpp b/clang/test/SemaCXX/ambig-user-defined-conversions.cpp index 1a3c102f034..276c1b07b5d 100644 --- a/clang/test/SemaCXX/ambig-user-defined-conversions.cpp +++ b/clang/test/SemaCXX/ambig-user-defined-conversions.cpp @@ -65,3 +65,8 @@ namespace rdar8876150 { bool f(D d) { return !d; } // expected-error{{ambiguous conversion from derived class 'rdar8876150::D' to base class 'rdar8876150::A':}} } + +namespace assignment { + struct A { operator short(); operator bool(); }; // expected-note 2{{candidate}} + void f(int n, A a) { n = a; } // expected-error{{ambiguous}} +} -- cgit v1.2.3