| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
abstract class type. // rdar://14261999
llvm-svn: 185710
|
|
|
|
|
|
|
| |
CheckParmForFunctionDef performs standard checks for type completeness
and other things like a destructor check for the MSVC++ ABI.
llvm-svn: 184740
|
|
|
|
| |
llvm-svn: 184515
|
|
|
|
|
|
|
|
|
|
|
|
| |
to provide proper overloading, and also prevents mangling conflicts with
template arguments of protocol-qualified type.
This is a non-backward-compatible mangling change, but per discussion with
John, the benefits outweigh this cost.
Fixes <rdar://problem/14074822>.
llvm-svn: 184250
|
|
|
|
|
|
| |
not actually talking about a default constructor.
llvm-svn: 183885
|
|
|
|
|
|
|
|
|
|
|
| |
extension
is used for Objective-C++’s dictionary subscripting. This is done by filtering
out all placeholder types before check on lowering of the
common expression is done. // rdar://1374918.
Reviewed by John McCall.
llvm-svn: 182120
|
|
|
|
|
|
| |
patch (r181847).
llvm-svn: 181896
|
|
|
|
|
|
|
|
| |
found for a receiver, note where receiver class
is declaraed (this is most common when receiver is a forward
class). // rdar://3258331
llvm-svn: 181847
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- References to ObjC bit-field ivars are bit-field lvalues;
fixes rdar://13794269, which got me started down this.
- Introduce Expr::refersToBitField, switch a couple users to
it where semantically important, and comment the difference
between this and the existing API.
- Discourage Expr::getBitField by making it a bit longer and
less general-sounding.
- Lock down on const_casts of bit-field gl-values until we
hear back from the committee as to whether they're allowed.
llvm-svn: 181252
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
VerifyDiagnosticConsumer previously would not check that the diagnostic and
its matching directive referenced the same source file. Common practice was
to create directives that referenced other files but only by line number,
and this led to problems such as when the file containing the directive
didn't have enough lines to match the location of the diagnostic in the
other file, leading to bizarre file formatting and other oddities.
This patch causes VerifyDiagnosticConsumer to match source files as well as
line numbers. Therefore, a new syntax is made available for directives, for
example:
// expected-error@file:line {{diagnostic message}}
This extends the @line feature where "file" is the file where the diagnostic
is generated. The @line syntax is still available and uses the current file
for the diagnostic. "file" can be specified either as a relative or absolute
path - although the latter has less usefulness, I think! The #include search
paths will be used to locate the file and if it is not found an error will be
generated.
The new check is not optional: if the directive is in a different file to the
diagnostic, the file must be specified. Therefore, a number of test-cases
have been updated with regard to this.
This closes out PR15613.
llvm-svn: 179677
|
|
|
|
|
|
|
|
| |
expression, look through pseudo-object expressions.
rdar://13602832
llvm-svn: 179080
|
|
|
|
|
|
| |
a non-variable iteration declaration.
llvm-svn: 179053
|
|
|
|
|
|
| |
for loop that end up being Objective-C fast enumeration loops.
llvm-svn: 179037
|
|
|
|
|
|
| |
that is actually an Objective-C fast enumeration loop.
llvm-svn: 179035
|
|
|
|
|
|
|
|
|
| |
each of which was only present in one version:
* Give the right diagnostic for 'restrict' applied to a non-pointer, non-reference type.
* Don't reject 'restrict' applied indirectly to an Objective-C object pointer type (eg, through template instantiation).
llvm-svn: 178200
|
|
|
|
|
|
|
| |
is accessing 'isa' as an object pointer.
// rdar://13503456. FixIt to follow in another patch.
llvm-svn: 178179
|
|
|
|
|
|
|
|
| |
we expect a related result type.
rdar://12493140
llvm-svn: 177378
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This was causing correctness issues for ARC and the static analyzer when a
function template has "consumed" Objective-C object parameters (i.e.
parameters that will be released by the function before returning).
The fix is threefold:
(1) Actually copy over the attributes from old ParmVarDecls to new ones.
(2) Have Sema::BuildFunctionType only work for building FunctionProtoTypes,
which it was doing anyway. This allows us to pass an ExtProtoInfo
instead of a plain ExtInfo and several flags.
(3) Drop param attributes as part of StripImplicitInstantiation, which is
used when an implicit instantiation is followed by an explicit one.
<rdar://problem/12685622>
llvm-svn: 176728
|
|
|
|
|
|
| |
Objective-C object type <rdar://problem/13338107>.
llvm-svn: 176665
|
|
|
|
|
|
|
|
| |
to a subscript operator.
rdar://13332183
llvm-svn: 176428
|
|
|
|
|
|
|
| |
casts with c++ named casts. Change notes to say use
bridge with c-style cast instead. // rdar://12788838
llvm-svn: 175850
|
|
|
|
|
|
|
| |
a template parameter; make that also include one that came from
'auto'. Fixes <rdar://problem/12078752>.
llvm-svn: 172770
|
|
|
|
|
|
|
|
| |
return type of a function by canonicalizing them away. They are
useless anyway, and conflict with our rules for template argument
deduction and __strong. Fixes <rdar://problem/12367446>.
llvm-svn: 172768
|
|
|
|
|
|
| |
in lambdas.
llvm-svn: 171921
|
|
|
|
| |
llvm-svn: 171915
|
|
|
|
|
|
|
|
| |
struct variables with flexiable array members in
blocks (and lambdas). Issue error instead of
crashing in IRGen. // rdar://12655829
llvm-svn: 171912
|
|
|
|
| |
llvm-svn: 171440
|
|
|
|
| |
llvm-svn: 168851
|
|
|
|
| |
llvm-svn: 168303
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
positions of Objective-C methods.
It is possible to recover a lot of type information about
Objective-C methods from the reflective metadata for their
implementations. This information is not rich when it
comes to struct types, however, and it is not possible to
produce a type in the debugger's round-tripped AST which
will really do anything useful during type-checking.
Therefore we allow __unknown_anytype in these positions,
which essentially disables type-checking for that argument.
We infer the parameter type to be the unqualified type of
the argument expression unless that expression is an
explicit cast, in which case it becomes the type-as-written
of that cast.
rdar://problem/12565338
llvm-svn: 167896
|
|
|
|
|
|
|
|
|
| |
if the type of the value is a non-trivial class type. Fixes PR14318.
(There's a minor ObjC++ language change here: given that we can't save the
value, the type of the assignment expression is void in such cases.)
llvm-svn: 167884
|
|
|
|
| |
llvm-svn: 166562
|
|
|
|
|
|
| |
VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive.
llvm-svn: 166280
|
|
|
|
|
|
|
|
|
|
|
| |
source locations in places where it is necessary for diagnostics. By itself,
this causes assertions, so while I'm here, also fix property synthesis
for properties of C++ class type so we use so we properly set up a scope
and mark variable declarations.
<rdar://problem/12514189>.
llvm-svn: 166219
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Also applies to -Wnonnull, -Wtype-safety, and -Wnon-pod-varargs.
All of these can be better checked at instantiation time.
This change does not actually affect regular CallExpr function calls,
since the checks there only happen after overload resolution.
However, it will affect Objective-C method calls.
<rdar://problem/12373934>
llvm-svn: 164984
|
|
|
|
|
|
|
| |
'instance variable' in text of all diagnostics
for objective-C: // rdar://12352442
llvm-svn: 164559
|
|
|
|
|
|
|
| |
checking on property declared in class extension.
// rdar://12214070
llvm-svn: 164053
|
|
|
|
| |
llvm-svn: 163918
|
|
|
|
|
|
| |
// rdar://10554025
llvm-svn: 163917
|
|
|
|
|
|
| |
without a cast. Fixes <rdar://problem/11830912>.
llvm-svn: 163873
|
|
|
|
|
|
| |
// rdar://12280826
llvm-svn: 163741
|
|
|
|
|
|
| |
super's annotated methods. // rdar://6386358
llvm-svn: 163517
|
|
|
|
|
|
|
|
| |
in classes. Use it to flag those method implementations which don't
contain call to 'super' if they have 'super' class and it has the method
with this attribute set. This is wip. // rdar://6386358
llvm-svn: 163434
|
|
|
|
|
|
|
|
| |
type is an unqualified objc pointer in arc. Treat it just
as being treated in c++98. This fixes a bogus vararg warning
with -std=c++11. //rdar://12229679
llvm-svn: 163236
|
|
|
|
|
|
|
| |
method parameter types which are reference to an objective-C
pointer to object with no explicit ownership. // rdar://10907090
llvm-svn: 162959
|
|
|
|
|
|
|
| |
statement starts with an identifier for which name lookup will fail either way,
look at later tokens to disambiguate in order to improve error recovery.
llvm-svn: 162464
|
|
|
|
|
|
| |
an abstract c++ class. // rdar://12095239
llvm-svn: 162052
|
|
|
|
|
|
|
| |
initializer list defined inside an objc class
implementation. wip
llvm-svn: 161699
|
|
|
|
|
|
|
| |
with member initializer list defined inside
an objc implementation block. wip.
llvm-svn: 161692
|
|
|
|
|
|
|
| |
function-try-block occuring in objc's implementation
block. wip.
llvm-svn: 161675
|