Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r6d2b3dc r01afd8d  
    275275} // forCtrl
    276276
    277 ForCtrl * enumRangeCtrl( ExpressionNode * index_expr, OperKinds compop, ExpressionNode * range_over_expr, DeclarationNode * type ) {
    278         assert( compop == OperKinds::LEThan || compop == OperKinds::GEThan );
     277ForCtrl * enumRangeCtrl( ExpressionNode * index_expr, __attribute__((unused)) OperKinds compop, ExpressionNode * range_over_expr ) {
    279278        if ( auto identifier = dynamic_cast<ast::NameExpr *>(index_expr->expr.get()) ) {
    280                 DeclarationNode * indexDecl =
    281                         DeclarationNode::newName( new std::string(identifier->name) )->addType( type );
    282                 return new ForCtrl( new StatementNode( indexDecl ), range_over_expr, compop );
     279                DeclarationNode * indexDecl = DeclarationNode::newName( new std::string(identifier->name) );
     280                assert( range_over_expr );
     281                return new ForCtrl( new StatementNode( indexDecl ), range_over_expr );
    283282        } else {
    284283                SemanticError( yylloc, MISSING_LOOP_INDEX ); return nullptr;
     
    16061605                { SemanticError( yylloc, "illegal syntax, missing low/high value for ascending/descending range so index is uninitialized." ); $$ = nullptr; }
    16071606
    1608         | comma_expression ';' type_type_specifier                                              // CFA, enum type
    1609                 {
    1610                         $$ = enumRangeCtrl( $1, OperKinds::LEThan, new ExpressionNode( new ast::TypeExpr( yylloc, $3->clone()->buildType() ) ), $3 );
     1607        | comma_expression ';' enum_key                                         // CFA, enum type
     1608                {
     1609                        $$ = enumRangeCtrl( $1, OperKinds::LEThan, new ExpressionNode( new ast::TypeExpr( yylloc, $3->buildType() ) ) );
    16111610                }
    16121611        | comma_expression ';' downupdowneq enum_key            // CFA, enum type, reverse direction
     
    16161615                                $3 = OperKinds::GEThan;
    16171616                        } // if
    1618                         $$ = enumRangeCtrl( $1, $3, new ExpressionNode( new ast::TypeExpr( yylloc, $4->clone()->buildType() ) ), $4 );
     1617                        $$ = enumRangeCtrl( $1, $3, new ExpressionNode( new ast::TypeExpr( yylloc, $4->buildType() ) ) );
    16191618                }
    16201619        ;
     
    16221621enum_key:
    16231622        type_name
    1624                 {       typedefTable.makeTypedef( *$1->symbolic.name, "enum_type_nobody 1" );
    1625                         $$ = DeclarationNode::newEnum( $1->symbolic.name, nullptr, false, false ); }
     1623                { $$ = DeclarationNode::newEnum( $1->symbolic.name, nullptr, false, false ); }
    16261624        | ENUM identifier
    1627                 {       typedefTable.makeTypedef( *$2, "enum_type_nobody 2" );
    1628                         $$ = DeclarationNode::newEnum( $2, nullptr, false, false ); }
     1625                { $$ = DeclarationNode::newEnum( $2, nullptr, false, false ); }
    16291626        | ENUM type_name
    1630                 {       typedefTable.makeTypedef( *$2->symbolic.name, "enum_type_nobody 3" );
    1631                         $$ = DeclarationNode::newEnum( $2->symbolic.name, nullptr, false, false ); }
     1627                { $$ = DeclarationNode::newEnum( $2->symbolic.name, nullptr, false, false ); }
    16321628        ;
    16331629
Note: See TracChangeset for help on using the changeset viewer.