private void RenderUnnamedConstructor(ConstructorNode n)
        {
            RenderAttributes(n);
            _visitor.Visit(n.AccessModifier ?? new KeywordNode("private"));
            _renderer.Append(" ");
            _visitor.Visit(n.ClassName);
            RenderNormalParameters(n);
            RenderThisArgs(n);

            _renderer.AppendLineAndIndent();
            _renderer.Append("{");
            _renderer.IncreaseIndent();
            _renderer.AppendLineAndIndent();
            RenderStatements(n);

            _renderer.DecreaseIndent();
            _renderer.AppendLineAndIndent();
            _renderer.Append("}");
        }
示例#2
0
        // A couple methods here to delegate to OutputRenderer cleanly

        public void Append(string s) => _renderer.Append(s);
示例#3
0
        public void Render(NewNode n)
        {
            // Tries to output one of the following forms:
            // new {+}
            if (n.Type == null && n.Name == null && n.Arguments.IsNullOrEmpty() && !n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                RenderInitializers(n);
                return;
            }

            // new MyType {+}
            if (n.Type != null && n.Name == null && n.Arguments.IsNullOrEmpty() && !n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                _renderer.Append(" ");
                _visitor.Visit(n.Type);
                RenderInitializers(n);
                return;
            }

            // new MyType()
            if (n.Type != null && n.Name == null && n.Arguments.IsNullOrEmpty() && n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                _renderer.Append(" ");
                _visitor.Visit(n.Type);
                RenderArguments(n);
                return;
            }

            // new MyType(+)
            if (n.Type != null && n.Name == null && !n.Arguments.IsNullOrEmpty() && n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                _renderer.Append(" ");
                _visitor.Visit(n.Type);
                RenderArguments(n);
                return;
            }

            // new MyType(+) {+}
            if (n.Type != null && n.Name == null && !n.Arguments.IsNullOrEmpty() && !n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                _renderer.Append(" ");
                _visitor.Visit(n.Type);
                RenderArguments(n);
                RenderInitializers(n);
                return;
            }

            // new MyType:Name(+) -> new MyType(new MyType._NewArgs_Name(*))
            if (n.Type != null && n.Name != null && n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                _renderer.Append(" ");
                _visitor.Visit(n.Type);
                _renderer.Append("(new ");
                _visitor.Visit(n.Type);
                _renderer.Append(".__ctorArgs_");
                _visitor.Visit(n.Name);
                RenderArguments(n);
                _renderer.Append(")");
                return;
            }

            // new MyType:Name(+) {+} -> new MyType(new MyType._NewArgs_Name(*)) {+}
            if (n.Type != null && n.Name != null && !n.Arguments.IsNullOrEmpty() && !n.Initializers.IsNullOrEmpty())
            {
                _renderer.Append("new");
                _renderer.Append(" ");
                _visitor.Visit(n.Type);
                _renderer.Append("(new ");
                _visitor.Visit(n.Type);
                _renderer.Append(".__ctorArgs_");
                _visitor.Visit(n.Name);
                RenderArguments(n);
                _renderer.Append(")");
                RenderInitializers(n);
                return;
            }

            throw new CSharpTranspileException("Could not render NewNode");
        }