aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/Sema.h
AgeCommit message (Collapse)Author
2009-08-30Improve diagnostics for missing members. This renames the ↵Anders Carlsson
err_typecheck_no_member to err_typecheck_no_member_deprecated. The idea is that err_typecheck_no_member_deprecated should be phased out and any call sites that reference it should call DiagnoseMissingMember instead. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80469 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Set the access specifier for using decls.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80435 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Instantiate member and base initializers. Patch by Anders Johnsen! (tweaked ↵Anders Carlsson
slightly by me) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80422 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Implement template instantiation for member class templates.Douglas Gregor
When performing template instantiation of the definitions of member templates (or members thereof), we build a data structure containing the template arguments from each "level" of template instantiation. During template instantiation, we substitute all levels of template arguments simultaneously. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80389 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Collect multiple levels of template arguments into a new type,Douglas Gregor
MultiLevelTemplateArgumentList. This is a baby step toward instantiating member templates; no intended functionality change yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80380 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Pass InOverloadResolution all the way down to IsPointerConversion.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80368 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Omnibus friend decl refactoring. Instead of cloning AST classes for friendJohn McCall
declarations of same, introduce a single AST class and add appropriate bits (encoded in the namespace) for whether a decl is "real" or not. Much hackery about previously-declared / not-previously-declared, but it's essentially mandated by the standard that friends alter lookup, and this is at least fairly non-intrusive. Refactor the Sema methods specific to friends for cleaner flow and less nesting. Incidentally solve a few bugs, but I remain confident that we can put them back. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80353 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Factor declaration building out to Sema::BuildUsingDeclaration.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80337 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Add an InOverloadResolution flag to TryCopyInitialization.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80261 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Remove more default arguments.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80260 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Remove default arguments from TryImplicitConversion and fix a bug found in ↵Anders Carlsson
the process. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80258 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Remove default argument from TryCopyInitialization.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80256 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Revert the flags change for now, I have a better idea for this.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80255 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Add a OverloadResolutionFlags and start converting some of the overload ↵Anders Carlsson
methods over to using it instead of bools arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80248 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27Add a BuildCXXTemporaryObjectExpr and use it so default arguments will be ↵Anders Carlsson
instantiated correctly for temporary object expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80206 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-27New RequireNonAbstractType function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80183 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26Bye-bye old RequireCompleteType.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80182 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26Remove another unused argument.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80175 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26Remove the PrintType argument from RequireCompleteType.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80174 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26Add a RequireCompleteType variant that takes a PartialDiagnostic. The old ↵Anders Carlsson
RequireCompleteType now creates a PartialDiagnostic and calls the new function. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80165 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26update to CXXFunctionalCastExpr to support ir-gen forFariborz Jahanian
type convesions of class objects [class.conv]. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80127 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26When we know that we are parsing a class-name, implicitly construct aDouglas Gregor
TypenameType if getTypeName is looking at a member of an unknown specialization. This allows us to properly parse class templates that derived from type that could only otherwise be described by a typename type, e.g., template<class T> struct X {}; template<typename T> struct Y : public X<T>::X { }; Fixes PR4381. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80123 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26Add Sema::BuildMemberReferenceExpr and have Sema::ActOnMemberReferenceExpr ↵Anders Carlsson
call it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80122 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-26Address some of Doug's comments.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80114 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25Parsing of pseudo-destructors.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80055 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25Improve support for out-of-line definitions of nested templates andDouglas Gregor
their members, including member class template, member function templates, and member classes and functions of member templates. To actually parse the nested-name-specifiers that qualify the name of an out-of-line definition of a member template, e.g., template<typename X> template<typename Y> X Outer<X>::Inner1<Y>::foo(Y) { return X(); } we need to look for the template names (e.g., "Inner1") as a member of the current instantiation (Outer<X>), even before we have entered the scope of the current instantiation. Since we can't do this in general (i.e., we should not be looking into all dependent nested-name-specifiers as if they were the current instantiation), we rely on the parser to tell us when it is parsing a declaration specifier sequence, and, therefore, when we should consider the current scope specifier to be a current instantiation. Printing of complicated, dependent nested-name-specifiers may be somewhat broken by this commit; I'll add tests for this issue and fix the problem (if it still exists) in a subsequent commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80044 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25Clarify the difference between substitution and instantiation by renamingJohn McCall
functions that don't instantiate definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80037 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25Implement out-of-line definitions of nested class templates. Most ofDouglas Gregor
the logic is there for out-of-line definitions with multiple levels of nested templates, but this is still a work-in-progress: we're having trouble determining when we should look into a dependent nested-name-specifier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80003 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25InitializeVarWithConstructor now returns true on failure.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79976 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25BuildCXXConstructExpr now returns an OwningExprResult.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79975 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25Factor building of CXXDefaultArgExpr expressions out into a separate function.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79974 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-25Factor setting default arguments out into SetParamDefaultArgument.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79970 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-24Try to complete a type before looking for conversion functions withinDouglas Gregor
that type. Note that we do not produce a diagnostic if the type is incomplete; rather, we just don't look for conversion functions. Fixes PR4660. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79919 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-22Add CK_NullToMemberPointer and CK_BaseToDerivedMemberPointer cast kinds. ↵Anders Carlsson
Make -ast-dump print out the cast kinds of cast expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79787 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-22Don't issue warning on multiple selector found when Fariborz Jahanian
selector name is for a @selector expression. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79776 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-21Implement conversion function templates, along with the ability to useDouglas Gregor
template argument deduction from a conversion function (C++ [temp.deduct.conv]) with implicit conversions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79693 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-21Implement support for calling member function templates, which involves:Douglas Gregor
- Allowing one to name a member function template within a class template and on the right-hand side of a member access expression. - Template argument deduction for calls to member function templates. - Registering specializations of member function templates (and finding them later). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79581 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-20Initial support for parsing and representation of member function templates.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79570 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-20Refactor the instantiation of statements into a generic treeDouglas Gregor
transformation. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79519 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-20Basic nested-template implementation.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79504 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-19Make integer promotions work correctly on PIC16 and other platforms Eli Friedman
where sizeof(short) == sizeof(int). Move UsualArithmeticConversionsType out of Sema, since it was only there as a historical artifact. Patch by Enea Zaffanella. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79412 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-19Use Sema's LocInfoType to pass and preserve type source info through the Parser.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79395 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-19Introduce LocInfoType which is a Sema-specific implementation detail.Argyrios Kyrtzidis
This is a Type subclass that can hold a DeclaratorInfo* when we have type source info coming out of a declarator that we want to preserve. This is used only at the "border" of Parser/Sema for passing/getting QualTypes, it does not participate in the type system semantics in any way. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79394 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-19Create and instantiate a DeclaratorInfo using a newly introduced ↵Argyrios Kyrtzidis
Sema::GetDeclaratorInfoForDeclarator(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79393 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-19Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema ↵Argyrios Kyrtzidis
interfaces. DeclaratorDecl contains a DeclaratorInfo* to keep type source info. Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl. EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo. Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79392 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-18Change ActOnReturnStmt to not take a FullExprArg. Instead, Sema will wrap ↵Anders Carlsson
the return expr inside a CXXExprWithTemporaries if needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79342 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16AddInitializerToDecl can't take a FullExprArg. Make it take an ExprArg, and ↵Anders Carlsson
create the CXXExprWithTemporaries before setting the initializer on the VarDecl. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-16Move builtin call checking out into a separate function, make ↵Anders Carlsson
CheckFunctionCall and CheckBlockCall return bool instead. No intended functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-15BuildCXXConstructExpr doesn't need to take an ASTContext.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79149 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-15Add an explicit constructor to ActiveTemplateInstantiation which Eli Friedman
initializes all the members; this fixes a valgrind error in the regression tests. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@79148 91177308-0d34-0410-b5e6-96231b3b80d8