Fariborz Jahanian
0ebc0fa974
objective-c: perform strict type checking on property
...
type and its accessor type and issue error if types
are incompatible, instead of crashing in IRgen.
// rdar://1105153
llvm-svn: 156871
2012-05-15 22:37:04 +00:00
Fariborz Jahanian
3da7775a6d
objc: avoid duplicate diagnostics on certain type mismatches
...
between property and its backing ivar.
llvm-svn: 156832
2012-05-15 18:12:51 +00:00
Argyrios Kyrtzidis
08f96a9b5e
[AST/libclang] Speed up clang_getOverriddenCursors() considerably by reserving a bit
...
in ObjCMethodDecl to indicate whether the method does not override any other method,
which is the majority of cases.
That way we can avoid unnecessary work doing lookups, especially when PCH is involved.
rdar://11360082
llvm-svn: 156476
2012-05-09 16:12:57 +00:00
Fariborz Jahanian
d6886e7fad
Fixes a typo. note_xxx not not_xxx.
...
llvm-svn: 156391
2012-05-08 18:03:39 +00:00
Douglas Gregor
7bfb2d026e
Move Sema::RequireCompleteType() and Sema::RequireCompleteExprType()
...
off PartialDiagnostic. PartialDiagnostic is rather heavyweight for
something that is in the critical path and is rarely used. So, switch
over to an abstract-class-based callback mechanism that delays most of
the work until a diagnostic is actually produced. Good for ~11k code
size reduction in the compiler and 1% speedup in -fsyntax-only on the
code in <rdar://problem/11004361>.
llvm-svn: 156176
2012-05-04 16:32:21 +00:00
Fariborz Jahanian
d5f34f9fee
objective-c: warn for properties being default synthesized
...
under -Wobjc-missing-property-synthesis which must be
opted-in. // rdar://11295716
llvm-svn: 156078
2012-05-03 16:43:30 +00:00
Eli Friedman
169ec35bb3
Add a missing RequireCompleteType call when synthesizing properties. <rdar://problem/11333367>.
...
While I'm here, fix source locations for other diagnostics related to property synthesis.
llvm-svn: 155953
2012-05-01 22:26:06 +00:00
David Blaikie
2d7c57ec1d
Remove the ref/value inconsistency in filter_decl_iterator.
...
filter_decl_iterator had a weird mismatch where both op* and op-> returned T*
making it difficult to generalize this filtering behavior into a reusable
library of any kind.
This change errs on the side of value, making op-> return T* and op* return
T&.
(reviewed by Richard Smith)
llvm-svn: 155808
2012-04-30 02:36:29 +00:00
Richard Smith
05afe5e084
Fix PR10447: lazily building name lookup tables for DeclContexts was broken.
...
The deferred lookup table building step couldn't accurately tell which Decls
should be included in the lookup table, and consequently built different tables
in some cases.
Fix this by removing lazy building of DeclContext name lookup tables. In
practice, the laziness was frequently not worthwhile in C++, because we
performed lookup into most DeclContexts. In C, it had a bit more value,
since there is no qualified lookup.
In the place of lazy lookup table building, we simply don't build lookup tables
for function DeclContexts at all. Such name lookup tables are not useful, since
they don't capture the scoping information required to correctly perform name
lookup in a function scope.
The resulting performance delta is within the noise on my testing, but appears
to be a very slight win for C++ and a very slight loss for C. The C performance
can probably be recovered (if it is a measurable problem) by avoiding building
the lookup table for the translation unit.
llvm-svn: 152608
2012-03-13 03:12:56 +00:00
David Blaikie
bbafb8a745
Unify naming of LangOptions variable/get function across the Clang stack (Lex to AST).
...
The member variable is always "LangOpts" and the member function is always "getLangOpts".
Reviewed by Chris Lattner
llvm-svn: 152536
2012-03-11 07:00:24 +00:00
John McCall
113bee0536
Remove BlockDeclRefExpr and introduce a bit on DeclRefExpr to
...
track whether the referenced declaration comes from an enclosing
local context. I'm amenable to suggestions about the exact meaning
of this bit.
llvm-svn: 152491
2012-03-10 09:33:50 +00:00
Fariborz Jahanian
86c2f5cc70
objective-c: provide fixit hint when atomic property does not
...
have matching user defined setter/getter and a warning is issued.
In this case, a fixit note is displayed. // rdar://10267155
llvm-svn: 151766
2012-02-29 22:18:55 +00:00
Argyrios Kyrtzidis
3460880674
[AST] When we @synthesize a property with a user-defined ivar name,
...
make sure to record the source location of the ivar name.
[libclang] When indexing @synthesized objc methods, report the @implementation
as the lexical container.
Fixes rdar://10905472
llvm-svn: 151635
2012-02-28 17:50:39 +00:00
Argyrios Kyrtzidis
ceeb19cf18
[AST] Associate the getter/setter methods to a property of a objc class extension.
...
[libclang] Index the getter/setter methods of a property of a objc class extension.
Fixes rdar://10907597
llvm-svn: 151633
2012-02-28 17:50:28 +00:00
Fariborz Jahanian
2f0de8bdb9
objective-c default synthesis. classes which adopt protocol properties
...
must still auto synthesize those propeties which have been redeclared
in the class. // rdar://10907410
llvm-svn: 151268
2012-02-23 18:21:25 +00:00
John McCall
24992371a5
Don't crash on attempts to synthesize an invalid property.
...
rdar://problem/10904479
llvm-svn: 151089
2012-02-21 21:48:05 +00:00
Dylan Noblesmith
2c1dd2716a
Basic: import SmallString<> into clang namespace
...
(I was going to fix the TODO about DenseMap too, but
that would break self-host right now. See PR11922.)
llvm-svn: 149799
2012-02-05 02:13:05 +00:00
Benjamin Kramer
4903802fbf
Move a method from IdentifierTable.h out of line and remove the SmallString include.
...
Fix all the transitive include users.
llvm-svn: 149783
2012-02-04 13:45:25 +00:00
Fariborz Jahanian
57539cf8c8
Further enhance comment for property in continuation class.
...
llvm-svn: 149639
2012-02-02 22:37:48 +00:00
Fariborz Jahanian
24c2ccc254
objc: comment the code which allows narroing of property object
...
type in continuation class.
llvm-svn: 149625
2012-02-02 19:34:05 +00:00
Fariborz Jahanian
6a73384b53
objective-c: When redeclaraing in continuation class a 'readonly'
...
property to 'readwrite', also allow redeclaration of
property type to a narrowring object type.
// rdar://10790488
llvm-svn: 149614
2012-02-02 18:54:58 +00:00
Fariborz Jahanian
a230dea394
minor refactoring to improve compile-time performance.
...
llvm-svn: 147963
2012-01-11 19:48:08 +00:00
Fariborz Jahanian
39ba639f9d
objc-arc: evaluate 'readonly' property with no known
...
life-time to that of its backing 'ivar's lifetime.
// rdar://10558871
llvm-svn: 147956
2012-01-11 18:26:06 +00:00
Fariborz Jahanian
a08a74705b
objc++: patch for IRgen for atomic properties of
...
c++ objects with non-trivial assignment/copy functions.
Also, one additional sema check. // rdar://6137845
llvm-svn: 147817
2012-01-10 00:37:01 +00:00
Ted Kremenek
0c2c90b1ad
After further discussion, rename attribute 'objc_disable_automatic_synthesis' to 'objc_requires_property_definitions'.
...
llvm-svn: 147622
2012-01-05 22:47:47 +00:00
Fariborz Jahanian
783ffde6d3
objc: When issuing warning for missing synthesis for
...
properties in classes declared with objc_suppress_autosynthesis
attribute, pinpoint location of the said class in a note.
llvm-svn: 147562
2012-01-04 23:16:13 +00:00
Fariborz Jahanian
1fc1c6c307
In non-gc, non-arc mode, property of 'Class' type
...
variety is treated as a 'void *'. No need to issue
warning reserved for objc object properties.
// rdar://10565506
llvm-svn: 147504
2012-01-04 00:31:53 +00:00
Fariborz Jahanian
3c9707bd90
objc: use objc_suppress_autosynthesis attribute on classes
...
which should not be default synthesized.
llvm-svn: 147468
2012-01-03 19:46:00 +00:00
Fariborz Jahanian
9e49b6a6ff
objc: do not auto synthesize properties declared in
...
protocols; with a warning. // rdar://10567333
llvm-svn: 146626
2011-12-15 01:03:18 +00:00
Douglas Gregor
0b144e160a
Replace all comparisons between ObjCInterfaceDecl pointers with calls
...
to declaresSameEntity(), as a baby step toward tracking forward
declarations of Objective-C classes precisely. Part of
<rdar://problem/10583531>.
llvm-svn: 146618
2011-12-15 00:29:59 +00:00
Fariborz Jahanian
e283346d0b
objc-arc: diagnose synthesis of a 'weak unavailable' property.
...
// rdar://10535245
llvm-svn: 146272
2011-12-09 19:55:11 +00:00
Fariborz Jahanian
22b405c7aa
objc: turn warning for property type mismatch in
...
primary and its continuation class into error.
// rdar://10142679
llvm-svn: 145255
2011-11-28 18:38:27 +00:00
Argyrios Kyrtzidis
846e61a363
[PCH] Do not crash if a class extension in a chained PCH introduces/redeclares a property.
...
llvm-svn: 144520
2011-11-14 04:52:29 +00:00
Fariborz Jahanian
b1ac0813a6
objc-arc: 'readonly' property of retainable object
...
type is strong by default too. // rdar://10410903
llvm-svn: 144118
2011-11-08 20:58:53 +00:00
Argyrios Kyrtzidis
b458ffb226
Make sure when setting AttributesAsWritten of a property that they do not
...
include ownership qualifiers from the type.
llvm-svn: 143885
2011-11-06 18:58:12 +00:00
Fariborz Jahanian
3018b95093
objc: warn if a readonly property has a setter attribute too.
...
// rdar://10357768
llvm-svn: 143518
2011-11-01 23:02:16 +00:00
John McCall
526ab47a55
Restore r142914 and r142915, now with missing file and apparent
...
GCC compiler workaround.
llvm-svn: 142931
2011-10-25 17:37:35 +00:00
NAKAMURA Takumi
9a8f13961c
Revert r142914 and r142915, due to possibly missing file.
...
r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."
llvm-svn: 142921
2011-10-25 14:32:25 +00:00
John McCall
c4a2d3259f
Introduce a placeholder type for "pseudo object"
...
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.
Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.
llvm-svn: 142914
2011-10-25 07:27:56 +00:00
Argyrios Kyrtzidis
b51684d7a1
Set the objc "property attributes as written" for extension properties as well.
...
llvm-svn: 142406
2011-10-18 19:49:16 +00:00
Fariborz Jahanian
7c386f838a
obj-c++: allow the getter/setter to return/take parameters
...
by reference. // rdar://10188258
llvm-svn: 142075
2011-10-15 17:36:49 +00:00
Fariborz Jahanian
df4f7ca331
objc-arc: 'Class' property is implicitly __unsafe_unretained.
...
// rdar://10239594
llvm-svn: 141915
2011-10-13 23:45:45 +00:00
Ted Kremenek
6effcb5082
Fix typo in name of diagnostic.
...
llvm-svn: 141793
2011-10-12 18:03:37 +00:00
Fariborz Jahanian
fa643c8f3b
objc: note location of the previously declared
...
property in the diagnostic.
llvm-svn: 141745
2011-10-12 00:00:57 +00:00
Fariborz Jahanian
55b4e5c208
objc: err on a property designated both atomic and
...
nonatomic. // rdar://10260017
llvm-svn: 141580
2011-10-10 21:53:24 +00:00
Fariborz Jahanian
9059124b41
objc: Do not warn about mismatch on Super's readonly property attribute,
...
related to a readwrite property, and
Sub's readwrite property. // rdar://9396329
llvm-svn: 141497
2011-10-08 17:45:33 +00:00
Fariborz Jahanian
13d3f86577
objc++: some minor cleanup and a test case
...
for atomic setters which requires assignment operator.
llvm-svn: 141415
2011-10-07 21:08:14 +00:00
Fariborz Jahanian
9cd57a7061
objc: Improve on diagnostic when atomic proeprty is synthesized
...
on one accessor and user-provide with another.
llvm-svn: 141343
2011-10-06 23:47:58 +00:00
Fariborz Jahanian
565ed7a4c1
objc++: For atomic properties of c++ class objec typet, appropriate
...
operator= is called. Issue a warning for non-trivial case until
runtime support is provided. // rdar://6137845
llvm-svn: 141302
2011-10-06 18:38:18 +00:00
Fariborz Jahanian
f2a7b0eade
objc: Turn diagnostic on property type mismatch in
...
continuation class into warning. // rdar://10231514
llvm-svn: 141100
2011-10-04 18:44:26 +00:00