+ 2003-07-20 Miguel de Icaza <miguel@ximian.com>
+
+ * cs-parser.jay (namespace_name): do not use
+ namespace_or_type_name, use qualified_identifier, because
+ namespace_or_type_name will soon return a composed expression
+ instead of a string.
+
+ (namespace_or_type_name): Instead of returning a string, now this
+ production returns an expression.
+
+ * codegen.cs (EmitContext): Setup IsGeneric property based on
+ whether our DeclSpace is generic, our the method is generic.
+
+ * modifier.cs (Modifiers.METHOD_GENERIC): New definition, use if
+ the method is generic.
+
+ * cs-parser.jay (type_arguments, opt_type_argument_list,
+ type_parameters, type_parameter_list, opt_type_parameter_list,
+ type_parameter,, opt_type_parameter_constraints_clauses,
+ type_parameter_constraints_clauses,
+ type_parameter_constraint_clause, type_parameter_constraint,
+ interface_constraints): Add new production
+
+ * decl.cs (DeclSpace): IsGeneric, flag to track whether this
+ DeclSpace is generic or not.
+
+ (DeclSpace.SetParameterInfo): New routine, used to set the
+ parameter info for a type.
+
+ (DeclSpace.LookupGeneric): Lookups a name, and if it is a generic,
+ returns a GenericTypeExpr
+
+ * ecore.cs (SimpleName.ResolveAsTypeStep): If our container is
+ generic, lookup the generic argument.
+
+ * attribute.cs: Do not allow TypeParameterExpressions in
+ Attributes.
+
+ * class.cs: Do not allow the Main method to be defined in a
+ Generic container.
+
+ * expression.cs (SizeOf): Do not allow generic types to be used as
+ arguments to sizeof.
+
+ * typemanager.cs (IsGeneric): Wrapper for Reflection when we have
+ it: whether a type is generic or not. Only works for types we are
+ currently building for now.
+