| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
('NSUserDefaults *') is not a structure or union.
Teach Sema::ActOnMemberReferenceExpr() to look through local category implementations associated with the class.
llvm-svn: 57995
|
|
|
|
|
|
|
|
| |
don't have duplicated direct base classes.
Seriliazation of base class specifiers is not yet implemented.
llvm-svn: 57991
|
|
|
|
|
|
|
|
|
| |
aren't trying to compare with address-space qualifiers (for now).
Clean up handing of DeclRefExprs in Expr::isLvalue and refactor part
of the check into a static DeclCanBeLvalue.
llvm-svn: 57980
|
|
|
|
|
|
|
|
|
|
|
|
| |
conversions (e.g., comparing int* -> const int* against
int* -> const volatile int*); see C++ 13.3.3.2p3 bullet 3.
Add Sema::UnwrapSimilarPointerTypes to simplify the control flow of
IsQualificationConversion and CompareQualificationConversion (and fix
the handling of the int* -> volatile int* conversion in the former).
llvm-svn: 57978
|
|
|
|
| |
llvm-svn: 57977
|
|
|
|
| |
llvm-svn: 57964
|
|
|
|
| |
llvm-svn: 57963
|
|
|
|
|
|
| |
inline
llvm-svn: 57951
|
|
|
|
|
|
|
|
|
|
| |
1. Remove a bogus assertion, clients other than sema can return a
null pointer from actions that result in ParseTypeName returning null.
2. Remove dead RParenLoc variable.
3. Simplify control flow handling error conditions.
4. On a major failure, we should skip until ')' not until '}'.
llvm-svn: 57949
|
|
|
|
|
|
| |
are disjoint, and add some overloading-based tests of qualification conversions
llvm-svn: 57942
|
|
|
|
| |
llvm-svn: 57941
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Changes:
- Sema::IsQualificationConversion determines whether we have a qualification
conversion.
- Sema::CheckSingleAssignment constraints now follows the C++ rules in C++,
performing an implicit conversion from the right-hand side to the type of
the left-hand side rather than checking based on the C notion of
"compatibility". We now rely on the implicit-conversion code to
determine whether the conversion can happen or
not. Sema::TryCopyInitialization has an ugly reference-related
hack to cope with the initialization of references, for now.
- When building DeclRefExprs, strip away the reference type, since
there are no expressions whose type is a reference. We'll need to
do this throughout Sema.
- Expr::isLvalue now permits functions to be lvalues in C++ (but not
in C).
llvm-svn: 57935
|
|
|
|
| |
llvm-svn: 57927
|
|
|
|
| |
llvm-svn: 57924
|
|
|
|
|
|
| |
determine if the symbolic value as a "loc::" or "nonloc::" value.
llvm-svn: 57917
|
|
|
|
|
|
|
|
|
| |
blocks as objects
ASTContext::isObjCObjectPointerType() needs to consider blocks as objects.
Note: My previous commit was done in the test directory...as a result, this commit was necessary.
llvm-svn: 57914
|
|
|
|
| |
llvm-svn: 57910
|
|
|
|
| |
llvm-svn: 57909
|
|
|
|
|
|
|
|
| |
the current autorelease pool).
Added initial code for tracking stack of autorelease pools.
llvm-svn: 57908
|
|
|
|
|
|
| |
Found this while fixing another unrelated radar.
llvm-svn: 57904
|
|
|
|
| |
llvm-svn: 57899
|
|
|
|
|
|
|
|
|
|
|
|
| |
is over enthusiastic.
Fix <rdar://problem/6265257> warnings for ambiguous message send swamp other warnings.
Reworked Sema::MatchTwoMethodDeclarations() to optionally match based on method size and alignment (the default in GCC). Changed Sema::LookupInstanceMethodInGlobalPool() to use this feature.
Added -Wno-struct-selector-match to driver, however didn't hook it up yet. Added a FIXME that says this.
llvm-svn: 57898
|
|
|
|
|
|
|
|
|
|
|
| |
GRExprEngine::VisitCast() so that other parts of the analyzer can be ignorant.
When we cast "array of type T" to "pointer to T", we get the loc::MemRegionVal
corresponding to the array variable. This is sufficient for BasicStore, but not
for RegionStore. RegionStore should get the element region for the first array
element in the cast. So next comes to the revamping of transfer functions for
different store model.
llvm-svn: 57897
|
|
|
|
| |
llvm-svn: 57896
|
|
|
|
|
|
| |
RValues.h/cpp => SVals.h/cpp
llvm-svn: 57893
|
|
|
|
|
|
| |
initialized to UndefinedVal.
llvm-svn: 57892
|
|
|
|
| |
llvm-svn: 57891
|
|
|
|
|
|
| |
that a denominator cannot be zero even when the result of an '/' or '%' expression is unknown.
llvm-svn: 57855
|
|
|
|
|
|
| |
compound assignment is UnknownVal().
llvm-svn: 57851
|
|
|
|
|
|
| |
on id<protocol>.
llvm-svn: 57850
|
|
|
|
|
|
| |
of ObjC qualified id types to be consistent with gcc. This changes a handful of test case errors into warnings (diff will tell you which cases have changed).
llvm-svn: 57841
|
|
|
|
|
|
| |
strcmp when needed.
llvm-svn: 57817
|
|
|
|
| |
llvm-svn: 57816
|
|
|
|
| |
llvm-svn: 57815
|
|
|
|
| |
llvm-svn: 57814
|
|
|
|
| |
llvm-svn: 57813
|
|
|
|
|
|
| |
weird errors about property attributes being unknown.
llvm-svn: 57812
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
crash.m:8:12: error: type name requires a specifier or qualifier
@property (readonlyx, getter=isAwesome) int _awesome;
^
crash.m:8:29: error: expected ';' at end of declaration list
@property (readonlyx, getter=isAwesome) int _awesome;
^
crash.m:8:39: error: expected identifier or '('
@property (readonlyx, getter=isAwesome) int _awesome;
^
we now get:
crash.m:8:12: error: unknown property attribute 'readonlyx'
@property (readonlyx, getter=isAwesome) int _awesome;
^
Also, we can eliminate isObjCPropertyAttribute now.
llvm-svn: 57811
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ParseObjCPropertyAttribute. Before, on this code (where
a comma was forgotten):
@property (readonly getter=isAwesome) int _awesome;
we emitted:
crash.m:9:11: error: expected ')'
@property (readonly getter=isAwesome) int _awesome;
^
crash.m:9:37: error: type name requires a specifier or qualifier
@property (readonly getter=isAwesome) int _awesome;
^
crash.m:9:37: error: expected identifier or '('
crash.m:9:37: error: expected ';' at end of declaration list
crash.m:9:1: error: @property requires fields to be named
@property (readonly getter=isAwesome) int _awesome;
^
now we emit:
crash.m:9:21: error: expected ')'
@property (readonly getter=isAwesome) int _awesome;
^
crash.m:9:11: error: to match this '('
@property (readonly getter=isAwesome) int _awesome;
^
llvm-svn: 57809
|
|
|
|
| |
llvm-svn: 57807
|
|
|
|
| |
llvm-svn: 57806
|
|
|
|
|
|
| |
@property (readonly) int : 4;
llvm-svn: 57805
|
|
|
|
|
|
|
| |
occurs, skip to an @ or ; instead of to a } or ;. Properties
don't necessarily live in {}'s.
llvm-svn: 57804
|
|
|
|
|
|
|
|
|
|
| |
Check for @end in ParseObjCInterfaceDeclList instead of in each caller
Handle @required and @optional with the same code
Add some fixmes about some apparently objc2 code that is being accepted
in objc1.
llvm-svn: 57803
|
|
|
|
|
|
|
|
|
|
|
| |
where it would reject @required in non-protocols, but then go
ahead and tag methods with required anyway. Instead, if we see
this in something other than a protocol, just ignore the request.
Also, improve error recovery a bit when we see something bogus
inside an interface.
llvm-svn: 57798
|
|
|
|
|
|
| |
to make it easier to understand. No functionality change.
llvm-svn: 57797
|
|
|
|
|
|
| |
move it to its own predicate to make it more clear.
llvm-svn: 57796
|
|
|
|
|
|
| |
can't stick an attributes?
llvm-svn: 57795
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
of whether a '(' was a grouping paren or the start of a function declarator.
This is PR2796.
Now we eat the attribute before deciding whether the paren is grouping or
not, then apply it to the resultant decl or to the first argument as needed.
One somewhat surprising aspect of this is that attributes interact with
implicit int in cases like this:
void a(x, y) // k&r style function
void b(__attribute__(()) x, y); // function with two implicit int arguments
void c(x, __attribute__(()) y); // error, can't have attr in identifier list.
Fun stuff.
llvm-svn: 57790
|
|
|
|
| |
llvm-svn: 57789
|