| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 84048
|
| |
|
|
| |
llvm-svn: 84043
|
| |
|
|
|
|
|
| |
Along the way, use RequireCompleteType when testing exception spec types.
Separate all the ugly spec stuff into its own file.
llvm-svn: 83764
|
| |
|
|
|
|
|
|
|
| |
assignment and initialization.
The exception specification of the assignee must be the same or a subset of the target. In addition, exception specifications on arguments and return types must be equivalent, but this is not implemented yet.
This currently produces two diagnostics for every invalid assignment/initialization, due to the diagnostic produced outside PerformImplicitConversion, e.g. in CheckSingleInitializer. I don't know how to suppress this; in any case I think it is the wrong place for a diagnostic, since there are other diagnostics produced inside the function. So I'm leaving it as it is for the moment.
llvm-svn: 83710
|
| |
|
|
|
|
|
|
|
| |
users to
pass a LookupResult reference to lookup routines. Call out uses which assume a single
result.
llvm-svn: 83674
|
| |
|
|
|
|
|
|
|
| |
for bases, members, overridden virtual methods, etc. The operations
isDerivedFrom and lookupInBases are now provided by CXXRecordDecl,
rather than by Sema, so that CodeGen and other clients can use them
directly.
llvm-svn: 83396
|
| |
|
|
| |
llvm-svn: 83153
|
| |
|
|
|
|
| |
unbounded chains of operator-> delegations.
llvm-svn: 83134
|
| |
|
|
|
|
| |
to strike fear into the hearts of CPUs everywhere.
llvm-svn: 83133
|
| |
|
|
|
|
| |
infinit recursion. This patch fixes it. [13.3.1.2]-p2
llvm-svn: 83124
|
| |
|
|
| |
llvm-svn: 83119
|
| |
|
|
|
|
| |
previous fix eliminated this behavior, so bring it back again.
llvm-svn: 83113
|
| |
|
|
|
|
|
|
|
|
|
| |
"usual deallocation function" with two arguments. CodeGen will have to
handle this case specifically, since the value for the second argument
(the size of the allocated object) may have to be computed at run
time.
Fixes the Sema part of PR4782.
llvm-svn: 83080
|
| |
|
|
|
|
| |
function.
llvm-svn: 83027
|
| |
|
|
|
|
| |
per Doug's comment.
llvm-svn: 82791
|
| |
|
|
|
|
| |
Fixed pr5050.
llvm-svn: 82783
|
| |
|
|
|
|
|
|
|
|
|
|
| |
value-dependent. Audit (and fixed) all calls to
Expr::isNullPointerConstant() to provide the correct behavior with
value-dependent expressions. Fixes PR5041 and a crash in libstdc++
<locale>.
In the same vein, properly compute value- and type-dependence for
ChooseExpr. Fixes PR4996.
llvm-svn: 82748
|
| |
|
|
|
|
|
|
| |
Type hierarchy. Demote 'volatile' to extended-qualifier status. Audit our
use of qualifiers and fix a few places that weren't dealing with qualifiers
quite right; many more remain.
llvm-svn: 82705
|
| |
|
|
|
|
| |
a reference
llvm-svn: 82666
|
| |
|
|
|
|
|
|
|
| |
It uses a recent API to find inherited conversion functions to do
the initializer to reference lvalue conversion (and removes a FIXME).
It issues the ambiguity diagnostics when multiple conversions are found.
WIP.
llvm-svn: 82649
|
| |
|
|
| |
llvm-svn: 82594
|
| |
|
|
|
|
|
|
|
|
|
| |
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely. Several more 'leaf'
optimizations were introduced.
The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.
llvm-svn: 82501
|
| |
|
|
|
|
|
|
|
|
|
|
| |
give them the appropriate exception specifications. This,
unfortunately, requires us to maintain and/or implicitly generate
handles to namespace "std" and the class "std::bad_alloc". However,
every other approach I've come up with was more hackish, and this
standard requirement itself is quite the hack.
Fixes PR4829.
llvm-svn: 81939
|
| |
|
|
|
|
|
|
| |
to pointer function for delete expression. 2)
Treat type conversion function and its 'const' version
as identical in building the visible conversion list.
llvm-svn: 81930
|
| |
|
|
|
|
|
| |
function for delete of a class expression and issue
good diagnostic when result is ambiguous.
llvm-svn: 81870
|
| |
|
|
|
|
| |
object to that base class.
llvm-svn: 81852
|
| |
|
|
|
|
| |
standard conversion sequence. This lets us remove a workaround in SemaCompleteConstructorCall.
llvm-svn: 81847
|
| |
|
|
| |
llvm-svn: 81844
|
| |
|
|
| |
llvm-svn: 81842
|
| |
|
|
| |
llvm-svn: 81841
|
| |
|
|
| |
llvm-svn: 81743
|
| |
|
|
|
|
| |
conversion functions.
llvm-svn: 81618
|
| |
|
|
| |
llvm-svn: 81608
|
| |
|
|
|
|
| |
first use in calling the conversion function on delete statements.
llvm-svn: 81576
|
| |
|
|
|
|
|
| |
Also, treat the GNU __null as an integral constant expression to match
GCC's behavior.
llvm-svn: 81490
|
| |
|
|
|
|
|
| |
has a single conversion to pointer-to-object type, implicitly convert
to that pointer-to-object type (C++ [expr.delete]p1).
llvm-svn: 81401
|
| |
|
|
|
|
|
|
| |
such initializations properly convert constructor arguments and fill
in default arguments where necessary. This also makes the ownership
model more clear.
llvm-svn: 81394
|
| |
|
|
|
|
| |
be called, generate implicit child expressions that call them.
llvm-svn: 81383
|
| |
|
|
| |
llvm-svn: 81346
|
| |
|
|
| |
llvm-svn: 81160
|
| |
|
|
| |
llvm-svn: 81068
|
| |
|
|
|
|
|
| |
formed without a trailing '(', diagnose the error (these expressions
must be immediately called), emit a fix-it hint, and fix the code.
llvm-svn: 81015
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
expressions, e.g.,
p->~T()
when p is a pointer to a scalar type.
We don't currently diagnose errors when pseudo-destructor expressions
are used in any way other than by forming a call.
llvm-svn: 81009
|
| |
|
|
|
|
| |
base and data members when they are needed.
llvm-svn: 80967
|
| |
|
|
|
|
|
|
|
| |
involve qualified names, e.g., x->Base::f. We now maintain enough
information in the AST to compare the results of the name lookup of
"Base" in the scope of the postfix-expression (determined at template
definition time) and in the type of the object expression.
llvm-svn: 80953
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
x->Base::f
We no longer try to "enter" the context of the type that "x" points
to. Instead, we drag that object type through the parser and pass it
into the Sema routines that need to know how to perform lookup within
member access expressions.
We now implement most of the crazy name lookup rules in C++
[basic.lookup.classref] for non-templated code, including performing
lookup both in the context of the type referred to by the member
access and in the scope of the member access itself and then detecting
ambiguities when the two lookups collide (p1 and p4; p3 and p7 are
still TODO). This change also corrects our handling of name lookup
within template arguments of template-ids inside the
nested-name-specifier (p6; we used to look into the scope of the
object expression for them) and fixes PR4703.
I have disabled some tests that involve member access expressions
where the object expression has dependent type, because we don't yet
have the ability to describe dependent nested-name-specifiers starting
with an identifier.
llvm-svn: 80843
|
| |
|
|
| |
llvm-svn: 80719
|
| |
|
|
|
|
|
|
|
| |
explicitly-specified template argument lists in member reference
expressions, e.g.,
x->f<int>()
llvm-svn: 80646
|
| |
|
|
|
|
|
|
| |
template argument lists, e.g., x.f<int>().
Semantic analysis will be a separate commit.
llvm-svn: 80624
|
| |
|
|
| |
llvm-svn: 80608
|