Exemplo n.º 1
0
 public override void Visit(AssignmentStatement node)
 {
     // The type of right hand side must match the left hand side
     // and left hand side needs to be an lvalue.
     if (node.LeftHandSide is ILValueExpression)
     {
         var lhsType = node.LeftHandSide.Type;
         var rhsType = node.RightHandSide.Type;
         if (!(rhsType.IsAssignableTo(lhsType)))
         {
             // ErrorType should be assignable both ways.
             Debug.Assert(!(lhsType is ErrorType || rhsType is ErrorType));
             ReportError(
                 ErrorTypes.TypeError,
                 String.Format("Incompatible types (expected {0}, found {1}).",
                 lhsType.Name, rhsType.Name), node);
         }
     }
     else if (node.LeftHandSide != ErrorType.GetInstance())
     {
         ReportError(
             ErrorTypes.LvalueReference,
             "Assignment receiver expression is not assignable (an lvalue required).",
             node);
     }
 }
Exemplo n.º 2
0
 public override void Visit(AssignmentStatement node)
 {
     if (_pass == 0)
     {
         (node.LeftHandSide as ILValueExpression).UsedAsAddress = true;
     }
 }
Exemplo n.º 3
0
 public override void Visit(AssignmentStatement node)
 {
     HandleExpressionOrStatementNode(node);
 }