From 4580762b04bb1f74af48f4824f9c3451430f3f85 Mon Sep 17 00:00:00 2001 From: Edmond Winston <132081506+edmondwinston@users.noreply.github.com> Date: Tue, 26 Dec 2023 22:13:09 +0700 Subject: [PATCH] fix(fmt): stop adding extra lines between Go comments and templates (#351) Co-authored-by: Adrian Hesketh --- .version | 2 +- generator/generator.go | 9 ++++++ generator/generator_test.go | 22 ++++++++++++--- generator/test-css-usage/template.templ | 6 ---- generator/test-css-usage/template_templ.go | 7 ----- parser/v2/types.go | 32 ++++++++++++++-------- parser/v2/types_test.go | 19 +++++++++++++ 7 files changed, 68 insertions(+), 29 deletions(-) diff --git a/.version b/.version index 4bfdbd046..994d91615 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -0.2.503 \ No newline at end of file +0.2.507 \ No newline at end of file diff --git a/generator/generator.go b/generator/generator.go index a4194771a..cb6c35e35 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -292,6 +292,15 @@ func (g *generator) writeGoExpression(n parser.TemplateFileGoExpression) (err er return err } g.sourceMap.Add(n.Expression, r) + v := n.Expression.Value + lineSlice := strings.Split(v, "\n") + lastLine := lineSlice[len(lineSlice)-1] + if strings.HasPrefix(lastLine, "//") { + if _, err = g.w.WriteIndent(0, "\n"); err != nil { + return err + } + return err + } if _, err = g.w.WriteIndent(0, "\n\n"); err != nil { return err } diff --git a/generator/generator_test.go b/generator/generator_test.go index 562a2e827..fcf139e19 100644 --- a/generator/generator_test.go +++ b/generator/generator_test.go @@ -14,17 +14,16 @@ func TestGeneratorSourceMap(t *testing.T) { w: NewRangeWriter(w), sourceMap: parser.NewSourceMap(), } - exp := parser.TemplateFileGoExpression{ + invalidExp := parser.TemplateFileGoExpression{ Expression: parser.Expression{ Value: "line1\nline2", }, } - err := g.writeGoExpression(exp) - if err != nil { + if err := g.writeGoExpression(invalidExp); err != nil { t.Fatalf("failed to write Go expression: %v", err) } - expected := parser.NewPosition(0, 0, 0) + expected := parser.NewPosition(0, 0, 0) actual, ok := g.sourceMap.TargetPositionFromSource(0, 0) if !ok { t.Errorf("failed to get matching target") @@ -32,4 +31,19 @@ func TestGeneratorSourceMap(t *testing.T) { if diff := cmp.Diff(expected, actual); diff != "" { t.Errorf("unexpected target:\n%v", diff) } + + withCommentExp := parser.TemplateFileGoExpression{ + Expression: parser.Expression{ + Value: `package main + +// A comment. +templ h1() { +

+} + `, + }, + } + if err := g.writeGoExpression(withCommentExp); err != nil { + t.Fatalf("failed to write Go expression: %v", err) + } } diff --git a/generator/test-css-usage/template.templ b/generator/test-css-usage/template.templ index a71d0bfd0..262f27473 100644 --- a/generator/test-css-usage/template.templ +++ b/generator/test-css-usage/template.templ @@ -1,7 +1,6 @@ package testcssusage // Constant class. - templ StyleTagsAreSupported() {