edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;C420856 File: RubyClass.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;C420856 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Builtins/RubyClass.cs;ExplicitRuby @@ -377,8 +377,8 @@ } private static Expression/*!*/ MakeInitializerCall(ActionBinder binder, RuleBuilder/*!*/ rule, CallArguments/*!*/ args, Expression/*!*/ newInstanceExpr) { - Expression[] ps = ArrayUtils.MakeArray(args.Expressions); - ps[0] = newInstanceExpr; + Expression[] ps = ArrayUtils.Insert(Ast.CodeContext(), args.Expressions); + ps[1] = newInstanceExpr; return Ast.Action.InvokeMember(binder, Symbols.Initialize, typeof(object), InvokeMemberActionFlags.IsCallWithThis, args.Signature, ps); } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/AstGenerator.cs;C420856 File: AstGenerator.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/AstGenerator.cs;C420856 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/AstGenerator.cs;ExplicitRuby @@ -663,7 +663,7 @@ Debug.Assert(test != null); if (test.Type != typeof(bool)) { - test = Ast.Action.ConvertTo(_binder, typeof(bool), test); + test = Ast.Action.ConvertTo(_binder, typeof(bool), Ast.CodeContext(), test); } if (ifTrue.Type != ifFalse.Type) { =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/CallBuilder.cs;C415805 File: CallBuilder.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/CallBuilder.cs;C415805 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/CallBuilder.cs;ExplicitRuby @@ -59,7 +59,7 @@ return Ast.Action.InvokeMember( _gen.Binder, - name, typeof(object), flags, new CallSignature(ArgumentKinds), Expressions); + name, typeof(object), flags, new CallSignature(ArgumentKinds), GetExpressions()); } public MSA.Expression/*!*/ MakeCallAction() { @@ -67,7 +67,7 @@ // so remove the first arg // TODO: fix either InvokeMemberAction or CallAction so they use the same convention return Ast.Action.Call( - CallAction.Make(_gen.Binder, new CallSignature(ArgumentKinds).RemoveFirstArgument()), typeof(object), Expressions); + CallAction.Make(_gen.Binder, new CallSignature(ArgumentKinds).RemoveFirstArgument()), typeof(object), GetExpressions()); } public MSA.ArgumentKind[]/*!*/ ArgumentKinds { @@ -80,15 +80,13 @@ } } - public MSA.Expression/*!*/[]/*!*/ Expressions { - get { - MSA.Expression[] result = new MSA.Expression[_args.Count]; - for (int i = 0; i < _args.Count; i++) { - result[i] = _args[i].Key; - } - return result; + private MSA.Expression/*!*/[]/*!*/ GetExpressions() { + MSA.Expression[] result = new MSA.Expression[_args.Count + 1]; + result[0] = Ast.CodeContext(); + for (int i = 0; i < _args.Count; i++) { + result[i + 1] = _args[i].Key; } + return result; } - } } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/SourceUnitTree.cs;C420856 File: SourceUnitTree.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/SourceUnitTree.cs;C420856 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/SourceUnitTree.cs;ExplicitRuby @@ -82,7 +82,7 @@ if (kind == SourceCodeKind.InteractiveCode) { resultVariable = method.CreateTemporaryVariable(SymbolTable.StringToId("#result"), typeof(object)); print = AstFactory.OpCall("PrintInteractiveResult", runtimeScopeVariable, - Ast.Call(typeof(object), resultVariable, RubySites.InstanceCallAction("inspect")) + Ast.Action.InvokeMember(RubySites.InstanceCallAction("inspect"), typeof(object), Ast.CodeContext(), resultVariable) ); } else { resultVariable = null; =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/CaseExpression.cs;C415805 File: CaseExpression.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/CaseExpression.cs;C415805 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/CaseExpression.cs;ExplicitRuby @@ -82,6 +82,7 @@ expr = Ast.Action.InvokeMember(gen.Binder, Symbols.StrictEqual, typeof(object), InvokeMemberActionFlags.IsCallWithThis | InvokeMemberActionFlags.ReturnNonCallable, new CallSignature(MSA.ArgumentKind.Instance, MSA.ArgumentKind.Simple), + Ast.CodeContext(), expr, Ast.Read(value)); } =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/ForLoopExpression.cs;C415805 File: ForLoopExpression.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/ForLoopExpression.cs;C415805 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Compiler/Ast/Expressions/ForLoopExpression.cs;ExplicitRuby @@ -63,6 +63,7 @@ new ArgumentInfo(MSA.ArgumentKind.Instance), new ArgumentInfo(MSA.ArgumentKind.Block) ), + Ast.CodeContext(), _list.TransformRead(gen), Ast.Read(blockArgVariable) ); =================================================================== edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyLambdaMethodInfo.cs;C415805 File: RubyLambdaMethodInfo.cs =================================================================== --- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyLambdaMethodInfo.cs;C415805 (server) 5/1/2008 9:34 AM +++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyLambdaMethodInfo.cs;ExplicitRuby @@ -47,8 +47,8 @@ boundLambda.Self = args.Values[0]; // TODO: call SetProcCallRule directly (MRI invokes Proc#call implementation directly, it's not sending a message) - Expression[] newParams = ArrayUtils.MakeArray(args.Expressions); - newParams[0] = Ast.RuntimeConstant(boundLambda); + Expression[] newParams = ArrayUtils.Insert(Ast.CodeContext(), args.Expressions); + newParams[1] = Ast.RuntimeConstant(boundLambda); rule.Target = rule.MakeReturn( binder, ===================================================================