src/expression.cpp

changeset 125
85814c0918c5
parent 119
bdf8d46c145f
child 131
8ae8038b0168
equal deleted inserted replaced
124:a7b769a0e537 125:85814c0918c5
388 ExpressionValue* Expression::evaluateOperator (const ExpressionOperator* op, 388 ExpressionValue* Expression::evaluateOperator (const ExpressionOperator* op,
389 const List<ExpressionValue*>& values) 389 const List<ExpressionValue*>& values)
390 { 390 {
391 const OperatorInfo* info = &g_Operators[op->id()]; 391 const OperatorInfo* info = &g_Operators[op->id()];
392 bool isconstexpr = true; 392 bool isconstexpr = true;
393 assert (values.size() == info->numoperands); 393 ASSERT_EQ (values.size(), info->numoperands)
394 394
395 for (ExpressionValue* val : values) 395 for (ExpressionValue* val : values)
396 { 396 {
397 if (val->isConstexpr() == false) 397 if (val->isConstexpr() == false)
398 { 398 {
560 << it + 3; 560 << it + 3;
561 break; 561 break;
562 } 562 }
563 563
564 default: 564 default:
565 assert (false); 565 error ("WTF bad expression with %1 operands", info->numoperands);
566 } 566 }
567 567
568 List<ExpressionValue*> values; 568 List<ExpressionValue*> values;
569 569
570 for (auto it : OPER_erands) 570 for (auto it : OPER_erands)
577 m_symbols.removeAt (i); 577 m_symbols.removeAt (i);
578 578
579 m_symbols.insert (lower, newvalue); 579 m_symbols.insert (lower, newvalue);
580 } 580 }
581 581
582 assert (m_symbols.size() == 1 && m_symbols.first()->type() == EXPRSYM_Value); 582 ASSERT_EQ (m_symbols.size(), 1)
583 ASSERT_EQ (m_symbols.first()->type(), EXPRSYM_Value)
583 ExpressionValue* val = static_cast<ExpressionValue*> (m_symbols.first()); 584 ExpressionValue* val = static_cast<ExpressionValue*> (m_symbols.first());
584 return val; 585 return val;
585 } 586 }
586 587
587 // ============================================================================= 588 // =============================================================================
643 buffer()->writeDWord (value()); 644 buffer()->writeDWord (value());
644 break; 645 break;
645 646
646 case TYPE_Void: 647 case TYPE_Void:
647 case TYPE_Unknown: 648 case TYPE_Unknown:
648 assert (false); 649 error ("WTF: tried to convert bad expression value type %1 to buffer", m_valueType);
649 break; 650 }
650 } 651 }
651 }

mercurial