private void EmitRefTypeOperator(BoundRefTypeOperator expression, bool used) { // push TypedReference // refanytype -- takes TypedReference off stack, puts token on stack // call GetTypeFromHandle -- takes token off stack, puts Type on stack EmitExpression(expression.Operand, true); _builder.EmitOpCode(ILOpCode.Refanytype); _builder.EmitOpCode(ILOpCode.Call, stackAdjustment: 0); var getTypeMethod = expression.GetTypeFromHandle; Debug.Assert((object)getTypeMethod != null); EmitSymbolToken(getTypeMethod, expression.Syntax, null); EmitPopIfUnused(used); }
public override BoundNode VisitRefTypeOperator(BoundRefTypeOperator node) { if (_inExpressionLambda) { Error(ErrorCode.ERR_FeatureNotValidInExpressionTree, node, "__reftype"); } return base.VisitRefTypeOperator(node); }
internal void Parse(BoundRefTypeOperator boundRefTypeOperator) { base.Parse(boundRefTypeOperator); }
internal void Parse(BoundRefTypeOperator boundRefTypeOperator) { base.Parse(boundRefTypeOperator); this.Operand = Deserialize(boundRefTypeOperator.Operand) as Expression; Debug.Assert(this.Operand != null); }
public override object VisitRefTypeOperator(BoundRefTypeOperator node, object arg) { return Unimplemented(node, "ref type"); }
public override object VisitRefTypeOperator(BoundRefTypeOperator node, object arg) { return(Unimplemented(node, "ref type")); }