| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
constructor name. Fixes PR5418.
llvm-svn: 86441
|
|
|
|
|
|
|
|
| |
instead of all assignment operators. The mistake messes up IRGen because
it ends up assuming that the assignment operator is actually the implicit
copy assignment operator, and therefore tries to emit the RHS as an lvalue.
llvm-svn: 86307
|
|
|
|
|
|
|
| |
It has to do with vararg constructors used as conversion
functions. Code gen needs work. This is WIP.
llvm-svn: 86207
|
|
|
|
|
|
|
|
|
|
|
|
| |
(without complaining if it fails) to get proper semantics: reference
binding with a derived-to-base conversion and the enumeration of
constructors for user-defined conversions. There are probably more
cases to fix, but my prior attempt at statically ensuring that
complete-type checking always happens failed. Perhaps I'll try again.
With this change, Clang can parse include/llvm/*.h!
llvm-svn: 86129
|
|
|
|
| |
llvm-svn: 86065
|
|
|
|
| |
llvm-svn: 86061
|
|
|
|
|
|
|
|
| |
types. Fixes PR5352.
Fariborz, please review.
llvm-svn: 86031
|
|
|
|
| |
llvm-svn: 86027
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
representation of a C++ unqualified-id, along with a single parsing
function (Parser::ParseUnqualifiedId) that will parse all of the
various forms of unqualified-id in C++.
Replace the representation of the declarator name in Declarator with
the new UnqualifiedId class, simplifying declarator-id parsing
considerably and providing more source-location information to
Sema. In the future, I hope to migrate all of the other
unqualified-id-parsing code over to this single representation, then
begin to merge actions that are currently only different because we
didn't have a unqualified notion of the name in the parser.
llvm-svn: 85851
|
|
|
|
|
|
| |
initialized implicitly in constructors so that default arguments etc are set correctly. Fixes PR5283.
llvm-svn: 85510
|
|
|
|
|
|
| |
constructor. WIP.
llvm-svn: 85420
|
|
|
|
|
|
|
| |
which should come from the variable and wasn't correct for arrays in any case.
No change in functionality.
llvm-svn: 85415
|
|
|
|
| |
llvm-svn: 85067
|
|
|
|
|
|
|
|
|
| |
of ConvertDeclSpecToType, which I'd like to keep private to SemaType.cpp.
We do this by cons'ing up a trivial Declarator for the type.
John, please review.
llvm-svn: 85060
|
|
|
|
|
|
| |
refers to a RecordType. Add assertions or conditions as appropriate. This fixes another crash in the Apache stdlib vector.
llvm-svn: 85055
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the DeclaratorInfo, one for semantic analysis), just build a single type whose
canonical type will reflect the semantic analysis (assuming the type is
well-formed, of course).
To make that work, make a few changes to the type system:
* allow the nominal pointee type of a reference type to be a (possibly sugared)
reference type. Also, preserve the original spelling of the reference type.
Both of these can be ignored on canonical reference types.
* Remove ObjCProtocolListType and preserve the associated source information on
the various ObjC TypeLocs. Preserve the spelling of protocol lists except in
the canonical form.
* Preserve some level of source type structure on parameter types, but
canonicalize on the canonical function type. This is still a WIP.
Drops code size, makes strides towards accurate source location representation,
slight (~1.7%) progression on Cocoa.h because of complexity drop.
llvm-svn: 84907
|
|
|
|
| |
llvm-svn: 84793
|
|
|
|
|
|
| |
Substitute TemplateIdRefExprs with DeclRefExprs. Doug, plz review :)
llvm-svn: 84763
|
|
|
|
|
|
| |
function. Fixes PR5222.
llvm-svn: 84428
|
|
|
|
| |
llvm-svn: 84129
|
|
|
|
|
|
| |
Removes a FIXME.
llvm-svn: 84068
|
|
|
|
| |
llvm-svn: 84058
|
|
|
|
|
|
|
|
|
|
| |
what we found when we looked into <blah>", where <blah> is a
DeclContext*. We can now format DeclContext*'s in nice ways, e.g.,
"namespace N", "the global namespace", "'class Foo'".
This is part of PR3990, but we're not quite there yet.
llvm-svn: 84028
|
|
|
|
|
|
| |
specialization. This completes C++ [temp.expl.spec]!
llvm-svn: 83980
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
function templates.
This commit ensures that friend function templates are constructed as
FunctionTemplateDecls rather than partial FunctionDecls (as they
previously were). It then implements template instantiation for friend
function templates, injecting the friend function template only when
no previous declaration exists at the time of instantiation.
Oh, and make sure that explicit specialization declarations are not
friends.
llvm-svn: 83970
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
because of missing default constructor of a member.
Fixes pr5154.
llvm-svn: 83583
|
|
|
|
|
|
|
|
| |
enums.
Don't create a new declaration for friend classes if a declaration already exists.
llvm-svn: 83505
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
apparently because using directives aren't quite working correctly.
llvm-svn: 83184
|
|
|
|
|
|
| |
a bad initializer. Fixes pr4274.
llvm-svn: 83169
|
|
|
|
|
|
|
|
|
| |
concrete types. Use unqualified desugaring for getAs<> and sundry.
Fix a few users to either not desugar or use qualified desugar, as seemed
appropriate. Removed Type's qualified desugar method, as it was easy
to accidentally use instead of QualType's.
llvm-svn: 83116
|
|
|
|
|
|
| |
protocol references.
llvm-svn: 83094
|
|
|
|
| |
llvm-svn: 83022
|
|
|
|
| |
llvm-svn: 82950
|
|
|
|
|
|
|
|
|
| |
class templates. We now treat friend class templates much more like
normal class templates, except that they still get special name lookup
rules. Fixes PR5057 and eliminates a bunch of spurious diagnostics in
<iostream>.
llvm-svn: 82848
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
in a reference initialization diagnostic.
llvm-svn: 82671
|
|
|
|
|
|
| |
a reference
llvm-svn: 82666
|
|
|
|
|
|
| |
initializing a reference class.
llvm-svn: 82664
|
|
|
|
| |
llvm-svn: 82650
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
complain about specializations of member functions that are not
definitions. Fixes PR4995.
llvm-svn: 82159
|
|
|
|
|
|
| |
same.
llvm-svn: 82088
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 81917
|
|
|
|
|
|
| |
standard conversion sequence. This lets us remove a workaround in SemaCompleteConstructorCall.
llvm-svn: 81847
|