goscript 0.0.38 → 0.0.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compiler/analysis.go +15 -6
- package/compiler/compiler.go +184 -34
- package/compiler/expr-call.go +19 -9
- package/compiler/field.go +17 -3
- package/compiler/gs_dependencies_test.go +80 -0
- package/compiler/lit.go +12 -6
- package/compiler/output.go +10 -4
- package/compiler/spec.go +15 -2
- package/compiler/type-assert.go +111 -21
- package/compiler/type.go +37 -8
- package/dist/gs/builtin/builtin.d.ts +55 -0
- package/dist/gs/builtin/builtin.js +213 -0
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/slice.js +13 -0
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.d.ts +56 -0
- package/dist/gs/bytes/buffer.gs.js +611 -0
- package/dist/gs/bytes/buffer.gs.js.map +1 -0
- package/dist/gs/bytes/bytes.gs.d.ts +78 -0
- package/dist/gs/bytes/bytes.gs.js +1107 -0
- package/dist/gs/bytes/bytes.gs.js.map +1 -0
- package/dist/gs/bytes/index.d.ts +4 -0
- package/dist/gs/bytes/index.js +5 -0
- package/dist/gs/bytes/index.js.map +1 -0
- package/dist/gs/bytes/iter.gs.d.ts +9 -0
- package/dist/gs/bytes/iter.gs.js +143 -0
- package/dist/gs/bytes/iter.gs.js.map +1 -0
- package/dist/gs/bytes/reader.gs.d.ts +34 -0
- package/dist/gs/bytes/reader.gs.js +198 -0
- package/dist/gs/bytes/reader.gs.js.map +1 -0
- package/dist/gs/fmt/fmt.d.ts +49 -0
- package/dist/gs/fmt/fmt.js +322 -0
- package/dist/gs/fmt/fmt.js.map +1 -0
- package/dist/gs/fmt/index.d.ts +1 -0
- package/dist/gs/fmt/index.js +2 -0
- package/dist/gs/fmt/index.js.map +1 -0
- package/dist/gs/internal/bytealg/index.d.ts +14 -2
- package/dist/gs/internal/bytealg/index.js +114 -8
- package/dist/gs/internal/bytealg/index.js.map +1 -1
- package/dist/gs/path/filepath/index.d.ts +3 -0
- package/dist/gs/path/filepath/index.js +3 -0
- package/dist/gs/path/filepath/index.js.map +1 -0
- package/dist/gs/path/filepath/match.d.ts +3 -0
- package/dist/gs/path/filepath/match.js +212 -0
- package/dist/gs/path/filepath/match.js.map +1 -0
- package/dist/gs/path/filepath/path.d.ts +25 -0
- package/dist/gs/path/filepath/path.js +265 -0
- package/dist/gs/path/filepath/path.js.map +1 -0
- package/dist/gs/reflect/deepequal.d.ts +2 -1
- package/dist/gs/reflect/deepequal.js +5 -53
- package/dist/gs/reflect/deepequal.js.map +1 -1
- package/dist/gs/reflect/map.d.ts +14 -8
- package/dist/gs/reflect/map.js +15 -11
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +17 -9
- package/dist/gs/reflect/type.js +1 -1
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/value.js +15 -6
- package/dist/gs/reflect/value.js.map +1 -1
- package/dist/gs/reflect/visiblefields.js +18 -12
- package/dist/gs/reflect/visiblefields.js.map +1 -1
- package/dist/gs/sort/index.d.ts +4 -0
- package/dist/gs/sort/index.js +4 -0
- package/dist/gs/sort/index.js.map +1 -0
- package/dist/gs/sort/search.gs.d.ts +6 -0
- package/dist/gs/sort/search.gs.js +125 -0
- package/dist/gs/sort/search.gs.js.map +1 -0
- package/dist/gs/sort/slice.gs.d.ts +4 -0
- package/dist/gs/sort/slice.gs.js +49 -0
- package/dist/gs/sort/slice.gs.js.map +1 -0
- package/dist/gs/sort/sort.gs.d.ts +37 -0
- package/dist/gs/sort/sort.gs.js +203 -0
- package/dist/gs/sort/sort.gs.js.map +1 -0
- package/dist/gs/unicode/utf8/utf8.d.ts +1 -1
- package/dist/gs/unicode/utf8/utf8.js +4 -2
- package/dist/gs/unicode/utf8/utf8.js.map +1 -1
- package/gs/builtin/builtin.ts +236 -0
- package/gs/builtin/slice.ts +17 -1
- package/gs/bytes/buffer.gs.ts +614 -0
- package/gs/bytes/bytes.gs.ts +1288 -0
- package/gs/bytes/godoc.txt +69 -0
- package/gs/bytes/index.ts +69 -0
- package/gs/bytes/iter.gs.ts +149 -0
- package/gs/bytes/metadata.go +12 -0
- package/gs/bytes/reader.gs.ts +230 -0
- package/gs/fmt/fmt.ts +407 -0
- package/gs/fmt/godoc.txt +382 -0
- package/gs/fmt/index.ts +31 -0
- package/gs/fmt/metadata.go +7 -0
- package/gs/internal/bytealg/index.ts +125 -10
- package/gs/internal/metadata.go +7 -0
- package/gs/io/metadata.go +11 -0
- package/gs/maps/metadata.go +8 -0
- package/gs/math/metadata.go +7 -0
- package/gs/os/metadata.go +17 -0
- package/gs/path/filepath/godoc.txt +35 -0
- package/gs/path/filepath/index.ts +27 -0
- package/gs/path/filepath/match.test.ts +274 -0
- package/gs/path/filepath/match.ts +249 -0
- package/gs/path/filepath/path.test.ts +246 -0
- package/gs/path/filepath/path.ts +328 -0
- package/gs/path/metadata.go +8 -0
- package/gs/reflect/deepequal.test.ts +41 -0
- package/gs/reflect/deepequal.ts +19 -4
- package/gs/reflect/map.test.ts +30 -0
- package/gs/reflect/map.ts +22 -18
- package/gs/reflect/metadata.go +7 -0
- package/gs/reflect/type.ts +19 -15
- package/gs/reflect/value.ts +21 -7
- package/gs/reflect/visiblefields.ts +17 -13
- package/gs/sort/godoc.txt +27 -0
- package/gs/sort/index.ts +24 -0
- package/gs/sort/search.gs.ts +128 -0
- package/gs/sort/slice.gs.ts +59 -0
- package/gs/sort/sort.gs.ts +227 -0
- package/gs/strconv/metadata.go +7 -0
- package/gs/strings/metadata.go +11 -0
- package/gs/sync/metadata.go +7 -0
- package/gs/unicode/utf8/utf8.ts +8 -5
- package/package.json +1 -1
- package/dist/gs/internal/testlog/index.d.ts +0 -1
- package/dist/gs/internal/testlog/index.js +0 -5
- package/dist/gs/internal/testlog/index.js.map +0 -1
- package/dist/gs/maps/iter.gs.d.ts +0 -7
- package/dist/gs/maps/iter.gs.js +0 -65
- package/dist/gs/maps/iter.gs.js.map +0 -1
- package/dist/gs/maps/maps.gs.d.ts +0 -7
- package/dist/gs/maps/maps.gs.js +0 -79
- package/dist/gs/maps/maps.gs.js.map +0 -1
- package/dist/gs/reflect/abi.d.ts +0 -59
- package/dist/gs/reflect/abi.gs.d.ts +0 -59
- package/dist/gs/reflect/abi.gs.js +0 -79
- package/dist/gs/reflect/abi.gs.js.map +0 -1
- package/dist/gs/reflect/abi.js +0 -79
- package/dist/gs/reflect/abi.js.map +0 -1
- package/dist/gs/reflect/badlinkname.d.ts +0 -52
- package/dist/gs/reflect/badlinkname.gs.d.ts +0 -52
- package/dist/gs/reflect/badlinkname.gs.js +0 -72
- package/dist/gs/reflect/badlinkname.gs.js.map +0 -1
- package/dist/gs/reflect/badlinkname.js +0 -72
- package/dist/gs/reflect/badlinkname.js.map +0 -1
- package/dist/gs/reflect/deepequal.gs.d.ts +0 -25
- package/dist/gs/reflect/deepequal.gs.js +0 -308
- package/dist/gs/reflect/deepequal.gs.js.map +0 -1
- package/dist/gs/reflect/float32reg_generic.gs.d.ts +0 -2
- package/dist/gs/reflect/float32reg_generic.gs.js +0 -10
- package/dist/gs/reflect/float32reg_generic.gs.js.map +0 -1
- package/dist/gs/reflect/index.gs.d.ts +0 -1
- package/dist/gs/reflect/index.gs.js +0 -3
- package/dist/gs/reflect/index.gs.js.map +0 -1
- package/dist/gs/reflect/iter.gs.d.ts +0 -3
- package/dist/gs/reflect/iter.gs.js +0 -24
- package/dist/gs/reflect/iter.gs.js.map +0 -1
- package/dist/gs/reflect/makefunc.gs.d.ts +0 -34
- package/dist/gs/reflect/makefunc.gs.js +0 -288
- package/dist/gs/reflect/makefunc.gs.js.map +0 -1
- package/dist/gs/reflect/map_swiss.gs.d.ts +0 -14
- package/dist/gs/reflect/map_swiss.gs.js +0 -70
- package/dist/gs/reflect/map_swiss.gs.js.map +0 -1
- package/dist/gs/reflect/reflect.gs.d.ts +0 -132
- package/dist/gs/reflect/reflect.gs.js +0 -437
- package/dist/gs/reflect/reflect.gs.js.map +0 -1
- package/dist/gs/reflect/swapper.gs.d.ts +0 -1
- package/dist/gs/reflect/swapper.gs.js +0 -32
- package/dist/gs/reflect/swapper.gs.js.map +0 -1
- package/dist/gs/reflect/type.gs.d.ts +0 -4
- package/dist/gs/reflect/type.gs.js +0 -21
- package/dist/gs/reflect/type.gs.js.map +0 -1
- package/dist/gs/reflect/value.gs.d.ts +0 -4
- package/dist/gs/reflect/value.gs.js +0 -12
- package/dist/gs/reflect/value.gs.js.map +0 -1
- package/dist/gs/reflect/visiblefields.gs.d.ts +0 -3
- package/dist/gs/reflect/visiblefields.gs.js +0 -123
- package/dist/gs/reflect/visiblefields.gs.js.map +0 -1
- package/dist/gs/stringslite/index.d.ts +0 -1
- package/dist/gs/stringslite/index.js +0 -2
- package/dist/gs/stringslite/index.js.map +0 -1
- package/dist/gs/stringslite/strings.d.ts +0 -11
- package/dist/gs/stringslite/strings.js +0 -67
- package/dist/gs/stringslite/strings.js.map +0 -1
package/compiler/type-assert.go
CHANGED
|
@@ -47,22 +47,32 @@ func (c *GoToTSCompiler) writeTypeAssert(lhs []ast.Expr, typeAssertExpr *ast.Typ
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
var okIsBlank bool
|
|
50
|
-
var
|
|
50
|
+
var okIsSelectorExpr bool
|
|
51
|
+
var okIdent *ast.Ident
|
|
52
|
+
var okSelectorExpr *ast.SelectorExpr
|
|
51
53
|
|
|
52
54
|
okExpr := lhs[1]
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
|
|
56
|
+
// Handle different types of ok expressions
|
|
57
|
+
switch okE := okExpr.(type) {
|
|
58
|
+
case *ast.Ident:
|
|
59
|
+
okIdent = okE
|
|
60
|
+
okIsBlank = okIdent.Name == "_"
|
|
61
|
+
case *ast.SelectorExpr:
|
|
62
|
+
okSelectorExpr = okE
|
|
63
|
+
okIsSelectorExpr = true
|
|
64
|
+
okIsBlank = false // Selector expressions can't be blank
|
|
65
|
+
default:
|
|
66
|
+
return fmt.Errorf("ok expression must be an identifier or selector expression, got: %T", okExpr)
|
|
56
67
|
}
|
|
57
|
-
okIsBlank = okIdent.Name == "_"
|
|
58
|
-
okName = okIdent.Name
|
|
59
68
|
|
|
60
69
|
valueExpr := lhs[0]
|
|
61
70
|
|
|
62
71
|
// Determine if 'ok' variable is new in 'tok == token.DEFINE' context.
|
|
63
72
|
// This uses types.Info.Defs to see if the identifier is defined by this statement.
|
|
64
73
|
var okIsNewInDefine bool
|
|
65
|
-
if tok == token.DEFINE && !okIsBlank {
|
|
74
|
+
if tok == token.DEFINE && !okIsBlank && !okIsSelectorExpr {
|
|
75
|
+
// Only applies to identifiers, not selector expressions
|
|
66
76
|
if c.pkg.TypesInfo.Defs[okIdent] != nil {
|
|
67
77
|
okIsNewInDefine = true
|
|
68
78
|
}
|
|
@@ -83,6 +93,64 @@ func (c *GoToTSCompiler) writeTypeAssert(lhs []ast.Expr, typeAssertExpr *ast.Typ
|
|
|
83
93
|
}
|
|
84
94
|
}
|
|
85
95
|
|
|
96
|
+
// For selector expressions as ok, we need to use temporary variables approach
|
|
97
|
+
if okIsSelectorExpr {
|
|
98
|
+
// Use temporary variables approach similar to SelectorExpr case
|
|
99
|
+
tempValName := "_gs_ta_val_" // Fixed name for temporary value
|
|
100
|
+
tempOkName := "_gs_ta_ok_" // Fixed name for temporary ok status
|
|
101
|
+
|
|
102
|
+
// Declare temporary variables:
|
|
103
|
+
// let _gs_ta_val_: AssertedTypeTS;
|
|
104
|
+
c.tsw.WriteLiterally("let ")
|
|
105
|
+
c.tsw.WriteLiterally(tempValName)
|
|
106
|
+
c.tsw.WriteLiterally(": ")
|
|
107
|
+
c.WriteTypeExpr(assertedType) // TypeScript type for assertedType
|
|
108
|
+
c.tsw.WriteLine("")
|
|
109
|
+
|
|
110
|
+
// let _gs_ta_ok_: boolean;
|
|
111
|
+
c.tsw.WriteLiterally("let ")
|
|
112
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
113
|
+
c.tsw.WriteLiterally(": boolean")
|
|
114
|
+
c.tsw.WriteLine("")
|
|
115
|
+
|
|
116
|
+
// Perform type assertion into temporary variables:
|
|
117
|
+
// ({ value: _gs_ta_val_, ok: _gs_ta_ok_ } = $.typeAssert<AssertedTypeTS>(expr, "GoTypeStr"));
|
|
118
|
+
c.tsw.WriteLiterally("({ value: ")
|
|
119
|
+
c.tsw.WriteLiterally(tempValName)
|
|
120
|
+
c.tsw.WriteLiterally(", ok: ")
|
|
121
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
122
|
+
c.tsw.WriteLiterally(" } = $.typeAssert<")
|
|
123
|
+
c.WriteTypeExpr(assertedType) // Generic: <AssertedTypeTS>
|
|
124
|
+
c.tsw.WriteLiterally(">(")
|
|
125
|
+
if err := c.WriteValueExpr(interfaceExpr); err != nil { // Arg1: interfaceExpr
|
|
126
|
+
return fmt.Errorf("failed to write interface expression in type assertion call: %w", err)
|
|
127
|
+
}
|
|
128
|
+
c.tsw.WriteLiterally(", ")
|
|
129
|
+
c.writeTypeDescription(assertedType) // Arg2: type info for runtime
|
|
130
|
+
c.tsw.WriteLine("))")
|
|
131
|
+
|
|
132
|
+
// Assign temporary value to the value variable:
|
|
133
|
+
if !valueIsBlank {
|
|
134
|
+
if valueIsNewInDefine {
|
|
135
|
+
c.tsw.WriteLiterally("let ")
|
|
136
|
+
}
|
|
137
|
+
c.tsw.WriteLiterally(valueName)
|
|
138
|
+
c.tsw.WriteLiterally(" = ")
|
|
139
|
+
c.tsw.WriteLiterally(tempValName)
|
|
140
|
+
c.tsw.WriteLine("")
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// Assign temporary ok to the selector expression:
|
|
144
|
+
if err := c.WriteValueExpr(okSelectorExpr); err != nil {
|
|
145
|
+
return fmt.Errorf("failed to write ok selector expression in type assertion: %w", err)
|
|
146
|
+
}
|
|
147
|
+
c.tsw.WriteLiterally(" = ")
|
|
148
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
149
|
+
c.tsw.WriteLine("")
|
|
150
|
+
|
|
151
|
+
return nil
|
|
152
|
+
}
|
|
153
|
+
|
|
86
154
|
writeEndParen := false // For wrapping assignment in parens to make it an expression
|
|
87
155
|
letDestructure := false // True if 'let { value: v, ok: o } = ...' is appropriate
|
|
88
156
|
|
|
@@ -103,7 +171,7 @@ func (c *GoToTSCompiler) writeTypeAssert(lhs []ast.Expr, typeAssertExpr *ast.Typ
|
|
|
103
171
|
}
|
|
104
172
|
if !okIsBlank && okIsNewInDefine {
|
|
105
173
|
c.tsw.WriteLiterally("let ")
|
|
106
|
-
c.tsw.WriteLiterally(
|
|
174
|
+
c.tsw.WriteLiterally(okIdent.Name)
|
|
107
175
|
c.tsw.WriteLiterally(": boolean")
|
|
108
176
|
c.tsw.WriteLine("")
|
|
109
177
|
}
|
|
@@ -129,7 +197,7 @@ func (c *GoToTSCompiler) writeTypeAssert(lhs []ast.Expr, typeAssertExpr *ast.Typ
|
|
|
129
197
|
parts = append(parts, fmt.Sprintf("value: %s", valueName))
|
|
130
198
|
}
|
|
131
199
|
if !okIsBlank {
|
|
132
|
-
parts = append(parts, fmt.Sprintf("ok: %s",
|
|
200
|
+
parts = append(parts, fmt.Sprintf("ok: %s", okIdent.Name))
|
|
133
201
|
}
|
|
134
202
|
c.tsw.WriteLiterally(strings.Join(parts, ", "))
|
|
135
203
|
c.tsw.WriteLiterally(" } = $.typeAssert<")
|
|
@@ -193,13 +261,24 @@ func (c *GoToTSCompiler) writeTypeAssert(lhs []ast.Expr, typeAssertExpr *ast.Typ
|
|
|
193
261
|
|
|
194
262
|
// Assign temporary ok to the ok variable (e.g., okName = _gs_ta_ok_; or let okName = ...)
|
|
195
263
|
if !okIsBlank {
|
|
196
|
-
if
|
|
197
|
-
|
|
264
|
+
if okIsSelectorExpr {
|
|
265
|
+
// Assign to selector expression
|
|
266
|
+
if err := c.WriteValueExpr(okSelectorExpr); err != nil {
|
|
267
|
+
return fmt.Errorf("failed to write ok selector expression in type assertion: %w", err)
|
|
268
|
+
}
|
|
269
|
+
c.tsw.WriteLiterally(" = ")
|
|
270
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
271
|
+
c.tsw.WriteLine("")
|
|
272
|
+
} else {
|
|
273
|
+
// Assign to identifier
|
|
274
|
+
if okIsNewInDefine { // okIsNewInDefine was determined earlier based on tok == token.DEFINE and Defs check
|
|
275
|
+
c.tsw.WriteLiterally("let ")
|
|
276
|
+
}
|
|
277
|
+
c.tsw.WriteLiterally(okIdent.Name)
|
|
278
|
+
c.tsw.WriteLiterally(" = ")
|
|
279
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
280
|
+
c.tsw.WriteLine("")
|
|
198
281
|
}
|
|
199
|
-
c.tsw.WriteLiterally(okName)
|
|
200
|
-
c.tsw.WriteLiterally(" = ")
|
|
201
|
-
c.tsw.WriteLiterally(tempOkName)
|
|
202
|
-
c.tsw.WriteLine("")
|
|
203
282
|
}
|
|
204
283
|
|
|
205
284
|
case *ast.IndexExpr:
|
|
@@ -279,13 +358,24 @@ func (c *GoToTSCompiler) writeTypeAssert(lhs []ast.Expr, typeAssertExpr *ast.Typ
|
|
|
279
358
|
|
|
280
359
|
// Assign temporary ok to the ok variable (e.g., okName = _gs_ta_ok_N_; or let okName = ...)
|
|
281
360
|
if !okIsBlank {
|
|
282
|
-
if
|
|
283
|
-
|
|
361
|
+
if okIsSelectorExpr {
|
|
362
|
+
// Assign to selector expression
|
|
363
|
+
if err := c.WriteValueExpr(okSelectorExpr); err != nil {
|
|
364
|
+
return fmt.Errorf("failed to write ok selector expression in type assertion: %w", err)
|
|
365
|
+
}
|
|
366
|
+
c.tsw.WriteLiterally(" = ")
|
|
367
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
368
|
+
c.tsw.WriteLine("")
|
|
369
|
+
} else {
|
|
370
|
+
// Assign to identifier
|
|
371
|
+
if okIsNewInDefine { // okIsNewInDefine was determined earlier based on tok == token.DEFINE and Defs check
|
|
372
|
+
c.tsw.WriteLiterally("let ")
|
|
373
|
+
}
|
|
374
|
+
c.tsw.WriteLiterally(okIdent.Name)
|
|
375
|
+
c.tsw.WriteLiterally(" = ")
|
|
376
|
+
c.tsw.WriteLiterally(tempOkName)
|
|
377
|
+
c.tsw.WriteLine("")
|
|
284
378
|
}
|
|
285
|
-
c.tsw.WriteLiterally(okName)
|
|
286
|
-
c.tsw.WriteLiterally(" = ")
|
|
287
|
-
c.tsw.WriteLiterally(tempOkName)
|
|
288
|
-
c.tsw.WriteLine("")
|
|
289
379
|
}
|
|
290
380
|
|
|
291
381
|
default:
|
package/compiler/type.go
CHANGED
|
@@ -9,16 +9,18 @@ import (
|
|
|
9
9
|
)
|
|
10
10
|
|
|
11
11
|
// GoTypeContext specifies the context in which a Go type is being translated to TypeScript.
|
|
12
|
-
// This affects how certain types
|
|
12
|
+
// This affects how certain types are handled, particularly interfaces and pointers.
|
|
13
13
|
type GoTypeContext int
|
|
14
14
|
|
|
15
15
|
const (
|
|
16
16
|
// GoTypeContextGeneral is used for general type translation
|
|
17
17
|
GoTypeContextGeneral GoTypeContext = iota
|
|
18
18
|
// GoTypeContextFunctionReturn is used when translating types for function return values.
|
|
19
|
-
//
|
|
20
|
-
// `$.VarRef<ClassName> | null` because function return values cannot be addressed.
|
|
19
|
+
// This affects how pointer types are handled (no VarRef wrapper for structs).
|
|
21
20
|
GoTypeContextFunctionReturn
|
|
21
|
+
// GoTypeContextVariadicParam is used when translating types for variadic parameter elements.
|
|
22
|
+
// This affects how interface{} types are handled (no null prefix).
|
|
23
|
+
GoTypeContextVariadicParam
|
|
22
24
|
)
|
|
23
25
|
|
|
24
26
|
// WriteGoType is the main dispatcher for translating Go types to their TypeScript
|
|
@@ -29,6 +31,7 @@ const (
|
|
|
29
31
|
// - GoTypeContextGeneral: Standard type translation
|
|
30
32
|
// - GoTypeContextFunctionReturn: Special handling for function return types where
|
|
31
33
|
// pointer-to-struct types become `ClassName | null` instead of `$.VarRef<ClassName> | null`
|
|
34
|
+
// - GoTypeContextVariadicParam: Special handling for variadic parameter elements
|
|
32
35
|
//
|
|
33
36
|
// It handles nil types as 'any' with a comment, and dispatches to appropriate
|
|
34
37
|
// type-specific writers for all other recognized Go types.
|
|
@@ -59,7 +62,11 @@ func (c *GoToTSCompiler) WriteGoType(typ types.Type, context GoTypeContext) {
|
|
|
59
62
|
case *types.Chan:
|
|
60
63
|
c.WriteChannelType(t)
|
|
61
64
|
case *types.Interface:
|
|
62
|
-
|
|
65
|
+
if context == GoTypeContextVariadicParam {
|
|
66
|
+
c.writeInterfaceStructure(t, nil) // Skip the "null |" prefix for variadic params
|
|
67
|
+
} else {
|
|
68
|
+
c.WriteInterfaceType(t, nil) // No ast.InterfaceType available here
|
|
69
|
+
}
|
|
63
70
|
case *types.Signature:
|
|
64
71
|
c.WriteSignatureType(t)
|
|
65
72
|
case *types.Struct:
|
|
@@ -230,12 +237,34 @@ func (c *GoToTSCompiler) WriteNamedType(t *types.Named) {
|
|
|
230
237
|
if typePkg != nil && typePkg != c.pkg.Types {
|
|
231
238
|
// This type is from an imported package, find the import alias
|
|
232
239
|
typePkgPath := typePkg.Path()
|
|
240
|
+
typePkgName := typePkg.Name() // Get the actual package name
|
|
233
241
|
|
|
234
|
-
// Try to find the import alias by matching the package path
|
|
242
|
+
// Try to find the import alias by matching the package name or path
|
|
235
243
|
for importAlias := range c.analysis.Imports {
|
|
236
|
-
//
|
|
237
|
-
|
|
238
|
-
|
|
244
|
+
// First, try to match by the actual package name
|
|
245
|
+
if importAlias == typePkgName {
|
|
246
|
+
// Write the qualified name: importAlias.TypeName
|
|
247
|
+
c.tsw.WriteLiterally(importAlias)
|
|
248
|
+
c.tsw.WriteLiterally(".")
|
|
249
|
+
c.tsw.WriteLiterally(t.Obj().Name())
|
|
250
|
+
|
|
251
|
+
// For generic types, include type arguments
|
|
252
|
+
if t.TypeArgs() != nil && t.TypeArgs().Len() > 0 {
|
|
253
|
+
c.tsw.WriteLiterally("<")
|
|
254
|
+
for i := 0; i < t.TypeArgs().Len(); i++ {
|
|
255
|
+
if i > 0 {
|
|
256
|
+
c.tsw.WriteLiterally(", ")
|
|
257
|
+
}
|
|
258
|
+
c.WriteGoType(t.TypeArgs().At(i), GoTypeContextGeneral)
|
|
259
|
+
}
|
|
260
|
+
c.tsw.WriteLiterally(">")
|
|
261
|
+
}
|
|
262
|
+
return
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Fallback: try to match by path-based package name (for backwards compatibility)
|
|
266
|
+
pts := strings.Split(typePkgPath, "/")
|
|
267
|
+
defaultPkgName := pts[len(pts)-1]
|
|
239
268
|
if importAlias == defaultPkgName || importAlias == typePkgPath {
|
|
240
269
|
// Write the qualified name: importAlias.TypeName
|
|
241
270
|
c.tsw.WriteLiterally(importAlias)
|
|
@@ -34,3 +34,58 @@ export declare function normalizeBytes(bytes: Uint8Array | number[] | null | und
|
|
|
34
34
|
* @param s The slice to sort in place
|
|
35
35
|
*/
|
|
36
36
|
export declare function sortSlice<T extends string | number>(s: Slice<T>): void;
|
|
37
|
+
/**
|
|
38
|
+
* bytesEqual efficiently compares two byte slices for equality.
|
|
39
|
+
* Optimized for different byte representations.
|
|
40
|
+
*/
|
|
41
|
+
export declare function bytesEqual(a: Bytes | null, b: Bytes | null): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* bytesCompare compares two byte slices lexicographically.
|
|
44
|
+
* Returns -1 if a < b, 0 if a == b, +1 if a > b.
|
|
45
|
+
*/
|
|
46
|
+
export declare function bytesCompare(a: Bytes | null, b: Bytes | null): number;
|
|
47
|
+
/**
|
|
48
|
+
* bytesToArray converts any Bytes representation to a number array.
|
|
49
|
+
*/
|
|
50
|
+
export declare function bytesToArray(bytes: Bytes | null): number[];
|
|
51
|
+
/**
|
|
52
|
+
* bytesToUint8Array converts any Bytes representation to a Uint8Array.
|
|
53
|
+
*/
|
|
54
|
+
export declare function bytesToUint8Array(bytes: Bytes | null): Uint8Array;
|
|
55
|
+
/**
|
|
56
|
+
* bytesIndexOf finds the first occurrence of subslice in bytes.
|
|
57
|
+
* Returns -1 if not found.
|
|
58
|
+
*/
|
|
59
|
+
export declare function bytesIndexOf(bytes: Bytes | null, subslice: Bytes | null): number;
|
|
60
|
+
/**
|
|
61
|
+
* bytesLastIndexOf finds the last occurrence of subslice in bytes.
|
|
62
|
+
* Returns -1 if not found.
|
|
63
|
+
*/
|
|
64
|
+
export declare function bytesLastIndexOf(bytes: Bytes | null, subslice: Bytes | null): number;
|
|
65
|
+
/**
|
|
66
|
+
* bytesIndexByte finds the first occurrence of byte c in bytes.
|
|
67
|
+
* Returns -1 if not found.
|
|
68
|
+
*/
|
|
69
|
+
export declare function bytesIndexByte(bytes: Bytes | null, c: number): number;
|
|
70
|
+
/**
|
|
71
|
+
* bytesLastIndexByte finds the last occurrence of byte c in bytes.
|
|
72
|
+
* Returns -1 if not found.
|
|
73
|
+
*/
|
|
74
|
+
export declare function bytesLastIndexByte(bytes: Bytes | null, c: number): number;
|
|
75
|
+
/**
|
|
76
|
+
* bytesCount counts non-overlapping instances of sep in bytes.
|
|
77
|
+
*/
|
|
78
|
+
export declare function bytesCount(bytes: Bytes | null, sep: Bytes | null): number;
|
|
79
|
+
export declare function min(a: number, b: number): number;
|
|
80
|
+
export declare function max(a: number, b: number): number;
|
|
81
|
+
/**
|
|
82
|
+
* Converts a rune (number) or string to a string.
|
|
83
|
+
* This is used to replace String.fromCharCode() in Go string(rune) conversions.
|
|
84
|
+
* Since sometimes single-char rune literals are compiled to strings, this function
|
|
85
|
+
* needs to handle both numbers (runes) and strings.
|
|
86
|
+
*
|
|
87
|
+
* @param runeOrString A rune (Unicode code point as number) or a string
|
|
88
|
+
* @returns The resulting string
|
|
89
|
+
*/
|
|
90
|
+
export declare function runeOrStringToString(runeOrString: number | string): string;
|
|
91
|
+
export declare function recover(): any;
|
|
@@ -165,4 +165,217 @@ export function sortSlice(s) {
|
|
|
165
165
|
return;
|
|
166
166
|
}
|
|
167
167
|
}
|
|
168
|
+
/**
|
|
169
|
+
* bytesEqual efficiently compares two byte slices for equality.
|
|
170
|
+
* Optimized for different byte representations.
|
|
171
|
+
*/
|
|
172
|
+
export function bytesEqual(a, b) {
|
|
173
|
+
// Handle null cases
|
|
174
|
+
if (a === null && b === null)
|
|
175
|
+
return true;
|
|
176
|
+
if (a === null || b === null)
|
|
177
|
+
return false;
|
|
178
|
+
// Convert to arrays for comparison
|
|
179
|
+
const aArr = bytesToArray(a);
|
|
180
|
+
const bArr = bytesToArray(b);
|
|
181
|
+
if (aArr.length !== bArr.length)
|
|
182
|
+
return false;
|
|
183
|
+
for (let i = 0; i < aArr.length; i++) {
|
|
184
|
+
if (aArr[i] !== bArr[i])
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* bytesCompare compares two byte slices lexicographically.
|
|
191
|
+
* Returns -1 if a < b, 0 if a == b, +1 if a > b.
|
|
192
|
+
*/
|
|
193
|
+
export function bytesCompare(a, b) {
|
|
194
|
+
// Handle null cases
|
|
195
|
+
if (a === null && b === null)
|
|
196
|
+
return 0;
|
|
197
|
+
if (a === null)
|
|
198
|
+
return -1;
|
|
199
|
+
if (b === null)
|
|
200
|
+
return 1;
|
|
201
|
+
const aArr = bytesToArray(a);
|
|
202
|
+
const bArr = bytesToArray(b);
|
|
203
|
+
const minLen = Math.min(aArr.length, bArr.length);
|
|
204
|
+
for (let i = 0; i < minLen; i++) {
|
|
205
|
+
if (aArr[i] < bArr[i])
|
|
206
|
+
return -1;
|
|
207
|
+
if (aArr[i] > bArr[i])
|
|
208
|
+
return 1;
|
|
209
|
+
}
|
|
210
|
+
if (aArr.length < bArr.length)
|
|
211
|
+
return -1;
|
|
212
|
+
if (aArr.length > bArr.length)
|
|
213
|
+
return 1;
|
|
214
|
+
return 0;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* bytesToArray converts any Bytes representation to a number array.
|
|
218
|
+
*/
|
|
219
|
+
export function bytesToArray(bytes) {
|
|
220
|
+
if (bytes === null)
|
|
221
|
+
return [];
|
|
222
|
+
if (bytes instanceof Uint8Array) {
|
|
223
|
+
return Array.from(bytes);
|
|
224
|
+
}
|
|
225
|
+
if (Array.isArray(bytes)) {
|
|
226
|
+
return bytes;
|
|
227
|
+
}
|
|
228
|
+
// Handle SliceProxy
|
|
229
|
+
if (isSliceProxy(bytes)) {
|
|
230
|
+
const proxy = bytes;
|
|
231
|
+
const meta = proxy.__meta__;
|
|
232
|
+
return meta.backing.slice(meta.offset, meta.offset + meta.length);
|
|
233
|
+
}
|
|
234
|
+
throw new Error(`Cannot convert bytes of type ${typeof bytes} to array`);
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* bytesToUint8Array converts any Bytes representation to a Uint8Array.
|
|
238
|
+
*/
|
|
239
|
+
export function bytesToUint8Array(bytes) {
|
|
240
|
+
if (bytes === null)
|
|
241
|
+
return new Uint8Array(0);
|
|
242
|
+
if (bytes instanceof Uint8Array) {
|
|
243
|
+
return bytes;
|
|
244
|
+
}
|
|
245
|
+
return new Uint8Array(bytesToArray(bytes));
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* bytesIndexOf finds the first occurrence of subslice in bytes.
|
|
249
|
+
* Returns -1 if not found.
|
|
250
|
+
*/
|
|
251
|
+
export function bytesIndexOf(bytes, subslice) {
|
|
252
|
+
if (bytes === null || subslice === null)
|
|
253
|
+
return -1;
|
|
254
|
+
const haystack = bytesToArray(bytes);
|
|
255
|
+
const needle = bytesToArray(subslice);
|
|
256
|
+
if (needle.length === 0)
|
|
257
|
+
return 0;
|
|
258
|
+
if (needle.length > haystack.length)
|
|
259
|
+
return -1;
|
|
260
|
+
for (let i = 0; i <= haystack.length - needle.length; i++) {
|
|
261
|
+
let found = true;
|
|
262
|
+
for (let j = 0; j < needle.length; j++) {
|
|
263
|
+
if (haystack[i + j] !== needle[j]) {
|
|
264
|
+
found = false;
|
|
265
|
+
break;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (found)
|
|
269
|
+
return i;
|
|
270
|
+
}
|
|
271
|
+
return -1;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* bytesLastIndexOf finds the last occurrence of subslice in bytes.
|
|
275
|
+
* Returns -1 if not found.
|
|
276
|
+
*/
|
|
277
|
+
export function bytesLastIndexOf(bytes, subslice) {
|
|
278
|
+
if (bytes === null || subslice === null)
|
|
279
|
+
return -1;
|
|
280
|
+
const haystack = bytesToArray(bytes);
|
|
281
|
+
const needle = bytesToArray(subslice);
|
|
282
|
+
if (needle.length === 0)
|
|
283
|
+
return haystack.length;
|
|
284
|
+
if (needle.length > haystack.length)
|
|
285
|
+
return -1;
|
|
286
|
+
for (let i = haystack.length - needle.length; i >= 0; i--) {
|
|
287
|
+
let found = true;
|
|
288
|
+
for (let j = 0; j < needle.length; j++) {
|
|
289
|
+
if (haystack[i + j] !== needle[j]) {
|
|
290
|
+
found = false;
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
if (found)
|
|
295
|
+
return i;
|
|
296
|
+
}
|
|
297
|
+
return -1;
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* bytesIndexByte finds the first occurrence of byte c in bytes.
|
|
301
|
+
* Returns -1 if not found.
|
|
302
|
+
*/
|
|
303
|
+
export function bytesIndexByte(bytes, c) {
|
|
304
|
+
if (bytes === null)
|
|
305
|
+
return -1;
|
|
306
|
+
const arr = bytesToArray(bytes);
|
|
307
|
+
return arr.indexOf(c);
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* bytesLastIndexByte finds the last occurrence of byte c in bytes.
|
|
311
|
+
* Returns -1 if not found.
|
|
312
|
+
*/
|
|
313
|
+
export function bytesLastIndexByte(bytes, c) {
|
|
314
|
+
if (bytes === null)
|
|
315
|
+
return -1;
|
|
316
|
+
const arr = bytesToArray(bytes);
|
|
317
|
+
return arr.lastIndexOf(c);
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* bytesCount counts non-overlapping instances of sep in bytes.
|
|
321
|
+
*/
|
|
322
|
+
export function bytesCount(bytes, sep) {
|
|
323
|
+
if (bytes === null || sep === null)
|
|
324
|
+
return 0;
|
|
325
|
+
const haystack = bytesToArray(bytes);
|
|
326
|
+
const needle = bytesToArray(sep);
|
|
327
|
+
if (needle.length === 0) {
|
|
328
|
+
// Special case: empty separator counts code points + 1
|
|
329
|
+
// For now, just return length + 1 (ASCII assumption)
|
|
330
|
+
return haystack.length + 1;
|
|
331
|
+
}
|
|
332
|
+
let count = 0;
|
|
333
|
+
let pos = 0;
|
|
334
|
+
while (pos <= haystack.length - needle.length) {
|
|
335
|
+
let found = true;
|
|
336
|
+
for (let i = 0; i < needle.length; i++) {
|
|
337
|
+
if (haystack[pos + i] !== needle[i]) {
|
|
338
|
+
found = false;
|
|
339
|
+
break;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
if (found) {
|
|
343
|
+
count++;
|
|
344
|
+
pos += needle.length;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
pos++;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return count;
|
|
351
|
+
}
|
|
352
|
+
// Math functions needed by various packages
|
|
353
|
+
export function min(a, b) {
|
|
354
|
+
return Math.min(a, b);
|
|
355
|
+
}
|
|
356
|
+
export function max(a, b) {
|
|
357
|
+
return Math.max(a, b);
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Converts a rune (number) or string to a string.
|
|
361
|
+
* This is used to replace String.fromCharCode() in Go string(rune) conversions.
|
|
362
|
+
* Since sometimes single-char rune literals are compiled to strings, this function
|
|
363
|
+
* needs to handle both numbers (runes) and strings.
|
|
364
|
+
*
|
|
365
|
+
* @param runeOrString A rune (Unicode code point as number) or a string
|
|
366
|
+
* @returns The resulting string
|
|
367
|
+
*/
|
|
368
|
+
export function runeOrStringToString(runeOrString) {
|
|
369
|
+
if (typeof runeOrString === 'string') {
|
|
370
|
+
return runeOrString;
|
|
371
|
+
}
|
|
372
|
+
// For numbers, use String.fromCharCode to convert the rune to a string
|
|
373
|
+
return String.fromCharCode(runeOrString);
|
|
374
|
+
}
|
|
375
|
+
// Panic recovery function (simplified implementation)
|
|
376
|
+
export function recover() {
|
|
377
|
+
// In a real implementation, this would interact with Go's panic/recover mechanism
|
|
378
|
+
// For now, return null to indicate no panic was recovered
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
168
381
|
//# sourceMappingURL=builtin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../gs/builtin/builtin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../../gs/builtin/builtin.ts"],"names":[],"mappings":"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"}
|
package/dist/gs/builtin/slice.js
CHANGED
|
@@ -126,6 +126,10 @@ export const makeSlice = (length, capacity, typeHint) => {
|
|
|
126
126
|
}
|
|
127
127
|
// The rest of backingArr (from length to actualCapacity-1) remains uninitialized (undefined),
|
|
128
128
|
// representing available capacity.
|
|
129
|
+
// OPTIMIZATION: If length equals capacity, return backing array directly
|
|
130
|
+
if (length === actualCapacity) {
|
|
131
|
+
return backingArr;
|
|
132
|
+
}
|
|
129
133
|
// The proxyTargetArray serves as the shell for the proxy.
|
|
130
134
|
// Its elements up to 'length' should reflect the initialized part of the slice.
|
|
131
135
|
const proxyTargetArray = new Array(length);
|
|
@@ -329,6 +333,10 @@ s, low, high, max) => {
|
|
|
329
333
|
}
|
|
330
334
|
const newLength = high - low;
|
|
331
335
|
const newOffset = oldOffset + low;
|
|
336
|
+
// OPTIMIZATION: If the result would have offset=0 and length=capacity, return backing directly
|
|
337
|
+
if (newOffset === 0 && newLength === newCap) {
|
|
338
|
+
return backing;
|
|
339
|
+
}
|
|
332
340
|
// Create an array-like target with the correct length
|
|
333
341
|
const proxyTargetArray = new Array(newLength);
|
|
334
342
|
// Note: We don't need to initialize the values here since the proxy handler
|
|
@@ -355,6 +363,11 @@ export const arrayToSlice = (arr, depth = 1) => {
|
|
|
355
363
|
return [];
|
|
356
364
|
if (arr.length === 0)
|
|
357
365
|
return arr;
|
|
366
|
+
// OPTIMIZATION: For arrays where offset=0 and length=capacity, return the array directly
|
|
367
|
+
// if we're not doing deep conversion
|
|
368
|
+
if (depth === 1) {
|
|
369
|
+
return arr;
|
|
370
|
+
}
|
|
358
371
|
const target = {
|
|
359
372
|
__meta__: {
|
|
360
373
|
backing: arr,
|