- Jun 17, 2011
-
-
Fariborz Jahanian authored
(even though it is incomplete type) because gcc says so. // rdar://9622422 llvm-svn: 133208
-
- Jun 16, 2011
-
-
John McCall authored
Language-design credit goes to a lot of people, but I particularly want to single out Blaine Garst and Patrick Beard for their contributions. Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself, in no particular order. llvm-svn: 133103
-
- Jun 11, 2011
-
-
Douglas Gregor authored
Related result types apply Cocoa conventions to the type of message sends and property accesses to Objective-C methods that are known to always return objects whose type is the same as the type of the receiving class (or a subclass thereof), such as +alloc and -init. This tightens up static type safety for Objective-C, so that we now diagnose mistakes like this: t.m:4:10: warning: incompatible pointer types initializing 'NSSet *' with an expression of type 'NSArray *' [-Wincompatible-pointer-types] NSSet *array = [[NSArray alloc] init]; ^ ~~~~~~~~~~~~~~~~~~~~~~ /System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1: note: instance method 'init' is assumed to return an instance of its receiver type ('NSArray *') - (id)init; ^ It also means that we get decent type inference when writing code in Objective-C++0x: auto array = [[NSMutableArray alloc] initWithObjects:@"one", @"two",nil]; // ^ now infers NSMutableArray* rather than id llvm-svn: 132868
-
- May 14, 2011
-
-
Argyrios Kyrtzidis authored
There are APIs, e.g. [NSValue valueWithBytes:objCType:], which use the encoding to find out the size of an object pointed to by a pointer. Make things safer by making it illegal to @encode incomplete types. llvm-svn: 131364
-
- Apr 23, 2011
-
-
Fariborz Jahanian authored
a 'deprecated' selector in the diagnostics for the selector. // rdar://9309223 llvm-svn: 130062
-
- Apr 20, 2011
-
-
Douglas Gregor authored
access expression that appears to be a property reference. Fixes <rdar://problem/8985943>. llvm-svn: 129865
-
- Apr 16, 2011
-
-
Fariborz Jahanian authored
// rdar://9287695 llvm-svn: 129615
-
- Apr 14, 2011
-
-
Anders Carlsson authored
llvm-svn: 129488
-
- Apr 08, 2011
-
-
John Wiegley authored
This patch authored by Eric Niebler. Many methods on the Sema class (e.g. ConvertPropertyForRValue) take Expr pointers as in/out parameters (Expr *&). This is especially true for the routines that apply implicit conversions to nodes in-place. This design is workable only as long as those conversions cannot fail. If they are allowed to fail, they need a way to report their failures. The typical way of doing this in clang is to use an ExprResult, which has an extra bit to signal a valid/invalid state. Returning ExprResult is de riguour elsewhere in the Sema interface. We suggest changing the Expr *& parameters in the Sema interface to ExprResult &. This increases interface consistency and maintainability. This interface change is important for work supporting MS-style C++ properties. For reasons explained here <http://lists.cs.uiuc.edu/pipermail/cfe-dev/2011-February/013180.html>, seemingly trivial operations like rvalue/lvalue conversions that formerly could not fail now can. (The reason is that given the semantics of the feature, getter/setter method lookup cannot happen until the point of use, at which point it may be found that the method does not exist, or it may have the wrong type, or overload resolution may fail, or it may be inaccessible.) llvm-svn: 129143
-
- Apr 06, 2011
-
-
Fariborz Jahanian authored
types such that protocols are seached first. Fixes // rdar://9224670 llvm-svn: 129016
-
- Mar 29, 2011
-
-
Fariborz Jahanian authored
an executable test to llvm test suite. // rdar://9070460. llvm-svn: 128435
-
- Mar 28, 2011
-
-
Fariborz Jahanian authored
// rdar://9181463 llvm-svn: 128410
-
- Mar 27, 2011
-
-
Fariborz Jahanian authored
an objc method. Fixes // rdar://9181463 llvm-svn: 128389
-
- Mar 09, 2011
-
-
Fariborz Jahanian authored
list of protocols as well. // rdar://9078584 llvm-svn: 127367
-
Fariborz Jahanian authored
to avoid a bogus warning. // rdar:// 9072298 llvm-svn: 127355
-
- Mar 08, 2011
-
-
Fariborz Jahanian authored
varienty of cases. // rdar://9092208 llvm-svn: 127257
-
- Feb 17, 2011
-
-
Fariborz Jahanian authored
llvm-svn: 125752
-
Fariborz Jahanian authored
a forward class. // rdar://8851803 llvm-svn: 125699
-
- Feb 08, 2011
-
-
Fariborz Jahanian authored
in liu of a class method getter. objc++ uses a different code path and is more involved (TBD). llvm-svn: 125061
-
- Feb 07, 2011
-
-
John McCall authored
- BlockDeclRefExprs always store VarDecls - BDREs no longer store copy expressions - BlockDecls now store a list of captured variables, information about how they're captured, and a copy expression if necessary With that in hand, change IR generation to use the captures data in blocks instead of walking the block independently. Additionally, optimize block layout by emitting fields in descending alignment order, with a heuristic for filling in words when alignment of the end of the block header is insufficient for the most aligned field. llvm-svn: 125005
-
- Feb 03, 2011
-
-
John McCall authored
llvm-svn: 124786
-
- Jan 23, 2011
-
-
Ted Kremenek authored
error: no super class declared in @interface for 'XXX' to be: error: 'X' cannot use 'super' because it is a root class The latter explains what the user actually did wrong. Fixes: <rdar://problem/8904409> llvm-svn: 124074
-
- Jan 14, 2011
-
-
Ted Kremenek authored
llvm-svn: 123482
-
- Jan 11, 2011
-
-
Douglas Gregor authored
complete. However, if it returns a reference type, don't require the type it refers to to be complete. Fixes <rdar://problem/8807070>. llvm-svn: 123214
-
- Dec 22, 2010
-
-
Fariborz Jahanian authored
if property-dot expression is decidedly an rvalue. // rdar://8155806. llvm-svn: 122430
-
- Dec 21, 2010
-
-
Fariborz Jahanian authored
unknown type and there is a possibility that at runtime method is resolved to a deprecated or unavailable method. Addreses // rdar://8769853 llvm-svn: 122294
-
- Dec 16, 2010
-
-
Fariborz Jahanian authored
in a forward @class object. // rdar://8774513 llvm-svn: 121933
-
- Dec 10, 2010
-
-
Argyrios Kyrtzidis authored
llvm-svn: 121516
-
- Dec 04, 2010
-
-
John McCall authored
not actually frequently used, because ImpCastExprToType only creates a node if the types differ. So explicitly create an ICE in the lvalue-to-rvalue conversion code in DefaultFunctionArrayLvalueConversion() as well as several other new places, and consistently deal with the consequences throughout the compiler. In addition, introduce a new cast kind for loading an ObjCProperty l-value, and make sure we emit those nodes whenever an ObjCProperty l-value appears that's not on the LHS of an assignment operator. This breaks a couple of rewriter tests, which I've x-failed until future development occurs on the rewriter. Ted Kremenek kindly contributed the analyzer workarounds in this patch. llvm-svn: 120890
-
Fariborz Jahanian authored
no property accessor class method to be found, instead of crashing in IRGen. // rdar://8703553 llvm-svn: 120855
-
- Dec 02, 2010
-
-
John McCall authored
into the latter. llvm-svn: 120643
-
- Dec 01, 2010
-
-
Fariborz Jahanian authored
'Class' type, disgnostic should refere to a class method. Fixes // rdar://8592156 llvm-svn: 120517
-
- Nov 18, 2010
-
-
John McCall authored
out because there are still bugs left. llvm-svn: 119722
-
John McCall authored
store it on the expression node. Also store an "object kind", which distinguishes ordinary "addressed" l-values (like variable references and pointer dereferences) and bitfield, @property, and vector-component l-values. Currently we're not using these for much, but I aim to switch pretty much everything calculating l-valueness over to them. For now they shouldn't necessarily be trusted. llvm-svn: 119685
-
- Nov 13, 2010
-
-
John McCall authored
llvm-svn: 118966
-
- Oct 26, 2010
-
-
John McCall authored
anymore. llvm-svn: 117357
-
- Oct 19, 2010
-
-
Fariborz Jahanian authored
PR6056, //rdar: //8564463 llvm-svn: 116819
-
- Oct 15, 2010
-
-
Douglas Gregor authored
identifiers to determine good typo-correction candidates. Once we've identified those candidates, we perform name lookup on each of them and the consider the results. This optimization makes typo correction > 2x faster on a benchmark example using a single typo (NSstring) in a tiny file that includes Cocoa.h from a precompiled header, since we are deserializing far less information now during typo correction. There is a semantic change here, which is interesting. The presence of a similarly-named entity that is not visible can now affect typo correction. This is both good (you won't get weird corrections if the thing you wanted isn't in scope) and bad (you won't get good corrections if there is a similarly-named-but-completely-unrelated thing). Time will tell whether it was a good choice or not. llvm-svn: 116528
-
- Oct 14, 2010
-
-
Fariborz Jahanian authored
'super' as receiver of property or a setter/getter methods. //rdar: //8525788 llvm-svn: 116483
-
- Sep 24, 2010
-
-
Fariborz Jahanian authored
vla. Implements pr7827. llvm-svn: 114737
-