diff options
| author | Chris Lattner <sabre@nondot.org> | 2008-07-21 22:17:28 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2008-07-21 22:17:28 +0000 | 
| commit | d7352d6801f3bae265c75e9d2d9d2eba3d1c802d (patch) | |
| tree | 37aa3d0164d3e6eb9dca920a3c84f4c38442ecd8 /clang/lib/Parse/ParseDecl.cpp | |
| parent | 5224e6a81d110faeba866ab2fef8458b6bcac111 (diff) | |
| download | bcm5719-llvm-d7352d6801f3bae265c75e9d2d9d2eba3d1c802d.tar.gz bcm5719-llvm-d7352d6801f3bae265c75e9d2d9d2eba3d1c802d.zip | |
minor cleanup to the actions interface to pass around SmallVectorImpl instead
of a specific smallvector size.
Fix protocol lists to pass down proper location info, so we get diagnostics
like this:
t.m:3:35: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
                                  ^
instead of this:
t.m:3:44: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever'
@interface NSWhatever : NSObject <NSCopying>
                                           ^
Add a new IdentifierLocPair typedef which is just a pair<IdentifierInfo*, SourceLocation>
llvm-svn: 53883
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
| -rw-r--r-- | clang/lib/Parse/ParseDecl.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp index 95344c438ef..1ac26a309fa 100644 --- a/clang/lib/Parse/ParseDecl.cpp +++ b/clang/lib/Parse/ParseDecl.cpp @@ -413,8 +413,11 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) {            ConsumeToken(); // The identifier            if (Tok.is(tok::less)) {              SourceLocation endProtoLoc; -            llvm::SmallVector<IdentifierInfo *, 8> ProtocolRefs; +            llvm::SmallVector<IdentifierLocPair, 8> ProtocolRefs;              ParseObjCProtocolReferences(ProtocolRefs, endProtoLoc); +             +            // FIXME: New'ing this here seems wrong, why not have the action do +            // it?              llvm::SmallVector<DeclTy *, 8> *ProtocolDecl =                       new llvm::SmallVector<DeclTy *, 8>;              DS.setProtocolQualifiers(ProtocolDecl); @@ -553,7 +556,7 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) {      case tok::less:        if (!DS.hasTypeSpecifier()) {          SourceLocation endProtoLoc; -        llvm::SmallVector<IdentifierInfo *, 8> ProtocolRefs; +        llvm::SmallVector<IdentifierLocPair, 8> ProtocolRefs;          ParseObjCProtocolReferences(ProtocolRefs, endProtoLoc);          llvm::SmallVector<DeclTy *, 8> *ProtocolDecl =                   new llvm::SmallVector<DeclTy *, 8>; | 

