diff options
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaDeclAttr.cpp | 11 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 4 |
2 files changed, 10 insertions, 5 deletions
diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 30ddd4d51d6..7987a18f610 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -4403,13 +4403,18 @@ static void handleObjCBridgeAttr(Sema &S, Scope *Sc, Decl *D, if (T->isRecordType()) { RecordDecl *RD = T->getAs<RecordType>()->getDecl(); if (!RD || RD->isUnion()) { - S.Diag(D->getLocStart(), diag::err_attribute_wrong_decl_type) - << Attr.getRange() << Attr.getName() << ExpectedStruct; + S.Diag(D->getLocStart(), diag::err_objc_bridge_not_pointert_to_struct) + << Attr.getRange(); return; } + } else { + S.Diag(TD->getLocStart(), diag::err_objc_bridge_not_pointert_to_struct) + << Attr.getRange(); + return; } } else { - S.Diag(TD->getLocStart(), diag::err_objc_bridge_not_pointertype); + S.Diag(TD->getLocStart(), diag::err_objc_bridge_not_pointert_to_struct) + << Attr.getRange(); return; } // Check for T being a CFType goes here. diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index 6ff6bef1ec7..e72519c3edf 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -3180,13 +3180,13 @@ static bool CheckObjCBridgeCast(Sema &S, QualType castType, Expr *castExpr) { NamedDecl *Target = R.getFoundDecl(); if (Target && !isa<ObjCInterfaceDecl>(Target)) { S.Diag(castExpr->getLocStart(), diag::err_objc_bridged_not_interface) - << castExpr->getType(); + << castExpr->getType() << Parm->getName(); S.Diag(TDNDecl->getLocStart(), diag::note_declared_at); S.Diag(Target->getLocStart(), diag::note_declared_at); } } else { S.Diag(castExpr->getLocStart(), diag::err_objc_bridged_not_interface) - << castExpr->getType(); + << castExpr->getType() << Parm->getName(); S.Diag(TDNDecl->getLocStart(), diag::note_declared_at); } } |

