diff options
| author | Steve Naroff <snaroff@apple.com> | 2009-02-21 19:50:43 +0000 |
|---|---|---|
| committer | Steve Naroff <snaroff@apple.com> | 2009-02-21 19:50:43 +0000 |
| commit | cd8d5722830c7765e98b2e78b44bb7d6932c658d (patch) | |
| tree | 9f850de60ebc0e0c3992f7766c2162f3b2be6d3c | |
| parent | 0c9404e0a764fc15a7080ccabf10eeacd2265d68 (diff) | |
| download | bcm5719-llvm-cd8d5722830c7765e98b2e78b44bb7d6932c658d.tar.gz bcm5719-llvm-cd8d5722830c7765e98b2e78b44bb7d6932c658d.zip | |
Warn about bogus protocol qualifiers.
llvm-svn: 65241
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.def | 2 | ||||
| -rw-r--r-- | clang/lib/Sema/SemaType.cpp | 3 | ||||
| -rw-r--r-- | clang/test/SemaObjC/protocol-archane.m | 7 |
3 files changed, 11 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.def b/clang/include/clang/Basic/DiagnosticSemaKinds.def index cce97aa48f9..7ebb5a706cd 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.def +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.def @@ -1402,4 +1402,6 @@ DIAG(warn_objc_array_of_interfaces, WARNING, "array of interface %0 should probably be an array of pointers") DIAG(ext_c99_array_usage, EXTENSION, "use of C99-specific array features, accepted as an extension") +DIAG(warn_ignoring_objc_qualifiers, WARNING, + "ignoring protocol qualifiers on non-ObjC type") diff --git a/clang/lib/Sema/SemaType.cpp b/clang/lib/Sema/SemaType.cpp index 252cd2d533c..acdeec6ba94 100644 --- a/clang/lib/Sema/SemaType.cpp +++ b/clang/lib/Sema/SemaType.cpp @@ -151,6 +151,9 @@ QualType Sema::ConvertDeclSpecToType(const DeclSpec &DS) { // id<protocol-list> Result = Context.getObjCQualifiedIdType((ObjCProtocolDecl**)PQ, DS.getNumProtocolQualifiers()); + else + Diag(DS.getSourceRange().getBegin(), + diag::warn_ignoring_objc_qualifiers) << DS.getSourceRange(); } // TypeQuals handled by caller. break; diff --git a/clang/test/SemaObjC/protocol-archane.m b/clang/test/SemaObjC/protocol-archane.m index bfae348f082..2cba1fad051 100644 --- a/clang/test/SemaObjC/protocol-archane.m +++ b/clang/test/SemaObjC/protocol-archane.m @@ -21,4 +21,9 @@ void foo(id x) { // FIXME: provide a better diagnostic (no typedef). - (void)m2:(id <MyProtocol> short)arg1; // expected-error {{'short type-name' is invalid}} -@end
\ No newline at end of file +@end + +typedef int NotAnObjCObjectType; + +// GCC doesn't diagnose this. +NotAnObjCObjectType <SomeProtocol> *obj; // expected-warning {{ignoring protocol qualifiers on non-ObjC type}} |

