示例#1
0
        public override void Dump(SourceWriter sw, int indentChange)
        {
            var parenthesize = !_left.IsPrimaryExpression;

            if (parenthesize)
            {
                sw.Write("(");
            }

            _left.Dump(sw, indentChange);

            if (parenthesize)
            {
                sw.Write(")");
            }

            sw.Write(".");
            sw.Write(Name);

            if (HasTypeArguments)
            {
                sw.Write("<");
                for (var i = 0; i < TypeArguments.Count; i++)
                {
                    var type = TypeArguments[i];
                    if (i != 0)
                    {
                        sw.Write(",");
                    }
                    DumpChild(type, sw, indentChange);
                }
                sw.Write(">");
            }
        }
示例#2
0
        public override void Dump(SourceWriter sw, int indentChange)
        {
            var parenthesize = !_target.IsPrimaryExpression;

            if (parenthesize)
            {
                sw.Write("(");
            }

            _target.Dump(sw, indentChange);

            if (parenthesize)
            {
                sw.Write(")");
            }

            if (_typeArguments.Count != 0)
            {
                sw.Write("<");
                for (var i = 0; i < _typeArguments.Count; i++)
                {
                    var typeArgument = _typeArguments[i];

                    if (i != 0)
                    {
                        sw.Write(", ");
                    }

                    typeArgument.Dump(sw, indentChange);
                }
                sw.Write(">");
            }

            sw.Write("(");

            var isExtensionInvocation = MethodGroup is ExtensionMethodGroupExpression;
            var firstArgumentIndex    = (isExtensionInvocation ? 1 : 0);

            for (var i = firstArgumentIndex; i < _arguments.Count; i++)
            {
                var argument = _arguments[i];

                if (i > firstArgumentIndex)
                {
                    sw.Write(", ");
                }

                argument.Dump(sw, indentChange);
            }

            sw.Write(")");
        }
示例#3
0
        public override void Dump(SourceWriter sw, int indentChange)
        {
            var parenthesize = !_target.IsPrimaryExpression;

            if (parenthesize)
            {
                sw.Write("(");
            }

            _target.Dump(sw, indentChange);

            if (parenthesize)
            {
                sw.Write(")");
            }

            sw.Write(".");
            sw.Write(Method != null ? Method.Name : MethodName);

            if (_typeArguments.Count != 0)
            {
                sw.Write("<");
                for (var i = 0; i < _typeArguments.Count; i++)
                {
                    var typeArgument = _typeArguments[i];

                    if (i != 0)
                    {
                        sw.Write(", ");
                    }

                    typeArgument.Dump(sw, indentChange);
                }
                sw.Write(">");
            }

            sw.Write("(");

            for (var i = 0; i < _arguments.Count; i++)
            {
                var argument = _arguments[i];

                if (i != 0)
                {
                    sw.Write(", ");
                }

                argument.Dump(sw, indentChange);
            }

            sw.Write(")");
        }
示例#4
0
        public override void Dump(SourceWriter sw, int indentChange)
        {
            var parenthesize = !_target.IsPrimaryExpression;

            if (parenthesize)
            {
                sw.Write("(");
            }

            _target.Dump(sw, indentChange);

            if (parenthesize)
            {
                sw.Write(")");
            }

            sw.Write("[");

            var lastStartLine = Span.Start.Line;

            for (var i = 0; i < _arguments.Count; i++)
            {
                var argument = _arguments[i];

                if (i != 0)
                {
                    sw.Write(",");

                    if (argument.Span.Start.Line != lastStartLine)
                    {
                        sw.WriteLine();
                        sw.Write(' ', argument.Span.Start.Column - 1 + indentChange);
                    }
                    else
                    {
                        sw.Write(" ");
                    }

                    lastStartLine = argument.Span.Start.Line;
                }

                argument.Dump(sw, indentChange);
            }

            sw.Write("]");
        }
示例#5
0
        public override void Dump(SourceWriter sw, int indentChange)
        {
            var declarationBuilder = new StringBuilder();

            declarationBuilder.Append("local ");
            declarationBuilder.Append(VariableName);
            declarationBuilder.Append(" = ");

            sw.Write(declarationBuilder.ToString());

            if (_initializer == null)
            {
                sw.Write("?");
                return;
            }

            var oldIndent = sw.Indent;
            var initializerIndentChange = indentChange;
            var initializerStart        = _initializer.Span.Start;

            if (initializerStart.Line == Span.Start.Line)
            {
                var declarationLength         = declarationBuilder.Length;
                var originalInitializerOffset = initializerStart.Column - 1;

                initializerIndentChange += (declarationLength - originalInitializerOffset) - sw.Indent;
            }
            else
            {
                sw.WriteLine();
                initializerIndentChange = initializerStart.Column - 1 - sw.Indent + indentChange;
            }

            sw.Indent += initializerIndentChange;

            try
            {
                _initializer.Dump(sw, initializerIndentChange);
            }
            finally
            {
                sw.Indent = oldIndent;
            }
        }
示例#6
0
        public override void Dump(SourceWriter sw, int indentChange)
        {
            if (_scope == null)
            {
                var parenthesizeParameters = ((Parameters.Count != 1) ||
                                              Parameters[0].HasExplicitType);

                if (parenthesizeParameters)
                {
                    sw.Write("(");
                }

                for (var i = 0; i < Parameters.Count; i++)
                {
                    if (i != 0)
                    {
                        sw.Write(", ");
                    }

                    DumpChild(Parameters[i], sw);
                }

                if (parenthesizeParameters)
                {
                    sw.Write(")");
                }

                sw.Write(" => ");

                if (_body != null)
                {
                    _body.Dump(sw, indentChange);
                }
            }
            else
            {
                var parenthesizeParameters = ((_scope.Parameters.Count != 1) ||
                                              !(_scope.Parameters[0] is ImplicitLambdaParameter));

                if (parenthesizeParameters)
                {
                    sw.Write("(");
                }

                for (var i = 0; i < _scope.Parameters.Count; i++)
                {
                    if (i != 0)
                    {
                        sw.Write(", ");
                    }

                    sw.Write(_scope.Parameters[i].Name);
                }

                if (parenthesizeParameters)
                {
                    sw.Write(")");
                }

                sw.Write(" => ");

                if (_body != null)
                {
                    _body.Dump(sw, indentChange);
                }
            }
        }