Skip to content
  1. Mar 23, 2009
  2. Mar 22, 2009
  3. Mar 21, 2009
  4. Mar 20, 2009
  5. Mar 19, 2009
    • Douglas Gregor's avatar
      Variables marked as "extern" can actually have internal linkage if · 3731162a
      Douglas Gregor authored
      there is a previous declaration marked "static". This fixes PR3645.
      
      llvm-svn: 67336
      3731162a
    • Douglas Gregor's avatar
      Add a clarifying comment about HasPrototype's computation · 2797d329
      Douglas Gregor authored
      llvm-svn: 67316
      2797d329
    • Fariborz Jahanian's avatar
      When looking for property name (or getter method) in a · d302bbd0
      Fariborz Jahanian authored
      dot-syntax expression after earching the list of protocols
      in the qualified-id, must keep searching the protocol list
      of each of the protocols in the list.
      
      llvm-svn: 67314
      d302bbd0
    • Douglas Gregor's avatar
      If a function is declared as, e.g., · 3729f240
      Douglas Gregor authored
        F f;
      
      where F is a typedef of a function type, then the function "f" has a
      prototype. This is a slight tweak to Chris's suggested fix in
      PR3817. Fixes PR3817 and PR3840.
      
      llvm-svn: 67313
      3729f240
    • Douglas Gregor's avatar
      Introduce a new expression type, UnresolvedDeclRefExpr, that describes · 90a1a651
      Douglas Gregor authored
      dependent qualified-ids such as
      
        Fibonacci<N - 1>::value
      
      where N is a template parameter. These references are "unresolved"
      because the name is dependent and, therefore, cannot be resolved to a
      declaration node (as we would do for a DeclRefExpr or
      QualifiedDeclRefExpr). UnresolvedDeclRefExprs instantiate to
      DeclRefExprs, QualifiedDeclRefExprs, etc.
      
      Also, be a bit more careful about keeping only a single set of
      specializations for a class template, and instantiating from the
      definition of that template rather than a previous declaration. In
      general, we need a better solution for this for all TagDecls, because
      it's too easy to accidentally look at a declaration that isn't the
      definition.
      
      We can now process a simple Fibonacci computation described as a
      template metaprogram.
      
      llvm-svn: 67308
      90a1a651
    • Douglas Gregor's avatar
      Generalize printing of nested-name-specifier sequences for use in both · 18353910
      Douglas Gregor authored
      QualifiedNameType and QualifiedDeclRefExpr. We now keep track of the
      exact nested-name-specifier spelling for a QualifiedDeclRefExpr, and
      use that spelling when printing ASTs. This fixes PR3493.
      
      llvm-svn: 67283
      18353910
    • Douglas Gregor's avatar
      Extend the use of QualifiedNameType to the creation of class template · e177b725
      Douglas Gregor authored
      specialization names. This way, we keep track of sugared types like
      
        std::vector<Real>
      
      I believe we are now using QualifiedNameTypes everywhere we can. Next
      step: QualifiedDeclRefExprs.
      
      llvm-svn: 67268
      e177b725
    • Douglas Gregor's avatar
      Introduce a representation for types that we referred to via a · 5253768a
      Douglas Gregor authored
      qualified name, e.g., 
      
        foo::x
      
      so that we retain the nested-name-specifier as written in the source
      code and can reproduce that qualified name when printing the types
      back (e.g., in diagnostics). This is PR3493, which won't be complete
      until finished the other tasks mentioned near the end of this commit.
      
      The parser's representation of nested-name-specifiers, CXXScopeSpec,
      is now a bit fatter, because it needs to contain the scopes that
      precede each '::' and keep track of whether the global scoping
      operator '::' was at the beginning. For example, we need to keep track
      of the leading '::', 'foo', and 'bar' in
       
        ::foo::bar::x
      
      The Action's CXXScopeTy * is no longer a DeclContext *. It's now the
      opaque version of the new NestedNameSpecifier, which contains a single
      component of a nested-name-specifier (either a DeclContext * or a Type
      *, bitmangled). 
      
      The new sugar type QualifiedNameType composes a sequence of
      NestedNameSpecifiers with a representation of the type we're actually
      referring to. At present, we only build QualifiedNameType nodes within
      Sema::getTypeName. This will be extended to other type-constructing
      actions (e.g., ActOnClassTemplateId).
      
      Also on the way: QualifiedDeclRefExprs will also store a sequence of
      NestedNameSpecifiers, so that we can print out the property
      nested-name-specifier. I expect to also use this for handling
      dependent names like Fibonacci<I - 1>::value.
      
      llvm-svn: 67265
      5253768a
    • Gabor Greif's avatar
      Use the instantiated expressions to build the ConditionalOperator. This... · 5e09283e
      Gabor Greif authored
      Use the instantiated expressions to build the ConditionalOperator. This addresses the second part of review feedback.
      
      llvm-svn: 67259
      5e09283e
  6. Mar 18, 2009
Loading