[cfe-commits] r54091 - in /cfe/trunk: include/clang/Basic/DiagnosticKinds.def include/clang/Parse/Action.h lib/Parse/ParseDecl.cpp lib/Sema/Sema.h lib/Sema/SemaDeclObjC.cpp test/SemaObjC/category-1.m test/SemaObjC/class-def-test-1.m test/SemaObjC/class-proto-1.m test/SemaObjC/protocol-test-2.m
Chris Lattner
sabre at nondot.org
Fri Jul 25 20:47:44 PDT 2008
Author: lattner
Date: Fri Jul 25 22:47:43 2008
New Revision: 54091
URL: http://llvm.org/viewvc/llvm-project?rev=54091&view=rev
Log:
simplify some code.
Modified:
cfe/trunk/include/clang/Basic/DiagnosticKinds.def
cfe/trunk/include/clang/Parse/Action.h
cfe/trunk/lib/Parse/ParseDecl.cpp
cfe/trunk/lib/Sema/Sema.h
cfe/trunk/lib/Sema/SemaDeclObjC.cpp
cfe/trunk/test/SemaObjC/category-1.m
cfe/trunk/test/SemaObjC/class-def-test-1.m
cfe/trunk/test/SemaObjC/class-proto-1.m
cfe/trunk/test/SemaObjC/protocol-test-2.m
Modified: cfe/trunk/include/clang/Basic/DiagnosticKinds.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticKinds.def?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticKinds.def (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticKinds.def Fri Jul 25 22:47:43 2008
@@ -425,7 +425,7 @@
DIAG(err_duplicate_class_def, ERROR,
"duplicate interface declaration for class '%0'")
DIAG(warn_undef_protocolref, WARNING,
- "cannot find protocol definition for '%0', referenced by '%1'")
+ "cannot find protocol definition for '%0'")
DIAG(err_duplicate_protocol_def, ERROR,
"duplicate protocol declaration of '%0'")
DIAG(err_undef_interface, ERROR,
Modified: cfe/trunk/include/clang/Parse/Action.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Parse/Action.h?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/include/clang/Parse/Action.h (original)
+++ cfe/trunk/include/clang/Parse/Action.h Fri Jul 25 22:47:43 2008
@@ -777,9 +777,10 @@
/// issues error if they are not declared. It returns list of valid
/// protocols found.
virtual void FindProtocolDeclaration(SourceLocation TypeLoc,
+ bool WarnOnDeclarations,
const IdentifierLocPair *ProtocolId,
unsigned NumProtocols,
- llvm::SmallVectorImpl<DeclTy*> &Protocols) {
+ llvm::SmallVectorImpl<DeclTy*> &ResProtos) {
}
//===----------------------- Obj-C Expressions --------------------------===//
Modified: cfe/trunk/lib/Parse/ParseDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseDecl.cpp?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseDecl.cpp (original)
+++ cfe/trunk/lib/Parse/ParseDecl.cpp Fri Jul 25 22:47:43 2008
@@ -435,7 +435,7 @@
ParseObjCProtocolReferences(ProtocolRefs, EndProtoLoc);
llvm::SmallVector<DeclTy *, 8> ProtocolDecl;
- Actions.FindProtocolDeclaration(Loc,
+ Actions.FindProtocolDeclaration(Loc, false,
&ProtocolRefs[0], ProtocolRefs.size(),
ProtocolDecl);
DS.setProtocolQualifiers(&ProtocolDecl[0], ProtocolDecl.size());
@@ -575,7 +575,7 @@
llvm::SmallVector<IdentifierLocPair, 8> ProtocolRefs;
ParseObjCProtocolReferences(ProtocolRefs, EndProtoLoc);
llvm::SmallVector<DeclTy *, 8> ProtocolDecl;
- Actions.FindProtocolDeclaration(Loc,
+ Actions.FindProtocolDeclaration(Loc, false,
&ProtocolRefs[0], ProtocolRefs.size(),
ProtocolDecl);
DS.setProtocolQualifiers(&ProtocolDecl[0], ProtocolDecl.size());
Modified: cfe/trunk/lib/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.h?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.h (original)
+++ cfe/trunk/lib/Sema/Sema.h Fri Jul 25 22:47:43 2008
@@ -655,6 +655,7 @@
unsigned NumElts);
virtual void FindProtocolDeclaration(SourceLocation TypeLoc,
+ bool WarnOnDeclarations,
const IdentifierLocPair *ProtocolId,
unsigned NumProtocols,
llvm::SmallVectorImpl<DeclTy *> &Protocols);
Modified: cfe/trunk/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclObjC.cpp?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclObjC.cpp Fri Jul 25 22:47:43 2008
@@ -144,7 +144,7 @@
else {
if (RefPDecl->isForwardDecl())
Diag(ProtocolNames[i].second, diag::warn_undef_protocolref,
- ProtocolNames[i].first->getName(), ClassName->getName());
+ ProtocolNames[i].first->getName());
RefProtos.push_back(RefPDecl);
}
}
@@ -230,7 +230,7 @@
else {
if (RefPDecl->isForwardDecl())
Diag(ProtoRefNames[i].second, diag::warn_undef_protocolref,
- ProtoRefNames[i].first->getName(), ProtocolName->getName());
+ ProtoRefNames[i].first->getName());
Protocols.push_back(RefPDecl);
}
}
@@ -245,16 +245,24 @@
/// issuer error if they are not declared. It returns list of protocol
/// declarations in its 'Protocols' argument.
void
-Sema::FindProtocolDeclaration(SourceLocation TypeLoc,
+Sema::FindProtocolDeclaration(SourceLocation TypeLoc, bool WarnOnDeclarations,
const IdentifierLocPair *ProtocolId,
unsigned NumProtocols,
llvm::SmallVectorImpl<DeclTy*> &Protocols) {
for (unsigned i = 0; i != NumProtocols; ++i) {
- if (ObjCProtocolDecl *PDecl = ObjCProtocols[ProtocolId[i].first])
- Protocols.push_back(PDecl);
- else
+ ObjCProtocolDecl *PDecl = ObjCProtocols[ProtocolId[i].first];
+ if (!PDecl) {
Diag(ProtocolId[i].second, diag::err_undeclared_protocol,
ProtocolId[i].first->getName());
+ continue;
+ }
+
+ // If this is a forward declaration and we are supposed to warn in this
+ // case, do it.
+ if (WarnOnDeclarations && PDecl->isForwardDecl())
+ Diag(ProtocolId[i].second, diag::warn_undef_protocolref,
+ ProtocolId[i].first->getName());
+ Protocols.push_back(PDecl);
}
}
@@ -444,7 +452,7 @@
else {
if (RefPDecl->isForwardDecl())
Diag(ProtoRefNames[i].second, diag::warn_undef_protocolref,
- ProtoRefNames[i].first->getName(), CategoryName->getName());
+ ProtoRefNames[i].first->getName());
RefProtocols.push_back(RefPDecl);
}
}
Modified: cfe/trunk/test/SemaObjC/category-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/category-1.m?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/category-1.m (original)
+++ cfe/trunk/test/SemaObjC/category-1.m Fri Jul 25 22:47:43 2008
@@ -4,7 +4,7 @@
@protocol p1,p2,p3;
- at interface MyClass1 (Category1) <p1> // expected-warning {{cannot find protocol definition for 'p1', referenced by 'Category1'}}
+ at interface MyClass1 (Category1) <p1> // expected-warning {{cannot find protocol definition for 'p1'}}
@end
@interface MyClass1 (Category1) // expected-warning {{duplicate interface declaration for category 'MyClass1(Category1)'}}
@@ -27,7 +27,7 @@
@protocol p3 @end
- at interface MyClass1 (Category) <p2, p3> @end // expected-warning {{cannot find protocol definition for 'p2', referenced by 'Category'}}
+ at interface MyClass1 (Category) <p2, p3> @end // expected-warning {{cannot find protocol definition for 'p2'}}
@interface MyClass (Category) @end // expected-error {{cannot find interface declaration for 'MyClass'}}
Modified: cfe/trunk/test/SemaObjC/class-def-test-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/class-def-test-1.m?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/class-def-test-1.m (original)
+++ cfe/trunk/test/SemaObjC/class-def-test-1.m Fri Jul 25 22:47:43 2008
@@ -2,7 +2,7 @@
@protocol SUPER;
- at interface SUPER <SUPER> @end // expected-warning {{cannot find protocol definition for 'SUPER', referenced by 'SUPER'}}
+ at interface SUPER <SUPER> @end // expected-warning {{cannot find protocol definition for 'SUPER'}}
typedef int INTF; // expected-error {{previous definition is here}}
Modified: cfe/trunk/test/SemaObjC/class-proto-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/class-proto-1.m?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/class-proto-1.m (original)
+++ cfe/trunk/test/SemaObjC/class-proto-1.m Fri Jul 25 22:47:43 2008
@@ -14,14 +14,14 @@
@interface I1 <p1> @end
- at interface E1 <p2> @end // expected-warning {{cannot find protocol definition for 'p2', referenced by 'E1'}}
+ at interface E1 <p2> @end // expected-warning {{cannot find protocol definition for 'p2'}}
@protocol p2 @end
@interface I2 <p1,p2> @end
- at interface E2 <p1,p2,p3> @end // expected-warning {{cannot find protocol definition for 'p3', referenced by 'E2'}}
+ at interface E2 <p1,p2,p3> @end // expected-warning {{cannot find protocol definition for 'p3'}}
@class U1, U2;
Modified: cfe/trunk/test/SemaObjC/protocol-test-2.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/protocol-test-2.m?rev=54091&r1=54090&r2=54091&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjC/protocol-test-2.m (original)
+++ cfe/trunk/test/SemaObjC/protocol-test-2.m Fri Jul 25 22:47:43 2008
@@ -10,7 +10,7 @@
- (INTF1<p1>*) meth;
@end
- at protocol PROTO2<p1> // expected-warning {{cannot find protocol definition for 'p1', referenced by 'PROTO2'}}
+ at protocol PROTO2<p1> // expected-warning {{cannot find protocol definition for 'p1'}}
@end
@protocol p1 @end
@@ -27,5 +27,5 @@
@protocol p2 <p1>
@end
- at protocol PROTO4 <p1, p2, PROTO, PROTO3, p3> // expected-warning {{cannot find protocol definition for 'p3', referenced by 'PROTO4'}}
+ at protocol PROTO4 <p1, p2, PROTO, PROTO3, p3> // expected-warning {{cannot find protocol definition for 'p3'}}
@end
More information about the cfe-commits
mailing list