X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fdynamic.cs;h=3524196957edf6668ed624c335d98063ce988d06;hb=28ff6bbe2eaf70dae544032628c7181bc495bca8;hp=b3daab895b22702d49140573cd5fe70be149381b;hpb=5a35198e2fdb794d48af81d80e783644a29d7291;p=mono.git diff --git a/mcs/mcs/dynamic.cs b/mcs/mcs/dynamic.cs index b3daab895b2..3524196957e 100644 --- a/mcs/mcs/dynamic.cs +++ b/mcs/mcs/dynamic.cs @@ -6,6 +6,7 @@ // Dual licensed under the terms of the MIT X11 or GNU GPL // // Copyright 2009 Novell, Inc +// Copyright 2011 Xamarin Inc. // using System; @@ -252,7 +253,7 @@ namespace Mono.CSharp protected CSharpBinderFlags flags; TypeSpec binder_type; - TypeParameter[] context_mvars; + TypeParameters context_mvars; public DynamicExpressionStatement (IDynamicBinder binder, Arguments args, Location loc) { @@ -267,6 +268,11 @@ namespace Mono.CSharp } } + public override bool ContainsEmitWithAwait () + { + return arguments.ContainsEmitWithAwait (); + } + public override Expression CreateExpressionTree (ResolveContext ec) { ec.Report.Error (1963, loc, "An expression tree cannot contain a dynamic operation"); @@ -343,7 +349,7 @@ namespace Mono.CSharp var site_container = ec.CreateDynamicSite (); if (context_mvars != null) { - TypeParameter[] tparam; + TypeParameters tparam; TypeContainer sc = site_container; do { tparam = sc.CurrentTypeParameters; @@ -460,7 +466,7 @@ namespace Mono.CSharp return; if (del_type_instance_access == null) { - var dt = d.CurrentType.DeclaringType.MakeGenericType (module, context_mvars.Select (l => l.Type).ToArray ()); + var dt = d.CurrentType.DeclaringType.MakeGenericType (module, context_mvars.Types); del_type_instance_access = new TypeExpression (MemberCache.GetMember (dt, d.CurrentType), loc); } @@ -476,7 +482,7 @@ namespace Mono.CSharp if (inflate_using_mvar || context_mvars == null) { gt = site_container.CurrentType; } else { - gt = site_container.CurrentType.MakeGenericType (module, context_mvars.Select (l => l.Type).ToArray ()); + gt = site_container.CurrentType.MakeGenericType (module, context_mvars.Types); } // When site container already exists the inflated version has to be @@ -719,7 +725,7 @@ namespace Mono.CSharp class DynamicInvocation : DynamicExpressionStatement, IDynamicBinder { - ATypeNameExpression member; + readonly ATypeNameExpression member; public DynamicInvocation (ATypeNameExpression member, Arguments args, Location loc) : base (null, args, loc) @@ -951,7 +957,7 @@ namespace Mono.CSharp sealed class DynamicSiteClass : HoistedStoreyClass { - public DynamicSiteClass (TypeContainer parent, MemberBase host, TypeParameter[] tparams) + public DynamicSiteClass (TypeContainer parent, MemberBase host, TypeParameters tparams) : base (parent, MakeMemberName (host, "DynamicSite", parent.DynamicSitesCounter, tparams, Location.Null), tparams, Modifiers.STATIC) { parent.DynamicSitesCounter++;