<PackageReference Include="Microsoft.CSharp" Version="4.5.0" />

EXPR

abstract class EXPR
namespace Microsoft.CSharp.RuntimeBinder.Semantics { internal abstract class EXPR { internal object RuntimeObject; internal CType RuntimeObjectActualType; public ExpressionKind kind; public EXPRFLAG flags; public bool IsError; public bool IsOptionalArgument; public string errorString; public CType type; protected static void RETAILVERIFY(bool f) { } public void SetInaccessibleBit() { IsError = true; } public void SetMismatchedStaticBit() { ExpressionKind expressionKind = kind; if (expressionKind == ExpressionKind.EK_CALL && this.asCALL().GetMemberGroup() != null) this.asCALL().GetMemberGroup().SetMismatchedStaticBit(); IsError = true; } public void setType(CType t) { type = t; } public void setAssignment() { flags |= EXPRFLAG.EXF_ASSGOP; } public bool isOK() { return !HasError(); } public bool HasError() { return IsError; } public void SetError() { IsError = true; } public bool HasObject() { switch (kind) { case ExpressionKind.EK_CALL: case ExpressionKind.EK_EVENT: case ExpressionKind.EK_FIELD: case ExpressionKind.EK_FUNCPTR: case ExpressionKind.EK_PROP: case ExpressionKind.EK_MEMGRP: return true; default: return false; } } public EXPR getArgs() { RETAILVERIFY(this.isCALL() || this.isPROP() || this.isFIELD() || this.isARRAYINDEX()); if (!this.isFIELD()) { switch (kind) { case ExpressionKind.EK_CALL: return this.asCALL().GetOptionalArguments(); case ExpressionKind.EK_PROP: return this.asPROP().GetOptionalArguments(); case ExpressionKind.EK_ARRAYINDEX: return this.asARRAYINDEX().GetIndex(); default: return null; } } return null; } public void setArgs(EXPR args) { RETAILVERIFY(this.isCALL() || this.isPROP() || this.isFIELD() || this.isARRAYINDEX()); if (!this.isFIELD()) { switch (kind) { case ExpressionKind.EK_CALL: this.asCALL().SetOptionalArguments(args); break; case ExpressionKind.EK_PROP: this.asPROP().SetOptionalArguments(args); break; case ExpressionKind.EK_ARRAYINDEX: this.asARRAYINDEX().SetIndex(args); break; } } } public EXPR getObject() { RETAILVERIFY(HasObject()); switch (kind) { case ExpressionKind.EK_FIELD: return this.asFIELD().OptionalObject; case ExpressionKind.EK_PROP: return this.asPROP().GetMemberGroup().OptionalObject; case ExpressionKind.EK_CALL: return this.asCALL().GetMemberGroup().OptionalObject; case ExpressionKind.EK_MEMGRP: return this.asMEMGRP().OptionalObject; case ExpressionKind.EK_EVENT: return this.asEVENT().OptionalObject; case ExpressionKind.EK_FUNCPTR: return this.asFUNCPTR().OptionalObject; default: return null; } } public void SetObject(EXPR pExpr) { RETAILVERIFY(HasObject()); switch (kind) { case ExpressionKind.EK_FIELD: this.asFIELD().OptionalObject = pExpr; break; case ExpressionKind.EK_PROP: this.asPROP().GetMemberGroup().OptionalObject = pExpr; break; case ExpressionKind.EK_CALL: this.asCALL().GetMemberGroup().OptionalObject = pExpr; break; case ExpressionKind.EK_MEMGRP: this.asMEMGRP().OptionalObject = pExpr; break; case ExpressionKind.EK_EVENT: this.asEVENT().OptionalObject = pExpr; break; case ExpressionKind.EK_FUNCPTR: this.asFUNCPTR().OptionalObject = pExpr; break; } } public SymWithType GetSymWithType() { switch (kind) { default: return ((EXPRCALL)this).mwi; case ExpressionKind.EK_CALL: return ((EXPRCALL)this).mwi; case ExpressionKind.EK_PROP: return ((EXPRPROP)this).pwtSlot; case ExpressionKind.EK_FIELD: return ((EXPRFIELD)this).fwt; case ExpressionKind.EK_EVENT: return ((EXPREVENT)this).ewt; } } } }