public override Statement Expand(MacroStatement macro) { if (macro.Arguments.Count != 1) { throw new ScriptParsingException("'with' must be called with only a single argument followed by a block."); } var arg = macro.Arguments[0]; var instanceExpression = ConvertExpressionToTemporaryVariable(arg, macro.Body); var runnableParser = new RunnableParser(NameResolutionService); if (runnableParser.IsRunnable(arg)) { AddRunExpressionToBody(macro.Body, instanceExpression); } var visitor = new OmittedReferenceVisitor(instanceExpression); visitor.Visit(macro.Body); return macro.Body; }
public override Statement Expand(MacroStatement macro) { if (macro.Arguments.Count != 1) { throw new ScriptParsingException("'with' must be called with only a single argument followed by a block."); } var arg = macro.Arguments[0]; var instanceExpression = ConvertExpressionToTemporaryVariable(arg, macro.Body); var runnableParser = new RunnableParser(NameResolutionService); if (runnableParser.IsRunnable(arg)) { AddRunExpressionToBody(macro.Body, instanceExpression); } var visitor = new OmittedReferenceVisitor(instanceExpression); visitor.Visit(macro.Body); return(macro.Body); }