diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-08-19 17:02:01 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-08-19 17:02:01 +0000 |
commit | c0afc6760837d5760416f557305cd8a2c386a7b4 (patch) | |
tree | c6658a87dcdf883a1e472ae47c7da7085bbcf9e4 /clang/test/SemaCXX/conversion-function.cpp | |
parent | 0d7e9538db379900e1e88d02982a4951106e447d (diff) | |
download | bcm5719-llvm-c0afc6760837d5760416f557305cd8a2c386a7b4.tar.gz bcm5719-llvm-c0afc6760837d5760416f557305cd8a2c386a7b4.zip |
We don't actually need to check the implicit object argument's
conversion a second time for a conversion candidate (with the real
acting context), because the only problems we would find are access or
ambiguity issues that won't be diagnosed until we pick this
candidate. Add a test case to prove it to myself.
llvm-svn: 111526
Diffstat (limited to 'clang/test/SemaCXX/conversion-function.cpp')
-rw-r--r-- | clang/test/SemaCXX/conversion-function.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/conversion-function.cpp b/clang/test/SemaCXX/conversion-function.cpp index 3d544ae03cf..07281e16d3f 100644 --- a/clang/test/SemaCXX/conversion-function.cpp +++ b/clang/test/SemaCXX/conversion-function.cpp @@ -306,4 +306,22 @@ namespace rdar8018274 { void test2(UeberDerived ud) { int i = ud; // expected-error{{ambiguous conversion from derived class 'rdar8018274::SuperDerived' to base class 'rdar8018274::Base'}} } + + struct Base2 { + operator int(); + }; + + struct Base3 { + operator int(); + }; + + struct Derived23 : Base2, Base3 { + using Base2::operator int; + }; + + struct ExtraDerived23 : Derived23 { }; + + void test3(ExtraDerived23 ed) { + int i = ed; + } } |