Changes in / [c84dd61:2de175ce]


Ignore:
Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    rc84dd61 r2de175ce  
    26942694                        $$ = DeclarationNode::newEnum( nullptr, $7, true, true, $3 )->addQualifiers( $5 );
    26952695                }
     2696        | ENUM '(' ')' attribute_list_opt '{' enumerator_list comma_opt '}'
     2697                {
     2698                        $$ = DeclarationNode::newEnum( nullptr, $6, true, true )->addQualifiers( $4 );
     2699                }
    26962700        | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt identifier attribute_list_opt
    26972701                {
     
    27052709                        $$ = DeclarationNode::newEnum( $6, $11, true, true, $3, $9 )->addQualifiers( $5 )->addQualifiers( $7 );
    27062710                }
     2711        | ENUM '(' ')' attribute_list_opt identifier attribute_list_opt
     2712          hide_opt '{' enumerator_list comma_opt '}'
     2713                {
     2714                        $$ = DeclarationNode::newEnum( $5, $9, true, true, nullptr, $7 )->addQualifiers( $4 )->addQualifiers( $6 );
     2715                }
    27072716        | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt typedef_name attribute_list_opt
    27082717          hide_opt '{' enumerator_list comma_opt '}'
    27092718                {
    27102719                        $$ = DeclarationNode::newEnum( $6->name, $10, true, true, $3, $8 )->addQualifiers( $5 )->addQualifiers( $7 );
     2720                }
     2721        | ENUM '(' ')' attribute_list_opt typedef_name attribute_list_opt
     2722          hide_opt '{' enumerator_list comma_opt '}'
     2723                {
     2724                        $$ = DeclarationNode::newEnum( $5->name, $9, true, true, nullptr, $7 )->addQualifiers( $4 )->addQualifiers( $6 );
    27112725                }
    27122726        | enum_type_nobody
     
    28212835
    28222836cfa_abstract_parameter_declaration:                                             // CFA, new & old style parameter declaration
    2823         // empty
    2824                 { $$ = nullptr; }
    2825         | abstract_parameter_declaration
     2837        abstract_parameter_declaration
    28262838        | cfa_identifier_parameter_declarator_no_tuple
    28272839        | cfa_abstract_tuple
     
    38483860                // { SemanticError( yylloc, "New array dimension is currently unimplemented." ); $$ = nullptr; }
    38493861        | '[' push array_type_list pop ']'                                      // CFA
    3850                 { $$ = DeclarationNode::newArray( $3, nullptr, false ); }
     3862                { SemanticError( yylloc, "Type array dimension is currently unimplemented." ); $$ = nullptr; }
    38513863        | multi_array_dimension
    38523864        ;
  • src/Validate/GenericParameter.cpp

    rc84dd61 r2de175ce  
    277277const ast::Expr * TranslateDimensionCore::postvisit(
    278278                const ast::TypeExpr * expr ) {
    279         if ( auto instType = dynamic_cast<const ast::EnumInstType *>( expr->type.get() ) ) {
    280                 const ast::EnumDecl * baseEnum = instType->base.get();
    281                 return ast::ConstantExpr::from_int( expr->location, baseEnum->members.size() );
    282         }
     279        // Does nothing, except prevents matching ast::Expr (above).
    283280        return expr;
    284281}
Note: See TracChangeset for help on using the changeset viewer.