Changes in / [2de175ce:c84dd61]


Ignore:
Location:
src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r2de175ce rc84dd61  
    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                 }
    27002696        | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt identifier attribute_list_opt
    27012697                {
     
    27092705                        $$ = DeclarationNode::newEnum( $6, $11, true, true, $3, $9 )->addQualifiers( $5 )->addQualifiers( $7 );
    27102706                }
    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                 }
    27162707        | ENUM '(' cfa_abstract_parameter_declaration ')' attribute_list_opt typedef_name attribute_list_opt
    27172708          hide_opt '{' enumerator_list comma_opt '}'
    27182709                {
    27192710                        $$ = 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 );
    27252711                }
    27262712        | enum_type_nobody
     
    28352821
    28362822cfa_abstract_parameter_declaration:                                             // CFA, new & old style parameter declaration
    2837         abstract_parameter_declaration
     2823        // empty
     2824                { $$ = nullptr; }
     2825        | abstract_parameter_declaration
    28382826        | cfa_identifier_parameter_declarator_no_tuple
    28392827        | cfa_abstract_tuple
     
    38603848                // { SemanticError( yylloc, "New array dimension is currently unimplemented." ); $$ = nullptr; }
    38613849        | '[' push array_type_list pop ']'                                      // CFA
    3862                 { SemanticError( yylloc, "Type array dimension is currently unimplemented." ); $$ = nullptr; }
     3850                { $$ = DeclarationNode::newArray( $3, nullptr, false ); }
    38633851        | multi_array_dimension
    38643852        ;
  • src/Validate/GenericParameter.cpp

    r2de175ce rc84dd61  
    277277const ast::Expr * TranslateDimensionCore::postvisit(
    278278                const ast::TypeExpr * expr ) {
    279         // Does nothing, except prevents matching ast::Expr (above).
     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        }
    280283        return expr;
    281284}
Note: See TracChangeset for help on using the changeset viewer.