Skip to content

Commit

Permalink
objc-arc: Allow unbridged cast of retainable object to
Browse files Browse the repository at this point in the history
integral as it is not transferring ownership.. 
// rdar://9619861


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@133622 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
Fariborz Jahanian committed Jun 22, 2011
1 parent d1bd98a commit 8295b7b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/Sema/SemaExprObjC.cpp
Expand Up @@ -1620,7 +1620,7 @@ Sema::CheckObjCARCConversion(SourceRange castRange, QualType castType,
ARCConversionTypeClass exprACTC = classifyTypeForARCConversion(castExprType);
ARCConversionTypeClass castACTC = classifyTypeForARCConversion(castType);
if (exprACTC == castACTC) return;
if (exprACTC && castType->isBooleanType()) return;
if (exprACTC && castType->isIntegralType(Context)) return;

// Allow casts between pointers to lifetime types (e.g., __strong id*)
// and pointers to void (e.g., cv void *). Casting from void* to lifetime*
Expand Down
9 changes: 9 additions & 0 deletions test/SemaObjC/arc.m
Expand Up @@ -563,3 +563,12 @@ id Test32(__weak ITest32 *x) {
: (*x).ivar; // expected-error {{dereferencing a __weak pointer is not allowed}}
}

// rdar://9619861
extern int printf(const char*, ...);
typedef long intptr_t;

int Test33(id someid) {
printf( "Hello%ld", (intptr_t)someid);
return (int)someid;
}

0 comments on commit 8295b7b

Please sign in to comment.