edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Proc.cs;C427406 File: Proc.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Proc.cs;C427406 (server) 5/2/2008 9:42 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/Proc.cs;ConstraintsRuby @@ -85,7 +85,7 @@ get { return RubyContext._Default; } } - public RuleBuilder/*!*/ GetRule(DynamicAction/*!*/ action, CodeContext/*!*/ context, object[]/*!*/ args) { + public RuleBuilder/*!*/ GetRule(DynamicAction/*!*/ action, CodeContext/*!*/ context, object[]/*!*/ args) where T : class { switch (action.Kind) { case DynamicActionKind.Call: RuleBuilder rule = new RuleBuilder(); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs;C420856 File: RubyModule.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs;C420856 (server) 5/2/2008 9:42 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyModule.cs;ConstraintsRuby @@ -674,7 +674,7 @@ #region IDynamicObject Members - public virtual RuleBuilder GetRule(DynamicAction/*!*/ action, CodeContext/*!*/ callerContext, object[]/*!*/ args) { + public virtual RuleBuilder GetRule(DynamicAction/*!*/ action, CodeContext/*!*/ callerContext, object[]/*!*/ args) where T : class { switch (action.Kind) { case DynamicActionKind.InvokeMember: RuleBuilder result = new RuleBuilder(); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;C420856 File: RubyTypeBuilder.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;C420856 (server) 5/2/2008 9:42 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Generation/RubyTypeBuilder.cs;ConstraintsRuby @@ -185,6 +185,7 @@ il = DefineMethodOverride(typeGen, decl, out impl); MethodInfo mi = typeof(RubyOps).GetMethod("GetClassRule"); GenericTypeParameterBuilder[] types = impl.DefineGenericParameters("T"); + types[0].SetGenericParameterAttributes(GenericParameterAttributes.ReferenceTypeConstraint); for (int i = 1; i < 4; i++) { il.EmitLoadArg(i); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/BlockReturnReason.cs;C427406 File: BlockReturnReason.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/BlockReturnReason.cs;C427406 (server) 5/2/2008 9:42 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/BlockReturnReason.cs;ConstraintsRuby @@ -168,7 +168,7 @@ get { return _proc.LanguageContext; } } - public RuleBuilder GetRule(DynamicAction/*!*/ action, CodeContext/*!*/ context, object[]/*!*/ args) { + public RuleBuilder GetRule(DynamicAction/*!*/ action, CodeContext/*!*/ context, object[]/*!*/ args) where T : class { switch (action.Kind) { case DynamicActionKind.Call: RuleBuilder result = new RuleBuilder(); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs;C427406 File: RubyOps.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs;C427406 (server) 5/2/2008 9:42 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/RubyOps.cs;ConstraintsRuby @@ -827,7 +827,7 @@ } // emitted: (IDO implementation for Ruby classes) - public static RuleBuilder/*!*/ GetClassRule(DynamicAction/*!*/ action, CodeContext/*!*/ callerContext, object[]/*!*/ args) { + public static RuleBuilder/*!*/ GetClassRule(DynamicAction/*!*/ action, CodeContext/*!*/ callerContext, object[]/*!*/ args) where T : class { return RubyBinder.GetUserClassRule(action, callerContext, args); } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs;C423094 File: RubyBinder.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs;C423094 (server) 5/2/2008 9:42 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs;ConstraintsRuby @@ -84,7 +84,7 @@ return base.GetExtensionTypes(t); } - internal static RuleBuilder GetUserClassRule(DynamicAction/*!*/ action, CodeContext/*!*/ callerContext, object[]/*!*/ args) { + internal static RuleBuilder GetUserClassRule(DynamicAction/*!*/ action, CodeContext/*!*/ callerContext, object[]/*!*/ args) where T : class { Assert.NotNull(action, callerContext, args); switch (action.Kind) { ===================================================================