diff options
| author | Fariborz Jahanian <fjahanian@apple.com> | 2009-08-22 22:27:17 +0000 |
|---|---|---|
| committer | Fariborz Jahanian <fjahanian@apple.com> | 2009-08-22 22:27:17 +0000 |
| commit | a83c016d229fafeac74e1dfb4938d322c3c0186e (patch) | |
| tree | 874c03938e77c062731f58ad7c65563213c8541a /clang | |
| parent | f7b571726a4adde0c2af9309b811e4e627b338fe (diff) | |
| download | bcm5719-llvm-a83c016d229fafeac74e1dfb4938d322c3c0186e.tar.gz bcm5719-llvm-a83c016d229fafeac74e1dfb4938d322c3c0186e.zip | |
Type of a ?: expression whose either expression is a built-in 'id'
type is 'id' type.
llvm-svn: 79781
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 4 | ||||
| -rw-r--r-- | clang/test/SemaObjC/conditional-expr-5.m | 27 |
2 files changed, 29 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 15a3e40e3f2..f9ec6afc28d 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -3213,9 +3213,9 @@ QualType Sema::CheckConditionalOperands(Expr *&Cond, Expr *&LHS, Expr *&RHS, // FIXME: Consider unifying with 'areComparableObjCPointerTypes'. // It could return the composite type. if (Context.canAssignObjCInterfaces(LHSOPT, RHSOPT)) { - compositeType = LHSTy; + compositeType = RHSOPT->isObjCBuiltinType() ? RHSTy : LHSTy; } else if (Context.canAssignObjCInterfaces(RHSOPT, LHSOPT)) { - compositeType = RHSTy; + compositeType = LHSOPT->isObjCBuiltinType() ? LHSTy : RHSTy; } else if ((LHSTy->isObjCQualifiedIdType() || RHSTy->isObjCQualifiedIdType()) && Context.ObjCQualifiedIdTypesAreCompatible(LHSTy, RHSTy, true)) { diff --git a/clang/test/SemaObjC/conditional-expr-5.m b/clang/test/SemaObjC/conditional-expr-5.m new file mode 100644 index 00000000000..d9c1a9474fe --- /dev/null +++ b/clang/test/SemaObjC/conditional-expr-5.m @@ -0,0 +1,27 @@ +// RUN: clang-cc -fsyntax-only -verify %s + +@interface PBXBuildSettingsDictionary +{ + int i; +} +@end + +@interface XCConditionalBuildSettingsDictionary : PBXBuildSettingsDictionary +{ +} +@end + +@implementation PBXBuildSettingsDictionary + +- (XCConditionalBuildSettingsDictionary *)conditionalDictionaryForConditionSet +{ + return i ? self : (id)0; +} + +- (XCConditionalBuildSettingsDictionary *)conditionalDictionaryForConditionSet2 +{ + return i ? (id)0 : self; +} +@end + + |

