forked from OSchip/llvm-project
It is illegal to derefrercne to an interface in
objc's non-fragile ABI. llvm-svn: 80739
This commit is contained in:
parent
8c7f86e698
commit
086ac11606
|
@ -1355,6 +1355,8 @@ def err_typecheck_unary_expr : Error<
|
|||
"invalid argument type %0 to unary expression">;
|
||||
def err_typecheck_indirection_requires_pointer : Error<
|
||||
"indirection requires pointer operand (%0 invalid)">;
|
||||
def err_indirection_requires_nonfragile_object : Error<
|
||||
"indirection cannot be to an interface in non-fragile ABI (%0 invalid)">;
|
||||
def err_typecheck_invalid_operands : Error<
|
||||
"invalid operands to binary expression (%0 and %1)">;
|
||||
def err_typecheck_sub_ptr_object : Error<
|
||||
|
|
|
@ -5023,8 +5023,15 @@ QualType Sema::CheckIndirectionOperand(Expr *Op, SourceLocation OpLoc) {
|
|||
if (const PointerType *PT = Ty->getAs<PointerType>())
|
||||
return PT->getPointeeType();
|
||||
|
||||
if (const ObjCObjectPointerType *OPT = Ty->getAsObjCObjectPointerType())
|
||||
return OPT->getPointeeType();
|
||||
if (const ObjCObjectPointerType *OPT = Ty->getAsObjCObjectPointerType()) {
|
||||
QualType PTy = OPT->getPointeeType();
|
||||
if (LangOpts.ObjCNonFragileABI && PTy->isObjCInterfaceType()) {
|
||||
Diag(OpLoc, diag::err_indirection_requires_nonfragile_object)
|
||||
<< Ty << Op->getSourceRange();
|
||||
return QualType();
|
||||
}
|
||||
return PTy;
|
||||
}
|
||||
|
||||
Diag(OpLoc, diag::err_typecheck_indirection_requires_pointer)
|
||||
<< Ty << Op->getSourceRange();
|
||||
|
|
Loading…
Reference in New Issue