| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
| |
in C++ that involve both integral and enumeration types. Convert all
of the callers to Type::isIntegralType() that are meant to work with
both integral and enumeration types over to
Type::isIntegralOrEnumerationType(), to prepare to eliminate
enumeration types as integral types.
llvm-svn: 106071
|
|
|
|
|
|
| |
to bool" in the sense of C++ [over.ics.rank]p4 bullet 1. I have decreed it.
llvm-svn: 105817
|
|
|
|
|
|
|
| |
ptrdiff_t (long on 64-bit, apparently) is ambiguous between the int and
unsigned int overloads.
llvm-svn: 105816
|
|
|
|
|
|
|
| |
candidates printed. We default to 'all'. At the moment, 'best' prints only
the first 4 overloads, but we'll improve that over time.
llvm-svn: 105815
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
being a subsequence of another standard conversion sequence. Instead
of requiring exact type equality for the second conversion step,
require type *similarity*, which is type equality with cv-qualifiers
removed at all levels. This appears to match the behavior of EDG and
VC++ (albeit not GCC), and feels more intuitive. Big thanks to John
for the line of reasoning that supports this change: since
cv-qualifiers are orthogonal to the second conversion step, we should
ignore them in the type comparison.
llvm-svn: 105678
|
|
|
|
|
|
|
| |
determining whether one overload candidate is better than
another. Fixes PR7319.
llvm-svn: 105642
|
|
|
|
|
|
| |
pointer. Original patch by Troy D. Straszheim; fixes PR7283.
llvm-svn: 105621
|
|
|
|
|
|
| |
derived-to-base conversion on a pointer. Fixes PR7224.
llvm-svn: 104607
|
|
|
|
|
|
| |
conversion. Fixes PR7095.
llvm-svn: 104476
|
|
|
|
|
|
|
| |
UnresolvedMemberExpr in their constructors, rather than adding them
after the fact. No functionality change.
llvm-svn: 104468
|
|
|
|
| |
llvm-svn: 104105
|
|
|
|
|
|
|
| |
gc attributes to be inline with Objective-C
(for radar 7925141).
llvm-svn: 104084
|
|
|
|
|
|
|
|
|
|
| |
involves extending implicit conversion sequences to model vector
conversions and vector splats, along with teaching the C++ conditional
operator-checking code about vector types.
Fixes <rdar://problem/7983501>.
llvm-svn: 104081
|
|
|
|
|
|
|
|
|
| |
consider "super" as a candidate whenever we're parsing an expression
within an Objective-C method in an interface that has a superclass. At
some point, we'd like to give "super" a little edge over non-local
names; that will come later.
llvm-svn: 104022
|
|
|
|
|
|
| |
passed to va_start, it doesn't actually pass it.
llvm-svn: 103899
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list of protocols.
An ObjCObjectPointerType is therefore just a pointer which always points to
one of these types (possibly sugared). ObjCInterfaceType is now just a kind
of ObjCObjectType which happens to not carry any protocols.
Alter a rather large number of use sites to use ObjCObjectType instead of
ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather
than hashing them in a FoldingSet. Remove some number of methods that are no
longer used, at least after this patch.
By simplifying ObjCObjectPointerType, we are now able to easily remove and apply
pointers to Objective-C types, which is crucial for a certain kind of ObjC++
metaprogramming common in WebKit.
llvm-svn: 103870
|
|
|
|
|
|
|
| |
class object used as a receiver to an objective-c
pointer via a converwsion function. wip.
llvm-svn: 103672
|
|
|
|
|
|
| |
unused, since the operation has side effects.
llvm-svn: 103360
|
|
|
|
|
|
| |
it's ASTContext-allocated now
llvm-svn: 103350
|
|
|
|
|
|
| |
templates and conversion function templates.
llvm-svn: 103349
|
|
|
|
|
|
|
|
|
|
|
| |
specific message that includes the template arguments, e.g.,
test/SemaTemplate/overload-candidates.cpp:27:20: note: candidate template
ignored: substitution failure [with T = int *]
typename T::type get_type(const T&); // expected-note{{candidate ...
^
llvm-svn: 103348
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
failed because the explicitly-specified template arguments did not
match its template parameters, e.g.,
test/SemaTemplate/overload-candidates.cpp:18:8: note: candidate
template
ignored: invalid explicitly-specified argument for template
parameter 'I'
void get(const T&);
^
test/SemaTemplate/overload-candidates.cpp:20:8: note: candidate
template
ignored: invalid explicitly-specified argument for 1st template
parameter
void get(const T&);
^
llvm-svn: 103344
|
|
|
|
|
|
| |
this issue.
llvm-svn: 103343
|
|
|
|
|
|
| |
functionality change.
llvm-svn: 103342
|
|
|
|
|
|
|
| |
many/too few arguments, use the same diagnostic we use for arity
mismatches in non-templates (but note that it's a function template).
llvm-svn: 103341
|
|
|
|
|
|
|
|
|
|
|
|
| |
conflicting deduced template argument values, give a more specific
reason along with those values, e.g.,
test/SemaTemplate/overload-candidates.cpp:4:10: note: candidate template
ignored: deduced conflicting types for parameter 'T' ('int' vs. 'long')
const T& min(const T&, const T&);
^
llvm-svn: 103339
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ensure that we complete the type when we need to look at constructors
during reference binding.
When determining whether the two types involved in reference binding
are reference-compatible, reference-related, etc., do not complete the
type of the reference itself because it is not necessary to determine
well-formedness of the program. Complete the type that we are binding
to, since that can affect whether we know about a derived-to-base
conversion.
Re-fixes PR7080.
llvm-svn: 103283
|
|
|
|
| |
llvm-svn: 103259
|
|
|
|
|
|
|
|
|
|
|
|
| |
are reference-compatible, reference-related, etc., do not complete the
type of the reference itself because it is not necessary to determine
well-formedness of the program. Complete the type that we are binding
to, since that can affect whether we know about a derived-to-base
conversion.
Fixes PR7080.
llvm-svn: 103220
|
|
|
|
|
|
| |
Fixes rdar://problem/4232969, or at least the clang parts of it.
llvm-svn: 103191
|
|
|
|
| |
llvm-svn: 103141
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
typedef int functype(int, int);
functype func;
also instantiate the synthesized function parameters for the resulting
function declaration.
With this change, Boost.Wave builds and passes all of its regression
tests.
llvm-svn: 103025
|
|
|
|
|
|
|
|
| |
treat argument types of objective-c pointer types
which only differ in their protocol qualifiers as
the same type (radar 7925668).
llvm-svn: 102955
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
address of an overloaded function (or function template), perform that
resolution prior to determining the implicit conversion
sequence. This resolution is not part of the implicit conversion
sequence itself.
Previously, we would always consider this resolution to be a
function pointer decay, which was a lie: there might be an explicit &
in the expression, in which case decay should not occur. This caused
the CodeGen assertion in PR6973 (where we created a
pointer to a pointer to a function when we should have had a pointer
to a function), but it's likely that there are corner cases of
overload resolution where this would have failed.
Cleaned up the code involved in determining the type that will
produced afer resolving the overloaded function reference, and added
an assertion to make sure the result is correct. Fixes PR6973.
llvm-svn: 102650
|
|
|
|
|
|
|
| |
temporary needs to be bound, bind the copy object. Otherwise, we won't
end up calling the destructor for the copy. Fixes Boost.Optional.
llvm-svn: 102290
|
|
|
|
| |
llvm-svn: 102261
|
|
|
|
| |
llvm-svn: 102259
|
|
|
|
|
|
| |
functionality change yet.
llvm-svn: 102250
|
|
|
|
| |
llvm-svn: 102249
|
|
|
|
| |
llvm-svn: 102218
|
|
|
|
| |
llvm-svn: 101920
|
|
|
|
|
|
|
|
|
| |
different kinds (aka garbage). This happens if we're comparing a standard
conversion sequence to an ambiguous one which have the same KindRank.
Found by valgrind.
llvm-svn: 101717
|
|
|
|
|
|
|
|
|
|
|
| |
resolution ([over.ics.ref]), we take some shortcuts required by the
standard that effectively permit binding of a const volatile reference
to an rvalue. We have to treat lightly here to avoid infinite
recursion.
Fixes PR6177.
llvm-svn: 101712
|
|
|
|
|
|
| |
in C++03.
llvm-svn: 101707
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
resolution. There are two sources of problems involving user-defined
conversions that this change eliminates, along with providing simpler
interfaces for checking implicit conversions:
- It eliminates a case of infinite recursion found in Boost.
- It eliminates the search for the constructor needed to copy a temporary
generated by an implicit conversion from overload
resolution. Overload resolution assumes that, if it gets a value
of the parameter's class type (or a derived class thereof), there
is a way to copy if... even if there isn't. We now model this
properly.
llvm-svn: 101680
|
|
|
|
|
|
|
|
| |
users of getNameAsString on a stream.
The next step is to print the name directly into the stream, avoiding a temporary std::string copy.
llvm-svn: 101632
|
|
|
|
|
|
| |
Sema::TryImplicitConversion is, for my own sanity. No functionality change
llvm-svn: 101554
|
|
|
|
| |
llvm-svn: 101502
|
|
|
|
| |
llvm-svn: 101498
|
|
|
|
|
|
| |
SemaOverload.cpp; no functionality change.
llvm-svn: 101497
|