| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 68971
|
| |
|
|
| |
llvm-svn: 68969
|
| |
|
|
|
|
|
|
| |
missing interface name in "error: cannot declare variable inside a class, protocol or category ''.
Since ObjC 2.0 class "extensions" have a null name, the diagnostic above is actually "correct". Nevertheless, it is confusing. Decided to remove the name entirely (from my perspective, it didn't add any value). Also simplified the text of the diagnostic a bit.
llvm-svn: 68967
|
| |
|
|
|
|
|
|
|
| |
- Ted, please check.
- Missing test case because PTH won't reliably cache the tokens in a
test case. *cough*
llvm-svn: 68966
|
| |
|
|
|
|
|
|
| |
the unlikely event that the filename IDs in the stored line table end
up being different from the filename IDs in the newly-created line
table.
llvm-svn: 68965
|
| |
|
|
|
|
| |
properly cope with #line directives in PCH files.
llvm-svn: 68963
|
| |
|
|
|
|
| |
separate Internals header. No functionality change
llvm-svn: 68960
|
| |
|
|
|
|
|
| |
deterministic when faced with an ambiguity. This eliminates the
annoying test/SemaCXX/using-directive.cpp failure.
llvm-svn: 68952
|
| |
|
|
| |
llvm-svn: 68933
|
| |
|
|
|
|
| |
PR3972: Poor diagnostic with missing ')'
llvm-svn: 68932
|
| |
|
|
|
|
| |
by making ASTContext::isObjCObjectPointerType accept typedefs of id.
llvm-svn: 68931
|
| |
|
|
| |
llvm-svn: 68925
|
| |
|
|
| |
llvm-svn: 68923
|
| |
|
|
| |
llvm-svn: 68921
|
| |
|
|
|
|
| |
to isValidAfterIdentifierInDeclarator, as suggested by Sebastian.
llvm-svn: 68920
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that I noticed working on other things.
Instead of emitting:
t2.cc:1:8: error: use of undeclared identifier 'g'
int x(*g);
^
t2.cc:1:10: error: expected ')'
int x(*g);
^
t2.cc:1:6: note: to match this '('
int x(*g);
^
We now only emit:
t2.cc:1:7: warning: type specifier missing, defaults to 'int'
int x(*g);
^
Note that the example in SemaCXX/nested-name-spec.cpp:f4 is still
not great, we now produce both of:
void f4(undef::C); // expected-error {{use of undeclared identifier 'undef'}} \
expected-error {{variable has incomplete type 'void'}}
The second diagnostic should be silenced by something getting marked invalid.
I don't plan to fix this though.
llvm-svn: 68919
|
| |
|
|
| |
llvm-svn: 68918
|
| |
|
|
|
|
| |
this allows downstream diags to be properly silenced.
llvm-svn: 68917
|
| |
|
|
|
|
| |
return null.
llvm-svn: 68916
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
struct xyz { int y; };
enum abc { ZZZ };
static xyz b;
abc c;
we used to produce:
t2.c:4:8: error: unknown type name 'xyz'
static xyz b;
^
t2.c:5:1: error: unknown type name 'abc'
abc c;
^
we now produce:
t2.c:4:8: error: use of tagged type 'xyz' without 'struct' tag
static xyz b;
^
struct
t2.c:5:1: error: use of tagged type 'abc' without 'enum' tag
abc c;
^
enum
GCC produces the normal:
t2.c:4: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘b’
t2.c:5: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘c’
rdar://6783347
llvm-svn: 68914
|
| |
|
|
|
|
|
| |
if a decl is invalid, it isn't added to the Decls array, so we
need to pass in Decls.size() to avoid reading uninit memory.
llvm-svn: 68913
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
which tries to do better error recovery when it is "obvious" that an
identifier is a mis-typed typename. In this case, we try to parse
it as a typename instead of as the identifier in a declarator, which
gives us several options for better error recovery and immediately
makes diagnostics more useful. For example, we now produce:
t.c:4:8: error: unknown type name 'foo_t'
static foo_t a = 4;
^
instead of:
t.c:4:14: error: invalid token after top level declarator
static foo_t a = 4;
^
Also, since we now parse "a" correctly, we make a decl for it,
preventing later uses of 'a' from emitting things like:
t.c:12:20: error: use of undeclared identifier 'a'
int bar() { return a + b; }
^
I'd really appreciate any scrutiny possible on this, it
is a tricky area.
llvm-svn: 68911
|
| |
|
|
| |
llvm-svn: 68909
|
| |
|
|
|
|
|
| |
exit at the first decl found that creates a scope, don't evaluate
decl_end() every iteration.
llvm-svn: 68908
|
| |
|
|
|
|
|
|
|
| |
different code path that I forgot previously.
Implement the rvalue reference overload dance for returning local objects. Returning a local object first tries to find a move constructor now.
The error message when no move constructor is defined (or is not applicable) and the copy constructor is deleted is quite ugly, though.
llvm-svn: 68902
|
| |
|
|
|
|
| |
Class and unqualified id's are.
llvm-svn: 68899
|
| |
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
crashes codegen.
llvm-svn: 68891
|
| |
|
|
|
|
| |
macro definitions.
llvm-svn: 68884
|
| |
|
|
| |
llvm-svn: 68883
|
| |
|
|
|
|
|
| |
macro deserialization. We now correctly install II's in tokens, handle
function-like macros, etc.
llvm-svn: 68882
|
| |
|
|
|
|
|
|
|
|
|
| |
@property int x;
associate the location of X with the property decl, not the location
of the @. Also, pass this info along to the synthesized ParmVarDecls
so that redefinition and other diagnostics can use it. This eliminates
a fixme.
llvm-svn: 68880
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
info, now
that it is plumbed through Sema. On a file from growl, we used to emit:
t.mi:107059:1: warning: conflicting types for 'removePluginHandler:forPluginTypes:'
- (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions {
^
t.mi:105280:1: note: previous definition is here
- (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types;
^
now we produce:
t.mi:107059:55: warning: conflicting parameter types in implementation of 'removePluginHandler:forPluginTypes:': 'id<NSObject>' vs 'id<GrowlPluginHandler>'
- (void) removePluginHandler:(id <GrowlPluginHandler>)handler forPluginTypes:(NSSet *)extensions {
^
t.mi:105280:45: note: previous definition is here
- (void) removePluginHandler:(id <NSObject>)handler forPluginTypes:(NSSet *)types;
^
We still don't have proper loc info for properties, hence the FIXME.
rdar://6782494
llvm-svn: 68879
|
| |
|
|
| |
llvm-svn: 68877
|
| |
|
|
|
|
| |
to their arguments.
llvm-svn: 68876
|
| |
|
|
|
|
|
| |
a block without a prototype should still coerce a return in it to
use the declared return type.
llvm-svn: 68875
|
| |
|
|
| |
llvm-svn: 68873
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) improve localizability by not passing english strings in.
2) improve location for arguments.
3) print the objc type being passed.
Before:
method-bad-param.m:15:1: error: Objective-C type cannot be passed by value
-(void) my_method:(foo) my_param
^
after:
method-bad-param.m:15:25: error: Objective-C interface type 'foo' cannot be passed by value
-(void) my_method:(foo) my_param
^
llvm-svn: 68872
|
| |
|
|
|
|
|
| |
information in a little struct instead of individually. While we're
at it, add per-argument loc info and attribute info.
llvm-svn: 68871
|
| |
|
|
| |
llvm-svn: 68870
|
| |
|
|
|
|
|
|
|
|
|
| |
down to the ActionBase class. This eliminates dependencies of (e.g.)
DeclSpec.h on Action.h, meaning that action.h can now include these
headers and use their types directly in the actions interfaces.
This is a refactoring to support a future change, no functionality
change.
llvm-svn: 68869
|
| |
|
|
|
|
| |
thanks to Tobias Stadler for pointing this out.
llvm-svn: 68868
|
| |
|
|
|
|
|
| |
since it only parses one identifier out of the selector, not the
whole thing.
llvm-svn: 68867
|
| |
|
|
|
|
| |
indent code properly
llvm-svn: 68866
|
| |
|
|
| |
llvm-svn: 68865
|
| |
|
|
| |
llvm-svn: 68853
|
| |
|
|
| |
llvm-svn: 68852
|
| |
|
|
| |
llvm-svn: 68849
|
| |
|
|
|
|
|
| |
so that we only need to perform the lookup and identifier resolution
once per identifier in the PCH file.
llvm-svn: 68846
|
| |
|
|
|
|
|
|
|
| |
ProgramPoints all the way through to GRCoreEngine.
NSString.m now fails with RegionStoreManager because of the void** cast.
Disabling use of region store for that test for now.
llvm-svn: 68845
|