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