Author: miguel
Date: 2008-01-22 00:12:04 -0500 (Tue, 22 Jan 2008)
New Revision: 93476

Modified:
   trunk/mcs/mcs/ChangeLog
   trunk/mcs/mcs/ecore.cs
   trunk/mcs/mcs/parameter.cs
   trunk/mcs/mcs/typemanager.cs
Log:
2008-01-22  Miguel de Icaza  <[EMAIL PROTECTED]>

        * typemanager.cs (LinqExpression): renamed from
        ExpressionTreeManager, for a shorter name.

        Use TypeManager.CoreLookupType to lookup types from our core
        assemblies and turn those into "Type" variables.

        Consumers that previously used "Namespace" and "Type" from this
        class should instead use the TypeExpression which is a type that
        is fully resolved (without involving the regular C# resolution
        rules). 

        This typically looks like this:

        TypeExpression texpr = new TypeExpression 
(LinqExpression.expression_type, loc);
        new MemberAccess (texpr, name, type_arguments, loc)

        This avoids the problem in: #355178



Modified: trunk/mcs/mcs/ChangeLog
===================================================================
--- trunk/mcs/mcs/ChangeLog     2008-01-22 04:34:17 UTC (rev 93475)
+++ trunk/mcs/mcs/ChangeLog     2008-01-22 05:12:04 UTC (rev 93476)
@@ -1,3 +1,23 @@
+2008-01-22  Miguel de Icaza  <[EMAIL PROTECTED]>
+
+       * typemanager.cs (LinqExpression): renamed from
+       ExpressionTreeManager, for a shorter name.
+
+       Use TypeManager.CoreLookupType to lookup types from our core
+       assemblies and turn those into "Type" variables.
+
+       Consumers that previously used "Namespace" and "Type" from this
+       class should instead use the TypeExpression which is a type that
+       is fully resolved (without involving the regular C# resolution
+       rules). 
+
+       This typically looks like this:
+
+       TypeExpression texpr = new TypeExpression 
(LinqExpression.expression_type, loc);
+       new MemberAccess (texpr, name, type_arguments, loc)
+
+       This avoids the problem in: #355178
+
 2008-01-21  Marek Safar  <[EMAIL PROTECTED]>
 
        * cs-parser.jay, expression.cs: Check `namespace alias qualifier' 
language

Modified: trunk/mcs/mcs/ecore.cs
===================================================================
--- trunk/mcs/mcs/ecore.cs      2008-01-22 04:34:17 UTC (rev 93475)
+++ trunk/mcs/mcs/ecore.cs      2008-01-22 05:12:04 UTC (rev 93476)
@@ -1254,9 +1254,8 @@
 
                public static Expression CreateExpressionFactoryCall (string 
name, TypeArguments typeArguments, ArrayList args, Location loc)
                {
-                       return new Invocation (
-                               new MemberAccess (ExpressionTreeManager.Type, 
name, typeArguments, loc),
-                               args);
+                       TypeExpression texpr = new TypeExpression 
(LinqExpression.expression_type, loc);
+                       return new Invocation (new MemberAccess (texpr, name, 
typeArguments, loc), args);
                }
        }
 

Modified: trunk/mcs/mcs/parameter.cs
===================================================================
--- trunk/mcs/mcs/parameter.cs  2008-01-22 04:34:17 UTC (rev 93475)
+++ trunk/mcs/mcs/parameter.cs  2008-01-22 05:12:04 UTC (rev 93476)
@@ -642,9 +642,9 @@
                        if (parameter_expr_tree_type != null)
                                return parameter_expr_tree_type;
 
-                       MemberAccess ma = new MemberAccess (
-                               ExpressionTreeManager.Namespace, 
"ParameterExpression", location);
-                       parameter_expr_tree_type = ma.ResolveAsTypeTerminal 
(ec, false);
+                       parameter_expr_tree_type = new TypeExpression 
(LinqExpression.parameter_expression_type, location).
+                               ResolveAsTypeTerminal (ec, false);
+
                        return parameter_expr_tree_type;
                }
        }

Modified: trunk/mcs/mcs/typemanager.cs
===================================================================
--- trunk/mcs/mcs/typemanager.cs        2008-01-22 04:34:17 UTC (rev 93475)
+++ trunk/mcs/mcs/typemanager.cs        2008-01-22 05:12:04 UTC (rev 93476)
@@ -3708,14 +3708,26 @@
        //
        // Common expressions used by expression trees
        //
-       static class ExpressionTreeManager
+       static class LinqExpression
        {
-               public static MemberAccess Namespace = new MemberAccess (
-                       new MemberAccess (new SimpleName ("System", 
Location.Null), "Linq", Location.Null),
-                       "Expressions", Location.Null);
-                       
-               public static MemberAccess Type =
-                       new MemberAccess (Namespace, "Expression", 
Location.Null);
+               //
+               // These represent types thare are loaded from System.Core, 
similar
+               // in spirit to the TypeManger _type variables.
+               // 
+               public static Type expression_type;
+               public static Type parameter_expression_type;
+
+               //
+               // The expressions represeing the internal types, if used
+               //
+               public static TypeExpr expression_type_expr;
+               
+               static LinqExpression ()
+               {
+                       expression_type = TypeManager.CoreLookupType 
("System.Linq.Expressions", "Expression");
+                       parameter_expression_type = TypeManager.CoreLookupType 
("System.Linq.Expressions", "ParameterExpression");
+
+                       expression_type_expr = new TypeExpression 
(expression_type, Location.Null);
+               }
        }
-
 }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to