From 58b3bffec563e267bfa272e2ad0e94d5f4685f6d Mon Sep 17 00:00:00 2001 From: marek Date: Thu, 22 Oct 2009 13:57:43 +0000 Subject: [PATCH] 2009-10-22 Marek Safar * argument.cs: Use literal flag for real literals only. * dynamic.cs: Use correct return type for custom delegates. git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mcs@144643 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- mcs/ChangeLog | 6 ++++++ mcs/argument.cs | 4 ++-- mcs/dynamic.cs | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/mcs/ChangeLog b/mcs/ChangeLog index 4ad5ef4419..83e30e393d 100644 --- a/mcs/ChangeLog +++ b/mcs/ChangeLog @@ -1,5 +1,11 @@ 2009-10-22 Marek Safar + * argument.cs: Use literal flag for real literals only. + + * dynamic.cs: Use correct return type for custom delegates. + +2009-10-22 Marek Safar + * dynamic.cs, expression.cs: Pass logical binary flag to dynamic resolver. diff --git a/mcs/argument.cs b/mcs/argument.cs index ad13a6539e..4f5838bd23 100644 --- a/mcs/argument.cs +++ b/mcs/argument.cs @@ -227,8 +227,8 @@ namespace Mono.CSharp const string info_flags_enum = "CSharpArgumentInfoFlags"; Expression info_flags = new IntLiteral (0, loc); - if (a.Expr is Constant) { - // Any constant is emitted as a literal + var constant = a.Expr as Constant; + if (constant != null && constant.IsLiteral) { info_flags = new Binary (Binary.Operator.BitwiseOr, info_flags, new MemberAccess (new MemberAccess (binder, info_flags_enum, loc), "LiteralConstant", loc)); } else if (a.ArgType == Argument.AType.Ref) { diff --git a/mcs/dynamic.cs b/mcs/dynamic.cs index 404cd1b14d..a8002b67c1 100644 --- a/mcs/dynamic.cs +++ b/mcs/dynamic.cs @@ -381,7 +381,7 @@ namespace Mono.CSharp p[i] = new Parameter (targs[i], "p" + i.ToString ("X"), arguments[i - 1].Modifier, null, loc); TypeContainer parent = CreateSiteContainer (); - Delegate d = new Delegate (parent.NamespaceEntry, parent, new TypeExpression (TypeManager.TypeToReflectionType (type), loc), + Delegate d = new Delegate (parent.NamespaceEntry, parent, new TypeExpression (TypeManager.TypeToReflectionType (rt), loc), Modifiers.INTERNAL | Modifiers.COMPILER_GENERATED, new MemberName ("Container" + container_counter++.ToString ("X")), new ParametersCompiled (p), null); -- 2.11.4.GIT