Skip to content

Commit 1ad5956

Browse files
committed
go fix
1 parent 78ccd19 commit 1ad5956

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+220
-226
lines changed

compile/ast/ast.go

Lines changed: 60 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package ast
2121

2222
import (
2323
"fmt"
24+
"strings"
2425

2526
"github.com/apmckinlay/gsuneido/compile/lexer"
2627
tok "github.com/apmckinlay/gsuneido/compile/tokens"
@@ -299,22 +300,24 @@ type Nary struct {
299300
}
300301

301302
func (a *Nary) String() string {
302-
s := "Nary(" + a.Tok.String()
303+
var s strings.Builder
304+
s.WriteString("Nary(" + a.Tok.String())
303305
for _, e := range a.Exprs {
304-
s += " " + e.String()
306+
s.WriteString(" " + e.String())
305307
}
306-
return s + ")"
308+
return s.String() + ")"
307309
}
308310

309311
func (a *Nary) Echo() string {
310312
if len(a.Exprs) == 0 {
311313
return ""
312314
}
313-
s := a.Exprs[0].Echo()
315+
var s strings.Builder
316+
s.WriteString(a.Exprs[0].Echo())
314317
for _, e := range a.Exprs[1:] {
315-
s += tokEcho[a.Tok] + e.Echo()
318+
s.WriteString(tokEcho[a.Tok] + e.Echo())
316319
}
317-
return s
320+
return s.String()
318321
}
319322

320323
func (a *Nary) Children(fn func(Node) Node) {
@@ -413,27 +416,29 @@ type In struct {
413416
}
414417

415418
func (a *In) String() string {
416-
s := "In(" + a.E.String() + " ["
419+
var s strings.Builder
420+
s.WriteString("In(" + a.E.String() + " [")
417421
sep := ""
418422
for _, e := range a.Exprs {
419-
s += sep + e.String()
423+
s.WriteString(sep + e.String())
420424
sep = " "
421425
}
422-
return s + "])"
426+
return s.String() + "])"
423427
}
424428

425429
func (a *In) Echo() string {
426430
return a.E.Echo() + a.echo()
427431
}
428432

429433
func (a *In) echo() string {
430-
s := " in ("
434+
var s strings.Builder
435+
s.WriteString(" in (")
431436
sep := ""
432437
for _, e := range a.Exprs {
433-
s += sep + e.Echo()
438+
s.WriteString(sep + e.Echo())
434439
sep = ", "
435440
}
436-
return s + ")"
441+
return s.String() + ")"
437442
}
438443

439444
func (a *In) Children(fn func(Node) Node) {
@@ -482,21 +487,23 @@ type Call struct {
482487
}
483488

484489
func (a *Call) String() string {
485-
s := "Call(" + a.Fn.String()
490+
var s strings.Builder
491+
s.WriteString("Call(" + a.Fn.String())
486492
for _, arg := range a.Args {
487-
s += " " + arg.String()
493+
s.WriteString(" " + arg.String())
488494
}
489-
return s + ")"
495+
return s.String() + ")"
490496
}
491497

492498
func (a *Call) Echo() string {
493-
s := a.Fn.Echo() + "("
499+
var s strings.Builder
500+
s.WriteString(a.Fn.Echo() + "(")
494501
sep := ""
495502
for _, arg := range a.Args {
496-
s += sep + arg.Echo()
503+
s.WriteString(sep + arg.Echo())
497504
sep = ", "
498505
}
499-
return s + ")"
506+
return s.String() + ")"
500507
}
501508

502509
func (a *Call) Children(fn func(Node) Node) {
@@ -555,26 +562,27 @@ func (a *Function) String() string {
555562
}
556563

557564
func (a *Function) str(which string) string {
558-
s := which + "(" + params(a.Params)
565+
var s strings.Builder
566+
s.WriteString(which + "(" + params(a.Params))
559567
for _, stmt := range a.Body {
560568
if stmt != nil {
561-
s += "\n\t" + stmt.String()
569+
s.WriteString("\n\t" + stmt.String())
562570
}
563571
}
564-
return s + ")"
572+
return s.String() + ")"
565573
}
566574

567575
func params(ps []Param) string {
568-
s := ""
576+
var s strings.Builder
569577
sep := ""
570578
for _, p := range ps {
571579
if sep == "" && p.String() == "this" {
572580
continue
573581
}
574-
s += sep + p.String()
582+
s.WriteString(sep + p.String())
575583
sep = ","
576584
}
577-
return s
585+
return s.String()
578586
}
579587

580588
func childStmt(fn func(Node) Node, pstmt *Statement) {
@@ -680,13 +688,14 @@ func (a *Compound) String() string {
680688
if len(a.Body) == 1 {
681689
return a.Body[0].String()
682690
}
683-
s := "{\n"
691+
var s strings.Builder
692+
s.WriteString("{\n")
684693
for _, stmt := range a.Body {
685694
if stmt != nil {
686-
s += stmt.String() + "\n"
695+
s.WriteString(stmt.String() + "\n")
687696
}
688697
}
689-
return s + "}"
698+
return s.String() + "}"
690699
}
691700

692701
func (a *Compound) Children(fn func(Node) Node) {
@@ -845,23 +854,24 @@ type For struct {
845854
}
846855

847856
func (a *For) String() string {
848-
s := "For("
857+
var s strings.Builder
858+
s.WriteString("For(")
849859
sep := ""
850860
for _, e := range a.Init {
851-
s += sep + e.String()
861+
s.WriteString(sep + e.String())
852862
sep = ","
853863
}
854-
s += "; "
864+
s.WriteString("; ")
855865
if a.Cond != nil {
856-
s += a.Cond.String()
866+
s.WriteString(a.Cond.String())
857867
}
858-
s += "; "
868+
s.WriteString("; ")
859869
sep = ""
860870
for _, e := range a.Inc {
861-
s += sep + e.String()
871+
s.WriteString(sep + e.String())
862872
sep = ","
863873
}
864-
return s + "\n" + a.Body.String() + ")"
874+
return s.String() + "\n" + a.Body.String() + ")"
865875
}
866876

867877
func (a *For) Children(fn func(Node) Node) {
@@ -941,11 +951,12 @@ type MultiAssign struct {
941951
}
942952

943953
func (a *MultiAssign) String() string {
944-
s := "MultiAssign("
954+
var s strings.Builder
955+
s.WriteString("MultiAssign(")
945956
for _, e := range a.Lhs {
946-
s += e.Echo() + " "
957+
s.WriteString(e.Echo() + " ")
947958
}
948-
return s + a.Rhs.String() + ")"
959+
return s.String() + a.Rhs.String() + ")"
949960
}
950961

951962
func (a *MultiAssign) Children(fn func(Node) Node) {
@@ -973,37 +984,39 @@ type Case struct {
973984
}
974985

975986
func (a *Switch) String() string {
976-
s := "Switch(" + a.E.String()
987+
var s strings.Builder
988+
s.WriteString("Switch(" + a.E.String())
977989
for _, c := range a.Cases {
978-
s += "\n" + c.String()
990+
s.WriteString("\n" + c.String())
979991
}
980992
if a.Default != nil {
981993
if len(a.Default) == 0 {
982-
s += "\n()"
994+
s.WriteString("\n()")
983995
}
984996
for _, stmt := range a.Default {
985997
if stmt != nil {
986-
s += "\n" + stmt.String()
998+
s.WriteString("\n" + stmt.String())
987999
}
9881000
}
9891001
}
990-
return s + ")"
1002+
return s.String() + ")"
9911003
}
9921004

9931005
func (a *Case) String() string {
994-
s := "Case("
1006+
var s strings.Builder
1007+
s.WriteString("Case(")
9951008
sep := ""
9961009
for _, e := range a.Exprs {
997-
s += sep + e.String()
1010+
s.WriteString(sep + e.String())
9981011
sep = ","
9991012
}
10001013
for _, stmt := range a.Body {
10011014
if stmt != nil {
1002-
s += "\n" + stmt.String()
1015+
s.WriteString("\n" + stmt.String())
10031016
}
10041017
}
1005-
s += ")"
1006-
return s
1018+
s.WriteString(")")
1019+
return s.String()
10071020
}
10081021

10091022
func (a *Switch) Children(fn func(Node) Node) {

compile/check/check.go

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ package check
1111

1212
import (
1313
"fmt"
14+
"maps"
15+
"slices"
1416
"sort"
1517
"strconv"
1618
"strings"
@@ -470,9 +472,7 @@ func (ck *Check) block(b *ast.Block, init set) set {
470472
delete(ck.AllUsed, id)
471473
}
472474
// restore shadowed variables
473-
for id, n := range allInit {
474-
ck.AllInit[id] = n
475-
}
475+
maps.Copy(ck.AllInit, allInit)
476476
for id := range allUsed {
477477
ck.AllUsed[id] = struct{}{}
478478
}
@@ -513,28 +513,22 @@ func (ck *Check) hasBreak(stmt ast.Statement) bool {
513513
case *ast.Break:
514514
return true
515515
case *ast.Compound:
516-
for _, s := range stmt.Body {
517-
if ck.hasBreak(s) {
518-
return true
519-
}
516+
if slices.ContainsFunc(stmt.Body, ck.hasBreak) {
517+
return true
520518
}
521519
case *ast.If:
522520
return ck.hasBreak(stmt.Then) || ck.hasBreak(stmt.Else)
523521
case *ast.TryCatch:
524522
return ck.hasBreak(stmt.Try) || ck.hasBreak(stmt.Catch)
525523
case *ast.Switch:
526524
for _, c := range stmt.Cases {
527-
for _, s := range c.Body {
528-
if ck.hasBreak(s) {
529-
return true
530-
}
525+
if slices.ContainsFunc(c.Body, ck.hasBreak) {
526+
return true
531527
}
532528
}
533529
if stmt.Default != nil {
534-
for _, s := range stmt.Default {
535-
if ck.hasBreak(s) {
536-
return true
537-
}
530+
if slices.ContainsFunc(stmt.Default, ck.hasBreak) {
531+
return true
538532
}
539533
}
540534
// Don't recurse into nested loops - breaks in nested loops don't affect the outer loop

compile/check/set.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
package check
55

6+
import "slices"
7+
68
import "github.com/apmckinlay/gsuneido/util/slc"
79

810
// set is a specialized set of strings in a slice.
@@ -24,12 +26,7 @@ func (ls set) with(s string) set {
2426

2527
// has returns whether the set contains a string
2628
func (ls set) has(s string) bool {
27-
for _, t := range ls {
28-
if s == t {
29-
return true
30-
}
31-
}
32-
return false
29+
return slices.Contains(ls, s)
3330
}
3431

3532
// union returns ls extended with elements of ls2 not already in ls

compile/fold_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package compile
77

88
import (
99
"sort"
10+
"strings"
1011
"testing"
1112

1213
"github.com/apmckinlay/gsuneido/compile/ast"
@@ -54,15 +55,15 @@ func TestPropFold(t *testing.T) {
5455
p := NewParser("function () {\n" + src + "\n}")
5556
f := p.Function()
5657
f = ast.PropFold(f) // this is what we're testing
57-
s := ""
58+
var s strings.Builder
5859
sep := ""
5960
for _, stmt := range f.Body {
6061
if stmt != nil {
61-
s += sep + stmt.String()
62+
s.WriteString(sep + stmt.String())
6263
sep = "\n"
6364
}
6465
}
65-
assert.T(t).This(s).Like(expected)
66+
assert.T(t).This(s.String()).Like(expected)
6667
}
6768
utest := func(src string) {
6869
t.Helper()

compile/parse_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,13 @@ func TestParseStatements(t *testing.T) {
250250
p.InitFuncInfo()
251251
stmts := p.statements()
252252
assert.T(t).This(p.Token).Is(tok.RCurly)
253-
s := ""
253+
var s strings.Builder
254254
sep := ""
255255
for _, stmt := range stmts {
256-
s += sep + stmt.String()
256+
s.WriteString(sep + stmt.String())
257257
sep = "\n"
258258
}
259-
assert.T(t).This(s).Like(expected)
259+
assert.T(t).This(s.String()).Like(expected)
260260
}
261261
test("x=123;;", "Binary(Eq x 123)\n{}")
262262
test("a, b, c = f()", "MultiAssign(a b c Call(f))")

core/deepequal.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ func (ip *inProgressStack) has(x, y Value) bool {
7474
var order [types.N]types.Type
7575

7676
func init() {
77-
for i := types.Boolean; i < types.N; i++ {
77+
for i := range types.N {
7878
order[i] = i
7979
}
8080
order[types.Record] = types.Object

core/disasm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ func DisasmMixed(fn *SuFunc, src string) string {
3838
cp := 0
3939
printSrc := func(in, s string) {
4040
pre := fmt.Sprintf("%s%5d: ", in, sp)
41-
for _, line := range strings.Split(s, "\n") {
41+
for line := range strings.SplitSeq(s, "\n") {
4242
if line = strings.TrimSpace(line); line != "" {
4343
fmt.Fprintf(&sb, "%s%s\n", pre, line)
4444
pre = in + " "

0 commit comments

Comments
 (0)