Patch to support transparent_union types on
objective-c methods. Fixes radar 7875968. llvm-svn: 101935
This commit is contained in:
parent
4dd125e278
commit
877aaa9706
|
@ -216,6 +216,11 @@ bool Sema::CheckMessageArgumentTypes(Expr **Args, unsigned NumArgs,
|
|||
|
||||
AssignConvertType Result =
|
||||
CheckSingleAssignmentConstraints(lhsType, argExpr);
|
||||
if (Result == Incompatible && !getLangOptions().CPlusPlus &&
|
||||
CheckTransparentUnionArgumentConstraints(lhsType, argExpr)
|
||||
== Sema::Compatible)
|
||||
Result = Compatible;
|
||||
|
||||
if (Args[i] != argExpr) // The expression was converted.
|
||||
Args[i] = argExpr; // Make sure we store the converted expression.
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
|
||||
typedef union {
|
||||
struct xx_object_s *_do;
|
||||
struct xx_continuation_s *_dc;
|
||||
struct xx_queue_s *_dq;
|
||||
struct xx_queue_attr_s *_dqa;
|
||||
struct xx_group_s *_dg;
|
||||
struct xx_source_s *_ds;
|
||||
struct xx_source_attr_s *_dsa;
|
||||
struct xx_semaphore_s *_dsema;
|
||||
} xx_object_t __attribute__((transparent_union));
|
||||
|
||||
@interface INTF
|
||||
- (void) doSomething : (xx_object_t) xxObject;
|
||||
- (void)testMeth;
|
||||
@end
|
||||
|
||||
@implementation INTF
|
||||
- (void) doSomething : (xx_object_t) xxObject {}
|
||||
- (void)testMeth { struct xx_queue_s *sq; [self doSomething:sq ]; }
|
||||
@end
|
Loading…
Reference in New Issue