goscript 0.0.6 → 0.0.8

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.
Files changed (128) hide show
  1. package/README.md +22 -7
  2. package/builtin/builtin.ts +31 -21
  3. package/compiler/compile_expr.go +6 -2
  4. package/compiler/compile_stmt.go +15 -26
  5. package/dist/builtin/builtin.d.ts +1 -1
  6. package/dist/builtin/builtin.js +29 -18
  7. package/dist/builtin/builtin.js.map +1 -1
  8. package/dist/compliance/tests/array_literal/array_literal.gs.d.ts +1 -0
  9. package/dist/compliance/tests/array_literal/array_literal.gs.js +14 -0
  10. package/dist/compliance/tests/array_literal/array_literal.gs.js.map +1 -0
  11. package/dist/compliance/tests/async_basic/async_basic.gs.d.ts +1 -0
  12. package/dist/compliance/tests/async_basic/async_basic.gs.js +24 -0
  13. package/dist/compliance/tests/async_basic/async_basic.gs.js.map +1 -0
  14. package/dist/compliance/tests/basic_arithmetic/basic_arithmetic.gs.d.ts +1 -0
  15. package/dist/compliance/tests/basic_arithmetic/basic_arithmetic.gs.js +16 -0
  16. package/dist/compliance/tests/basic_arithmetic/basic_arithmetic.gs.js.map +1 -0
  17. package/dist/compliance/tests/boolean_logic/boolean_logic.gs.d.ts +1 -0
  18. package/dist/compliance/tests/boolean_logic/boolean_logic.gs.js +14 -0
  19. package/dist/compliance/tests/boolean_logic/boolean_logic.gs.js.map +1 -0
  20. package/dist/compliance/tests/channel_basic/channel_basic.gs.d.ts +1 -0
  21. package/dist/compliance/tests/channel_basic/channel_basic.gs.js +14 -0
  22. package/dist/compliance/tests/channel_basic/channel_basic.gs.js.map +1 -0
  23. package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.d.ts +1 -0
  24. package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.js +23 -0
  25. package/dist/compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.js.map +1 -0
  26. package/dist/compliance/tests/constants/constants.gs.d.ts +1 -0
  27. package/dist/compliance/tests/constants/constants.gs.js +16 -0
  28. package/dist/compliance/tests/constants/constants.gs.js.map +1 -0
  29. package/dist/compliance/tests/copy_independence/copy_independence.gs.d.ts +1 -0
  30. package/dist/compliance/tests/copy_independence/copy_independence.gs.js +31 -0
  31. package/dist/compliance/tests/copy_independence/copy_independence.gs.js.map +1 -0
  32. package/dist/compliance/tests/float64/float64.gs.d.ts +1 -0
  33. package/dist/compliance/tests/float64/float64.gs.js +23 -0
  34. package/dist/compliance/tests/float64/float64.gs.js.map +1 -0
  35. package/dist/compliance/tests/for_loop_basic/for_loop_basic.gs.d.ts +1 -0
  36. package/dist/compliance/tests/for_loop_basic/for_loop_basic.gs.js +10 -0
  37. package/dist/compliance/tests/for_loop_basic/for_loop_basic.gs.js.map +1 -0
  38. package/dist/compliance/tests/for_loop_condition_only/for_loop_condition_only.gs.d.ts +1 -0
  39. package/dist/compliance/tests/for_loop_condition_only/for_loop_condition_only.gs.js +11 -0
  40. package/dist/compliance/tests/for_loop_condition_only/for_loop_condition_only.gs.js.map +1 -0
  41. package/dist/compliance/tests/for_loop_condition_only/main.gs.d.ts +1 -0
  42. package/dist/compliance/tests/for_loop_condition_only/main.gs.js +10 -0
  43. package/dist/compliance/tests/for_loop_condition_only/main.gs.js.map +1 -0
  44. package/dist/compliance/tests/for_range/for_range.gs.d.ts +1 -0
  45. package/dist/compliance/tests/for_range/for_range.gs.js +39 -0
  46. package/dist/compliance/tests/for_range/for_range.gs.js.map +1 -0
  47. package/dist/compliance/tests/for_range_index_use/for_range_index_use.gs.d.ts +1 -0
  48. package/dist/compliance/tests/for_range_index_use/for_range_index_use.gs.js +15 -0
  49. package/dist/compliance/tests/for_range_index_use/for_range_index_use.gs.js.map +1 -0
  50. package/dist/compliance/tests/func_literal/func_literal.gs.d.ts +1 -0
  51. package/dist/compliance/tests/func_literal/func_literal.gs.js +10 -0
  52. package/dist/compliance/tests/func_literal/func_literal.gs.js.map +1 -0
  53. package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.d.ts +10 -0
  54. package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.js +26 -0
  55. package/dist/compliance/tests/function_call_result_assignment/function_call_result_assignment.gs.js.map +1 -0
  56. package/dist/compliance/tests/if_statement/if_statement.gs.d.ts +1 -0
  57. package/dist/compliance/tests/if_statement/if_statement.gs.js +13 -0
  58. package/dist/compliance/tests/if_statement/if_statement.gs.js.map +1 -0
  59. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.d.ts +1 -0
  60. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js +26 -0
  61. package/dist/compliance/tests/interface_to_interface_type_assertion/interface_to_interface_type_assertion.gs.js.map +1 -0
  62. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.d.ts +1 -0
  63. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js +26 -0
  64. package/dist/compliance/tests/interface_type_assertion/interface_type_assertion.gs.js.map +1 -0
  65. package/dist/compliance/tests/map_support/map_support.gs.d.ts +1 -0
  66. package/dist/compliance/tests/map_support/map_support.gs.js +88 -0
  67. package/dist/compliance/tests/map_support/map_support.gs.js.map +1 -0
  68. package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.d.ts +1 -0
  69. package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.js +22 -0
  70. package/dist/compliance/tests/method_call_on_pointer_receiver/method_call_on_pointer_receiver.gs.js.map +1 -0
  71. package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.d.ts +1 -0
  72. package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.js +30 -0
  73. package/dist/compliance/tests/method_call_on_pointer_via_value/method_call_on_pointer_via_value.gs.js.map +1 -0
  74. package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.d.ts +1 -0
  75. package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.js +19 -0
  76. package/dist/compliance/tests/method_call_on_value_receiver/method_call_on_value_receiver.gs.js.map +1 -0
  77. package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.d.ts +1 -0
  78. package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.js +30 -0
  79. package/dist/compliance/tests/method_call_on_value_via_pointer/method_call_on_value_via_pointer.gs.js.map +1 -0
  80. package/dist/compliance/tests/multiple_return_values/multiple_return_values.gs.d.ts +1 -0
  81. package/dist/compliance/tests/multiple_return_values/multiple_return_values.gs.js +17 -0
  82. package/dist/compliance/tests/multiple_return_values/multiple_return_values.gs.js.map +1 -0
  83. package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.d.ts +1 -0
  84. package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.js +26 -0
  85. package/dist/compliance/tests/pointer_assignment_no_copy/pointer_assignment_no_copy.gs.js.map +1 -0
  86. package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.d.ts +1 -0
  87. package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.js +24 -0
  88. package/dist/compliance/tests/pointer_composite_literal_assignment/pointer_composite_literal_assignment.gs.js.map +1 -0
  89. package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.d.ts +1 -0
  90. package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.js +19 -0
  91. package/dist/compliance/tests/pointer_deref_multiassign/pointer_deref_multiassign.gs.js.map +1 -0
  92. package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.d.ts +1 -0
  93. package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.js +18 -0
  94. package/dist/compliance/tests/pointer_initialization/pointer_initialization.gs.js.map +1 -0
  95. package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.d.ts +1 -0
  96. package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.js +27 -0
  97. package/dist/compliance/tests/select_receive_on_closed_channel_no_default/select_receive_on_closed_channel_no_default.gs.js.map +1 -0
  98. package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.d.ts +1 -0
  99. package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.js +29 -0
  100. package/dist/compliance/tests/select_send_on_full_buffered_channel_with_default/select_send_on_full_buffered_channel_with_default.gs.js.map +1 -0
  101. package/dist/compliance/tests/select_statement/select_statement.gs.d.ts +1 -0
  102. package/dist/compliance/tests/select_statement/select_statement.gs.js +209 -0
  103. package/dist/compliance/tests/select_statement/select_statement.gs.js.map +1 -0
  104. package/dist/compliance/tests/simple/simple.gs.d.ts +1 -0
  105. package/dist/compliance/tests/simple/simple.gs.js +6 -0
  106. package/dist/compliance/tests/simple/simple.gs.js.map +1 -0
  107. package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.d.ts +1 -0
  108. package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.js +22 -0
  109. package/dist/compliance/tests/simple_deref_assignment/simple_deref_assignment.gs.js.map +1 -0
  110. package/dist/compliance/tests/slices/slices.gs.d.ts +1 -0
  111. package/dist/compliance/tests/slices/slices.gs.js +21 -0
  112. package/dist/compliance/tests/slices/slices.gs.js.map +1 -0
  113. package/dist/compliance/tests/string_rune_conversion/string_rune_conversion.gs.d.ts +1 -0
  114. package/dist/compliance/tests/string_rune_conversion/string_rune_conversion.gs.js +17 -0
  115. package/dist/compliance/tests/string_rune_conversion/string_rune_conversion.gs.js.map +1 -0
  116. package/dist/compliance/tests/struct_field_access/struct_field_access.gs.d.ts +1 -0
  117. package/dist/compliance/tests/struct_field_access/struct_field_access.gs.js +16 -0
  118. package/dist/compliance/tests/struct_field_access/struct_field_access.gs.js.map +1 -0
  119. package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.d.ts +1 -0
  120. package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.js +27 -0
  121. package/dist/compliance/tests/struct_value_init_clone/struct_value_init_clone.gs.js.map +1 -0
  122. package/dist/compliance/tests/switch_statement/switch_statement.gs.d.ts +1 -0
  123. package/dist/compliance/tests/switch_statement/switch_statement.gs.js +76 -0
  124. package/dist/compliance/tests/switch_statement/switch_statement.gs.js.map +1 -0
  125. package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.d.ts +1 -0
  126. package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.js +29 -0
  127. package/dist/compliance/tests/value_type_copy_behavior/value_type_copy_behavior.gs.js.map +1 -0
  128. package/package.json +1 -1
package/README.md CHANGED
@@ -30,6 +30,8 @@ If you are OK with these limitations, GoScript is for you!
30
30
 
31
31
  ### Command Line
32
32
 
33
+ After installing the `goscript` npm package, the `goscript` command line tool is available. You can run it directly or within your `package.json` scripts.
34
+
33
35
  Compile a package using the CLI tool:
34
36
 
35
37
  ```bash
@@ -38,11 +40,16 @@ goscript compile \
38
40
  --output ./output
39
41
  ```
40
42
 
41
- For example, to compile the simple example:
43
+ For example, to compile the simple example from the project root:
44
+
45
+ ```bash
46
+ goscript compile --package ./example/simple --output ./output
47
+ ```
48
+ Or within the `example/simple` directory:
42
49
 
43
50
  ```bash
44
51
  cd example/simple
45
- go run ../../cmd/goscript compile --package . --output ./output
52
+ goscript compile --package . --output ./output
46
53
  ```
47
54
 
48
55
  ### As a Library
@@ -456,11 +463,19 @@ Code is compiled with `GOARCH=js` and uses a 32-bit environment similar to wasm.
456
463
  All Go import paths are prefixed with `@go/` and can be imported in TypeScript:
457
464
 
458
465
  ```typescript
459
- import { MyFunction, MyStruct } from '@go/github.com/myorg/mypackage';
460
-
461
- MyFunction();
462
- let myThing = new MyStruct();
463
- myThing.DoSometing();
466
+ import { MyAsyncFunction, MyStruct } from '@go/github.com/myorg/mypackage';
467
+
468
+ // Example of importing and using a compiled Go async function
469
+ async function runGoCode() {
470
+ // Call an async function compiled from Go
471
+ const result = await MyAsyncFunction("input data");
472
+ console.log("Result from Go async function:", result);
473
+
474
+ // You can still use synchronous types and functions
475
+ let myThing = new MyStruct();
476
+ myThing.GetMyString();
477
+ runGoCode();
478
+ }
464
479
  ```
465
480
 
466
481
  ## License
@@ -411,7 +411,7 @@ class BufferedChannel<T> implements Channel<T> {
411
411
  export interface SelectCase<T> {
412
412
  id: number
413
413
  isSend: boolean // true for send, false for receive
414
- channel: Channel<any>
414
+ channel: Channel<any> | null // Allow null
415
415
  value?: any // Value to send for send cases
416
416
  // Optional handlers for when this case is selected
417
417
  onSelected?: (result: SelectResult<T>) => Promise<void>
@@ -442,12 +442,11 @@ export async function selectStatement<T>(
442
442
  // Skip default case in this check
443
443
  continue
444
444
  }
445
- if (caseObj.isSend) {
446
- if (caseObj.channel.canSendNonBlocking()) {
445
+ // Add check for channel existence
446
+ if (caseObj.channel) {
447
+ if (caseObj.isSend && caseObj.channel.canSendNonBlocking()) {
447
448
  readyCases.push(caseObj)
448
- }
449
- } else {
450
- if (caseObj.channel.canReceiveNonBlocking()) {
449
+ } else if (!caseObj.isSend && caseObj.channel.canReceiveNonBlocking()) {
451
450
  readyCases.push(caseObj)
452
451
  }
453
452
  }
@@ -459,19 +458,25 @@ export async function selectStatement<T>(
459
458
  readyCases[Math.floor(Math.random() * readyCases.length)]
460
459
 
461
460
  // Execute the selected operation and its onSelected handler
462
- if (selectedCase.isSend) {
463
- const result = await selectedCase.channel.selectSend(
464
- selectedCase.value,
465
- selectedCase.id,
466
- )
467
- if (selectedCase.onSelected) {
468
- await selectedCase.onSelected(result as SelectResult<T>) // Await the handler
461
+ // Add check for channel existence
462
+ if (selectedCase.channel) {
463
+ if (selectedCase.isSend) {
464
+ const result = await selectedCase.channel.selectSend(
465
+ selectedCase.value,
466
+ selectedCase.id,
467
+ )
468
+ if (selectedCase.onSelected) {
469
+ await selectedCase.onSelected(result as SelectResult<T>) // Await the handler
470
+ }
471
+ } else {
472
+ const result = await selectedCase.channel.selectReceive(selectedCase.id)
473
+ if (selectedCase.onSelected) {
474
+ await selectedCase.onSelected(result) // Await the handler
475
+ }
469
476
  }
470
477
  } else {
471
- const result = await selectedCase.channel.selectReceive(selectedCase.id)
472
- if (selectedCase.onSelected) {
473
- await selectedCase.onSelected(result) // Await the handler
474
- }
478
+ // This case should ideally not happen if channel is required for non-default cases
479
+ console.error('Selected case without a channel:', selectedCase)
475
480
  }
476
481
  return // Return after executing a ready case
477
482
  }
@@ -497,11 +502,16 @@ export async function selectStatement<T>(
497
502
  .filter((c) => c.id !== -1)
498
503
  .map((caseObj) => {
499
504
  // Exclude default case
500
- if (caseObj.isSend) {
501
- return caseObj.channel.selectSend(caseObj.value, caseObj.id)
502
- } else {
503
- return caseObj.channel.selectReceive(caseObj.id)
505
+ // Add check for channel existence (though it should always exist here)
506
+ if (caseObj.channel) {
507
+ if (caseObj.isSend) {
508
+ return caseObj.channel.selectSend(caseObj.value, caseObj.id)
509
+ } else {
510
+ return caseObj.channel.selectReceive(caseObj.id)
511
+ }
504
512
  }
513
+ // Return a promise that never resolves if channel is somehow missing
514
+ return new Promise<SelectResult<any>>(() => {})
505
515
  })
506
516
 
507
517
  const result = await Promise.race(blockingPromises)
@@ -359,8 +359,12 @@ func (c *GoToTSCompiler) WriteCallExpr(exp *ast.CallExpr) error {
359
359
  // Handle make for slices: make([]T, len, cap) or make([]T, len)
360
360
  if len(exp.Args) >= 1 {
361
361
  // Handle map creation: make(map[K]V)
362
- if _, ok := exp.Args[0].(*ast.MapType); ok {
363
- c.tsw.WriteLiterally("goscript.makeMap()")
362
+ if mapType, ok := exp.Args[0].(*ast.MapType); ok {
363
+ c.tsw.WriteLiterally("goscript.makeMap<")
364
+ c.WriteTypeExpr(mapType.Key) // Write the key type
365
+ c.tsw.WriteLiterally(", ")
366
+ c.WriteTypeExpr(mapType.Value) // Write the value type
367
+ c.tsw.WriteLiterally(">()")
364
368
  return nil // Handled make for map
365
369
  }
366
370
 
@@ -136,25 +136,22 @@ func (c *GoToTSCompiler) WriteStmtSelect(exp *ast.SelectStmt) error {
136
136
  // This is our implementation of the select statement, which will use Promise.race
137
137
  // to achieve the same semantics as Go's select statement.
138
138
 
139
- // Create an array to hold all the select cases
140
- tempArrayName := c.newTempVar()
141
- c.tsw.WriteLiterally("const ")
142
- c.tsw.WriteLiterally(tempArrayName)
143
- c.tsw.WriteLiterally(": goscript.SelectCase<any>[] = []") // Array of SelectCase objects
144
- c.tsw.WriteLine("")
145
-
146
139
  // Variable to track whether we have a default case
147
140
  hasDefault := false
148
141
 
149
- // For each case clause, generate a SelectCase object and add it to the array
142
+ // Start the selectStatement call and the array literal
143
+ c.tsw.WriteLiterally("await goscript.selectStatement(")
144
+ c.tsw.WriteLine("[") // Put bracket on new line
145
+ c.tsw.Indent(1)
146
+
147
+ // For each case clause, generate a SelectCase object directly into the array literal
150
148
  for i, stmt := range exp.Body.List {
151
149
  if commClause, ok := stmt.(*ast.CommClause); ok {
152
150
  if commClause.Comm == nil {
153
151
  // This is a default case
154
152
  hasDefault = true
155
153
  // Add a SelectCase object for the default case with a special ID
156
- c.tsw.WriteLiterally(tempArrayName)
157
- c.tsw.WriteLiterally(".push({")
154
+ c.tsw.WriteLiterally("{") // Start object literal
158
155
  c.tsw.Indent(1)
159
156
  c.tsw.WriteLine("")
160
157
  c.tsw.WriteLiterally("id: -1,") // Special ID for default case
@@ -175,7 +172,7 @@ func (c *GoToTSCompiler) WriteStmtSelect(exp *ast.SelectStmt) error {
175
172
  c.tsw.Indent(-1)
176
173
  c.tsw.WriteLine("}") // Close onSelected handler
177
174
  c.tsw.Indent(-1)
178
- c.tsw.WriteLine("}),") // Close SelectCase object and add comma
175
+ c.tsw.WriteLiterally("},") // Close SelectCase object and add comma
179
176
  c.tsw.WriteLine("")
180
177
 
181
178
  continue
@@ -185,8 +182,7 @@ func (c *GoToTSCompiler) WriteStmtSelect(exp *ast.SelectStmt) error {
185
182
  caseID := i
186
183
 
187
184
  // Start writing the SelectCase object
188
- c.tsw.WriteLiterally(tempArrayName)
189
- c.tsw.WriteLiterally(".push({")
185
+ c.tsw.WriteLiterally("{") // Start object literal
190
186
  c.tsw.Indent(1)
191
187
  c.tsw.WriteLine("")
192
188
  c.tsw.WriteLiterally(fmt.Sprintf("id: %d,", caseID))
@@ -297,7 +293,7 @@ func (c *GoToTSCompiler) WriteStmtSelect(exp *ast.SelectStmt) error {
297
293
  c.tsw.Indent(-1)
298
294
  c.tsw.WriteLine("}") // Close onSelected handler
299
295
  c.tsw.Indent(-1)
300
- c.tsw.WriteLine("}),") // Close SelectCase object and add comma
296
+ c.tsw.WriteLiterally("},") // Close SelectCase object and add comma
301
297
  c.tsw.WriteLine("")
302
298
 
303
299
  } else {
@@ -305,12 +301,9 @@ func (c *GoToTSCompiler) WriteStmtSelect(exp *ast.SelectStmt) error {
305
301
  }
306
302
  }
307
303
 
308
- // Call the selectStatement helper with the array of SelectCase objects and the hasDefault flag
309
- // The result of selectStatement is the result of the selected case, but we handle assignments
310
- // within the onSelected handlers, so we don't need to assign the result here.
311
- c.tsw.WriteLiterally("await goscript.selectStatement(")
312
- c.tsw.WriteLiterally(tempArrayName)
313
- c.tsw.WriteLiterally(", ")
304
+ // Close the array literal and the selectStatement call
305
+ c.tsw.Indent(-1)
306
+ c.tsw.WriteLiterally("], ")
314
307
  c.tsw.WriteLiterally(fmt.Sprintf("%t", hasDefault))
315
308
  c.tsw.WriteLiterally(")")
316
309
  c.tsw.WriteLine("")
@@ -847,12 +840,8 @@ func (c *GoToTSCompiler) WriteStmtAssign(exp *ast.AssignStmt) error {
847
840
  writeSingleAssign := func(lhsExpr, rhsExpr ast.Expr, tok token.Token, isLast bool) error {
848
841
  // Check for blank identifier on the left-hand side
849
842
  if ident, ok := lhsExpr.(*ast.Ident); ok && ident.Name == "_" {
850
- // Blank identifier: evaluate the RHS for side effects, but discard the value.
851
- if err := c.WriteValueExpr(rhsExpr); err != nil {
852
- return fmt.Errorf("failed to write RHS for blank identifier assignment: %w", err)
853
- }
854
- c.tsw.WriteCommentInline("discarded value")
855
- c.tsw.WriteLine("") // Remove semicolon, each assignment gets its own line
843
+ // Blank identifier: Skip generating output for this assignment.
844
+ // Note: This assumes RHS side effects are not required in the generated TS.
856
845
  return nil
857
846
  }
858
847
 
@@ -146,7 +146,7 @@ export interface Channel<T> {
146
146
  export interface SelectCase<T> {
147
147
  id: number;
148
148
  isSend: boolean;
149
- channel: Channel<any>;
149
+ channel: Channel<any> | null;
150
150
  value?: any;
151
151
  onSelected?: (result: SelectResult<T>) => Promise<void>;
152
152
  }
@@ -296,13 +296,12 @@ export async function selectStatement(cases, hasDefault = false) {
296
296
  // Skip default case in this check
297
297
  continue;
298
298
  }
299
- if (caseObj.isSend) {
300
- if (caseObj.channel.canSendNonBlocking()) {
299
+ // Add check for channel existence
300
+ if (caseObj.channel) {
301
+ if (caseObj.isSend && caseObj.channel.canSendNonBlocking()) {
301
302
  readyCases.push(caseObj);
302
303
  }
303
- }
304
- else {
305
- if (caseObj.channel.canReceiveNonBlocking()) {
304
+ else if (!caseObj.isSend && caseObj.channel.canReceiveNonBlocking()) {
306
305
  readyCases.push(caseObj);
307
306
  }
308
307
  }
@@ -311,17 +310,24 @@ export async function selectStatement(cases, hasDefault = false) {
311
310
  // If one or more cases are ready, choose one pseudo-randomly
312
311
  const selectedCase = readyCases[Math.floor(Math.random() * readyCases.length)];
313
312
  // Execute the selected operation and its onSelected handler
314
- if (selectedCase.isSend) {
315
- const result = await selectedCase.channel.selectSend(selectedCase.value, selectedCase.id);
316
- if (selectedCase.onSelected) {
317
- await selectedCase.onSelected(result); // Await the handler
313
+ // Add check for channel existence
314
+ if (selectedCase.channel) {
315
+ if (selectedCase.isSend) {
316
+ const result = await selectedCase.channel.selectSend(selectedCase.value, selectedCase.id);
317
+ if (selectedCase.onSelected) {
318
+ await selectedCase.onSelected(result); // Await the handler
319
+ }
320
+ }
321
+ else {
322
+ const result = await selectedCase.channel.selectReceive(selectedCase.id);
323
+ if (selectedCase.onSelected) {
324
+ await selectedCase.onSelected(result); // Await the handler
325
+ }
318
326
  }
319
327
  }
320
328
  else {
321
- const result = await selectedCase.channel.selectReceive(selectedCase.id);
322
- if (selectedCase.onSelected) {
323
- await selectedCase.onSelected(result); // Await the handler
324
- }
329
+ // This case should ideally not happen if channel is required for non-default cases
330
+ console.error('Selected case without a channel:', selectedCase);
325
331
  }
326
332
  return; // Return after executing a ready case
327
333
  }
@@ -345,12 +351,17 @@ export async function selectStatement(cases, hasDefault = false) {
345
351
  .filter((c) => c.id !== -1)
346
352
  .map((caseObj) => {
347
353
  // Exclude default case
348
- if (caseObj.isSend) {
349
- return caseObj.channel.selectSend(caseObj.value, caseObj.id);
350
- }
351
- else {
352
- return caseObj.channel.selectReceive(caseObj.id);
354
+ // Add check for channel existence (though it should always exist here)
355
+ if (caseObj.channel) {
356
+ if (caseObj.isSend) {
357
+ return caseObj.channel.selectSend(caseObj.value, caseObj.id);
358
+ }
359
+ else {
360
+ return caseObj.channel.selectReceive(caseObj.id);
361
+ }
353
362
  }
363
+ // Return a promise that never resolves if channel is somehow missing
364
+ return new Promise(() => { });
354
365
  });
355
366
  const result = await Promise.race(blockingPromises);
356
367
  // Execute onSelected handler for the selected case
@@ -1 +1 @@
1
- {"version":3,"file":"builtin.js","sourceRoot":"","sources":["../../builtin/builtin.ts"],"names":[],"mappings":"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"}
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,14 @@
1
+ // Generated file based on array_literal.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ export async function main() {
4
+ // Test basic array literal
5
+ let a = [1, 2, 3];
6
+ console.log(a[0], a[1], a[2]);
7
+ // Test array literal with inferred length
8
+ let b = ["hello", "world"];
9
+ console.log(b[0], b[1]);
10
+ // Test array literal with specific element initialization
11
+ let c = [0, 10, 0, 30, 0];
12
+ console.log(c[0], c[1], c[2], c[3], c[4]);
13
+ }
14
+ //# sourceMappingURL=array_literal.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array_literal.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/array_literal/array_literal.gs.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,yDAAyD;AAIzD,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,2BAA2B;IAC3B,IAAI,CAAC,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7B,0CAA0C;IAC1C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEvB,0DAA0D;IAC1D,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IACzB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,24 @@
1
+ // Generated file based on async_basic.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ import * as goscript from "@go/builtin";
4
+ // This function receives from a channel, making it async.
5
+ async function receiveFromChan(ch) {
6
+ let val = await ch.receive(); // This operation makes the function async
7
+ return val;
8
+ }
9
+ // This function calls an async function, making it async too.
10
+ async function caller(ch) {
11
+ // We expect this call to be awaited in TypeScript
12
+ let result = await receiveFromChan(ch);
13
+ return result + 1;
14
+ }
15
+ export async function main() {
16
+ // Create a buffered channel
17
+ let myChan = goscript.makeChannel(1, 0);
18
+ await myChan.send(10);
19
+ // Call the async caller function
20
+ let finalResult = await caller(myChan);
21
+ console.log(finalResult); // Expected output: 11
22
+ myChan.close();
23
+ }
24
+ //# sourceMappingURL=async_basic.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async_basic.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/async_basic/async_basic.gs.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,0DAA0D;AAC1D,KAAK,UAAU,eAAe,CAAC,EAA4B;IAC1D,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE,CAAA,CAAC,0CAA0C;IACvE,OAAO,GAAG,CAAA;AACX,CAAC;AAED,8DAA8D;AAC9D,KAAK,UAAU,MAAM,CAAC,EAA4B;IACjD,kDAAkD;IAClD,IAAI,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,CAAC,CAAA;IACtC,OAAO,MAAM,GAAG,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,4BAA4B;IAC5B,IAAI,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/C,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAErB,iCAAiC;IACjC,IAAI,WAAW,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA,CAAC,sBAAsB;IAE/C,MAAM,CAAC,KAAK,EAAE,CAAA;AACf,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,16 @@
1
+ // Generated file based on basic_arithmetic.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ export async function main() {
4
+ // === Basic Arithmetic ===
5
+ let add = 2 + 3;
6
+ let sub = 10 - 4;
7
+ let mul = 6 * 7;
8
+ let div = 20 / 5;
9
+ let mod = 17 % 3;
10
+ console.log("Addition: Expected: 5, Actual:", add);
11
+ console.log("Subtraction: Expected: 6, Actual:", sub);
12
+ console.log("Multiplication: Expected: 42, Actual:", mul);
13
+ console.log("Division: Expected: 4, Actual:", div);
14
+ console.log("Modulus: Expected: 2, Actual:", mod);
15
+ }
16
+ //# sourceMappingURL=basic_arithmetic.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic_arithmetic.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/basic_arithmetic/basic_arithmetic.gs.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,yDAAyD;AAIzD,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,2BAA2B;IAC3B,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACf,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;IAChB,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACf,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;IAChB,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;IAChB,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAA;IACrD,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;IAClD,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,14 @@
1
+ // Generated file based on boolean_logic.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ export async function main() {
4
+ // === Boolean Logic ===
5
+ let a = true;
6
+ let b = false;
7
+ let and = a && b;
8
+ let or = a || b;
9
+ let notA = !a;
10
+ console.log("AND: Expected: false, Actual:", and);
11
+ console.log("OR: Expected: true, Actual:", or);
12
+ console.log("NOT: Expected: false, Actual:", notA);
13
+ }
14
+ //# sourceMappingURL=boolean_logic.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boolean_logic.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/boolean_logic/boolean_logic.gs.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,yDAAyD;AAIzD,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,wBAAwB;IACxB,IAAI,CAAC,GAAG,IAAI,CAAA;IACZ,IAAI,CAAC,GAAG,KAAK,CAAA;IACb,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;IAChB,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAA;IACf,IAAI,IAAI,GAAG,CAAC,CAAC,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;IACjD,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAA;IAC9C,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,14 @@
1
+ // Generated file based on channel_basic.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ import * as goscript from "@go/builtin";
4
+ export async function main() {
5
+ let messages = goscript.makeChannel(0, "");
6
+ queueMicrotask(async () => {
7
+ {
8
+ await messages.send("ping");
9
+ }
10
+ });
11
+ let msg = await messages.receive();
12
+ console.log(msg);
13
+ }
14
+ //# sourceMappingURL=channel_basic.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel_basic.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/channel_basic/channel_basic.gs.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,yDAAyD;AAEzD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,IAAI,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAS,CAAC,EAAE,EAAE,CAAC,CAAA;IAElD,cAAc,CAAC,KAAK,IAAI,EAAE;QACzB,CAAC;YACA,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5B,CAAC;IACF,CAAC,CAAC,CAAA;IAEF,IAAI,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAA;IAClC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AACjB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,23 @@
1
+ // Generated file based on composite_literal_assignment.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ class MyStruct {
4
+ MyInt = 0;
5
+ MyString = "";
6
+ myBool = false;
7
+ constructor(init) { if (init)
8
+ Object.assign(this, init); }
9
+ clone() { return Object.assign(Object.create(MyStruct.prototype), this); }
10
+ }
11
+ export async function main() {
12
+ // === Composite Literal Assignment (Value Copy) ===
13
+ // Creating a struct directly using a composite literal.
14
+ let structLiteral = new MyStruct({ MyString: "composite literal" });
15
+ // Assigning it creates another independent copy.
16
+ let structLiteralCopy = structLiteral.clone();
17
+ structLiteralCopy.MyString = "modified composite literal copy";
18
+ // Expected: "composite literal"
19
+ console.log("Original struct literal: Expected: composite literal, Actual: " + structLiteral.MyString);
20
+ // Expected: "modified composite literal copy"
21
+ console.log("Modified struct literal copy: Expected: modified composite literal copy, Actual: " + structLiteralCopy.MyString);
22
+ }
23
+ //# sourceMappingURL=composite_literal_assignment.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite_literal_assignment.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/composite_literal_assignment/composite_literal_assignment.gs.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,yDAAyD;AAIzD,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IACrB,MAAM,GAAY,KAAK,CAAC;IAEhC,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACvG;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,oDAAoD;IACpD,wDAAwD;IACxD,IAAI,aAAa,GAAG,IAAI,QAAQ,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAA;IACnE,iDAAiD;IACjD,IAAI,iBAAiB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAA;IAC7C,iBAAiB,CAAC,QAAQ,GAAG,iCAAiC,CAAA;IAC9D,gCAAgC;IAChC,OAAO,CAAC,GAAG,CAAC,gEAAgE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACtG,8CAA8C;IAC9C,OAAO,CAAC,GAAG,CAAC,mFAAmF,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;AAC9H,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,16 @@
1
+ // Generated file based on constants.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ let Pi = 3.14;
4
+ let Truth = false;
5
+ // TODO: Handle large integer constants and bit shifts exceeding JS number limits.
6
+ // Big = 1 << 60
7
+ // Small = Big >> 59 // Commented out as it depends on Big
8
+ let Greeting = "Hello, Constants!";
9
+ export async function main() {
10
+ console.log(Pi);
11
+ console.log(Truth);
12
+ // println(Big) // Commented out until large integer handling is implemented
13
+ // println(Small) // Commented out as it depends on Big
14
+ console.log(Greeting);
15
+ }
16
+ //# sourceMappingURL=constants.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/constants/constants.gs.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,yDAAyD;AAIzD,IAAI,EAAE,GAAG,IAAI,CAAC;AAEd,IAAI,KAAK,GAAG,KAAK,CAAC;AAElB,kFAAkF;AAClF,qBAAqB;AACrB,6DAA6D;AAC7D,IAAI,QAAQ,GAAG,mBAAmB,CAAC;AAEnC,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAClB,4EAA4E;IAC5E,uDAAuD;IACvD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;AACtB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,31 @@
1
+ // Generated file based on copy_independence.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ class MyStruct {
4
+ MyInt = 0;
5
+ MyString = "";
6
+ myBool = false;
7
+ constructor(init) { if (init)
8
+ Object.assign(this, init); }
9
+ clone() { return Object.assign(Object.create(MyStruct.prototype), this); }
10
+ }
11
+ export async function main() {
12
+ // Setup from previous steps (simplified for this test)
13
+ let structPointer = new MyStruct({ MyInt: 4, MyString: "hello world" });
14
+ let dereferencedStructCopy = structPointer.clone();
15
+ dereferencedStructCopy.MyString = "original dereferenced copy modified";
16
+ let valueCopy1 = dereferencedStructCopy.clone();
17
+ valueCopy1.MyString = "value copy 1";
18
+ let valueCopy2 = dereferencedStructCopy.clone();
19
+ valueCopy2.MyString = "value copy 2";
20
+ let pointerCopy = structPointer;
21
+ // === Verifying Copy Independence ===
22
+ // Expected: "hello world"
23
+ console.log("pointerCopy (points to original structPointer): Expected: hello world, Actual: " + pointerCopy.MyString);
24
+ // Expected: "original dereferenced copy modified"
25
+ console.log("dereferencedStructCopy (modified after copies were made): Expected: original dereferenced copy modified, Actual: " + dereferencedStructCopy.MyString);
26
+ // Expected: "value copy 1"
27
+ console.log("valueCopy1: Expected: value copy 1, Actual: " + valueCopy1.MyString);
28
+ // Expected: "value copy 2"
29
+ console.log("valueCopy2: Expected: value copy 2, Actual: " + valueCopy2.MyString);
30
+ }
31
+ //# sourceMappingURL=copy_independence.gs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"copy_independence.gs.js","sourceRoot":"","sources":["../../../../compliance/tests/copy_independence/copy_independence.gs.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,yDAAyD;AAIzD,MAAM,QAAQ;IACN,KAAK,GAAW,CAAC,CAAC;IAClB,QAAQ,GAAW,EAAE,CAAC;IACrB,MAAM,GAAY,KAAK,CAAC;IAEhC,YAAY,IAAwB,IAAI,IAAI,IAAI;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,KAAK,KAAe,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;CACvG;AAED,MAAM,CAAC,KAAK,UAAU,IAAI;IACzB,uDAAuD;IACvD,IAAI,aAAa,GAAG,IAAI,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAA;IACvE,IAAI,sBAAsB,GAAG,aAAa,CAAC,KAAK,EAAE,CAAA;IAClD,sBAAsB,CAAC,QAAQ,GAAG,qCAAqC,CAAA;IACvE,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,IAAI,UAAU,GAAG,sBAAsB,CAAC,KAAK,EAAE,CAAA;IAC/C,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAA;IACpC,IAAI,WAAW,GAAG,aAAa,CAAA;IAE/B,sCAAsC;IACtC,0BAA0B;IAC1B,OAAO,CAAC,GAAG,CAAC,iFAAiF,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;IACrH,kDAAkD;IAClD,OAAO,CAAC,GAAG,CAAC,mHAAmH,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAA;IAClK,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IACjF,2BAA2B;IAC3B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;AAClF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function main(): Promise<void>;
@@ -0,0 +1,23 @@
1
+ // Generated file based on float64.go
2
+ // Updated when compliance tests are re-run, DO NOT EDIT!
3
+ export async function main() {
4
+ let a = 1.23;
5
+ let b = 4.56;
6
+ let c;
7
+ c = a + b;
8
+ console.log("a + b =", c);
9
+ c = a - b;
10
+ console.log("a - b =", c);
11
+ c = a * b;
12
+ console.log("a * b =", c);
13
+ c = a / b;
14
+ console.log("a / b =", c);
15
+ // Assignment
16
+ let d = 7.89;
17
+ c = d;
18
+ console.log("c =", c);
19
+ // More complex expression
20
+ let e = (a + b) * (c - d) / a;
21
+ console.log("(a + b) * (c - d) / a =", e);
22
+ }
23
+ //# sourceMappingURL=float64.gs.js.map