From 8149a5786def747af783a9e3c22714bb7ab42b9c Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Mon, 22 Mar 2010 21:02:34 +0000 Subject: [PATCH] Diagnose miuse of property dot-syntax instead of crashing. (radar 7634653). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99210 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Basic/DiagnosticSemaKinds.td | 1 + lib/Sema/SemaExprObjC.cpp | 5 ++++- test/SemaObjC/property-expression-error.m | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index f1b2d1133f..ddd87941e2 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -2332,6 +2332,7 @@ def warn_unused_call : Warning< def err_incomplete_type_used_in_type_trait_expr : Error< "incomplete type %0 used in type trait expression">; +def err_expected_ident_or_lparen : Error<"expected identifier or '('">; // inline asm. def err_asm_wide_character : Error<"wide string is invalid in 'asm'">; diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp index c98ba435c7..d5a22ca15f 100644 --- a/lib/Sema/SemaExprObjC.cpp +++ b/lib/Sema/SemaExprObjC.cpp @@ -289,7 +289,10 @@ Action::OwningExprResult Sema::ActOnClassPropertyRefExpr( IdentifierInfo *receiverNamePtr = &receiverName; ObjCInterfaceDecl *IFace = getObjCInterfaceDecl(receiverNamePtr); - + if (!IFace) { + Diag(receiverNameLoc, diag::err_expected_ident_or_lparen); + return ExprError(); + } // Search for a declared property first. Selector Sel = PP.getSelectorTable().getNullarySelector(&propertyName); diff --git a/test/SemaObjC/property-expression-error.m b/test/SemaObjC/property-expression-error.m index b59c1b154b..6b5cf047dc 100644 --- a/test/SemaObjC/property-expression-error.m +++ b/test/SemaObjC/property-expression-error.m @@ -16,3 +16,8 @@ int main() { &object.index; // expected-error {{address of property expression requested}} return 0; } + +typedef int Foo; +void test() { + Foo.x; // expected-error {{expected identifier or '('}} +} -- 2.40.0