goscript 0.0.10 → 0.0.11
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/builtin/builtin.ts +161 -65
- package/cmd/goscript/cmd_compile.go +8 -6
- package/compiler/compile.go +28 -11
- package/compiler/compile_decls.go +12 -0
- package/compiler/compile_expr.go +59 -2
- package/compiler/compile_spec.go +110 -3
- package/compiler/compile_stmt.go +89 -15
- package/dist/builtin/builtin.d.ts +57 -1
- package/dist/builtin/builtin.js +73 -0
- package/dist/builtin/builtin.js.map +1 -1
- package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js +82 -0
- package/dist/compliance/tests/async_defer_statement/async_defer_statement.gs.js.map +1 -0
- package/dist/compliance/tests/defer_statement/defer_statement.gs.d.ts +1 -0
- package/dist/compliance/tests/defer_statement/defer_statement.gs.js +75 -0
- package/dist/compliance/tests/defer_statement/defer_statement.gs.js.map +1 -0
- package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js +1 -1
- package/dist/compliance/tests/embedded_interface_assertion/embedded_interface_assertion.gs.js.map +1 -1
- package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.d.ts +1 -0
- package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js +14 -0
- package/dist/compliance/tests/for_loop_infinite/for_loop_infinite.gs.js.map +1 -0
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js +1 -1
- package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js.map +1 -1
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js +11 -1
- package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js.map +1 -1
- package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.d.ts +1 -0
- package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js +51 -0
- package/dist/compliance/tests/interface_type_assertion_signature_mismatch/interface_type_assertion_signature_mismatch.gs.js.map +1 -0
- package/dist/compliance/tests/slices/slices.gs.js +280 -7
- package/dist/compliance/tests/slices/slices.gs.js.map +1 -1
- package/dist/compliance/tests/struct_embedding/struct_embedding.gs.d.ts +1 -0
- package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js +48 -0
- package/dist/compliance/tests/struct_embedding/struct_embedding.gs.js.map +1 -0
- package/package.json +4 -3
package/compiler/compile_spec.go
CHANGED
|
@@ -57,6 +57,20 @@ func (c *GoToTSCompiler) collectMethodNames(structName string) string {
|
|
|
57
57
|
return strings.Join(methodNames, ", ")
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
// getTypeExprName returns a string representation of a type expression.
|
|
61
|
+
func (c *GoToTSCompiler) getTypeExprName(expr ast.Expr) string {
|
|
62
|
+
switch t := expr.(type) {
|
|
63
|
+
case *ast.Ident:
|
|
64
|
+
return t.Name
|
|
65
|
+
case *ast.SelectorExpr:
|
|
66
|
+
return fmt.Sprintf("%s.%s", c.getTypeExprName(t.X), t.Sel.Name)
|
|
67
|
+
case *ast.StarExpr:
|
|
68
|
+
return c.getTypeExprName(t.X) // Unwrap pointer type
|
|
69
|
+
default:
|
|
70
|
+
return "embedded" // Fallback for complex type expressions
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
60
74
|
// collectInterfaceMethods returns a comma-separated string of method names for an interface
|
|
61
75
|
func (c *GoToTSCompiler) collectInterfaceMethods(interfaceType *ast.InterfaceType) string {
|
|
62
76
|
// Use a map to ensure uniqueness of method names
|
|
@@ -120,11 +134,27 @@ func (c *GoToTSCompiler) WriteTypeSpec(a *ast.TypeSpec) error {
|
|
|
120
134
|
|
|
121
135
|
switch t := a.Type.(type) {
|
|
122
136
|
case *ast.StructType:
|
|
123
|
-
//
|
|
137
|
+
// Detect embedded struct (anonymous field) to support Go struct embedding.
|
|
138
|
+
var embeddedExpr ast.Expr
|
|
139
|
+
for _, f := range t.Fields.List {
|
|
140
|
+
if len(f.Names) == 0 { // anonymous field ⇒ embedded type
|
|
141
|
+
embeddedExpr = f.Type
|
|
142
|
+
break // only the first embedded struct is supported for now
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Write the class header, adding "extends Embedded" when an embedded struct is present.
|
|
124
146
|
c.tsw.WriteLiterally("class ")
|
|
125
147
|
if err := c.WriteValueExpr(a.Name); err != nil { // Class name is a value identifier
|
|
126
148
|
return err
|
|
127
149
|
}
|
|
150
|
+
if embeddedExpr != nil {
|
|
151
|
+
// For pointer embedding (*T) unwrap the star so we extend T, not (T|null)
|
|
152
|
+
if star, ok := embeddedExpr.(*ast.StarExpr); ok {
|
|
153
|
+
embeddedExpr = star.X
|
|
154
|
+
}
|
|
155
|
+
c.tsw.WriteLiterally(" extends ")
|
|
156
|
+
c.WriteTypeExpr(embeddedExpr) // Embedded type name
|
|
157
|
+
}
|
|
128
158
|
c.tsw.WriteLine(" {")
|
|
129
159
|
c.tsw.Indent(1)
|
|
130
160
|
|
|
@@ -164,7 +194,38 @@ func (c *GoToTSCompiler) WriteTypeSpec(a *ast.TypeSpec) error {
|
|
|
164
194
|
|
|
165
195
|
// constructor and clone using Object.assign for compactness
|
|
166
196
|
c.tsw.WriteLine("")
|
|
167
|
-
|
|
197
|
+
if embeddedExpr != nil {
|
|
198
|
+
// Determine the embedded type's identifier (strip any package prefix)
|
|
199
|
+
embeddedTypeNameFull := c.getTypeExprName(embeddedExpr)
|
|
200
|
+
propName := embeddedTypeNameFull
|
|
201
|
+
if idx := strings.LastIndex(propName, "."); idx != -1 {
|
|
202
|
+
propName = propName[idx+1:] // keep only the last segment for the property key
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// The init parameter allows either flattened fields or a nested {Embedded: {...}} object
|
|
206
|
+
c.tsw.WriteLinef(
|
|
207
|
+
"constructor(init?: Partial<%s> & { %s?: Partial<%s> }) {",
|
|
208
|
+
className, propName, propName,
|
|
209
|
+
)
|
|
210
|
+
c.tsw.Indent(1)
|
|
211
|
+
|
|
212
|
+
// Pass either the nested embedded object or the full init directly to super()
|
|
213
|
+
c.tsw.WriteLinef("super(init?.%s || init);", propName)
|
|
214
|
+
|
|
215
|
+
// Copy fields that belong only to this derived class
|
|
216
|
+
c.tsw.WriteLine("if (init) {")
|
|
217
|
+
c.tsw.Indent(1)
|
|
218
|
+
c.tsw.WriteLinef("const { %s, ...rest } = init as any;", propName)
|
|
219
|
+
c.tsw.WriteLine("Object.assign(this, rest);")
|
|
220
|
+
c.tsw.Indent(-1)
|
|
221
|
+
c.tsw.WriteLine("}")
|
|
222
|
+
|
|
223
|
+
c.tsw.Indent(-1)
|
|
224
|
+
c.tsw.WriteLine("}")
|
|
225
|
+
} else {
|
|
226
|
+
// For a base class without embedding, use simple constructor
|
|
227
|
+
c.tsw.WriteLinef("constructor(init?: Partial<%s>) { if (init) Object.assign(this, init as any); }", className)
|
|
228
|
+
}
|
|
168
229
|
c.tsw.WriteLinef("public clone(): %s { return Object.assign(Object.create(%s.prototype) as %s, this); }", className, className, className)
|
|
169
230
|
|
|
170
231
|
// Add code to register the type with the runtime system
|
|
@@ -219,8 +280,17 @@ func (c *GoToTSCompiler) WriteFuncDeclAsMethod(decl *ast.FuncDecl) error {
|
|
|
219
280
|
c.WriteDoc(decl.Doc)
|
|
220
281
|
}
|
|
221
282
|
|
|
283
|
+
// Determine if method is async by checking for async operations in the body
|
|
284
|
+
isAsync := c.containsAsyncOperations(decl.Body)
|
|
285
|
+
|
|
222
286
|
// Methods are typically public in the TS output
|
|
223
287
|
c.tsw.WriteLiterally("public ")
|
|
288
|
+
|
|
289
|
+
// Add async modifier if needed
|
|
290
|
+
if isAsync {
|
|
291
|
+
c.tsw.WriteLiterally("async ")
|
|
292
|
+
}
|
|
293
|
+
|
|
224
294
|
// Keep original Go casing for method names
|
|
225
295
|
if err := c.WriteValueExpr(decl.Name); err != nil { // Method name is a value identifier
|
|
226
296
|
return err
|
|
@@ -238,6 +308,9 @@ func (c *GoToTSCompiler) WriteFuncDeclAsMethod(decl *ast.FuncDecl) error {
|
|
|
238
308
|
// Handle return type
|
|
239
309
|
if funcType.Results != nil && len(funcType.Results.List) > 0 {
|
|
240
310
|
c.tsw.WriteLiterally(": ")
|
|
311
|
+
if isAsync {
|
|
312
|
+
c.tsw.WriteLiterally("Promise<")
|
|
313
|
+
}
|
|
241
314
|
if len(funcType.Results.List) == 1 {
|
|
242
315
|
// Single return value
|
|
243
316
|
resultType := funcType.Results.List[0].Type
|
|
@@ -253,12 +326,27 @@ func (c *GoToTSCompiler) WriteFuncDeclAsMethod(decl *ast.FuncDecl) error {
|
|
|
253
326
|
}
|
|
254
327
|
c.tsw.WriteLiterally("]")
|
|
255
328
|
}
|
|
329
|
+
if isAsync {
|
|
330
|
+
c.tsw.WriteLiterally(">")
|
|
331
|
+
}
|
|
256
332
|
} else {
|
|
257
333
|
// No return value -> void
|
|
258
|
-
|
|
334
|
+
if isAsync {
|
|
335
|
+
c.tsw.WriteLiterally(": Promise<void>")
|
|
336
|
+
} else {
|
|
337
|
+
c.tsw.WriteLiterally(": void")
|
|
338
|
+
}
|
|
259
339
|
}
|
|
260
340
|
|
|
261
341
|
c.tsw.WriteLiterally(" ")
|
|
342
|
+
|
|
343
|
+
// Check if function body has defer statements
|
|
344
|
+
c.nextBlockNeedsDefer = c.scanForDefer(decl.Body)
|
|
345
|
+
|
|
346
|
+
// Save previous async state and set current state based on isAsync
|
|
347
|
+
previousAsyncState := c.inAsyncFunction
|
|
348
|
+
c.inAsyncFunction = isAsync
|
|
349
|
+
|
|
262
350
|
// Bind receiver name to this
|
|
263
351
|
if recvField := decl.Recv.List[0]; len(recvField.Names) > 0 {
|
|
264
352
|
recvName := recvField.Names[0].Name
|
|
@@ -266,21 +354,40 @@ func (c *GoToTSCompiler) WriteFuncDeclAsMethod(decl *ast.FuncDecl) error {
|
|
|
266
354
|
c.tsw.WriteLine("{")
|
|
267
355
|
c.tsw.Indent(1)
|
|
268
356
|
c.tsw.WriteLinef("const %s = this", recvName)
|
|
357
|
+
|
|
358
|
+
// Add using statement if needed
|
|
359
|
+
if c.nextBlockNeedsDefer {
|
|
360
|
+
if c.inAsyncFunction {
|
|
361
|
+
c.tsw.WriteLine("await using __defer = new goscript.AsyncDisposableStack();")
|
|
362
|
+
} else {
|
|
363
|
+
c.tsw.WriteLine("using cleanup = new goscript.DisposableStack();")
|
|
364
|
+
}
|
|
365
|
+
c.nextBlockNeedsDefer = false
|
|
366
|
+
}
|
|
367
|
+
|
|
269
368
|
// write method body without outer braces
|
|
270
369
|
for _, stmt := range decl.Body.List {
|
|
271
370
|
if err := c.WriteStmt(stmt); err != nil {
|
|
371
|
+
c.inAsyncFunction = previousAsyncState // Restore state before returning error
|
|
272
372
|
return fmt.Errorf("failed to write statement in function body: %w", err)
|
|
273
373
|
}
|
|
274
374
|
}
|
|
275
375
|
c.tsw.Indent(-1)
|
|
276
376
|
c.tsw.WriteLine("}")
|
|
377
|
+
|
|
378
|
+
// Restore previous async state
|
|
379
|
+
c.inAsyncFunction = previousAsyncState
|
|
277
380
|
return nil
|
|
278
381
|
}
|
|
279
382
|
}
|
|
280
383
|
// no named receiver, write whole body
|
|
281
384
|
if err := c.WriteStmt(decl.Body); err != nil {
|
|
385
|
+
c.inAsyncFunction = previousAsyncState // Restore state before returning error
|
|
282
386
|
return fmt.Errorf("failed to write function body: %w", err)
|
|
283
387
|
}
|
|
388
|
+
|
|
389
|
+
// Restore previous async state
|
|
390
|
+
c.inAsyncFunction = previousAsyncState
|
|
284
391
|
return nil
|
|
285
392
|
}
|
|
286
393
|
|
package/compiler/compile_stmt.go
CHANGED
|
@@ -28,6 +28,10 @@ func (c *GoToTSCompiler) WriteStmt(a ast.Stmt) error {
|
|
|
28
28
|
if err := c.WriteStmtReturn(exp); err != nil {
|
|
29
29
|
return fmt.Errorf("failed to write return statement: %w", err)
|
|
30
30
|
}
|
|
31
|
+
case *ast.DeferStmt:
|
|
32
|
+
if err := c.WriteDeferStmt(exp); err != nil {
|
|
33
|
+
return fmt.Errorf("failed to write defer statement: %w", err)
|
|
34
|
+
}
|
|
31
35
|
case *ast.IfStmt:
|
|
32
36
|
if err := c.WriteStmtIf(exp); err != nil {
|
|
33
37
|
return fmt.Errorf("failed to write if statement: %w", err)
|
|
@@ -125,12 +129,70 @@ func (c *GoToTSCompiler) WriteStmt(a ast.Stmt) error {
|
|
|
125
129
|
if err := c.WriteStmtSelect(exp); err != nil {
|
|
126
130
|
return fmt.Errorf("failed to write select statement: %w", err)
|
|
127
131
|
}
|
|
132
|
+
case *ast.BranchStmt:
|
|
133
|
+
// Handle break and continue statements
|
|
134
|
+
switch exp.Tok {
|
|
135
|
+
case token.BREAK:
|
|
136
|
+
c.tsw.WriteLine("break") // No semicolon needed
|
|
137
|
+
case token.CONTINUE:
|
|
138
|
+
c.tsw.WriteLine("continue") // No semicolon needed
|
|
139
|
+
default:
|
|
140
|
+
c.tsw.WriteCommentLine(fmt.Sprintf("unhandled branch statement token: %s", exp.Tok.String()))
|
|
141
|
+
}
|
|
128
142
|
default:
|
|
129
143
|
c.tsw.WriteCommentLine(fmt.Sprintf("unknown statement: %s\n", litter.Sdump(a)))
|
|
130
144
|
}
|
|
131
145
|
return nil
|
|
132
146
|
}
|
|
133
147
|
|
|
148
|
+
// WriteDeferStmt writes a defer statement using TypeScript's DisposableStack.
|
|
149
|
+
func (c *GoToTSCompiler) WriteDeferStmt(exp *ast.DeferStmt) error {
|
|
150
|
+
// Check if deferred call contains async operations
|
|
151
|
+
hasAsyncOps := c.containsAsyncOperations(exp.Call)
|
|
152
|
+
|
|
153
|
+
// Choose the right stack variable and async modifier
|
|
154
|
+
stackVar := "cleanup"
|
|
155
|
+
asyncPrefix := ""
|
|
156
|
+
|
|
157
|
+
if c.inAsyncFunction {
|
|
158
|
+
stackVar = "__defer"
|
|
159
|
+
if hasAsyncOps {
|
|
160
|
+
asyncPrefix = "async "
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
c.tsw.WriteLiterally(fmt.Sprintf("%s.defer(%s() => {", stackVar, asyncPrefix))
|
|
165
|
+
c.tsw.Indent(1)
|
|
166
|
+
c.tsw.WriteLine("")
|
|
167
|
+
|
|
168
|
+
// Write the deferred call or inline the body when it's an immediately-invoked
|
|
169
|
+
// function literal (defer func(){ ... }()).
|
|
170
|
+
if funcLit, ok := exp.Call.Fun.(*ast.FuncLit); ok && len(exp.Call.Args) == 0 {
|
|
171
|
+
// Inline the function literal's body to avoid nested arrow invocation.
|
|
172
|
+
prevAsyncState := c.inAsyncFunction
|
|
173
|
+
c.inAsyncFunction = hasAsyncOps
|
|
174
|
+
|
|
175
|
+
for _, stmt := range funcLit.Body.List {
|
|
176
|
+
if err := c.WriteStmt(stmt); err != nil {
|
|
177
|
+
c.inAsyncFunction = prevAsyncState
|
|
178
|
+
return fmt.Errorf("failed to write statement in deferred function body: %w", err)
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
c.inAsyncFunction = prevAsyncState
|
|
183
|
+
} else {
|
|
184
|
+
// Fallback: write the call expression as-is.
|
|
185
|
+
if err := c.WriteValueExpr(exp.Call); err != nil {
|
|
186
|
+
return fmt.Errorf("failed to write deferred call: %w", err)
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
c.tsw.Indent(-1)
|
|
191
|
+
c.tsw.WriteLine("});")
|
|
192
|
+
|
|
193
|
+
return nil
|
|
194
|
+
}
|
|
195
|
+
|
|
134
196
|
// WriteStmtSelect writes a select statement.
|
|
135
197
|
func (c *GoToTSCompiler) WriteStmtSelect(exp *ast.SelectStmt) error {
|
|
136
198
|
// This is our implementation of the select statement, which will use Promise.race
|
|
@@ -435,10 +497,12 @@ func (s *GoToTSCompiler) WriteStmtIf(exp *ast.IfStmt) error {
|
|
|
435
497
|
s.tsw.WriteLiterally(" else ")
|
|
436
498
|
switch elseStmt := exp.Else.(type) {
|
|
437
499
|
case *ast.BlockStmt:
|
|
500
|
+
// Always pass false for suppressNewline here
|
|
438
501
|
if err := s.WriteStmtBlock(elseStmt, false); err != nil {
|
|
439
502
|
return fmt.Errorf("failed to write else block statement in if statement: %w", err)
|
|
440
503
|
}
|
|
441
504
|
case *ast.IfStmt:
|
|
505
|
+
// Recursive call handles its own block formatting
|
|
442
506
|
if err := s.WriteStmtIf(elseStmt); err != nil {
|
|
443
507
|
return fmt.Errorf("failed to write else if statement in if statement: %w", err)
|
|
444
508
|
}
|
|
@@ -482,6 +546,16 @@ func (c *GoToTSCompiler) WriteStmtBlock(exp *ast.BlockStmt, suppressNewline bool
|
|
|
482
546
|
c.tsw.WriteLine("{")
|
|
483
547
|
c.tsw.Indent(1)
|
|
484
548
|
|
|
549
|
+
// Add "using" statement if needed
|
|
550
|
+
if c.nextBlockNeedsDefer {
|
|
551
|
+
if c.inAsyncFunction {
|
|
552
|
+
c.tsw.WriteLine("await using __defer = new goscript.AsyncDisposableStack();")
|
|
553
|
+
} else {
|
|
554
|
+
c.tsw.WriteLine("using cleanup = new goscript.DisposableStack();")
|
|
555
|
+
}
|
|
556
|
+
c.nextBlockNeedsDefer = false
|
|
557
|
+
}
|
|
558
|
+
|
|
485
559
|
// Prepare line info
|
|
486
560
|
var file *token.File
|
|
487
561
|
if c.pkg != nil && c.pkg.Fset != nil && exp.Lbrace.IsValid() {
|
|
@@ -1495,27 +1569,22 @@ func (c *GoToTSCompiler) writeTypeAssertion(lhs []ast.Expr, typeAssertExpr *ast.
|
|
|
1495
1569
|
|
|
1496
1570
|
// Generate the destructuring assignment
|
|
1497
1571
|
if tok == token.DEFINE {
|
|
1498
|
-
// Use 'let' for :=
|
|
1499
1572
|
c.tsw.WriteLiterally("let ")
|
|
1573
|
+
} else {
|
|
1574
|
+
// We must wrap in parenthesis.
|
|
1575
|
+
c.tsw.WriteLiterally("(")
|
|
1500
1576
|
}
|
|
1501
1577
|
|
|
1502
1578
|
c.tsw.WriteLiterally("{ ")
|
|
1503
|
-
//
|
|
1504
|
-
|
|
1505
|
-
if valueIsBlank {
|
|
1506
|
-
|
|
1507
|
-
} else {
|
|
1508
|
-
c.tsw.WriteLiterally(valueName)
|
|
1579
|
+
// Dynamically build the destructuring pattern
|
|
1580
|
+
parts := []string{}
|
|
1581
|
+
if !valueIsBlank {
|
|
1582
|
+
parts = append(parts, fmt.Sprintf("value: %s", valueName))
|
|
1509
1583
|
}
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
// Write ok part of destructuring, handling blank identifier
|
|
1513
|
-
c.tsw.WriteLiterally("ok: ")
|
|
1514
|
-
if okIsBlank {
|
|
1515
|
-
c.tsw.WriteLiterally("_")
|
|
1516
|
-
} else {
|
|
1517
|
-
c.tsw.WriteLiterally(okName)
|
|
1584
|
+
if !okIsBlank {
|
|
1585
|
+
parts = append(parts, fmt.Sprintf("ok: %s", okName))
|
|
1518
1586
|
}
|
|
1587
|
+
c.tsw.WriteLiterally(strings.Join(parts, ", "))
|
|
1519
1588
|
c.tsw.WriteLiterally(" } = goscript.typeAssert<")
|
|
1520
1589
|
|
|
1521
1590
|
// Write the asserted type for the generic
|
|
@@ -1529,6 +1598,11 @@ func (c *GoToTSCompiler) writeTypeAssertion(lhs []ast.Expr, typeAssertExpr *ast.
|
|
|
1529
1598
|
c.tsw.WriteLiterally(", ")
|
|
1530
1599
|
c.tsw.WriteLiterally(fmt.Sprintf("'%s'", typeName))
|
|
1531
1600
|
c.tsw.WriteLiterally(")")
|
|
1601
|
+
|
|
1602
|
+
if tok != token.DEFINE {
|
|
1603
|
+
c.tsw.WriteLiterally(")")
|
|
1604
|
+
}
|
|
1605
|
+
|
|
1532
1606
|
c.tsw.WriteLine("") // Add newline after the statement
|
|
1533
1607
|
|
|
1534
1608
|
return nil
|
|
@@ -7,6 +7,20 @@
|
|
|
7
7
|
export declare const makeSlice: <T>(len: number, cap?: number) => Array<T> & {
|
|
8
8
|
__capacity?: number;
|
|
9
9
|
};
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new slice header that shares the backing array.
|
|
12
|
+
* Arguments mirror Go semantics; omitted indices are undefined.
|
|
13
|
+
*
|
|
14
|
+
* @param arr The original slice/array produced by makeSlice or another slice
|
|
15
|
+
* @param low Starting index (defaults to 0)
|
|
16
|
+
* @param high Ending index (defaults to arr.length)
|
|
17
|
+
* @param max Capacity limit (defaults to original capacity)
|
|
18
|
+
*/
|
|
19
|
+
export declare const slice: <T>(arr: Array<T> & {
|
|
20
|
+
__capacity?: number;
|
|
21
|
+
}, low?: number, high?: number, max?: number) => Array<T> & {
|
|
22
|
+
__capacity?: number;
|
|
23
|
+
};
|
|
10
24
|
/**
|
|
11
25
|
* Creates a new map (TypeScript Map).
|
|
12
26
|
* @returns A new TypeScript Map.
|
|
@@ -74,7 +88,11 @@ export declare const mapHas: <K, V>(map: Map<K, V>, key: K) => boolean;
|
|
|
74
88
|
* @param elements The elements to append.
|
|
75
89
|
* @returns The modified slice (TypeScript array).
|
|
76
90
|
*/
|
|
77
|
-
export declare const append: <T>(slice: Array<T
|
|
91
|
+
export declare const append: <T>(slice: Array<T> & {
|
|
92
|
+
__capacity?: number;
|
|
93
|
+
}, ...elements: T[]) => Array<T> & {
|
|
94
|
+
__capacity?: number;
|
|
95
|
+
};
|
|
78
96
|
/**
|
|
79
97
|
* Represents the kinds of Go types that can be registered at runtime.
|
|
80
98
|
*/
|
|
@@ -221,3 +239,41 @@ export declare function selectStatement<T>(cases: SelectCase<T>[], hasDefault?:
|
|
|
221
239
|
* @returns A new channel instance.
|
|
222
240
|
*/
|
|
223
241
|
export declare const makeChannel: <T>(bufferSize: number, zeroValue: T) => Channel<T>;
|
|
242
|
+
/**
|
|
243
|
+
* DisposableStack manages synchronous disposable resources, mimicking Go's defer behavior.
|
|
244
|
+
* Functions added via `defer` are executed in LIFO order when the stack is disposed.
|
|
245
|
+
* Implements the `Disposable` interface for use with `using` declarations.
|
|
246
|
+
*/
|
|
247
|
+
export declare class DisposableStack implements Disposable {
|
|
248
|
+
#private;
|
|
249
|
+
/**
|
|
250
|
+
* Adds a function to be executed when the stack is disposed.
|
|
251
|
+
* @param fn The function to defer.
|
|
252
|
+
*/
|
|
253
|
+
defer(fn: () => void): void;
|
|
254
|
+
/**
|
|
255
|
+
* Disposes of the resources in the stack by executing the deferred functions
|
|
256
|
+
* in Last-In, First-Out (LIFO) order.
|
|
257
|
+
* If a deferred function throws an error, disposal stops, and the error is rethrown,
|
|
258
|
+
* similar to Go's panic behavior during defer execution.
|
|
259
|
+
*/
|
|
260
|
+
[Symbol.dispose](): void;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* AsyncDisposableStack manages asynchronous disposable resources, mimicking Go's defer behavior.
|
|
264
|
+
* Functions added via `defer` are executed sequentially in LIFO order when the stack is disposed.
|
|
265
|
+
* Implements the `AsyncDisposable` interface for use with `await using` declarations.
|
|
266
|
+
*/
|
|
267
|
+
export declare class AsyncDisposableStack implements AsyncDisposable {
|
|
268
|
+
#private;
|
|
269
|
+
/**
|
|
270
|
+
* Adds a synchronous or asynchronous function to be executed when the stack is disposed.
|
|
271
|
+
* @param fn The function to defer. Can return void or a Promise<void>.
|
|
272
|
+
*/
|
|
273
|
+
defer(fn: () => Promise<void> | void): void;
|
|
274
|
+
/**
|
|
275
|
+
* Asynchronously disposes of the resources in the stack by executing the deferred functions
|
|
276
|
+
* sequentially in Last-In, First-Out (LIFO) order. It awaits each function if it returns a promise.
|
|
277
|
+
*/
|
|
278
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
279
|
+
}
|
package/dist/builtin/builtin.js
CHANGED
|
@@ -9,6 +9,25 @@ export const makeSlice = (len, cap) => {
|
|
|
9
9
|
slice.__capacity = cap !== undefined ? cap : len;
|
|
10
10
|
return slice;
|
|
11
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* Creates a new slice header that shares the backing array.
|
|
14
|
+
* Arguments mirror Go semantics; omitted indices are undefined.
|
|
15
|
+
*
|
|
16
|
+
* @param arr The original slice/array produced by makeSlice or another slice
|
|
17
|
+
* @param low Starting index (defaults to 0)
|
|
18
|
+
* @param high Ending index (defaults to arr.length)
|
|
19
|
+
* @param max Capacity limit (defaults to original capacity)
|
|
20
|
+
*/
|
|
21
|
+
export const slice = (arr, low, high, max) => {
|
|
22
|
+
const start = low ?? 0;
|
|
23
|
+
const origLen = arr.length;
|
|
24
|
+
const origCap = arr.__capacity !== undefined ? arr.__capacity : origLen;
|
|
25
|
+
const end = high !== undefined ? high : origLen;
|
|
26
|
+
const newCap = max !== undefined ? max - start : origCap - start;
|
|
27
|
+
const newArr = arr.slice(start, end);
|
|
28
|
+
newArr.__capacity = newCap;
|
|
29
|
+
return newArr;
|
|
30
|
+
};
|
|
12
31
|
/**
|
|
13
32
|
* Creates a new map (TypeScript Map).
|
|
14
33
|
* @returns A new TypeScript Map.
|
|
@@ -92,6 +111,9 @@ export const mapHas = (map, key) => {
|
|
|
92
111
|
*/
|
|
93
112
|
export const append = (slice, ...elements) => {
|
|
94
113
|
slice.push(...elements);
|
|
114
|
+
if (slice.__capacity !== undefined && slice.length > slice.__capacity) {
|
|
115
|
+
slice.__capacity = slice.length;
|
|
116
|
+
}
|
|
95
117
|
return slice;
|
|
96
118
|
};
|
|
97
119
|
/**
|
|
@@ -506,4 +528,55 @@ export async function selectStatement(cases, hasDefault = false) {
|
|
|
506
528
|
export const makeChannel = (bufferSize, zeroValue) => {
|
|
507
529
|
return new BufferedChannel(bufferSize, zeroValue);
|
|
508
530
|
};
|
|
531
|
+
/**
|
|
532
|
+
* DisposableStack manages synchronous disposable resources, mimicking Go's defer behavior.
|
|
533
|
+
* Functions added via `defer` are executed in LIFO order when the stack is disposed.
|
|
534
|
+
* Implements the `Disposable` interface for use with `using` declarations.
|
|
535
|
+
*/
|
|
536
|
+
export class DisposableStack {
|
|
537
|
+
#stack = [];
|
|
538
|
+
/**
|
|
539
|
+
* Adds a function to be executed when the stack is disposed.
|
|
540
|
+
* @param fn The function to defer.
|
|
541
|
+
*/
|
|
542
|
+
defer(fn) { this.#stack.push(fn); }
|
|
543
|
+
/**
|
|
544
|
+
* Disposes of the resources in the stack by executing the deferred functions
|
|
545
|
+
* in Last-In, First-Out (LIFO) order.
|
|
546
|
+
* If a deferred function throws an error, disposal stops, and the error is rethrown,
|
|
547
|
+
* similar to Go's panic behavior during defer execution.
|
|
548
|
+
*/
|
|
549
|
+
[Symbol.dispose]() {
|
|
550
|
+
// Emulate Go: if a deferred throws, stop and rethrow
|
|
551
|
+
while (this.#stack.length) {
|
|
552
|
+
const fn = this.#stack.pop();
|
|
553
|
+
fn();
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* AsyncDisposableStack manages asynchronous disposable resources, mimicking Go's defer behavior.
|
|
559
|
+
* Functions added via `defer` are executed sequentially in LIFO order when the stack is disposed.
|
|
560
|
+
* Implements the `AsyncDisposable` interface for use with `await using` declarations.
|
|
561
|
+
*/
|
|
562
|
+
export class AsyncDisposableStack {
|
|
563
|
+
#stack = [];
|
|
564
|
+
/**
|
|
565
|
+
* Adds a synchronous or asynchronous function to be executed when the stack is disposed.
|
|
566
|
+
* @param fn The function to defer. Can return void or a Promise<void>.
|
|
567
|
+
*/
|
|
568
|
+
defer(fn) {
|
|
569
|
+
this.#stack.push(fn);
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Asynchronously disposes of the resources in the stack by executing the deferred functions
|
|
573
|
+
* sequentially in Last-In, First-Out (LIFO) order. It awaits each function if it returns a promise.
|
|
574
|
+
*/
|
|
575
|
+
async [Symbol.asyncDispose]() {
|
|
576
|
+
// Execute in LIFO order, awaiting each potentially async function
|
|
577
|
+
for (let i = this.#stack.length - 1; i >= 0; --i) {
|
|
578
|
+
await this.#stack[i]();
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
}
|
|
509
582
|
//# sourceMappingURL=builtin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../builtin/builtin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,GAAW,EACX,GAAY,EACwB,EAAE;IACtC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAI,GAAG,CAAuC,CAAA;IACrE,KAAK,CAAC,UAAU,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IAChD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,GAAoB,EAAE;IAC3C,OAAO,IAAI,GAAG,EAAQ,CAAA;AACxB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CACjB,UAAqD,EAC7C,EAAE;IACV,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChE,OAAO,UAAU,CAAC,MAAM,CAAA;IAC1B,CAAC;SAAM,IAAI,UAAU,YAAY,GAAG,EAAE,CAAC;QACrC,OAAO,UAAU,CAAC,IAAI,CAAA;IACxB,CAAC;IACD,OAAO,CAAC,CAAA,CAAC,mBAAmB;AAC9B,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,CAAI,KAAyC,EAAU,EAAE;IAC1E,OAAO,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAA;AACzE,CAAC,CAAA;AASD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAW,EAAY,EAAE;IACrD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC1D,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,GAAc,EACd,GAAM,EACN,eAAyB,IAAI,EACnB,EAAE;IACZ,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,YAAY,CAAA;AACpD,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAO,GAAc,EAAE,GAAM,EAAE,KAAQ,EAAQ,EAAE;IACrE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACrB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAO,GAAc,EAAE,GAAM,EAAQ,EAAE;IACnE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;AACjB,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAO,GAAc,EAAE,GAAM,EAAW,EAAE;IAC9D,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACrB,CAAC,CAAA;AACD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CAAI,KAAe,EAAE,GAAG,QAAa,EAAY,EAAE;IACvE,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAA;IACvB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,QASX;AATD,WAAY,QAAQ;IAClB,6BAAiB,CAAA;IACjB,mCAAuB,CAAA;IACvB,2BAAe,CAAA;IACf,+BAAmB,CAAA;IACnB,2BAAe,CAAA;IACf,uBAAW,CAAA;IACX,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;AACvB,CAAC,EATW,QAAQ,KAAR,QAAQ,QASnB;AAeD,6CAA6C;AAC7C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAoB,CAAC;AAEjD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,IAAY,EACZ,IAAc,EACd,SAAc,EACd,OAAqB,EACrB,WAAyC,EAC/B,EAAE;IACZ,MAAM,QAAQ,GAAa;QACzB,IAAI;QACJ,IAAI;QACJ,SAAS;QACT,OAAO;QACP,WAAW;KACZ,CAAC;IACF,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAUF;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAI,KAAU,EAAE,QAAgB;IACxD,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,yBAAyB,QAAQ,0BAA0B,CAAC,CAAC;QAC1E,OAAO,EAAE,KAAK,EAAE,IAAoB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,iDAAiD;IACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAc,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,6CAA6C;IAC7C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,QAAQ,CAAC,MAAM;YAClB,mDAAmD;YACnD,IAAI,QAAQ,CAAC,WAAW,IAAI,KAAK,YAAY,QAAQ,CAAC,WAAW,EAAE,CAAC;gBAClE,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,SAAS;YACrB,kEAAkE;YAClE,IAAI,QAAQ,CAAC,OAAO,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAClD,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,CAC1D,CAAC,MAAM,EAAE,EAAE,CAAC,OAAQ,KAAa,CAAC,MAAM,CAAC,KAAK,UAAU,CACzD,CAAC;gBACF,IAAI,iBAAiB,EAAE,CAAC;oBACtB,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;gBACzC,CAAC;YACH,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,KAAK;YACjB,2EAA2E;YAC3E,gDAAgD;YAChD,MAAM,SAAS,GAAG,OAAO,KAAK,CAAC;YAC/B,IACE,SAAS,KAAK,QAAQ;gBACtB,SAAS,KAAK,QAAQ;gBACtB,SAAS,KAAK,SAAS,EACvB,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,OAAO;YACnB,wDAAwD;YACxD,wEAAwE;YACxE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,KAAK;YACjB,6CAA6C;YAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,GAAG;YACf,wCAAwC;YACxC,IAAI,KAAK,YAAY,GAAG,EAAE,CAAC;gBACzB,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,OAAO;YACnB,8EAA8E;YAC9E,IACE,OAAO,KAAK,KAAK,QAAQ;gBACzB,KAAK,KAAK,IAAI;gBACd,MAAM,IAAI,KAAK;gBACf,SAAS,IAAI,KAAK;gBAClB,OAAO,IAAI,KAAK;gBAChB,OAAO,KAAK,CAAC,IAAI,KAAK,UAAU;gBAChC,OAAO,KAAK,CAAC,OAAO,KAAK,UAAU;gBACnC,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,EACjC,CAAC;gBACD,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER,KAAK,QAAQ,CAAC,QAAQ;YACpB,kDAAkD;YAClD,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE,CAAC;gBAChC,OAAO,EAAE,KAAK,EAAE,KAAU,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM;QAER;YACE,OAAO,CAAC,IAAI,CAAC,4BAA4B,QAAQ,CAAC,IAAI,oBAAoB,CAAC,CAAC;IAChF,CAAC;IAED,mBAAmB;IACnB,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAc,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;AACvD,CAAC;AAmFD,+CAA+C;AAC/C,MAAM,eAAe;IACX,MAAM,GAAQ,EAAE,CAAA;IAChB,MAAM,GAAY,KAAK,CAAA;IACvB,QAAQ,CAAQ;IAChB,OAAO,GAAoC,EAAE,CAAA,CAAC,gCAAgC;IAC9E,SAAS,GAA8B,EAAE,CAAA,CAAC,kCAAkC;IAC5E,eAAe,GAAqD,EAAE,CAAA,CAAC,sBAAsB;IAC7F,SAAS,CAAG,CAAC,4CAA4C;IAEjE,YAAY,QAAgB,EAAE,SAAY;QACxC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAQ;QACjB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC3C,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAA;YACxC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,OAAM;QACR,CAAC;QAED,8EAA8E;QAC9E,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAG,CAAA;YAC9C,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7B,OAAM;QACR,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,OAAM;QACR,CAAC;QAED,mCAAmC;QACnC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACvB,OAAO,EAAE,CAAA;gBACX,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAA;gBAC7C,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,2CAA2C;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAA;YAElC,4CAA4C;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,uBAAuB;YACtC,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAED,6EAA6E;QAC7E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC9C,CAAC;QAED,sCAAsC;QACtC,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9B,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,wDAAwD;QACxD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAA;YAElC,4CAA4C;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,uBAAuB;YACtC,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;QAC5B,CAAC;QAED,4EAA4E;QAC5E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAA,CAAC,mBAAmB;QACjE,CAAC;QAED,8CAA8C;QAC9C,OAAO,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,EAAE;YACtD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,wDAAwD;QACxD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAG,CAAA;YAElC,4CAA4C;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAA;gBACpC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAC,uBAAuB;YACtC,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QAChC,CAAC;QAED,4EAA4E;QAC5E,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA,CAAC,mBAAmB;QACrE,CAAC;QAED,oFAAoF;QACpF,OAAO,IAAI,OAAO,CAAkB,CAAC,OAAO,EAAE,EAAE;YAC9C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnC,OAAO,CAAC,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAQ,EAAE,EAAU;QACnC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;QACxC,CAAC;QAED,0DAA0D;QAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAG,CAAA;YACxC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACf,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QACtC,CAAC;QAED,8EAA8E;QAC9E,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAG,CAAA;YAC9C,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;YAC7B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QACtC,CAAC;QAED,uCAAuC;QACvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACvB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QACtC,CAAC;QAED,wFAAwF;QACxF,OAAO,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAgB,EAAE,EAAE;gBACrC,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACvB,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;gBACxC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5C,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAElB,2CAA2C;QAC3C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QAEjB,oDAAoD;QACpD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,6GAA6G;YAC7G,oEAAoE;YACpE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QAEnB,6DAA6D;QAC7D,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAC5C,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,EAAE,CAAA;IAC3B,CAAC;IAED;;;OAGG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC3D,CAAC;CACF;AAcD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAsB,EACtB,aAAsB,KAAK;IAE3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACtC,uEAAuE;QACvE,+DAA+D;QAC/D,OAAO,IAAI,OAAO,CAAO,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA,CAAC,yBAAyB;IAC9D,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GAAoB,EAAE,CAAA;IACtC,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACtB,kCAAkC;YAClC,SAAQ;QACV,CAAC;QACD,kCAAkC;QAClC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBAC3D,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;iBAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBACtE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,6DAA6D;QAC7D,MAAM,YAAY,GAChB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;QAE3D,4DAA4D;QAC5D,kCAAkC;QAClC,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,CAClD,YAAY,CAAC,KAAK,EAClB,YAAY,CAAC,EAAE,CAChB,CAAA;gBACD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;oBAC5B,MAAM,YAAY,CAAC,UAAU,CAAC,MAAyB,CAAC,CAAA,CAAC,oBAAoB;gBAC/E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;gBACxE,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;oBAC5B,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,CAAC,oBAAoB;gBAC5D,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,mFAAmF;YACnF,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,YAAY,CAAC,CAAA;QACjE,CAAC;QACD,OAAM,CAAC,sCAAsC;IAC/C,CAAC;IAED,2EAA2E;IAC3E,IAAI,UAAU,EAAE,CAAC;QACf,6CAA6C;QAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;QAClD,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;YAC1C,sDAAsD;YACtD,MAAM,WAAW,CAAC,UAAU,CAAC;gBAC3B,KAAK,EAAE,SAAS;gBAChB,EAAE,EAAE,KAAK;gBACT,EAAE,EAAE,CAAC,CAAC;aACY,CAAC,CAAA,CAAC,oBAAoB;QAC5C,CAAC;QACD,OAAM,CAAC,0CAA0C;IACnD,CAAC;IAED,8EAA8E;IAC9E,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,KAAK;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;SAC1B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,uBAAuB;QACvB,uEAAuE;QACvE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAClD,CAAC;QACH,CAAC;QACD,qEAAqE;QACrE,OAAO,IAAI,OAAO,CAAoB,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IACjD,CAAC,CAAC,CAAA;IAEJ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACnD,mDAAmD;IACnD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,CAAA;IAC1D,IAAI,YAAY,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC5C,MAAM,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA,CAAC,oBAAoB;IAC5D,CAAC;IACD,yFAAyF;AAC3F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,UAAkB,EAClB,SAAY,EACA,EAAE;IACd,OAAO,IAAI,eAAe,CAAI,UAAU,EAAE,SAAS,CAAC,CAAA;AACtD,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../builtin/builtin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function main(): Promise<void>;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
// Generated file based on async_defer_statement.go
|
|
2
|
+
// Updated when compliance tests are re-run, DO NOT EDIT!
|
|
3
|
+
var __addDisposableResource = (this && this.__addDisposableResource) || function (env, value, async) {
|
|
4
|
+
if (value !== null && value !== void 0) {
|
|
5
|
+
if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
|
|
6
|
+
var dispose, inner;
|
|
7
|
+
if (async) {
|
|
8
|
+
if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
|
|
9
|
+
dispose = value[Symbol.asyncDispose];
|
|
10
|
+
}
|
|
11
|
+
if (dispose === void 0) {
|
|
12
|
+
if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
|
|
13
|
+
dispose = value[Symbol.dispose];
|
|
14
|
+
if (async) inner = dispose;
|
|
15
|
+
}
|
|
16
|
+
if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
|
|
17
|
+
if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };
|
|
18
|
+
env.stack.push({ value: value, dispose: dispose, async: async });
|
|
19
|
+
}
|
|
20
|
+
else if (async) {
|
|
21
|
+
env.stack.push({ async: true });
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
var __disposeResources = (this && this.__disposeResources) || (function (SuppressedError) {
|
|
26
|
+
return function (env) {
|
|
27
|
+
function fail(e) {
|
|
28
|
+
env.error = env.hasError ? new SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
|
|
29
|
+
env.hasError = true;
|
|
30
|
+
}
|
|
31
|
+
var r, s = 0;
|
|
32
|
+
function next() {
|
|
33
|
+
while (r = env.stack.pop()) {
|
|
34
|
+
try {
|
|
35
|
+
if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
|
|
36
|
+
if (r.dispose) {
|
|
37
|
+
var result = r.dispose.call(r.value);
|
|
38
|
+
if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });
|
|
39
|
+
}
|
|
40
|
+
else s |= 1;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
fail(e);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
|
|
47
|
+
if (env.hasError) throw env.error;
|
|
48
|
+
}
|
|
49
|
+
return next();
|
|
50
|
+
};
|
|
51
|
+
})(typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
|
|
52
|
+
var e = new Error(message);
|
|
53
|
+
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
54
|
+
});
|
|
55
|
+
import * as goscript from "@go/builtin";
|
|
56
|
+
export async function main() {
|
|
57
|
+
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
58
|
+
try {
|
|
59
|
+
const __defer = __addDisposableResource(env_1, new goscript.AsyncDisposableStack(), true);
|
|
60
|
+
let ch = goscript.makeChannel(1, false);
|
|
61
|
+
// Wait for signal from main
|
|
62
|
+
__defer.defer(async () => {
|
|
63
|
+
console.log("deferred start");
|
|
64
|
+
await ch.receive();
|
|
65
|
+
console.log("deferred end");
|
|
66
|
+
});
|
|
67
|
+
console.log("main start");
|
|
68
|
+
console.log("main signaling defer");
|
|
69
|
+
await ch.send(true);
|
|
70
|
+
console.log("main end");
|
|
71
|
+
}
|
|
72
|
+
catch (e_1) {
|
|
73
|
+
env_1.error = e_1;
|
|
74
|
+
env_1.hasError = true;
|
|
75
|
+
}
|
|
76
|
+
finally {
|
|
77
|
+
const result_1 = __disposeResources(env_1);
|
|
78
|
+
if (result_1)
|
|
79
|
+
await result_1;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=async_defer_statement.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async_defer_statement.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/async_defer_statement/async_defer_statement.gs.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,yDAAyD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEzD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,IAAI;;;QACzB,MAAY,OAAO,kCAAG,IAAI,QAAQ,CAAC,oBAAoB,EAAE,OAAA,CAAC;QAC1D,IAAI,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAU,CAAC,EAAE,KAAK,CAAC,CAAA;QAEhD,4BAA4B;QAC5B,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YACxB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA;YAClB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC5B,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;;;;;;;;;;;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function main(): Promise<void>;
|