]> granicus.if.org Git - clang/commitdiff
Warn instead of error on duplicate protocol definitions.
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 6 Apr 2009 23:43:32 +0000 (23:43 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 6 Apr 2009 23:43:32 +0000 (23:43 +0000)
Be kind to so many projects which are doing this (and be
like gcc).

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68474 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticSemaKinds.td
lib/Sema/SemaDeclObjC.cpp
test/SemaObjC/check-dup-objc-decls-1.m
test/SemaObjC/protocol-test-2.m

index b51162ae941b284f9cdc3a7770258fdfe6a38e8a..ddb066e3d68c6229bea692d4209db73179942c5c 100644 (file)
@@ -128,7 +128,7 @@ def err_undef_superclass : Error<
 def warn_previous_alias_decl : Warning<"previously declared alias is ignored">;
 def err_conflicting_aliasing_type : Error<"conflicting types for alias %0">;
 def warn_undef_interface : Warning<"cannot find interface declaration for %0">;
-def err_duplicate_protocol_def : Error<"duplicate protocol definition of %0">;
+def warn_duplicate_protocol_def : Warning<"duplicate protocol definition of %0 is ignored">;
 def err_protocol_has_circular_dependency : Error<
   "protocol has circular dependency">;
 def err_undeclared_protocol : Error<"cannot find protocol declaration for %0">;
index 0103393ddc684ee6e9d28ace02e53cf19ab664d2..17de0a506786d51888bd20fadf0e29b20175bb2b 100644 (file)
@@ -246,8 +246,7 @@ Sema::ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc,
   if (PDecl) {
     // Protocol already seen. Better be a forward protocol declaration
     if (!PDecl->isForwardDecl()) {
-      PDecl->setInvalidDecl();
-      Diag(ProtocolLoc, diag::err_duplicate_protocol_def) << ProtocolName;
+      Diag(ProtocolLoc, diag::warn_duplicate_protocol_def) << ProtocolName;
       Diag(PDecl->getLocation(), diag::note_previous_definition);
       // Just return the protocol we already had.
       // FIXME: don't leak the objects passed in!
index 4181ac097b455a378254a4f8f886833b41bdb1dc..dc9c8f442616754768d8d382fc8130ac36becb83 100644 (file)
@@ -33,7 +33,7 @@ void Gorf() // expected-error {{redefinition of 'Gorf' as different kind of symb
 @interface A<Q> @end  // expected-error {{duplicate interface definition for class 'A'}}
 
 @protocol PP<P> @end  // expected-note {{previous definition is here}}
-@protocol PP<Q> @end  // expected-error {{duplicate protocol definition of 'PP'}}
+@protocol PP<Q> @end  // expected-warning {{duplicate protocol definition of 'PP'}}
 
 @interface A(Cat)<P> @end // expected-note {{previous definition is here}}
 @interface A(Cat)<Q> @end // expected-warning {{duplicate definition of category 'Cat' on interface 'A'}}
index a882809f1c731925aac9a68bbdc413adb130ab47..3abb9b593510392f3278d095b94d600e2e0e196c 100644 (file)
@@ -18,7 +18,7 @@
 @protocol PROTO<p1>     // expected-note {{previous definition is here}}
 @end
 
-@protocol PROTO<p1>    // expected-error {{duplicate protocol definition of 'PROTO'}}
+@protocol PROTO<p1>    // expected-warning {{duplicate protocol definition of 'PROTO'}}
 @end
 
 @protocol PROTO3<p1, p1>