aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2009-09-01Don't assume that a base is always a RecordType, it can also be a ↵Anders Carlsson
TemplateSpecializationType. Also, make sure to get the instantiated union member. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80662 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-01Add pretty stack traces when instantiating functions and static data members.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80661 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-01Handle member initializers that point to fields in anonymous structs.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80659 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-01Don't assert when instantiating member references to fields in anonymous ↵Anders Carlsson
structs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80657 91177308-0d34-0410-b5e6-96231b3b80d8
2009-09-01Preliminary AST representation and semantic analysis forDouglas Gregor
explicitly-specified template argument lists in member reference expressions, e.g., x->f<int>() git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80646 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31Eliminate CXXAdornedMemberExpr entirely. Instead, optionally allocateDouglas Gregor
space within the MemberExpr for the nested-name-specifier and its source range. We'll do the same thing with explicitly-specified template arguments, assuming I don't flip-flop again. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80642 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31Fix bug 4784 and allow friend declarations to properly extendJohn McCall
existing declaration chains. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80636 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31Rename CXXQualifiedMemberExpr -> CXXAdornedMemberExpr, since we willDouglas Gregor
also be adding explicit template arguments as an additional "adornment". No functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80628 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31Add parsing for references to member function templates with explicitDouglas Gregor
template argument lists, e.g., x.f<int>(). Semantic analysis will be a separate commit. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80624 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31PR4836, part 1: add Sema support for __builtin_isnan and friends; they Eli Friedman
are apparently used by Solaris libc despite the fact that clang claims to be compatible with gcc 4.2, which doesn't support them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80610 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31Implement template instantiation for member operator access.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80609 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-31Support explicit C++ member operator syntax, from James Porter!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80608 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-30More missing member goodness.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80491 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-30Improve missing error messages as suggested by Doug.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80489 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-30Use DiagnoseMissingMember for UsingDecls.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80470 91177308-0d34-0410-b5e6-96231b3b80d8
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-30Unbreak tests. I'll look into why this is necessary later.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80468 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Fix the start source location for type-specs like long, short, etc.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80448 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Make instantiating initializers for classes with a dependent base type Eli Friedman
work correctly. The change in lib/AST/DeclCXX.cpp is mostly a large reindentation; I couldn't figure out a good way to avoid it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80446 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-29Improve instantiation of UnresolvedUsingDecls.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80434 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Patch for code gen. for c-style cast which ends inFariborz Jahanian
using class's conversion functions [12.3.2-p2] git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80433 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Fix the breakage by handling indirect instantiations. This would be muchJohn McCall
improved if there were a consistent name for getInstantiatedFromMemberX() across all classes. Cheap refactor if someone wants to do it, but let's get the buildbots happy first. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80425 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-29For consistency, just make friend declarations AS_public.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80420 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Ensure code generation for friend declarations in class templates.John McCall
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80418 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Store the SourceLocation of right parentheses in member initializers. Patch ↵Anders Carlsson
by Anders Johnsen! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80416 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29CreateDeclRefExprs that point to UnresolvedUsingDecls.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80413 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-29Add another check for UnresolvedUsingDecl.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80412 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Make sure we actually found a redeclaration before complaining about ↵Douglas Gregor
attributes added to a redeclaration in C++ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80403 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Remove #if 0'd code that is clearly not neededDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80399 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28path to ir-gen 12.3.1 Conversion by constructorFariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80398 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Don't crash when instantiating templates containing anonymous structs/unionsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80397 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Test instantiation of static data members that live within nestedDouglas Gregor
member templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80396 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Fix and test template instantiation for nested member templates.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80394 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Tighten up the conversion from a single-level template argument listDouglas Gregor
to a multi-level template argument list by making it explicit. The forced auditing of callers found a bug in the instantiation of member classes inside member templates. I *love* static type systems. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80391 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Remove the conversion from a multi-level template argument list back to a ↵Douglas Gregor
single template argument list. We no longer need this crutch git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80390 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-28Check for UnresolvedUsingDecl when determining if a declaration is a ↵Anders Carlsson
redeclaration or not. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80383 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28patch to prevent crash in hopelessly incorrectFariborz Jahanian
method definition with labels. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80381 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-28Fix this for real.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80377 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28Allow explicit ctors for casts.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80374 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28When doing overload resolution, expressions that are value dependent but not ↵Anders Carlsson
type dependent and of integral type should not be treated as null pointer constants. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80369 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-28Instantiate unresolved using declarations.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80366 91177308-0d34-0410-b5e6-96231b3b80d8
2009-08-28ir-gen related patch for type conversionFariborz Jahanian
with class type conversion methods. WIP. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80365 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-28Create UnresolvedUsingDecls.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@80346 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