Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/SynTree/Expression.cc

    r0690350 r487845d7  
    8383}
    8484
    85 long long int ConstantExpr::intValue() const {
    86         if ( BasicType * basicType = dynamic_cast< BasicType * >( result ) ) {
    87                 if ( basicType->isInteger() ) {
    88                         return get_constant()->get_ival();
    89                 }
    90         } else if ( dynamic_cast< OneType * >( result ) ) {
    91                 return 1;
    92         } else if ( dynamic_cast< ZeroType * >( result ) ) {
    93                 return 0;
    94         }
    95         throw SemanticError( "Constant expression of non-integral type ", this );
    96 }
    97 
    9885VariableExpr::VariableExpr( DeclarationWithType *_var ) : Expression(), var( _var ) {
    9986        assert( var );
     
    10895        //      assert( inst->baseEnum );
    10996        //      EnumDecl * decl = inst->baseEnum;
    110         //      long long int value;
    111         //      if ( decl->valueOf( var, value ) ) {
    112         //              type->set_lvalue( false );
     97        //      for ( Declaration * member : decl->members ) {
     98        //              if ( member == _var ) {
     99        //                      type->set_lvalue( false );
     100        //              }
    113101        //      }
    114102        // }
     
    415403                } else {
    416404                        // references have been removed, in which case dereference returns an lvalue of the base type.
    417                         ret->result->set_lvalue( true );
     405                        ret->get_result()->set_lvalue( true );
    418406                }
    419407        }
     
    601589        if ( ! body.empty() ) {
    602590                if ( ExprStmt * exprStmt = dynamic_cast< ExprStmt * >( body.back() ) ) {
    603                         result = maybeClone( exprStmt->expr->result );
     591                        set_result( maybeClone( exprStmt->get_expr()->get_result() ) );
    604592                }
    605593        }
    606594        // ensure that StmtExpr has a result type
    607595        if ( ! result ) {
    608                 result = new VoidType( Type::Qualifiers() );
     596                set_result( new VoidType( Type::Qualifiers() ) );
    609597        }
    610598}
Note: See TracChangeset for help on using the changeset viewer.