[PATCH] D31673: Allow casting C pointers declared using extern "C" to ObjC pointer types
Akira Hatanaka via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 6 16:54:46 PDT 2017
ahatanak added inline comments.
================
Comment at: lib/Sema/SemaExprObjC.cpp:3358
var &&
- var->getStorageClass() == SC_Extern &&
+ !var->isThisDeclarationADefinition() &&
var->getType().isConstQualified()) {
----------------
rjmccall wrote:
> Hmm. Come to think of it, I wonder if we actually care whether the variable has a definition, given that it's const.
>
> Well, we can consider that later. I agree that this change is good.
If we don't care whether the variable is a definition, it's possible to check whether the variable declaration is directly contained in a language linkage instead (using a function like isSingleLineLanguageLinkage in lib/AST/Decl.cpp).
================
Comment at: test/SemaObjCXX/arc-bridged-cast.mm:59
+extern "C" const CFAnnotatedObjectRef r2;
+extern "C" const CFAnnotatedObjectRef r3 = 0;
+
----------------
rjmccall wrote:
> These examples are a little unfortunate because these values are known to be null pointers.
Changed the initializer to be the address of a __CFAnnotatedObject variable.
https://reviews.llvm.org/D31673
More information about the cfe-commits
mailing list