aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseObjc.cpp
AgeCommit message (Collapse)Author
2009-06-24Fix a clang crash caused by incorrect user code.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@74080 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Use of DeclContext for objc's ivars. No functionalityFariborz Jahanian
change. More to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72951 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Merge the ASTVector and ASTOwningVector templates, since they offeredDouglas Gregor
redundant functionality. The result (ASTOwningVector) lives in clang/Parse/Ownership.h and is used by both the parser and semantic analysis. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72214 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-21Use v.data() instead of &v[0] when SmallVector v might be empty.Jay Foad
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72210 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-17Make ActOnExprStmt take a FullExprArg.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71989 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-04Remove support for ObjCMethodDecl attributes that appear between theTed Kremenek
return type and the selector. This is inconsistent with C functions (where such attributes would be placed on the return type, not the the FunctionDecl), and is inconsistent with what people are use to seeing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70878 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Hook up Sema support for attributes on Objective-C method declarations thatTed Kremenek
appear between the return type and the selector. This is a separate code path from regular attribute processing, as we only want to (a) accept only a specific set of attributes in this place and (b) want to distinguish to clients the context in which an attribute was added to an ObjCMethodDecl. Currently, the attribute 'objc_ownership_returns' is the only attribute that uses this new feature. Shortly I will add a warning for 'objc_ownership_returns' to be placed at the end of a method declaration. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70504 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-30Add parsing support in an Objective-C method declaration for attributes betweenTed Kremenek
the return type and selector. Haven't hooked this up to Sema yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70501 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-12Fix rdar://6771034: don't warn on use of forward declared protocol in protocolChris Lattner
list of another protocol definition. This warning is very noisy and GCC doesn't produce it so existing code doesn't expect it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68894 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11change the interface to ActOnMethodDeclaration to pass down argumentChris Lattner
information in a little struct instead of individually. While we're at it, add per-argument loc info and attribute info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68871 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-11rename Parser::ParseObjCSelector -> Parser::ParseObjCSelectorPiece,Chris Lattner
since it only parses one identifier out of the selector, not the whole thing. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68867 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-08Fixed a problem using property syntax on a 'super'Fariborz Jahanian
used as receiver. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68631 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-07Fix <rdar://problem/6764172> [sema] crash on invalid.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68568 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-29Push DeclGroup much farther throughout the compiler. Now the variousChris Lattner
productions (except the already broken ObjC cases like @class X,Y;) in the parser that can produce more than one Decl return a DeclGroup instead of a Decl, etc. This allows elimination of the Decl::NextDeclarator field, and exposes various clients that should look at all decls in a group, but which were only looking at one (such as the dumper, printer, etc). These have been fixed. Still TODO: 1) there are some FIXME's in the code about potentially using DeclGroup for better location info. 2) ParseObjCAtDirectives should return a DeclGroup due to @class etc. 3) I'm not sure what is going on with StmtIterator.cpp, or if it can be radically simplified now. 4) I put a truly horrible hack in ParseTemplate.cpp. I plan to bring up #3/4 on the mailing list, but don't plan to tackle #1/2 in the short term. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@68002 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-28Introduce a new OpaquePtr<N> struct type, which is a simple POD wrapper for aChris Lattner
pointer. Its purpose in life is to be a glorified void*, but which does not implicitly convert to void* or other OpaquePtr's with a different UID. Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This makes the C++ compiler enforce that these aren't convertible to other opaque types. We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc, but I don't plan to do that in the short term. The one outstanding known problem with this patch is that we lose the bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to bitmangle the success bit into the low bit of DeclPtrTy. I will rectify this with a subsequent patch. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67952 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-18objc: Implemented variables declared in class interface Fariborz Jahanian
whose sema decl is at the translation unit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67249 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-12Use paropery's setter attribute name asFariborz Jahanian
the selector for the property setter. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66834 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-10Simplify SelectorTable::constructSetterName() usage...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66551 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-09Implement property '.' notation on Factory/Class objects. Parser changes ↵Steve Naroff
aren't very pretty:-( This fixes <rdar://problem/6496506> Implement class setter/getter for properties. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66465 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-05rename PrettyStackTraceDecl -> PrettyStackTraceActionsDecl.Chris Lattner
Introduce a new PrettyStackTraceDecl. Use it to add the top level LLVM IR generation stuff in Backend.cpp to stack traces. We now get crashes like: Stack dump: 0. Program arguments: clang t.c -emit-llvm 1. <eof> parser at end of file 2. t.c:1:5: LLVM IR generation of declaration 'a' Abort for IR generation crashes. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66153 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-05include objc method decl contexts in stack trace of crash, e.g.:Chris Lattner
Stack dump: 0. message.m:53:13: in compound statement ('{}') 1. message.m:53:13: parsing Objective-C method 'xx' 2. clang message.m git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66121 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-04Implemented access check for ivars accessed insideFariborz Jahanian
c-style functions declared inside objc @implementations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66087 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-03Fix <rdar://problem/6640991> Exception handling executes wrong clause ↵Steve Naroff
(Daniel, please verify). Also necessary to fix: <rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements <rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65964 91177308-0d34-0410-b5e6-96231b3b80d8
2009-03-02Fix <rdar://problem/6636803> [sema] crash on InterfaceBuilder.Steve Naroff
Parser::ParseObjCMethodDefinition(): Make sure we don't exit the BodyScope until ActOnFinishFunctionBody() is complete. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65880 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-28Minor name change (move the ObjC prefix to a more appropriate place).Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@65695 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18Update Parser::ParseTypeName to return a TypeResult, which also tellsDouglas Gregor
us whether there was an error in trying to parse a type-name (type-id in C++). This allows propagation of errors further in the compiler, suppressing more bogus error messages. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64922 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-18simplify some code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64893 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-15implement gcc/testsuite/objc.dg/method-attribute-3.m, by improving error ↵Chris Lattner
recovery. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64609 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-15don't pass a random english string in as a string argument to Diag.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64608 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-14Pass the location of the start of the selector to ↵Anders Carlsson
ActOnClassMessage/ActOnInstanceMessage. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64560 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-11Fix <rdar://problem/6505139> [clang on growl]: need to allow unnamed ↵Steve Naroff
selectors as the first argument git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64320 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-11Fix <rdar://problem/6243503> [sema] @throw; accepted outside catch block.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64318 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-05Put the invalid flag of OwningResult into the Action pointer.Sebastian Redl
This shrinks OwningResult by one pointer. Since it is no longer larger than OwningPtr, merge the two. This leads to simpler client code and speeds up my benchmark by 2.7%. For some reason, this exposes a previously hidden bug, causing a regression in SemaCXX/condition.cpp. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63867 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-29move library-specific diagnostic headers into library private dirs. ReduceChris Lattner
redundant #includes. Patch by Anders Johnsen! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63271 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-27Split the single monolithic DiagnosticKinds.def file into oneChris Lattner
.def file for each library. This means that adding a diagnostic to sema doesn't require all the other libraries to be rebuilt. Patch by Anders Johnsen! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@63111 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-18Rename move_convert to move_arg and move_res. The new names are less ↵Sebastian Redl
misleading (and shorter). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62466 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-18Convert ObjC statement actions to smart pointers.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62465 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-17Diagnose that property name cannot be a bitfieldFariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62432 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-12Properly set the scope of non-fields declared within a struct, union,Douglas Gregor
or enum to be outside that struct, union, or enum. Fixes several regressions: <rdar://problem/6487662> <rdar://problem/6487669> <rdar://problem/6487684> <rdar://problem/6487702> PR clang/3305 PR clang/3312 There is still some work to do in Objective-C++, but this requires that each of the Objective-C entities (interfaces, implementations, etc.) to be introduced into the context stack with PushDeclContext/PopDeclContext. This will be a separate fix, later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62091 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-09Fix rdar://6480479 - [parser] infinite loop on invalid inputChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61975 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-09Adding support for ObjC methods which have c-styleFariborz Jahanian
parameter list. This is work in progress. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61964 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-08Unify the code for defining tags in C and C++, so that we alwaysDouglas Gregor
introduce a Scope for the body of a tag. This reduces the number of semantic differences between C and C++ structs and unions, and will help with other features (e.g., anonymous unions) in C. Some important points: - Fields are now in the "member" namespace (IDNS_Member), to keep them separate from tags and ordinary names in C. See the new test in Sema/member-reference.c for an example of why this matters. In C++, ordinary and member name lookup will find members in both the ordinary and member namespace, so the difference between IDNS_Member and IDNS_Ordinary is erased by Sema::LookupDecl (but only in C++!). - We always introduce a Scope and push a DeclContext when we're defining a tag, in both C and C++. Previously, we had different actions and different Scope/CurContext behavior for enums, C structs/unions, and C++ structs/unions/classes. Now, it's one pair of actions. (Yay!) There's still some fuzziness in the handling of struct/union/enum definitions within other struct/union/enum definitions in C. We'll need to do some more cleanup to eliminate some reliance on CurContext before we can solve this issue for real. What we want is for something like this: struct X { struct T { int x; } t; }; to introduce T into translation unit scope (placing it at the appropriate point in the IdentifierResolver chain, too), but it should still have struct X as its lexical declaration context. PushOnScopeChains isn't smart enough to do that yet, though, so there's a FIXME test in nested-redef.c git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61940 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-21Convert a few Stmt actions to smart pointers.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61309 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-17Semantics of @protocol attributes.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61114 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-13Some utilities for using the smart pointers in Actions, especially Sema. ↵Sebastian Redl
Convert a few functions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60983 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-13Convert remaining expression parsers to smart pointers. Now on to the Action ↵Sebastian Redl
connection. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60982 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-11Convert a big bunch of expression parsers to use smart pointers.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60906 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-11Convert some more expression parsers to use smart pointers.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60904 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-11Convert selected expression parsers to use smart pointers.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60900 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-11Convert the remaining statement parsers to smart pointers.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@60895 91177308-0d34-0410-b5e6-96231b3b80d8