diff --git a/ast/ast.go b/ast/ast.go index da9c27d..00af7c6 100644 --- a/ast/ast.go +++ b/ast/ast.go @@ -528,6 +528,9 @@ func (t *SQLToken) NoQuateString() string { case *token.SQLWord: return v.NoQuateString() case string: + if t.Kind == token.Comment { + return "--" + v + "\n" + } return v default: return " " @@ -539,6 +542,9 @@ func (t *SQLToken) Render(opts *RenderOptions) string { case *token.SQLWord: return renderSQLWord(v, opts) case string: + if t.Kind == token.Comment { + return "--" + v + "\n" + } return v default: return " " diff --git a/internal/formatter/formatter.go b/internal/formatter/formatter.go index 42b264e..4bffe52 100644 --- a/internal/formatter/formatter.go +++ b/internal/formatter/formatter.go @@ -235,6 +235,15 @@ func formatItem(node ast.Node, env *formatEnvironment) ast.Node { results = append(results, linebreakNode) results = append(results, env.genIndent()...) } + breakStatementAfterMatcher := astutil.NodeMatcher{ + ExpectTokens: []token.Kind{ + token.Semicolon, + }, + } + if breakStatementAfterMatcher.IsMatch(node) { + results = append(results, linebreakNode) + env.indentLevelDown() + } return &ast.ItemWith{Toks: results} } diff --git a/parser/parser.go b/parser/parser.go index 8215cef..bc18494 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -79,9 +79,6 @@ func NewParser(src io.Reader, d dialect.Dialect) (*Parser, error) { parsed := []ast.Node{} for _, tok := range tokens { - if tok.Kind == token.Comment { - continue - } parsed = append(parsed, ast.NewItem(tok)) }