this.is_lifted = is_lifted;
}
+#if !FULL_AOT_RUNTIME
void EmitArrayAccess (EmitContext ec)
{
left.Emit (ec);
throw new NotSupportedException (this.NodeType.ToString ());
}
}
+#endif
}
}
this.if_false = if_false;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
var ig = ec.ig;
ig.MarkLabel (end_target);
}
+#endif
}
}
this.value = value;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
if (Type.IsNullable ()) {
emit (ec);
}
+#endif
}
}
return ExpressionPrinter.ToString (this);
}
+#if !FULL_AOT_RUNTIME
void EmitPopIfNeeded (EmitContext ec)
{
if (add_method.ReturnType == typeof (void))
ec.EmitCall (local, arguments, add_method);
EmitPopIfNeeded (ec);
}
+#endif
}
}
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
+#if !FULL_AOT_RUNTIME
using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
}
}
}
+#endif
// This method must be overwritten by derived classes to
// compile the expression
//
+#if !FULL_AOT_RUNTIME
internal virtual void Emit (EmitContext ec)
{
throw new NotImplementedException (String.Format ("Emit method is not implemented in expression type {0}", GetType ()));
}
+#endif
}
}
this.arguments = arguments;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
ec.EmitCall (expression, arguments, expression.Type.GetInvokeMethod ());
}
+#endif
}
}
this.parameters = parameters;
}
+#if !FULL_AOT_RUNTIME
void EmitPopIfNeeded (EmitContext ec)
{
if (GetReturnType () == typeof (void) && body.Type != typeof (void))
EmitPopIfNeeded (ec);
ec.ig.Emit (OpCodes.Ret);
}
+#endif
internal Type GetReturnType ()
{
this.initializers = initializers;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
var local = ec.EmitStored (new_expression);
ec.EmitCollection (initializers, local);
ec.EmitLoad (local);
}
+#endif
}
}
this.expression = expression;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec, LocalBuilder local)
{
this.Member.OnFieldOrProperty (
expression.Emit (ec);
ec.EmitCall (setter);
}
+#endif
}
}
return ExpressionPrinter.ToString (this);
}
+#if !FULL_AOT_RUNTIME
internal abstract void Emit (EmitContext ec, LocalBuilder local);
internal LocalBuilder EmitLoadMember (EmitContext ec, LocalBuilder local)
ec.ig.Emit (OpCodes.Stloc, store);
return store;
}
+#endif
}
}
this.member = member;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
member.OnFieldOrProperty (
} else
ec.ig.Emit (OpCodes.Ldsfld, field);
}
+#endif
}
}
this.bindings = bindings;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
var local = ec.EmitStored (new_expression);
ec.EmitCollection (bindings, local);
ec.EmitLoad (local);
}
+#endif
}
}
this.initializers = initializers;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec, LocalBuilder local)
{
var member = EmitLoadMember (ec, local);
foreach (var initializer in initializers)
initializer.Emit (ec, member);
}
+#endif
}
}
this.bindings = bindings;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec, LocalBuilder local)
{
var member = EmitLoadMember (ec, local);
foreach (var binding in bindings)
binding.Emit (ec, member);
}
+#endif
}
}
this.arguments = arguments;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
ec.EmitCall (obj, arguments, method);
}
+#endif
}
}
this.expressions = expressions;
}
+#if !FULL_AOT_RUNTIME
void EmitNewArrayInit (EmitContext ec, Type type)
{
var size = expressions.Count;
throw new NotSupportedException ();
}
}
+#endif
}
}
this.members = members;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
var ig = ec.ig;
} else
ig.Emit (OpCodes.Newobj, constructor ?? GetDefaultConstructor (type));
}
+#endif
static ConstructorInfo GetDefaultConstructor (Type type)
{
this.name = name;
}
+#if !FULL_AOT_RUNTIME
void EmitLocalParameter (EmitContext ec, int position)
{
ec.ig.Emit (OpCodes.Ldarg, position);
throw new InvalidOperationException ("Parameter out of scope");
}
+#endif
}
}
this.type_operand = type_operand;
}
+#if !FULL_AOT_RUNTIME
internal override void Emit (EmitContext ec)
{
if (expression.Type == typeof (void)) {
ec.ig.Emit (OpCodes.Ldnull);
ec.ig.Emit (OpCodes.Cgt_Un);
}
+#endif
}
}
this.is_lifted = is_lifted;
}
+#if !FULL_AOT_RUNTIME
void EmitArrayLength (EmitContext ec)
{
operand.Emit (ec);
throw new NotImplementedException (this.NodeType.ToString ());
}
}
+#endif
}
}
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
+#if !FULL_AOT_RUNTIME
using System;
using System.Linq.Expressions;
}
}
}
+#endif