Beispiel #1
0
 private void EmitRefValueAddress(BoundRefValueOperator refValue)
 {
     // push typed reference
     // refanyval type -- pops typed reference, pushes address of variable
     EmitExpression(refValue.Operand, true);
     _builder.EmitOpCode(ILOpCode.Refanyval);
     EmitSymbolToken(refValue.Type, refValue.Syntax);
 }
Beispiel #2
0
 private void EmitRefValueOperator(BoundRefValueOperator expression, bool used)
 {
     EmitRefValueAddress(expression);
     EmitLoadIndirect(expression.Type, expression.Syntax);
     EmitPopIfUnused(used);
 }
Beispiel #3
0
 internal void Parse(BoundRefValueOperator boundRefValueOperator)
 {
     base.Parse(boundRefValueOperator);
     this.Operand = Deserialize(boundRefValueOperator.Operand) as Expression;
 }
Beispiel #4
0
 private void EmitRefValueAddress(BoundRefValueOperator refValue)
 {
     // push typed reference
     // refanyval type -- pops typed reference, pushes address of variable
     EmitExpression(refValue.Operand, true);
     builder.EmitOpCode(ILOpCode.Refanyval);
     EmitSymbolToken(refValue.Type, refValue.Syntax);
 }
        public override BoundNode VisitRefValueOperator(BoundRefValueOperator node)
        {
            if (_inExpressionLambda)
            {
                Error(ErrorCode.ERR_FeatureNotValidInExpressionTree, node, "__refvalue");
            }

            return base.VisitRefValueOperator(node);
        }
Beispiel #6
0
 public override object VisitRefValueOperator(BoundRefValueOperator node, object arg)
 {
     return Unimplemented(node, "ref value");
 }
Beispiel #7
0
 internal void Parse(BoundRefValueOperator boundRefValueOperator)
 {
     base.Parse(boundRefValueOperator);
 }
Beispiel #8
0
 public override object VisitRefValueOperator(BoundRefValueOperator node, object arg)
 {
     return(Unimplemented(node, "ref value"));
 }