| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
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
|
| |
|
|
|
|
| |
indent code properly
llvm-svn: 68866
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
buffer generated for the current translation unit. If they are
different, complain and then ignore the PCH file. This effectively
checks for all compilation options that somehow would affect
preprocessor state (-D, -U, -include, the dreaded -imacros, etc.).
When we do accept the PCH file, throw away the contents of the
predefines buffer rather than parsing them, since all of the results
of that parsing are already stored in the PCH file. This eliminates
the ugliness with the redefinition of __builtin_va_list, among other
things.
llvm-svn: 68838
|
| |
|
|
| |
llvm-svn: 68834
|
| |
|
|
| |
llvm-svn: 68804
|
| |
|
|
|
|
|
| |
cleanup. Aside from a minor tweak to the PCH file format, no
functionality change.
llvm-svn: 68793
|
| |
|
|
|
|
|
| |
clients of the analyzer to designate custom assertion routines as "noreturn"
functions from the analyzer's perspective but not the compiler's.
llvm-svn: 68746
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
de-serialization of abstract syntax trees.
PCH support serializes the contents of the abstract syntax tree (AST)
to a bitstream. When the PCH file is read, declarations are serialized
as-needed. For example, a declaration of a variable "x" will be
deserialized only when its VarDecl can be found by a client, e.g.,
based on name lookup for "x" or traversing the entire contents of the
owner of "x".
This commit provides the framework for serialization and (lazy)
deserialization, along with support for variable and typedef
declarations (along with several kinds of types). More
declarations/types, along with important auxiliary structures (source
manager, preprocessor, etc.), will follow.
llvm-svn: 68732
|
| |
|
|
|
|
| |
No functionality change (really).
llvm-svn: 68726
|
| |
|
|
| |
llvm-svn: 68725
|
| |
|
|
| |
llvm-svn: 68659
|
| |
|
|
|
|
|
|
| |
error->warning.
Fixes <rdar://problem/6762239> [sema] gcc incompatibility; error on incompatible operand types in ?:.
llvm-svn: 68617
|
| |
|
|
|
|
| |
Fixes <rdar://problem/6759522>
llvm-svn: 68611
|
| |
|
|
|
|
| |
we must not issue gc-specific errors in non-gc mode.
llvm-svn: 68551
|
| |
|
|
|
|
| |
functions. Fixes PR3941.
llvm-svn: 68541
|
| |
|
|
|
|
|
| |
the base implementations (and not in
current implementation).
llvm-svn: 68527
|
| |
|
|
|
|
|
|
|
|
|
|
| |
with qualified id's. This change is motivated by our desire to not support the "Class<foo>" idiom. Note that the change makes perfect sense (since all ObjC classes are also id/instances).
This allow us to document a simple migration path...change "Class <foo>" to "id <foo>".
This effects:
- <rdar://problem/6761939> TASK: File source change radars for "qualified Class" errors
- <rdar://problem/6761864> Protocol qualified Class is unsupported
llvm-svn: 68517
|
| |
|
|
|
|
| |
This fixes <rdar://problem/6757102> clang type for @"xxx" is "NSConstantString *" (GCC type is "NSString *").
llvm-svn: 68514
|
| |
|
|
|
|
|
| |
Be kind to so many projects which are doing this (and be
like gcc).
llvm-svn: 68474
|
| |
|
|
|
|
| |
This will simplify clang adoption, and is probably better "etiquette" (since gcc has always accepted this idiom without warning). Once we are over the adoption hurdle, we can turn this into an error.
llvm-svn: 68468
|
| |
|
|
| |
llvm-svn: 68454
|
| |
|
|
|
|
| |
ivars.
llvm-svn: 68453
|
| |
|
|
|
|
|
| |
a really really bad idea. Now that we emit an error about the unpromoted
type, users should be able to understand what is going on.
llvm-svn: 68447
|
| |
|
|
|
|
|
| |
makes the property writable in the current class.
llvm-svn: 68446
|
| |
|
|
|
|
|
| |
diagnostic use the va_list typedef more often, see the difference in the
changed testcase.
llvm-svn: 68441
|
| |
|
|
| |
llvm-svn: 68435
|
| |
|
|
|
|
| |
va_lists for some reason. This fixes rdar://6726818
llvm-svn: 68434
|
| |
|
|
| |
llvm-svn: 68424
|
| |
|
|
| |
llvm-svn: 68414
|
| |
|
|
| |
llvm-svn: 68413
|
| |
|
|
|
|
|
|
| |
used in a class which declares a property of the same
name. This should not result in an unimplemented
method warning.
llvm-svn: 68409
|
| |
|
|
|
|
| |
literals".
llvm-svn: 68407
|
| |
|
|
|
|
| |
objc's continuation class.
llvm-svn: 68339
|
| |
|
|
|
|
|
| |
definition, warn if there are too many/too few function call
arguments.
llvm-svn: 68318
|
| |
|
|
| |
llvm-svn: 68278
|
| |
|
|
| |
llvm-svn: 68268
|
| |
|
|
| |
llvm-svn: 68261
|
| |
|
|
|
|
|
| |
class which was exposed by implementation of
objc2's nonfragile abi code gen.
llvm-svn: 68259
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
failures that involve malformed types, e.g., "typename X::foo" where
"foo" isn't a type, or "std::vector<void>" that doens't instantiate
properly.
Similarly, be a bit smarter in our handling of ambiguities that occur
in Sema::getTypeName, to eliminate duplicate error messages about
ambiguous name lookup.
This eliminates two XFAILs in test/SemaCXX, one of which was crying
out to us, trying to tell us that we were producing repeated error
messages.
llvm-svn: 68251
|
| |
|
|
|
|
|
|
|
|
| |
- Finish up support for converting UTF8->UTF16 to support ObjC @"string" constants.
Remove warning from CheckObjCString.
As the FIXME in the test case indicates, I still have a bug to work out (apparently with \u handling).
llvm-svn: 68245
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
heuristics to determine when it's useful to desugar a type for display
to the user. Introduce two C++-specific heuristics:
- For a qualified type (like "foo::bar"), only produce a new
desugred type if desugaring the qualified type ("bar", in this
case) produces something interesting. For example, if "foo::bar"
refers to a class named "bar", don't desugar. However, if
"foo::bar" refers to a typedef of something else, desugar to that
something else. This gives some useful desugaring such as
"foo::bar (aka 'int')".
- Don't desugar class template specialization types like
"basic_string<char>" down to their underlying "class
basic_string<char, char_traits<char>, allocator<char>>, etc.";
it's better just to leave such types alone.
Update diagnostics.html with some discussion and examples of type
preservation in C++, showing qualified names and class template
specialization types.
llvm-svn: 68207
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
specifiers that terminate in a simple-template-id, e.g.,
typename MetaFun::template apply<T1, T2>
Also, implement template instantiation for dependent
nested-name-specifiers that involve unresolved identifiers, e.g.,
typename T::type::type
llvm-svn: 68166
|
| |
|
|
| |
llvm-svn: 68140
|
| |
|
|
|
|
|
|
|
|
|
| |
template template parameters and dependent template names. For
example, the oft-mentioned
typename MetaFun::template apply<T1, T2>::type
can now be instantiated, with the appropriate name lookup for "apply".
llvm-svn: 68128
|
| |
|
|
| |
llvm-svn: 68110
|