diff options
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/conditional-expr-3.m | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index a13bcbab62..b22ae7d1f2 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1644,7 +1644,7 @@ inline QualType Sema::CheckConditionalOperands( // C99 6.5.15 Context.canAssignObjCInterfaces(LHSIface, RHSIface)) { compositeType = lexT; } else if (LHSIface && RHSIface && - Context.canAssignObjCInterfaces(LHSIface, RHSIface)) { + Context.canAssignObjCInterfaces(RHSIface, LHSIface)) { compositeType = rexT; } else if (Context.isObjCIdType(lhptee) || Context.isObjCIdType(rhptee)) { diff --git a/test/SemaObjC/conditional-expr-3.m b/test/SemaObjC/conditional-expr-3.m index f5b04339e8..eb313df029 100644 --- a/test/SemaObjC/conditional-expr-3.m +++ b/test/SemaObjC/conditional-expr-3.m @@ -61,3 +61,7 @@ void f9(int cond, id<P0,P1> x0, id<P0,P2> x1) { void f10(int cond, id<P0,P1> x0, id<P0,P2> x1) { barP2(cond ? x0 : x1); } + +int f11(int cond, A* a, B* b) { + return (cond? b : a)->x; // expected-error{{'A' does not have a member named 'x'}} +}
\ No newline at end of file |