| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
was not being overridden in the category method implementation
resulting in bogus warning. // rdar://15919775
llvm-svn: 200342
|
|
|
|
| |
llvm-svn: 200257
|
|
|
|
|
|
|
| |
backing a property resulting in bogus warning.
// rdar://15890251
llvm-svn: 200254
|
|
|
|
|
|
|
|
| |
parimary class and in mrr mode, assume property's default
memory attribute (assign) and to prevent a bogus warning.
// rdar://15859862
llvm-svn: 200238
|
|
|
|
|
|
|
|
| |
not using backing ivar warning, ignore when
property is not being synthesized (user declared its
implementation @dynamic). // rdar://1583425
llvm-svn: 199820
|
|
|
|
|
|
|
|
|
|
| |
'returns_nonnull'.
This involved making CheckReturnStackAddr into a static function, which
is now called by a top-level return value checking routine called
CheckReturnValExpr.
llvm-svn: 199790
|
|
|
|
|
|
|
|
|
|
|
| |
This attribute is supported by GCC. More generally it should
probably be a type attribute, but this behavior matches 'nonnull'.
This patch does not include warning logic for checking if a null
value is returned from a function annotated with this attribute.
That will come in subsequent patches.
llvm-svn: 199626
|
|
|
|
|
|
| |
'objc_protocol_requires_explicit_implementation'.
llvm-svn: 199480
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This allows the following syntax:
void baz(__attribute__((nonnull)) const char *str);
instead of:
void baz(const char *str) __attribute__((nonnull(1)));
This also extends to Objective-C methods.
The checking logic in Sema is not as clean as I would like. Effectively
now we need to check both the FunctionDecl/ObjCMethodDecl and the parameters,
so the point of truth is spread in two places, but the logic isn't that
cumbersome.
Implements <rdar://problem/14691443>.
llvm-svn: 199467
|
|
|
|
| |
llvm-svn: 199278
|
|
|
|
|
|
|
| |
-Wselector detects an unimplemented method used
in an @selector expression. // rdar://15781538
llvm-svn: 199255
|
|
|
|
|
|
|
|
|
| |
which may belong to unrelated classes. It was
primarily intended for miuse of @selector expression.
But warning is too noisy and will be issued when
an actual @selector is used. // rdar://15740134
llvm-svn: 198952
|
|
|
|
|
|
|
|
|
| |
property has the naming convention that implies 'ownership'.
2) improve on diagnostic and make it property specific.
3) fix the line number in the case of default property
synthesis. // rdar://15757510
llvm-svn: 198905
|
|
|
|
|
|
|
|
|
|
| |
Fixes <rdar://problem/15596883>
In ARC, __attribute__((objc_precise_lifetime)) guarantees that the
object stored in it will survive to the end of the variable's formal
lifetime. It is therefore useful even if it completely unused.
llvm-svn: 198888
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
warning.
- Remove the additions to ObjCMethodDecl & ObjCIVarDecl that were getting de/serialized and consolidate
all functionality for the checking for this warning in Sema::DiagnoseUnusedBackingIvarInAccessor
- Don't check immediately after the method body is finished, check when the @implementation is finished.
This is so we can see if the ivar was referenced by any other method, even if the method was defined after the accessor.
- Don't silence the warning if any method is called from the accessor silence it if the accessor delegates to another method via self.
rdar://15727325
llvm-svn: 198432
|
|
|
|
|
|
| |
attribute diagnostics. Also updated the associated test case.
llvm-svn: 198368
|
|
|
|
|
|
|
| |
backing ivar by not issuing this warning if ivar is referenced
somewhere and accessor makes method calls. // rdar://15727325
llvm-svn: 198367
|
|
|
|
|
|
| |
the offending attribute name. Also updates the associated test cases.
llvm-svn: 198355
|
|
|
|
|
|
|
| |
property accessor's missing backing ivar. This eliminates
the bogus warning being issued. // rdar://15728901
llvm-svn: 198322
|
|
|
|
| |
llvm-svn: 197736
|
|
|
|
|
|
| |
is unused.
llvm-svn: 197729
|
|
|
|
|
|
| |
'section' attribute. // rdar://15450637
llvm-svn: 197704
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'deprecated'.
Fixes <rdar://problem/15584219> and <rdar://problem/12241361>.
This change looks large, but all it does is reuse and consolidate
the delayed diagnostic logic for deprecation warnings with unavailability
warnings. By doing so, it showed various inconsistencies between the
diagnostics, which were close, but not consistent. It also revealed
some missing "note:"'s in the deprecated diagnostics that were showing
up in the unavailable diagnostics, etc.
This change also changes the wording of the core deprecation diagnostics.
Instead of saying "function has been explicitly marked deprecated"
we now saw "'X' has been been explicitly marked deprecated". It
turns out providing a bit more context is useful, and often we
got the actual term wrong or it was not very precise
(e.g., "function" instead of "destructor"). By just saying the name
of the thing that is deprecated/deleted/unavailable we define
this issue away. This diagnostic can likely be further wordsmithed
to be shorter.
llvm-svn: 197627
|
|
|
|
|
|
| |
// rdar://15397430
llvm-svn: 197586
|
|
|
|
|
|
| |
per Jordan's review.
llvm-svn: 197540
|
|
|
|
|
|
| |
a category implementation. // rdar://15397430
llvm-svn: 197534
|
|
|
|
|
|
|
|
|
|
| |
of objc_bridge_related attribute; eliminate
unnecessary diagnostics which is issued elsewhere,
fixit now produces a valid AST tree per convention.
This results in some simplification in handling of
this attribute as well. // rdar://15499111
llvm-svn: 197436
|
|
|
|
|
|
| |
This was silently accepted by clang without warning due to a lexer bug.
llvm-svn: 197330
|
|
|
|
|
|
|
|
| |
via a category
and still inherit the designated initializers of its super class.
llvm-svn: 197301
|
|
|
|
|
|
| |
// rdar://15641300
llvm-svn: 197263
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
property declaration has a memory management
attribute (retain, copy, etc.). Sich properties
are usually overridden to become 'readwrite'
via a class extension (which require the memory
management attribute specified). In the absence of class
extension override, memory management attribute is
needed to produce correct Code Gen. for the
property getter in any case and this warning becomes
confusing to user. // rdar://15641300
llvm-svn: 197251
|
|
|
|
|
|
| |
handle indirect protocols.
llvm-svn: 197209
|
|
|
|
|
|
|
|
|
| |
the protocol.
This removes an extra "note:", which wasn't really all that more useful
and overall reduces the diagnostic spew for this case.
llvm-svn: 197207
|
|
|
|
|
|
|
|
|
| |
superclass are,
assume that a [super init..] inside a designated initializer also refers to a designated one
and do not warn.
llvm-svn: 197202
|
|
|
|
|
|
|
|
| |
property and protocol name.
Implements <rdar://problem/15617839>.
llvm-svn: 197187
|
|
|
|
| |
llvm-svn: 197128
|
|
|
|
|
|
|
| |
warning is coming out incorrectly too early
becuase of unrelated scope pop. // rdar://15630719
llvm-svn: 196989
|
|
|
|
|
|
| |
// rdar://15499111
llvm-svn: 196977
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
'objc_protocol_requires_explicit_implementation'.
That's a mouthful, and not necessarily the final name. This also
reflects a semantic change where this attribute is now on the
protocol itself instead of a class. This attribute will require
that a protocol, when adopted by a class, is explicitly implemented
by the class itself (instead of walking the super class chain).
Note that this attribute is not "done". This should be considered
a WIP.
llvm-svn: 196955
|
|
|
|
|
|
| |
// rdar://15499111
llvm-svn: 196950
|
|
|
|
|
|
| |
use of objc_bridge_related attribute. // rdar://15499111
llvm-svn: 196828
|
|
|
|
|
|
|
|
| |
Add -verify and update the test directives to match current expectations.
Also add a FIXME to an ObjC test that has expected-* directives but no -verify.
llvm-svn: 196737
|
|
|
|
|
|
|
|
| |
objc_designated_initializer
attribute is acceptable.
llvm-svn: 196644
|
|
|
|
|
|
|
|
|
| |
attribute in sema and issuing a variety of diagnostics lazily
for misuse of this attribute (and what to do) when converting
from CF types to ObjectiveC types (and vice versa).
// rdar://15499111
llvm-svn: 196629
|
|
|
|
|
|
|
|
| |
category is declared in category's primary
class's super class. Because the super class is
expected to implemented the method. // rdar://15580969
llvm-svn: 196531
|
|
|
|
| |
llvm-svn: 196510
|
|
|
|
|
|
|
|
|
|
|
| |
introduces at least one new initializer,
don't assume that it inherits the designated initializers from the super class.
If the assumption was wrong because a new initializer was a designated one that was not marked as such,
we will emit misleading warnings for subclasses of the interface.
llvm-svn: 196476
|
|
|
|
|
|
|
| |
This patch tries to avoid unrelated changes other than fixing a few
hyphen-related ambiguities in nearby lines.
llvm-svn: 196466
|
|
|
|
|
|
|
|
| |
does not
override all of the designated initializers of its superclass.
llvm-svn: 196319
|
|
|
|
|
|
|
|
|
|
|
| |
super another initializer and when the implementation does not delegate to
another initializer via a call on 'self'.
A secondary initializer is an initializer method not marked as a designated
initializer within a class that has at least one initializer marked as a
designated initializer.
llvm-svn: 196318
|