// Miguel de Icaza (miguel@ximian.com)
// Marek Safar (marek.safar@seznam.cz)
//
-// (C) 2002, 2003 Ximian, Inc.
-//
-
+// Copyright 2002, 2003 Ximian, Inc.
+// Copyright 2003-2008, Novell, Inc.
+//
using System;
namespace Mono.CSharp {
return BinaryFold (ec, oper, ((EmptyConstantCast)left).child, right, loc);
if (left is SideEffectConstant) {
- result = BinaryFold (ec, oper, ((SideEffectConstant) left).left, right, loc);
+ result = BinaryFold (ec, oper, ((SideEffectConstant) left).value, right, loc);
if (result == null)
return null;
return new SideEffectConstant (result, left, loc);
return BinaryFold (ec, oper, left, ((EmptyConstantCast)right).child, loc);
if (right is SideEffectConstant) {
- result = BinaryFold (ec, oper, left, ((SideEffectConstant) right).left, loc);
+ result = BinaryFold (ec, oper, left, ((SideEffectConstant) right).value, loc);
if (result == null)
return null;
return new SideEffectConstant (result, right, loc);
case Binary.Operator.LeftShift:
IntConstant ic = right.ConvertImplicitly (TypeManager.int32_type) as IntConstant;
if (ic == null){
- Binary.Error_OperatorCannotBeApplied (loc, "<<", lt, rt);
+ Binary.Error_OperatorCannotBeApplied (left, right, oper, loc);
return null;
}
if (left.Type == TypeManager.int32_type)
return new IntConstant (((IntConstant)left).Value << lshift_val, left.Location);
- Binary.Error_OperatorCannotBeApplied (loc, "<<", lt, rt);
+ Binary.Error_OperatorCannotBeApplied (left, right, oper, loc);
break;
//
case Binary.Operator.RightShift:
IntConstant sic = right.ConvertImplicitly (TypeManager.int32_type) as IntConstant;
if (sic == null){
- Binary.Error_OperatorCannotBeApplied (loc, ">>", lt, rt);
+ Binary.Error_OperatorCannotBeApplied (left, right, oper, loc); ;
return null;
}
int rshift_val = sic.Value;
if (left.Type == TypeManager.int32_type)
return new IntConstant (((IntConstant)left).Value >> rshift_val, left.Location);
- Binary.Error_OperatorCannotBeApplied (loc, ">>", lt, rt);
+ Binary.Error_OperatorCannotBeApplied (left, right, oper, loc);
break;
case Binary.Operator.Equality:
- if (left is NullConstant){
- if (right is NullConstant)
+ if (left is NullLiteral){
+ if (right is NullLiteral)
return new BoolConstant (true, left.Location);
else if (right is StringConstant)
return new BoolConstant (
((StringConstant) right).Value == null, left.Location);
- } else if (right is NullConstant){
- if (left is NullConstant)
+ } else if (right is NullLiteral) {
+ if (left is NullLiteral)
return new BoolConstant (true, left.Location);
else if (left is StringConstant)
return new BoolConstant (
return new BoolConstant (bool_res, left.Location);
case Binary.Operator.Inequality:
- if (left is NullConstant){
- if (right is NullConstant)
+ if (left is NullLiteral) {
+ if (right is NullLiteral)
return new BoolConstant (false, left.Location);
else if (right is StringConstant)
return new BoolConstant (
((StringConstant) right).Value != null, left.Location);
- } else if (right is NullConstant){
- if (left is NullConstant)
+ } else if (right is NullLiteral) {
+ if (left is NullLiteral)
return new BoolConstant (false, left.Location);
else if (left is StringConstant)
return new BoolConstant (