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("}"); }
// A couple methods here to delegate to OutputRenderer cleanly public void Append(string s) => _renderer.Append(s);
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"); }