| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
work in prgress.
llvm-svn: 60430
|
| |
|
|
| |
llvm-svn: 60413
|
| |
|
|
|
|
|
|
| |
a property. Previous scheme of seaching in interface's list of methods
would not work because this list is not yet constructed. This is in preparation
for doing semantic check on viability of setter/getter method declarations.
llvm-svn: 60386
|
| |
|
|
| |
llvm-svn: 60377
|
| |
|
|
|
|
| |
don't want that :)
llvm-svn: 60333
|
| |
|
|
|
|
| |
Sema::CheckConditionalOperands.
llvm-svn: 60319
|
| |
|
|
| |
llvm-svn: 60317
|
| |
|
|
| |
llvm-svn: 60305
|
| |
|
|
| |
llvm-svn: 60235
|
| |
|
|
|
|
|
|
|
|
|
|
| |
id<P0>
The intended overloading behavior of these entities isn't entirely
clear, and GCC seems to have some strange limitations (e.g., the
inability to overload on id<P0> vs. id<P1>). We'll want to revisit
these semantics and determine just how Objective-C++ overloading
should really work.
llvm-svn: 60142
|
| |
|
|
| |
llvm-svn: 60140
|
| |
|
|
| |
llvm-svn: 60138
|
| |
|
|
|
|
| |
until we can enable blocks in C++
llvm-svn: 60133
|
| |
|
|
|
|
|
|
|
|
|
|
| |
converting a pointer to one Objective-C interface into a pointer to another
Objective-C interface, and conversions with 'id'. The semantics seems
to match GCC, although they seem somewhat ad hoc.
Fixed a few cases where we assumed the C++ definition of isObjectType,
but were getting the C definition, causing failures in trouble with
conversions to void pointers.
llvm-svn: 60130
|
| |
|
|
| |
llvm-svn: 60115
|
| |
|
|
|
|
|
|
| |
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in
propgress.
llvm-svn: 60114
|
| |
|
|
|
|
| |
interface pointers
llvm-svn: 60096
|
| |
|
|
|
|
| |
makes ActOnCallExpr simpler
llvm-svn: 60094
|
| |
|
|
| |
llvm-svn: 60093
|
| |
|
|
|
|
| |
is imported from a protocol into the implementation.
llvm-svn: 59988
|
| |
|
|
| |
llvm-svn: 59979
|
| |
|
|
|
|
|
|
| |
instead of converting them to strings first. This also fixes a
bunch of minor inconsistencies in the diagnostics emitted by clang
and adds a bunch of FIXME's to DiagnosticKinds.def.
llvm-svn: 59948
|
| |
|
|
|
|
|
|
|
|
|
| |
uses of getName() with uses of getDeclName(). This upgrades a bunch of
diags to take DeclNames instead of std::strings.
This also tweaks a couple of diagnostics to be cleaner and changes
CheckInitializerTypes/PerformInitializationByConstructor to pass
around DeclarationNames instead of std::strings.
llvm-svn: 59947
|
| |
|
|
|
|
|
|
|
| |
assert if the name is not an identifier. Update callers to do the right
thing and avoid this method in unsafe cases. This also fixes an objc
warning that was missing a space, and migrates a couple more to taking
IdentifierInfo and QualTypes instead of std::strings.
llvm-svn: 59936
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
a new NamedDecl::getAsString() method.
Change uses of Selector::getName() to just pass in a Selector
where possible (e.g. to diagnostics) instead of going through
an std::string.
This also adds new formatters for objcinstance and objcclass
as described in the dox.
llvm-svn: 59933
|
| |
|
|
| |
llvm-svn: 59923
|
| |
|
|
| |
llvm-svn: 59922
|
| |
|
|
|
|
| |
"previously defined here" diagnostics all notes.
llvm-svn: 59920
|
| |
|
|
|
|
|
| |
"definitions", not declarations. Point out the location of the
original definition.
llvm-svn: 59919
|
| |
|
|
|
|
|
|
| |
diagnostic.
Also, point out where the previous decl was. This unxfails two tests.
llvm-svn: 59918
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
with implicit quotes around them. This has a bunch of follow-on
effects and requires tweaking to a whole lot of code. This causes
a regression in two tests (xfailed) by causing it to emit things like:
Line 10: duplicate interface declaration for category 'MyClass1' ('Category1')
instead of:
Line 10: duplicate interface declaration for category 'MyClass1(Category1)'
I will fix this in a follow-up commit.
As part of this, I had to start switching stuff to use ->getDeclName() instead
of Decl::getName() for consistency. This is good, but I was planning to do this
as an independent patch. There will be several follow-on patches
to clean up some of the mess, but this patch is already too big.
llvm-svn: 59917
|
| |
|
|
|
|
|
| |
without calling getAsString(). This implicitly puts quotes around the
name, so diagnostics need to be tweaked to accommodate this.
llvm-svn: 59916
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 59908
|
| |
|
|
|
|
|
|
|
|
| |
diags over to use this. QualTypes implicitly print single quotes around
them for uniformity and future extension.
Doing this requires a little function pointer dance to prevent libbasic
from depending on libast.
llvm-svn: 59907
|
| |
|
|
| |
llvm-svn: 59884
|
| |
|
|
| |
llvm-svn: 59881
|
| |
|
|
|
|
| |
'implicit' property with no 'setter'.
llvm-svn: 59878
|
| |
|
|
|
|
|
| |
Issuing diagnostics when assigning to read-only properties.
This is work in progress.
llvm-svn: 59874
|
| |
|
|
|
|
| |
in the overload diagnostics.
llvm-svn: 59871
|
| |
|
|
|
|
|
|
|
| |
clang executable (when built with gcc 4.2 on the mac) from 14519740 to
14495028 bytes. This shrinks individual object files as well: SemaChecking
from 23580->22248, SemaDeclObjc from 61368->57376, SemaExpr from
115628->110516, as well as several others.
llvm-svn: 59867
|
| |
|
|
|
|
|
|
|
|
| |
one for building up the diagnostic that is in flight (DiagnosticBuilder)
and one for pulling structured information out of the diagnostic when
formatting and presenting it.
There is no functionality change with this patch.
llvm-svn: 59849
|
| |
|
|
|
|
| |
This version uses VLAs to represent arrays. I'll try an alternative way next, but I want this safe first.
llvm-svn: 59835
|
| |
|
|
| |
llvm-svn: 59831
|
| |
|
|
| |
llvm-svn: 59829
|
| |
|
|
| |
llvm-svn: 59822
|
| |
|
|
|
|
| |
cv-qualifiers
llvm-svn: 59819
|
| |
|
|
| |
llvm-svn: 59805
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
strings. This allows us to have considerable flexibility in how
these things are displayed and provides extra information that
allows us to merge away diagnostics that are very similar.
Diagnostic modifiers are a string of characters with the regex
[-a-z]+ that occur between the % and digit. They may
optionally have an argument that can parameterize them.
For now, I've added two example modifiers. One is a very useful
tool that allows you to factor commonality across diagnostics
that need single words or phrases combined. Basically you can
use %select{a|b|c}4 with with an integer argument that selects
either a/b/c based on an integer value in the range [0..3).
The second modifier is also an integer modifier, aimed to help
English diagnostics handle plurality. "%s3" prints to 's' if
integer argument #3 is not 1, otherwise it prints to nothing.
I'm fully aware that 's' is an English concept and doesn't
apply to all situations (mouse vs mice). However, this is very
useful and we can add other crazy modifiers once we add support
for polish! ;-)
I converted a couple C++ diagnostics over to use this as an
example, I'd appreciate it if others could merge the other
likely candiates. If you have other modifiers that you want,
lets talk on cfe-dev.
llvm-svn: 59803
|
| |
|
|
|
|
| |
and fall through better.
llvm-svn: 59799
|
| |
|
|
| |
llvm-svn: 59791
|