| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 74080
|
|
|
|
|
|
| |
change. More to follow.
llvm-svn: 72951
|
|
|
|
|
|
|
|
| |
redundant functionality. The result (ASTOwningVector) lives in
clang/Parse/Ownership.h and is used by both the parser and semantic
analysis. No intended functionality change.
llvm-svn: 72214
|
|
|
|
| |
llvm-svn: 72210
|
|
|
|
| |
llvm-svn: 71989
|
|
|
|
|
|
|
|
| |
return type and the selector. This is inconsistent with C functions
(where such attributes would be placed on the return type, not the the
FunctionDecl), and is inconsistent with what people are use to seeing.
llvm-svn: 70878
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
appear between the return type and the selector. This is a separate code path
from regular attribute processing, as we only want to (a) accept only a specific
set of attributes in this place and (b) want to distinguish to clients the
context in which an attribute was added to an ObjCMethodDecl.
Currently, the attribute 'objc_ownership_returns' is the only attribute that
uses this new feature. Shortly I will add a warning for 'objc_ownership_returns'
to be placed at the end of a method declaration.
llvm-svn: 70504
|
|
|
|
|
|
| |
the return type and selector. Haven't hooked this up to Sema yet.
llvm-svn: 70501
|
|
|
|
|
|
|
| |
list of another protocol definition. This warning is very noisy and GCC doesn't
produce it so existing code doesn't expect it.
llvm-svn: 68894
|
|
|
|
|
|
|
| |
information in a little struct instead of individually. While we're
at it, add per-argument loc info and attribute info.
llvm-svn: 68871
|
|
|
|
|
|
|
| |
since it only parses one identifier out of the selector, not the
whole thing.
llvm-svn: 68867
|
|
|
|
|
|
| |
used as receiver.
llvm-svn: 68631
|
|
|
|
| |
llvm-svn: 68568
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
productions (except the already broken ObjC cases like @class X,Y;) in
the parser that can produce more than one Decl return a DeclGroup instead
of a Decl, etc.
This allows elimination of the Decl::NextDeclarator field, and exposes
various clients that should look at all decls in a group, but which were
only looking at one (such as the dumper, printer, etc). These have been
fixed.
Still TODO:
1) there are some FIXME's in the code about potentially using
DeclGroup for better location info.
2) ParseObjCAtDirectives should return a DeclGroup due to @class etc.
3) I'm not sure what is going on with StmtIterator.cpp, or if it can
be radically simplified now.
4) I put a truly horrible hack in ParseTemplate.cpp.
I plan to bring up #3/4 on the mailing list, but don't plan to tackle
#1/2 in the short term.
llvm-svn: 68002
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
pointer. Its purpose in life is to be a glorified void*, but which does not
implicitly convert to void* or other OpaquePtr's with a different UID.
Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the
entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This
makes the C++ compiler enforce that these aren't convertible to other opaque
types.
We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc,
but I don't plan to do that in the short term.
The one outstanding known problem with this patch is that we lose the
bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to
bitmangle the success bit into the low bit of DeclPtrTy. I will rectify
this with a subsequent patch.
llvm-svn: 67952
|
|
|
|
|
|
| |
whose sema decl is at the translation unit.
llvm-svn: 67249
|
|
|
|
|
|
| |
the selector for the property setter.
llvm-svn: 66834
|
|
|
|
| |
llvm-svn: 66551
|
|
|
|
|
|
|
|
| |
aren't very pretty:-(
This fixes <rdar://problem/6496506> Implement class setter/getter for properties.
llvm-svn: 66465
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce a new PrettyStackTraceDecl.
Use it to add the top level LLVM IR generation stuff in
Backend.cpp to stack traces. We now get crashes like:
Stack dump:
0. Program arguments: clang t.c -emit-llvm
1. <eof> parser at end of file
2. t.c:1:5: LLVM IR generation of declaration 'a'
Abort
for IR generation crashes.
llvm-svn: 66153
|
|
|
|
|
|
|
|
|
| |
Stack dump:
0. message.m:53:13: in compound statement ('{}')
1. message.m:53:13: parsing Objective-C method 'xx'
2. clang message.m
llvm-svn: 66121
|
|
|
|
|
|
| |
c-style functions declared inside objc @implementations.
llvm-svn: 66087
|
|
|
|
|
|
|
|
|
|
|
| |
(Daniel, please verify).
Also necessary to fix:
<rdar://problem/6632061> [sema] non object types should not be allowed in @catch statements
<rdar://problem/6252237> [sema] qualified id should be disallowed in @catch statements
llvm-svn: 65964
|
|
|
|
|
|
| |
Parser::ParseObjCMethodDefinition(): Make sure we don't exit the BodyScope until ActOnFinishFunctionBody() is complete.
llvm-svn: 65880
|
|
|
|
| |
llvm-svn: 65695
|
|
|
|
|
|
|
|
| |
us whether there was an error in trying to parse a type-name (type-id
in C++). This allows propagation of errors further in the compiler,
suppressing more bogus error messages.
llvm-svn: 64922
|
|
|
|
| |
llvm-svn: 64893
|
|
|
|
|
|
| |
recovery.
llvm-svn: 64609
|
|
|
|
| |
llvm-svn: 64608
|
|
|
|
|
|
| |
ActOnClassMessage/ActOnInstanceMessage.
llvm-svn: 64560
|
|
|
|
|
|
| |
selectors as the first argument
llvm-svn: 64320
|
|
|
|
| |
llvm-svn: 64318
|
|
|
|
|
|
|
|
| |
This shrinks OwningResult by one pointer. Since it is no longer larger than OwningPtr, merge the two.
This leads to simpler client code and speeds up my benchmark by 2.7%.
For some reason, this exposes a previously hidden bug, causing a regression in SemaCXX/condition.cpp.
llvm-svn: 63867
|
|
|
|
|
|
| |
redundant #includes. Patch by Anders Johnsen!
llvm-svn: 63271
|
|
|
|
|
|
|
|
|
| |
.def file for each library. This means that adding a diagnostic
to sema doesn't require all the other libraries to be rebuilt.
Patch by Anders Johnsen!
llvm-svn: 63111
|
|
|
|
|
|
| |
misleading (and shorter).
llvm-svn: 62466
|
|
|
|
| |
llvm-svn: 62465
|
|
|
|
| |
llvm-svn: 62432
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
or enum to be outside that struct, union, or enum. Fixes several
regressions:
<rdar://problem/6487662>
<rdar://problem/6487669>
<rdar://problem/6487684>
<rdar://problem/6487702>
PR clang/3305
PR clang/3312
There is still some work to do in Objective-C++, but this requires
that each of the Objective-C entities (interfaces, implementations,
etc.) to be introduced into the context stack with
PushDeclContext/PopDeclContext. This will be a separate fix, later.
llvm-svn: 62091
|
|
|
|
| |
llvm-svn: 61975
|
|
|
|
|
|
| |
parameter list. This is work in progress.
llvm-svn: 61964
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
introduce a Scope for the body of a tag. This reduces the number of
semantic differences between C and C++ structs and unions, and will
help with other features (e.g., anonymous unions) in C. Some important
points:
- Fields are now in the "member" namespace (IDNS_Member), to keep
them separate from tags and ordinary names in C. See the new test
in Sema/member-reference.c for an example of why this matters. In
C++, ordinary and member name lookup will find members in both the
ordinary and member namespace, so the difference between
IDNS_Member and IDNS_Ordinary is erased by Sema::LookupDecl (but
only in C++!).
- We always introduce a Scope and push a DeclContext when we're
defining a tag, in both C and C++. Previously, we had different
actions and different Scope/CurContext behavior for enums, C
structs/unions, and C++ structs/unions/classes. Now, it's one pair
of actions. (Yay!)
There's still some fuzziness in the handling of struct/union/enum
definitions within other struct/union/enum definitions in C. We'll
need to do some more cleanup to eliminate some reliance on CurContext
before we can solve this issue for real. What we want is for something
like this:
struct X {
struct T { int x; } t;
};
to introduce T into translation unit scope (placing it at the
appropriate point in the IdentifierResolver chain, too), but it should
still have struct X as its lexical declaration
context. PushOnScopeChains isn't smart enough to do that yet, though,
so there's a FIXME test in nested-redef.c
llvm-svn: 61940
|
|
|
|
| |
llvm-svn: 61309
|
|
|
|
| |
llvm-svn: 61114
|
|
|
|
|
|
| |
Convert a few functions.
llvm-svn: 60983
|
|
|
|
|
|
| |
connection.
llvm-svn: 60982
|
|
|
|
| |
llvm-svn: 60906
|
|
|
|
| |
llvm-svn: 60904
|
|
|
|
| |
llvm-svn: 60900
|
|
|
|
| |
llvm-svn: 60895
|