aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2007-11-12Add category method definitions incrementally, removing a FIXME (like we do ↵Steve Naroff
for class implementations). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44027 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Minor twik for when there is no super class and 'super' is errornously used.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44026 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12'super' nailed.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44025 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Fix regression to Sema::ObjcActOnStartOfMethodDef()...need to initialize ↵Steve Naroff
InvalidType field to false. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44023 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Add an error diagnostic to Parse::ParseObjCMessageExpression().Steve Naroff
This now exposes the following bug... ******************** TEST 'Sema/message.m' FAILED! ******************** Command: clang -fsyntax-only -verify Sema/message.m Output: Errors seen but not expected: Line 9: invalid receiver to message expression ******************** TEST 'Sema/message.m' FAILED! ******************** As far as I can tell, all messages to method agruments fail. The method arguments are built by Sema::ObjcActOnStartOfMethodDef(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44022 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12In Stmt serialization, renamed directEmit to EmitImpl andTed Kremenek
directMaterialize to CreateImpl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44020 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Now that we can refer to instance variables, make sure they are considered ↵Steve Naroff
lvalues. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44017 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Implement instance variable references.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44016 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12- Minor cleanup to yesterday's changes to Sema::ObjcActOnStartOfMethodDef();Steve Naroff
- Add Sema::CurMethodDecl, in preparation for adding ObjcIvarRefExpr. - Add ObjcInterfaceDecl::lookupInstanceVariable(), in prep for adding ivars. - A couple renames in ObjcInterfaceDecl, while I was in the vicinity:-) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44015 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Forgot this file from my last commit...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44009 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Remove Action::ObjcActOnMethodDefinition(). Rationale:Steve Naroff
- It is not an "action" - it is never called by the parser. - It was only used by one method, Sema::ObjcActOnStartOfMethodDef(). As a result, the logic it embodied is now directly implemented in Sema::ObjcActOnStartOfMethodDef(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44008 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Make sure @property is allowed within a category.Steve Naroff
Bug submitted by Keith Bauer. CookieJar:Desktop keith$ cat test.m #import <WebKit/WebKit.h> git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44007 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-12Remove Sema::ObjcBuildMethodParameter().Steve Naroff
Modify Sema::ParseParamDeclarator() to work for both ActOnStartOfFunctionDef() and ObjcActOnStartOfMethodDef(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44006 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11Replace 2 method definition actions (ActOnFunctionDefBody, ↵Steve Naroff
ActOnMethodDefBody) with 1 method definition action (ActOnFinishFunctionBody). I can't think of any reason that we would need two action hooks. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44000 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11Replace 3 method definition functions (ObjcParseMethodDefinition, ↵Steve Naroff
ParseObjCInstanceMethodDefinition, ParseObjCClassMethodDefinition) with 1 method definition function (ParseObjCMethodDefinition). Less code/confusion. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43999 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11Tweak Sema::ActOnInstanceMessage() to treat the built-in "Class" type the ↵Steve Naroff
same as "id". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43996 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11This is the last 5% of the solution to teaching Sema::ActOnInstanceMessage() ↵Steve Naroff
about private methods (r43989). While the diff is large, the idea is very simple. When we parse method definitions (in an @implementation), we need to add them incrementally (rather than wait until the @end). Other details... - Renamed Sema::ActOnAddMethodsToObjcDecl() to Sema::ActOnAtEnd(). The methods are now optional arguments. - Removed Parser::AllImplMethods (a nice cleanup). - Added location info to ObjcImplementationDecl (since we will need it very soon:-) - Modified message.m test to no longer allow the bogus diagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43995 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11Make sure Sema::CheckIncrementDecrementOperand() removes typedefs when doing ↵Steve Naroff
it's analysis. Thanks to Seo Sanghyeon for his excellent (first) bug fix! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43994 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-11Teach Sema::ActOnInstanceMessage() about private methods. That is, methods ↵Steve Naroff
declared in an implementation (but not listed in the interface). This commit is only 95% of the bug fix. The last piece to this puzzle is to add the method decls to the implementation incrementally (as we encounter them). At the moment, the methods aren't added until we see an @end (which is too late). I will complete this later... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43989 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Fixed a bug which exposed the internally built type to user code.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43987 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10pretty priting for method definitions.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43986 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Fix a basic bug (having to do with typedefs) in ↵Steve Naroff
Sema::UsualArithmeticConversions(). This resuled in the following crash below. Also modified the usual-float.c test case to capture this case. [steve-naroffs-imac:clang/test/Sema] snaroff% ../../../../Debug/bin/clang usual-float.c Assertion failed: (0 && "Sema::UsualArithmeticConversions(): illegal float comparison"), function UsualArithmeticConversions, file SemaExpr.cpp, line 960. 0 clang 0x001ef9b9 _ZN40_GLOBAL__N_Signals.cpp_00000000_4E6DAF8315PrintStackTraceEv + 45 1 clang 0x001efd5f _ZN40_GLOBAL__N_Signals.cpp_00000000_4E6DAF8313SignalHandlerEi + 323 2 libSystem.B.dylib 0x90c6297b _sigtramp + 43 3 ??? 0xffffffff 0x0 + 4294967295 4 libSystem.B.dylib 0x90cdb782 raise + 26 5 libSystem.B.dylib 0x90cead3f abort + 73 6 libSystem.B.dylib 0x90cdc923 __assert_rtn + 101 7 clang 0x00077316 _ZN5clang4Sema26UsualArithmeticConversionsERPNS_4ExprES3_b + 1004 8 clang 0x000803cf _ZN5clang4Sema27CheckMultiplyDivideOperandsERPNS_4ExprES3_NS_14SourceLocationEb + 181 9 clang 0x0007a8e8 _ZN5clang4Sema10ActOnBinOpENS_14SourceLocationENS_3tok9TokenKindEPvS4_ + 472 10 clang 0x000cf058 _ZN5clang6Parser26ParseRHSOfBinaryExpressionENS_6Action12ActionResultILj0EEEj + 1286 11 clang 0x000cf2de _ZN5clang6Parser25ParseAssignmentExpressionEv + 86 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43985 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Since we are all working on Leopard, change the built-in MacOS X version ↵Steve Naroff
number (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) to target Leopard. This is only a short term solution, until the clang driver implements the "-mmacosx-version-min" flag (which will compute this value based on the target). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43981 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Minor code clean up in method def area.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43980 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Represent method definitions as separate AST nodes. Pretty print will come next.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43979 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Changed the serialization of IdentifierTable to only serialize out entriesTed Kremenek
that are referenced in the ASTs. This assumes that we serialize out the decls/stmts first, and use the pointer-tracking logic in the Serializer to determine if an IdentifierInfo (or its string key) is ever referenced. This is a significant space optimization for serialized ASTs. Consider the following program: void foo(int x,int y) { return x > y ? x : y+1; } Here are the sizes of the files for the serialized ASTs: Full IdentifierTable: 23676 bytes Only-referenced Identifiers: 304 bytes. For this simple program, this is a 77% reduction in the file size of the serialized ASTs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43975 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-10Modifed the test serialization driver to...Ted Kremenek
(1) serialize out top-level decls BEFORE serializing out translation unit structures like ASTContext. (2) deserialize out translation unit structures like ASTContext before top-level decls by first skipping the decls in the bitstream, deserializing ASTContext and friends, and then jumping back to the bitstream block with the decls and then deserializing them. Change (1) allows us to utilize the pointer-tracking system in the Serializer to only serialize out metadata that is actually referenced by the ASTS. Change (2) allows us to deserialize the metadata first as before, which signficantly reduces the amount of pointer backpatching the deserializer would have to do if the decls were deserialized first. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43974 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09rename getInstantiationLoc to match the scheme of isPhysicalLoc.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43969 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09change source location to have two bits for macros, trackingChris Lattner
whether the location is the start and/or end of an expansion. These are currently not set or used by anything. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43968 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Some code clean up in the form of name changes for functions whichFariborz Jahanian
process method definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43967 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Updated VC++ build systemHartmut Kaiser
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43958 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Added class context to method declarations. Provide "interface *" typeFariborz Jahanian
to 'self' method of instance methods. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43957 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Insert invisble arguments to method definition header.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43948 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Rewrite global variable initializers. Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43947 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Recognize ObjCStringLiteral as a constant expression.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43946 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09- add typedef guards.Steve Naroff
- tweak scanForProtocolRefs heuristic. - disable RewriteInclude() for now. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43942 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-09Changed method call to reflect updated serialization API.Ted Kremenek
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43917 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08First patch toward rewriting of method definitions. This is work in progress.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43915 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08remove some temporary code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43906 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08add a getAtOffset() member to simplify some code.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43905 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Rewrote serialization of IdentifierInfo and IdentifierTable to use methods EmitTed Kremenek
and Materialize/Read instead of using specializations of SerializeTrait<>. The resulting code is much cleaner. We are also setting the stage so that only the parts of the IdentifierTable that are ever referenced within the ASTs are serialized, and not the whole table. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43904 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08add a fixme.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43902 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08significantly simplify the implementation of RewriteRope by changing theChris Lattner
implementation to be list<RopePiece> instead of vector<RopePiece*>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43901 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Refactored parsing of main function body for reuse by objective-c methods.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43898 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08improve MakeRopeString to avoid doing a malloc for every 2-character string Chris Lattner
that gets inserted. This speeds up the rewriter another 10%. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43896 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Simplify interface to MakeRopeString.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43895 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Fix backwards assert.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43894 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Implemented serialization of AddrLabelExpr.Ted Kremenek
Implemented serialization of ConditionalOperator. Implemented serialization of StmtExpr. Fixed bug in serialization of IndirectGoto (did not properly serialize subexpression). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43891 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Rewrite RewriteObjCStringLiteral(). This version is simpler (and unlike the ↵Steve Naroff
previous one, works:-) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43890 91177308-0d34-0410-b5e6-96231b3b80d8
2007-11-08Add a new RewriteRope data structure which is a smarter way to represent the ↵Chris Lattner
text backing a rewrite buffer than using an std::vector<char>. This class was hacked together very quickly and needs to be cleaned up, but it seems to work. It speeds up rewriting a a 7M file from 6.43s to 0.24s on my machine. The impl could also be made to be a lot more algorithmically sound. This produces identical output to using vector on this testcase, if it causes a problems or bugs are encountered, it can be disabled by changing the RewriteBuffer::Buffer typedef back. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43884 91177308-0d34-0410-b5e6-96231b3b80d8