Skip to content
  1. Sep 28, 2012
  2. Sep 13, 2012
  3. Mar 12, 2012
    • Richard Smith's avatar
      Fix parsing of type-specifier-seq's. Types are syntactically allowed to be · c5b05520
      Richard Smith authored
      defined here, but not semantically, so
      
        new struct S {};
      
      is always ill-formed, even if there is a struct S in scope.
      
      We also had a couple of bugs in ParseOptionalTypeSpecifier caused by it being
      under-loved (due to it only being used in a few places) so merge it into
      ParseDeclarationSpecifiers with a new DeclSpecContext. To avoid regressing, this
      required improving ParseDeclarationSpecifiers' diagnostics in some cases. This
      also required teaching ParseSpecifierQualifierList about constexpr... which
      incidentally fixes an issue where we'd allow the constexpr specifier in other
      bad places.
      
      llvm-svn: 152549
      c5b05520
  4. May 22, 2011
  5. Apr 27, 2011
  6. Apr 24, 2011
    • Sebastian Redl's avatar
      Make the invalid declarator recovery when parsing members work the same as... · 83f3b859
      Sebastian Redl authored
      Make the invalid declarator recovery when parsing members work the same as when parsing global decls. It's still rather broken (skipping much too far when the declarator belongs to a function definition), but at least not so broken as to mismatch braces. Tested by the removal of the fixme in the template test case.
      
      llvm-svn: 130101
      83f3b859
  7. Mar 02, 2011
    • Douglas Gregor's avatar
      Push nested-name-specifier source-location information into dependent · e7c20653
      Douglas Gregor authored
      template specialization types. This also required some parser tweaks,
      since we were losing track of the nested-name-specifier's source
      location information in several places in the parser. Other notable
      changes this required:
      
        - Sema::ActOnTagTemplateIdType now type-checks and forms the
          appropriate type nodes (+ source-location information) for an
          elaborated-type-specifier ending in a template-id. Previously, we
          used a combination of ActOnTemplateIdType and
          ActOnTagTemplateIdType that resulted in an ElaboratedType wrapped
          around a DependentTemplateSpecializationType, which duplicated the
          keyword ("class", "struct", etc.) and nested-name-specifier
          storage.
      
        - Sema::ActOnTemplateIdType now gets a nested-name-specifier, which
          it places into the returned type-source location information.
      
        - Sema::ActOnDependentTag now creates types with source-location
          information.
      
      llvm-svn: 126808
      e7c20653
  8. Jul 30, 2010
  9. Jul 15, 2010
    • Douglas Gregor's avatar
      When there are extra or missing template parameter lists in a template · 5f0e252f
      Douglas Gregor authored
      definition, we're likely going to end up breaking the invariants of
      the template system, e.g., that the depths of template parameter lists
      match up with the nesting template of the template. So, make sure we
      mark such ill-formed declarations as invalid or don't even build them
      at all.
      
      llvm-svn: 108372
      5f0e252f
Loading