diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2007-12-05 18:16:33 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2007-12-05 18:16:33 +0000 |
commit | 5ef404f08b42c58fd8d4c93d1672ab28f61befa6 (patch) | |
tree | 53d74f91acd77f4220140800fe0a94f109a9af80 | |
parent | 7127431a1d1337bdf4a96cb22b4743b94f25bf61 (diff) |
Patch to prevent crash on use of objc2 syntax.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44617 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | Sema/SemaExpr.cpp | 2 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticKinds.def | 2 | ||||
-rw-r--r-- | test/Parser/check-objc2-syntax-1.m | 10 |
3 files changed, 14 insertions, 0 deletions
diff --git a/Sema/SemaExpr.cpp b/Sema/SemaExpr.cpp index b08695ff76..ed71934621 100644 --- a/Sema/SemaExpr.cpp +++ b/Sema/SemaExpr.cpp @@ -106,6 +106,8 @@ Sema::ExprResult Sema::ActOnIdentifierExpr(Scope *S, SourceLocation Loc, } if (isa<TypedefDecl>(D)) return Diag(Loc, diag::err_unexpected_typedef, II.getName()); + if (isa<ObjcInterfaceDecl>(D)) + return Diag(Loc, diag::err_unexpected_interface, II.getName()); assert(0 && "Invalid decl"); abort(); diff --git a/include/clang/Basic/DiagnosticKinds.def b/include/clang/Basic/DiagnosticKinds.def index f99239c1e0..043dcd4f34 100644 --- a/include/clang/Basic/DiagnosticKinds.def +++ b/include/clang/Basic/DiagnosticKinds.def @@ -392,6 +392,8 @@ DIAG(err_matching, ERROR, "to match this '%0'") /// Objective-C parser diagnostics +DIAG(err_unexpected_interface, ERROR, + "unexpected interface name '%0': expected expression") DIAG(err_objc_no_attributes_on_category, ERROR, "attributes may not be specified on a category") DIAG(err_objc_missing_end, ERROR, diff --git a/test/Parser/check-objc2-syntax-1.m b/test/Parser/check-objc2-syntax-1.m new file mode 100644 index 0000000000..b0b0e8a35e --- /dev/null +++ b/test/Parser/check-objc2-syntax-1.m @@ -0,0 +1,10 @@ +// RUN: clang -fsyntax-only -verify %s + +@interface Subclass ++ (int)magicNumber; +@end + +int main (void) { + return Subclass.magicNumber; // expected-error {{unexpected interface name 'Subclass': expected expression}} +} + |