| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
the member expression is in parentheses.
llvm-svn: 158651
|
| |
|
|
|
|
|
| |
The target specific __builtin_va_list types are now explicitly built instead
of injecting strings into the preprocessor input.
llvm-svn: 158592
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
method definition that has its '{' attached to the method name without
a space.
With a method like:
-(id)meth{
.....
}
the logic in ObjCMethodDecl that determined the selector locations got
confused because it was initialized based on an end location for '{' but
that end location changed to '}' after the method was finished.
Fix this by having an immutable end location for the declarator and
for getLocEnd() get the end location from the body itself.
Fixes rdar://11659739.
llvm-svn: 158583
|
| |
|
|
| |
llvm-svn: 158573
|
| |
|
|
| |
llvm-svn: 158572
|
| |
|
|
|
|
| |
all. Suppresses follow-on errors mentioned in PR13074.
llvm-svn: 158348
|
| |
|
|
|
|
|
| |
initialization, and use that information to produce the right kind of
initialization during template instantiation.
llvm-svn: 158288
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This could happen for cases like this:
- (NSArray *)getAllNames:(NSArray *)images {
NSMutableArray *results = [NSMutableArray array];
for (auto img in images) {
[results addObject:img.name];
}
return results;
}
Here the property access will fail because 'img' has type 'id', rather than,
say, NSImage.
This warning will not fire in templated code, since the 'id' could have
come from a template parameter.
llvm-svn: 158239
|
| |
|
|
|
|
| |
definitions of such members are prohibited, not mere declarations.
llvm-svn: 158186
|
| |
|
|
|
|
|
| |
nested name specifiers in addition to the function's identifier when the
correction has a different nested name specifier.
llvm-svn: 158178
|
| |
|
|
|
|
| |
correction to use for an invalid function redeclaration.
llvm-svn: 158177
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
value_type
In addition, I've made the pointer and reference typedef 'void' rather than T*
just so they can't get misused. I would've omitted them entirely but
std::distance likes them to be there even if it doesn't use them.
This rolls back r155808 and r155869.
Review by Doug Gregor incorporating feedback from Chandler Carruth.
llvm-svn: 158104
|
| |
|
|
|
|
|
| |
the overriding deprecated/unavailable method.
// rdar://11475360
llvm-svn: 158022
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This is a large class of false positives where anonymous enums are used to
declare constants (see Clang's Diagnostics.h for example). A small number of
true positives could probably be found in this bucket by still warning if the
anonymous enum is used in a declarator (enum { ... } x;) but so far we don't
believe this to be a source of significant benefit so I haven't bothered to
preserve those cases.
General offline review/acknowledgment by rtrieu.
llvm-svn: 157713
|
| |
|
|
|
|
|
|
|
|
|
|
| |
same value and were initialized with literals. Clang will warn on code like
this:
enum A {
FIRST = 1,
SECOND = 1
};
llvm-svn: 157666
|
| |
|
|
| |
llvm-svn: 157510
|
| |
|
|
|
|
|
| |
warning. This also makes us warn on tags, which, ironically, is the only case
gcc warns on.
llvm-svn: 157039
|
| |
|
|
|
|
|
|
| |
that the methods have the same number of parameters, although we
certainly assumed this in many places. Objective-C can be insane
sometimes. Fixes <rdar://problem/11460990>.
llvm-svn: 157025
|
| |
|
|
|
|
| |
in r156825.
llvm-svn: 156831
|
| |
|
|
|
|
|
| |
in @interface by issuing warning (off by default) under
opt'ed in flag -Winterface-block-ivar. // rdar://10763173
llvm-svn: 156825
|
| |
|
|
|
|
| |
// rdar://11356439
llvm-svn: 156788
|
| |
|
|
|
|
|
|
|
| |
if (Inherited)
Attr->setInherited(true);
To a central location.
llvm-svn: 156728
|
| |
|
|
| |
llvm-svn: 156727
|
| |
|
|
| |
llvm-svn: 156597
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
// FIXME: This needs to happen before we merge declarations. Then,
// let attribute merging cope with attribute conflicts.
This was already being done for variables, but for functions we were merging
then first and then applying the attributes. To avoid duplicating merging
logic, some of the helpers in SemaDeclAttr.cpp become methods that can
handle merging two attributes in one decl or inheriting attributes from one
decl to another.
With this change we are now able to produce errors for variables with
incompatible visibility attributes or warn about unused dllimports in
variables.
This changes the attribute list iteration back to being in reverse source
code order, as that matches what decl merging does and avoids differentiating
the two cases is the merge*Attr methods.
llvm-svn: 156531
|
| |
|
|
|
|
|
| |
'*' on objective-c class name was misplaced.
// rdar://11311333
llvm-svn: 156517
|
| |
|
|
|
|
|
| |
Added support for conditional operators and tightened the exclusion of the
unary operator from all operators to only the address of operator.
llvm-svn: 156450
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for having a uniform logic for adding attributes to a decl. This in turn
is needed to fix the FIXME:
// FIXME: This needs to happen before we merge declarations. Then,
// let attribute merging cope with attribute conflicts.
ProcessDeclAttributes(S, NewFD, D,
/*NonInheritable=*/false, /*Inheritable=*/true);
The idea is that mergeAvailabilityAttr will become a method. Once attributes
are processed before merging, it will be called from handleAvailabilityAttr to
handle multiple attributes in one decl:
void f(int) __attribute__((availability(ios,deprecated=3.0),
availability(ios,introduced=2.0)));
and from SemaDecl.cpp to handle multiple decls:
void f(int) __attribute__((availability(ios,deprecated=3.0)));
void f(int) __attribute__((availability(ios,introduced=2.0)));
As a bonus, use the new structure to diagnose incompatible availability
attributes added to different decls (see included testcases).
llvm-svn: 156269
|
| |
|
|
| |
llvm-svn: 156178
|
| |
|
|
|
|
|
| |
refactorings in that revision, and some of the subsequent bugfixes, which
seem to be relevant even without delayed exception specification parsing.
llvm-svn: 156031
|
| |
|
|
|
|
| |
of giving unhelpful errors about undeclared identifers and missing semicolons.
llvm-svn: 155965
|
| |
|
|
|
|
| |
Reviewed by Doug Gregor.
llvm-svn: 155839
|
| |
|
|
|
|
|
| |
when we're in an Objective-C container context. Fixes
<rdar://problem/11286701>.
llvm-svn: 155836
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 155723
|
| |
|
|
|
|
|
| |
to a given type, when the reason is that there is a non-type decl with
the same name.
llvm-svn: 155677
|
| |
|
|
|
|
|
| |
exception specifications in C++11 until after we've parsed the exception
specifications for nested classes.
llvm-svn: 155293
|
| |
|
|
|
|
| |
and explicit specializations of function templates appropriately.
llvm-svn: 154956
|
| |
|
|
|
|
|
|
|
| |
exception specifications on member functions until after the closing
'}' for the containing class. This allows, for example, a member
function to throw an instance of its own class. Fixes PR12564 and a
fairly embarassing oversight in our C++98/03 support.
llvm-svn: 154844
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
in the declaration of a non-static member function after the
(optional) cv-qualifier-seq, which in practice means in the exception
specification and late-specified return type.
The new scheme here used to manage 'this' outside of a member function
scope is more general than the Scope-based mechanism previously used
for non-static data member initializers and late-parsesd attributes,
because it can also handle the cv-qualifiers on the member
function. Note, however, that a separate pass is required for static
member functions to determine whether 'this' was used, because we
might not know that we have a static function until after declaration
matching.
Finally, this introduces name mangling for 'this' and for the implicit
'this', which is intended to match GCC's mangling. Independent
verification for the new mangling test case would be appreciated.
Fixes PR10036 and PR12450.
llvm-svn: 154799
|
| |
|
|
|
|
| |
in the wrong namespace scope. Patch by Jonathan Sauer!
llvm-svn: 154656
|
| |
|
|
| |
llvm-svn: 154173
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Infinite recursion was happening when DiagnoseInvalidRedeclaration
called ActOnFunctionDeclarator to check if a typo correction works when
the correction was just to the nested-name-specifier because the wrong
DeclContext was being passed in. Unlike a number of functions
surrounding typo correction, the DeclContext passed in for a function is
the context of the function name after applying any nested name
specifiers, not the lexical DeclContext where the
function+nested-name-specifier appears.
llvm-svn: 153962
|
| |
|
|
|
|
|
|
|
|
|
| |
move constructor/move assignment operator are not declared, rather than being
defined as deleted, so move operations on the derived class fall back to
copying rather than moving.
If a move operation on the derived class is explicitly defaulted, the
unmovable subobject will be copied instead of being moved.
llvm-svn: 153883
|
| |
|
|
|
|
| |
dependent contexts.
llvm-svn: 153858
|
| |
|
|
|
|
|
|
|
| |
concerning qualified declarator-ids. We now diagnose extraneous
qualification at namespace scope (which we had previously missed) and
diagnose these qualification errors for all kinds of declarations; it
was rather uneven before. Fixes <rdar://problem/11135644>.
llvm-svn: 153577
|
| |
|
|
|
|
|
| |
typo correction to introduce a nested-name-specifier; we aren't
prepared to handle it here. Fixes PR12297 / <rdar://problem/11075219>.
llvm-svn: 153445
|
| |
|
|
|
|
| |
enumerations in templates until the template is instantiated.
llvm-svn: 153426
|
| |
|
|
|
|
|
| |
a previous declaration if the redeclaration is invalid. That way lies madness.
Fixes a crash-on-invalid reported by Abramo.
llvm-svn: 153349
|
| |
|
|
|
|
|
| |
class template's definition, and for explicit specializations of such enum
members.
llvm-svn: 153304
|