goscript 0.1.0 → 0.1.1

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 (327) hide show
  1. package/README.md +267 -255
  2. package/cmd/goscript/cmd-test.go +193 -0
  3. package/cmd/goscript/cmd-test_test.go +76 -0
  4. package/cmd/goscript/main.go +1 -0
  5. package/compiler/build-flags.go +38 -0
  6. package/compiler/compile-request.go +2 -0
  7. package/compiler/compliance_test.go +0 -8
  8. package/compiler/gotest/owner.go +24 -0
  9. package/compiler/gotest/package-result.go +67 -0
  10. package/compiler/gotest/request.go +145 -0
  11. package/compiler/gotest/result.go +28 -0
  12. package/compiler/gotest/runner.go +588 -0
  13. package/compiler/gotest/runner_test.go +627 -0
  14. package/compiler/gotest/test.go +9 -0
  15. package/compiler/index.test.ts +1 -1
  16. package/compiler/lowered-program.go +71 -19
  17. package/compiler/lowering.go +5065 -569
  18. package/compiler/override-facts.go +307 -0
  19. package/compiler/override-registry.go +50 -189
  20. package/compiler/override-registry_test.go +47 -0
  21. package/compiler/package-graph.go +50 -27
  22. package/compiler/package-graph_test.go +37 -2
  23. package/compiler/package-test-function.go +9 -0
  24. package/compiler/package-test-graph-package.go +40 -0
  25. package/compiler/package-test-graph-variant.go +105 -0
  26. package/compiler/package-test-graph.go +117 -0
  27. package/compiler/package-test-graph_test.go +144 -0
  28. package/compiler/runtime-contract.go +189 -29
  29. package/compiler/runtime-contract_test.go +44 -30
  30. package/compiler/semantic-model-types.go +9 -6
  31. package/compiler/semantic-model.go +538 -38
  32. package/compiler/semantic-model_test.go +55 -0
  33. package/compiler/service.go +1 -1
  34. package/compiler/skeleton_test.go +679 -49
  35. package/compiler/tsworkspace/owner.go +334 -0
  36. package/compiler/tsworkspace/owner_test.go +93 -0
  37. package/compiler/tsworkspace/result.go +17 -0
  38. package/compiler/typescript-emitter.go +459 -82
  39. package/compiler/wasm/compile.go +1 -1
  40. package/compiler/wasm/compile_test.go +61 -11
  41. package/compiler/wasm_api.go +172 -7
  42. package/dist/gs/builtin/builtin.d.ts +20 -2
  43. package/dist/gs/builtin/builtin.js +194 -6
  44. package/dist/gs/builtin/builtin.js.map +1 -1
  45. package/dist/gs/builtin/channel.d.ts +8 -0
  46. package/dist/gs/builtin/channel.js +12 -0
  47. package/dist/gs/builtin/channel.js.map +1 -1
  48. package/dist/gs/builtin/slice.d.ts +22 -2
  49. package/dist/gs/builtin/slice.js +216 -44
  50. package/dist/gs/builtin/slice.js.map +1 -1
  51. package/dist/gs/builtin/type.d.ts +5 -2
  52. package/dist/gs/builtin/type.js +83 -24
  53. package/dist/gs/builtin/type.js.map +1 -1
  54. package/dist/gs/builtin/varRef.d.ts +5 -0
  55. package/dist/gs/builtin/varRef.js +23 -0
  56. package/dist/gs/builtin/varRef.js.map +1 -1
  57. package/dist/gs/bytes/buffer.gs.js +48 -44
  58. package/dist/gs/bytes/buffer.gs.js.map +1 -1
  59. package/dist/gs/bytes/reader.gs.js +20 -18
  60. package/dist/gs/bytes/reader.gs.js.map +1 -1
  61. package/dist/gs/context/context.d.ts +5 -4
  62. package/dist/gs/context/context.js +10 -10
  63. package/dist/gs/context/context.js.map +1 -1
  64. package/dist/gs/crypto/internal/fips140deps/byteorder/index.d.ts +1 -0
  65. package/dist/gs/crypto/internal/fips140deps/byteorder/index.js +2 -0
  66. package/dist/gs/crypto/internal/fips140deps/byteorder/index.js.map +1 -0
  67. package/dist/gs/crypto/internal/fips140deps/godebug/index.d.ts +1 -0
  68. package/dist/gs/crypto/internal/fips140deps/godebug/index.js +2 -0
  69. package/dist/gs/crypto/internal/fips140deps/godebug/index.js.map +1 -0
  70. package/dist/gs/embed/index.d.ts +7 -0
  71. package/dist/gs/embed/index.js +16 -0
  72. package/dist/gs/embed/index.js.map +1 -0
  73. package/dist/gs/encoding/json/index.d.ts +1 -0
  74. package/dist/gs/encoding/json/index.js +18 -0
  75. package/dist/gs/encoding/json/index.js.map +1 -1
  76. package/dist/gs/errors/errors.d.ts +4 -0
  77. package/dist/gs/errors/errors.js +81 -0
  78. package/dist/gs/errors/errors.js.map +1 -1
  79. package/dist/gs/fmt/fmt.d.ts +4 -4
  80. package/dist/gs/fmt/fmt.js +42 -11
  81. package/dist/gs/fmt/fmt.js.map +1 -1
  82. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +35 -0
  83. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +211 -1
  84. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
  85. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +189 -0
  86. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +825 -0
  87. package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -0
  88. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +163 -0
  89. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +449 -0
  90. package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -0
  91. package/dist/gs/github.com/klauspost/compress/internal/le/index.d.ts +9 -0
  92. package/dist/gs/github.com/klauspost/compress/internal/le/index.js +71 -0
  93. package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
  94. package/dist/gs/go/internal/scannerhooks/index.d.ts +3 -0
  95. package/dist/gs/go/internal/scannerhooks/index.js +5 -0
  96. package/dist/gs/go/internal/scannerhooks/index.js.map +1 -0
  97. package/dist/gs/go/scanner/index.d.ts +13 -0
  98. package/dist/gs/go/scanner/index.js +35 -0
  99. package/dist/gs/go/scanner/index.js.map +1 -1
  100. package/dist/gs/go/token/index.d.ts +156 -0
  101. package/dist/gs/go/token/index.js +500 -4
  102. package/dist/gs/go/token/index.js.map +1 -1
  103. package/dist/gs/internal/abi/index.d.ts +4 -0
  104. package/dist/gs/internal/abi/index.js +10 -0
  105. package/dist/gs/internal/abi/index.js.map +1 -1
  106. package/dist/gs/internal/bytealg/index.d.ts +2 -0
  107. package/dist/gs/internal/bytealg/index.js +14 -0
  108. package/dist/gs/internal/bytealg/index.js.map +1 -1
  109. package/dist/gs/internal/byteorder/index.d.ts +8 -2
  110. package/dist/gs/internal/byteorder/index.js +56 -25
  111. package/dist/gs/internal/byteorder/index.js.map +1 -1
  112. package/dist/gs/internal/godebug/index.d.ts +12 -0
  113. package/dist/gs/internal/godebug/index.js +30 -0
  114. package/dist/gs/internal/godebug/index.js.map +1 -0
  115. package/dist/gs/io/fs/index.d.ts +1 -0
  116. package/dist/gs/io/fs/index.js +1 -0
  117. package/dist/gs/io/fs/index.js.map +1 -1
  118. package/dist/gs/io/fs/readlink.d.ts +8 -0
  119. package/dist/gs/io/fs/readlink.js +64 -0
  120. package/dist/gs/io/fs/readlink.js.map +1 -0
  121. package/dist/gs/io/fs/walk.d.ts +3 -3
  122. package/dist/gs/io/fs/walk.js +7 -7
  123. package/dist/gs/io/fs/walk.js.map +1 -1
  124. package/dist/gs/io/io.d.ts +40 -6
  125. package/dist/gs/io/io.js +151 -26
  126. package/dist/gs/io/io.js.map +1 -1
  127. package/dist/gs/maps/iter.d.ts +3 -3
  128. package/dist/gs/maps/iter.js +3 -3
  129. package/dist/gs/maps/iter.js.map +1 -1
  130. package/dist/gs/maps/maps.d.ts +2 -2
  131. package/dist/gs/maps/maps.js +1 -1
  132. package/dist/gs/maps/maps.js.map +1 -1
  133. package/dist/gs/math/bits/index.d.ts +13 -4
  134. package/dist/gs/math/bits/index.js +66 -34
  135. package/dist/gs/math/bits/index.js.map +1 -1
  136. package/dist/gs/math/const.gs.d.ts +5 -5
  137. package/dist/gs/math/const.gs.js +4 -4
  138. package/dist/gs/math/const.gs.js.map +1 -1
  139. package/dist/gs/mime/index.d.ts +1 -0
  140. package/dist/gs/mime/index.js +50 -0
  141. package/dist/gs/mime/index.js.map +1 -0
  142. package/dist/gs/net/http/httptest/index.d.ts +11 -0
  143. package/dist/gs/net/http/httptest/index.js +21 -0
  144. package/dist/gs/net/http/httptest/index.js.map +1 -0
  145. package/dist/gs/net/http/index.d.ts +27 -0
  146. package/dist/gs/net/http/index.js +61 -0
  147. package/dist/gs/net/http/index.js.map +1 -0
  148. package/dist/gs/os/dir_unix.gs.js +2 -2
  149. package/dist/gs/os/dir_unix.gs.js.map +1 -1
  150. package/dist/gs/os/types_js.gs.js.map +1 -1
  151. package/dist/gs/path/filepath/match.js +165 -3
  152. package/dist/gs/path/filepath/match.js.map +1 -1
  153. package/dist/gs/path/filepath/path.d.ts +3 -1
  154. package/dist/gs/path/filepath/path.js +133 -4
  155. package/dist/gs/path/filepath/path.js.map +1 -1
  156. package/dist/gs/path/path.d.ts +4 -1
  157. package/dist/gs/path/path.js +16 -4
  158. package/dist/gs/path/path.js.map +1 -1
  159. package/dist/gs/reflect/index.d.ts +1 -1
  160. package/dist/gs/reflect/index.js +1 -1
  161. package/dist/gs/reflect/index.js.map +1 -1
  162. package/dist/gs/reflect/map.js +3 -0
  163. package/dist/gs/reflect/map.js.map +1 -1
  164. package/dist/gs/reflect/type.d.ts +7 -4
  165. package/dist/gs/reflect/type.js +148 -7
  166. package/dist/gs/reflect/type.js.map +1 -1
  167. package/dist/gs/runtime/debug/index.d.ts +2 -0
  168. package/dist/gs/runtime/debug/index.js +8 -0
  169. package/dist/gs/runtime/debug/index.js.map +1 -0
  170. package/dist/gs/runtime/runtime.d.ts +35 -3
  171. package/dist/gs/runtime/runtime.js +72 -0
  172. package/dist/gs/runtime/runtime.js.map +1 -1
  173. package/dist/gs/slices/slices.d.ts +24 -5
  174. package/dist/gs/slices/slices.js +214 -5
  175. package/dist/gs/slices/slices.js.map +1 -1
  176. package/dist/gs/sort/slice.gs.d.ts +3 -3
  177. package/dist/gs/sort/slice.gs.js +6 -6
  178. package/dist/gs/sort/slice.gs.js.map +1 -1
  179. package/dist/gs/sort/sort.gs.d.ts +4 -4
  180. package/dist/gs/sort/sort.gs.js +11 -8
  181. package/dist/gs/sort/sort.gs.js.map +1 -1
  182. package/dist/gs/strings/builder.d.ts +1 -1
  183. package/dist/gs/strings/builder.js +3 -2
  184. package/dist/gs/strings/builder.js.map +1 -1
  185. package/dist/gs/sync/atomic/type.gs.d.ts +9 -8
  186. package/dist/gs/sync/atomic/type.gs.js +0 -2
  187. package/dist/gs/sync/atomic/type.gs.js.map +1 -1
  188. package/dist/gs/sync/sync.d.ts +2 -0
  189. package/dist/gs/sync/sync.js +27 -0
  190. package/dist/gs/sync/sync.js.map +1 -1
  191. package/dist/gs/syscall/constants.d.ts +36 -24
  192. package/dist/gs/syscall/constants.js +12 -0
  193. package/dist/gs/syscall/constants.js.map +1 -1
  194. package/dist/gs/syscall/errors.d.ts +2 -0
  195. package/dist/gs/syscall/errors.js +8 -0
  196. package/dist/gs/syscall/errors.js.map +1 -1
  197. package/dist/gs/syscall/fs.d.ts +43 -0
  198. package/dist/gs/syscall/fs.js +102 -0
  199. package/dist/gs/syscall/fs.js.map +1 -1
  200. package/dist/gs/syscall/js/index.d.ts +90 -0
  201. package/dist/gs/syscall/js/index.js +375 -0
  202. package/dist/gs/syscall/js/index.js.map +1 -0
  203. package/dist/gs/syscall/types.d.ts +22 -0
  204. package/dist/gs/syscall/types.js +45 -1
  205. package/dist/gs/syscall/types.js.map +1 -1
  206. package/dist/gs/testing/index.d.ts +1 -0
  207. package/dist/gs/testing/index.js +2 -0
  208. package/dist/gs/testing/index.js.map +1 -0
  209. package/dist/gs/testing/testing.d.ts +77 -0
  210. package/dist/gs/testing/testing.js +301 -0
  211. package/dist/gs/testing/testing.js.map +1 -0
  212. package/dist/gs/time/time.d.ts +41 -4
  213. package/dist/gs/time/time.js +205 -36
  214. package/dist/gs/time/time.js.map +1 -1
  215. package/dist/gs/unicode/unicode.d.ts +23 -1
  216. package/dist/gs/unicode/unicode.js +79 -10
  217. package/dist/gs/unicode/unicode.js.map +1 -1
  218. package/dist/gs/unicode/utf8/utf8.d.ts +4 -4
  219. package/dist/gs/unicode/utf8/utf8.js +24 -11
  220. package/dist/gs/unicode/utf8/utf8.js.map +1 -1
  221. package/dist/gs/unique/index.d.ts +11 -0
  222. package/dist/gs/unique/index.js +71 -0
  223. package/dist/gs/unique/index.js.map +1 -0
  224. package/go.sum +9 -0
  225. package/gs/builtin/builtin.ts +239 -8
  226. package/gs/builtin/channel.ts +22 -0
  227. package/gs/builtin/runtime-contract.test.ts +126 -0
  228. package/gs/builtin/slice.ts +259 -50
  229. package/gs/builtin/type.ts +109 -34
  230. package/gs/builtin/varRef.ts +38 -1
  231. package/gs/bytes/buffer.gs.ts +48 -44
  232. package/gs/bytes/meta.json +8 -3
  233. package/gs/bytes/reader.gs.ts +20 -19
  234. package/gs/context/context.test.ts +41 -0
  235. package/gs/context/context.ts +22 -26
  236. package/gs/crypto/internal/fips140deps/byteorder/index.ts +1 -0
  237. package/gs/crypto/internal/fips140deps/godebug/index.ts +1 -0
  238. package/gs/embed/index.ts +20 -0
  239. package/gs/embed/meta.json +5 -0
  240. package/gs/encoding/json/index.test.ts +15 -1
  241. package/gs/encoding/json/index.ts +24 -0
  242. package/gs/errors/errors.test.ts +82 -0
  243. package/gs/errors/errors.ts +104 -0
  244. package/gs/fmt/fmt.ts +56 -16
  245. package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +73 -1
  246. package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +297 -1
  247. package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +159 -0
  248. package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1005 -0
  249. package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +719 -0
  250. package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +40 -0
  251. package/gs/github.com/klauspost/compress/internal/le/index.test.ts +36 -0
  252. package/gs/github.com/klauspost/compress/internal/le/index.ts +114 -0
  253. package/gs/go/internal/scannerhooks/index.test.ts +14 -0
  254. package/gs/go/internal/scannerhooks/index.ts +9 -0
  255. package/gs/go/scanner/index.test.ts +22 -0
  256. package/gs/go/scanner/index.ts +47 -0
  257. package/gs/go/token/index.test.ts +47 -1
  258. package/gs/go/token/index.ts +570 -4
  259. package/gs/internal/abi/index.test.ts +18 -0
  260. package/gs/internal/abi/index.ts +14 -0
  261. package/gs/internal/bytealg/index.test.ts +18 -0
  262. package/gs/internal/bytealg/index.ts +16 -0
  263. package/gs/internal/byteorder/index.test.ts +39 -0
  264. package/gs/internal/byteorder/index.ts +100 -27
  265. package/gs/internal/godebug/index.test.ts +16 -0
  266. package/gs/internal/godebug/index.ts +35 -0
  267. package/gs/io/fs/index.ts +1 -0
  268. package/gs/io/fs/meta.json +5 -0
  269. package/gs/io/fs/readlink.test.ts +43 -0
  270. package/gs/io/fs/readlink.ts +77 -0
  271. package/gs/io/fs/walk.test.ts +61 -0
  272. package/gs/io/fs/walk.ts +9 -9
  273. package/gs/io/io.ts +174 -31
  274. package/gs/io/meta.json +10 -2
  275. package/gs/maps/iter.ts +12 -6
  276. package/gs/maps/maps.ts +8 -6
  277. package/gs/math/bits/index.ts +103 -47
  278. package/gs/math/const.gs.test.ts +11 -5
  279. package/gs/math/const.gs.ts +5 -6
  280. package/gs/mime/index.ts +54 -0
  281. package/gs/net/http/httptest/index.ts +25 -0
  282. package/gs/net/http/index.test.ts +20 -0
  283. package/gs/net/http/index.ts +81 -0
  284. package/gs/os/dir_unix.gs.ts +2 -3
  285. package/gs/os/types_js.gs.ts +2 -2
  286. package/gs/path/filepath/match.test.ts +31 -12
  287. package/gs/path/filepath/match.ts +178 -3
  288. package/gs/path/filepath/path.test.ts +25 -0
  289. package/gs/path/filepath/path.ts +159 -5
  290. package/gs/path/path.ts +20 -5
  291. package/gs/reflect/index.ts +1 -0
  292. package/gs/reflect/map.test.ts +19 -0
  293. package/gs/reflect/map.ts +4 -0
  294. package/gs/reflect/type.ts +197 -17
  295. package/gs/runtime/debug/index.test.ts +24 -0
  296. package/gs/runtime/debug/index.ts +8 -0
  297. package/gs/runtime/runtime.test.ts +19 -0
  298. package/gs/runtime/runtime.ts +98 -3
  299. package/gs/slices/slices.test.ts +94 -0
  300. package/gs/slices/slices.ts +245 -5
  301. package/gs/sort/meta.json +7 -0
  302. package/gs/sort/slice.gs.ts +16 -7
  303. package/gs/sort/sort.gs.ts +16 -13
  304. package/gs/strings/builder.ts +4 -3
  305. package/gs/sync/atomic/type.gs.ts +13 -14
  306. package/gs/sync/meta.json +3 -1
  307. package/gs/sync/sync.test.ts +13 -1
  308. package/gs/sync/sync.ts +27 -0
  309. package/gs/syscall/constants.ts +39 -24
  310. package/gs/syscall/errors.ts +10 -0
  311. package/gs/syscall/fs.ts +195 -0
  312. package/gs/syscall/js/index.ts +458 -0
  313. package/gs/syscall/js/meta.json +4 -0
  314. package/gs/syscall/net.test.ts +85 -0
  315. package/gs/syscall/types.ts +56 -0
  316. package/gs/testing/index.ts +1 -0
  317. package/gs/testing/meta.json +5 -0
  318. package/gs/testing/testing.test.ts +90 -0
  319. package/gs/testing/testing.ts +382 -0
  320. package/gs/time/time.test.ts +106 -0
  321. package/gs/time/time.ts +278 -57
  322. package/gs/unicode/unicode.test.ts +25 -0
  323. package/gs/unicode/unicode.ts +119 -9
  324. package/gs/unicode/utf8/utf8.test.ts +13 -0
  325. package/gs/unicode/utf8/utf8.ts +28 -16
  326. package/gs/unique/index.ts +91 -0
  327. package/package.json +2 -1
@@ -5,7 +5,7 @@ import (
5
5
  "github.com/aperturerobotics/goscript/compiler"
6
6
  )
7
7
 
8
- // CompileSource returns the v2 browser source-compilation diagnostic.
8
+ // CompileSource compiles import-free browser source strings to TypeScript.
9
9
  func CompileSource(source string, packageName string) (string, error) {
10
10
  return compiler.CompileSourceToTypeScript(source, packageName)
11
11
  }
@@ -2,28 +2,78 @@ package wasm
2
2
 
3
3
  import (
4
4
  "errors"
5
+ "strings"
5
6
  "testing"
6
7
 
7
8
  "github.com/aperturerobotics/goscript/compiler"
8
9
  )
9
10
 
10
- func TestCompileSourceReportsUnsupportedSingleFile(t *testing.T) {
11
- _, err := CompileSource("package main\nfunc main() {}\n", "main")
11
+ func TestCompileSourceCompilesSingleFile(t *testing.T) {
12
+ output, err := CompileSource(strings.Join([]string{
13
+ "package main",
14
+ "",
15
+ "type Counter struct {",
16
+ " value int",
17
+ "}",
18
+ "",
19
+ "func (c *Counter) Increment() {",
20
+ " c.value++",
21
+ "}",
22
+ "",
23
+ "func main() {",
24
+ " c := &Counter{}",
25
+ " c.Increment()",
26
+ " println(\"Count:\", c.value)",
27
+ "}",
28
+ "",
29
+ }, "\n"), "main")
30
+ if err != nil {
31
+ t.Fatal(err.Error())
32
+ }
33
+ for _, want := range []string{
34
+ "import * as $ from \"@goscript/builtin/index.js\"",
35
+ "class Counter",
36
+ "public Increment(): void",
37
+ "export async function main(): globalThis.Promise<void>",
38
+ "$.println(\"Count:\", $.pointerValue<Counter>(c).value)",
39
+ "await main()",
40
+ } {
41
+ if !strings.Contains(output, want) {
42
+ t.Fatalf("missing %q in generated output:\n%s", want, output)
43
+ }
44
+ }
45
+ }
46
+
47
+ func TestCompileSourceReportsParseErrors(t *testing.T) {
48
+ _, err := CompileSource("package main\nfunc main( {\n", "main")
49
+ if err == nil {
50
+ t.Fatal("expected compile error")
51
+ }
52
+ requireCompileDiagnostic(t, err, "goscript/wasm:parse")
53
+ }
54
+
55
+ func TestCompileSourceReportsUnsupportedImports(t *testing.T) {
56
+ _, err := CompileSource("package main\n\nimport \"fmt\"\n\nfunc main() { fmt.Println(\"hi\") }\n", "main")
12
57
  if err == nil {
13
58
  t.Fatal("expected compile error")
14
59
  }
60
+ requireCompileDiagnostic(t, err, "goscript/wasm:imports-unsupported")
61
+ }
62
+
63
+ func requireCompileDiagnostic(t *testing.T, err error, code string) {
64
+ t.Helper()
65
+
15
66
  var compileErr *compiler.CompileError
16
67
  if !errors.As(err, &compileErr) {
17
68
  t.Fatalf("expected CompileError, got %T: %v", err, err)
18
69
  }
19
- if len(compileErr.Diagnostics) != 1 {
20
- t.Fatalf("expected one diagnostic, got %d", len(compileErr.Diagnostics))
21
- }
22
- diag := compileErr.Diagnostics[0]
23
- if diag.Code != "goscript/wasm:single-file-unsupported" {
24
- t.Fatalf("expected single-file diagnostic, got %s", diag.Code)
25
- }
26
- if diag.Severity != compiler.DiagnosticSeverityError {
27
- t.Fatalf("expected error severity, got %s", diag.Severity)
70
+ for _, diag := range compileErr.Diagnostics {
71
+ if diag.Code == code {
72
+ if diag.Severity != compiler.DiagnosticSeverityError {
73
+ t.Fatalf("expected error severity, got %s", diag.Severity)
74
+ }
75
+ return
76
+ }
28
77
  }
78
+ t.Fatalf("missing diagnostic %q in %#v", code, compileErr.Diagnostics)
29
79
  }
@@ -1,14 +1,179 @@
1
1
  package compiler
2
2
 
3
+ import (
4
+ "context"
5
+ "go/ast"
6
+ "go/parser"
7
+ "go/token"
8
+ "go/types"
9
+ "strconv"
10
+ "strings"
11
+
12
+ "golang.org/x/tools/go/packages"
13
+ )
14
+
15
+ const browserSourceFileName = "main.go"
16
+
3
17
  // CompileSourceToTypeScript is the WASM adapter for browser source compilation.
4
18
  func CompileSourceToTypeScript(source string, packageName string) (string, error) {
5
- _ = source
6
- _ = packageName
19
+ graph, diagnostics := browserSourceGraph(source, packageName)
20
+ if diagnosticsHaveErrors(diagnostics) {
21
+ return "", NewCompileError(diagnostics)
22
+ }
23
+
24
+ ctx := context.Background()
25
+ service := NewCompileService()
26
+ model, modelDiagnostics := service.semanticOwner.Build(ctx, graph)
27
+ diagnostics = append(diagnostics, modelDiagnostics...)
28
+ if diagnosticsHaveErrors(diagnostics) {
29
+ return "", NewCompileError(diagnostics)
30
+ }
31
+
32
+ program, loweringDiagnostics := service.loweringOwner.Build(ctx, model)
33
+ diagnostics = append(diagnostics, loweringDiagnostics...)
34
+ if diagnosticsHaveErrors(diagnostics) {
35
+ return "", NewCompileError(diagnostics)
36
+ }
37
+ if program == nil || len(program.packages) != 1 || len(program.packages[0].files) != 1 {
38
+ diagnostics = append(diagnostics, Diagnostic{
39
+ Severity: DiagnosticSeverityError,
40
+ Code: "goscript/wasm:invalid-output",
41
+ Message: "browser source compilation produced an invalid output shape",
42
+ })
43
+ return "", NewCompileError(diagnostics)
44
+ }
45
+
46
+ files, emitDiagnostics := service.emitterOwner.EmitToMemory(ctx, program)
47
+ diagnostics = append(diagnostics, emitDiagnostics...)
48
+ if diagnosticsHaveErrors(diagnostics) {
49
+ return "", NewCompileError(diagnostics)
50
+ }
51
+ filePath := "@goscript/" + program.packages[0].pkgPath + "/" + program.packages[0].files[0].outputName
52
+ output, ok := files[filePath]
53
+ if !ok {
54
+ diagnostics = append(diagnostics, Diagnostic{
55
+ Severity: DiagnosticSeverityError,
56
+ Code: "goscript/wasm:missing-output",
57
+ Message: "browser source compilation did not emit the expected TypeScript file",
58
+ Detail: filePath,
59
+ })
60
+ return "", NewCompileError(diagnostics)
61
+ }
62
+ return output, nil
63
+ }
64
+
65
+ func browserSourceGraph(source string, packageName string) (*PackageGraph, []Diagnostic) {
66
+ if strings.TrimSpace(source) == "" {
67
+ return nil, []Diagnostic{{
68
+ Severity: DiagnosticSeverityError,
69
+ Code: "goscript/wasm:empty-source",
70
+ Message: "browser source compilation requires Go source code",
71
+ }}
72
+ }
73
+
74
+ fset := token.NewFileSet()
75
+ file, err := parser.ParseFile(fset, browserSourceFileName, source, parser.ParseComments)
76
+ if err != nil {
77
+ return nil, []Diagnostic{{
78
+ Severity: DiagnosticSeverityError,
79
+ Code: "goscript/wasm:parse",
80
+ Message: "browser source compilation failed to parse Go source",
81
+ Detail: err.Error(),
82
+ }}
83
+ }
84
+ if len(file.Imports) != 0 {
85
+ return nil, []Diagnostic{browserImportsUnsupportedDiagnostic(file)}
86
+ }
87
+
88
+ pkgPath := strings.TrimSpace(packageName)
89
+ if pkgPath == "" {
90
+ pkgPath = file.Name.Name
91
+ }
92
+ info := &types.Info{
93
+ Types: make(map[ast.Expr]types.TypeAndValue),
94
+ Defs: make(map[*ast.Ident]types.Object),
95
+ Uses: make(map[*ast.Ident]types.Object),
96
+ Implicits: make(map[ast.Node]types.Object),
97
+ Selections: make(map[*ast.SelectorExpr]*types.Selection),
98
+ Scopes: make(map[ast.Node]*types.Scope),
99
+ }
100
+ sizes := types.SizesFor("gc", "wasm")
101
+ if sizes == nil {
102
+ sizes = types.SizesFor("gc", "amd64")
103
+ }
104
+
105
+ var typeDiagnostics []Diagnostic
106
+ config := types.Config{
107
+ Sizes: sizes,
108
+ Error: func(err error) {
109
+ typeDiagnostics = append(typeDiagnostics, Diagnostic{
110
+ Severity: DiagnosticSeverityError,
111
+ Code: "goscript/wasm:typecheck",
112
+ Message: "browser source compilation failed to type-check Go source",
113
+ Detail: err.Error(),
114
+ })
115
+ },
116
+ }
117
+ typedPkg, err := config.Check(pkgPath, fset, []*ast.File{file}, info)
118
+ if err != nil {
119
+ if len(typeDiagnostics) == 0 {
120
+ typeDiagnostics = append(typeDiagnostics, Diagnostic{
121
+ Severity: DiagnosticSeverityError,
122
+ Code: "goscript/wasm:typecheck",
123
+ Message: "browser source compilation failed to type-check Go source",
124
+ Detail: err.Error(),
125
+ })
126
+ }
127
+ return nil, typeDiagnostics
128
+ }
129
+
130
+ node := &PackageGraphNode{
131
+ ID: pkgPath,
132
+ PkgPath: pkgPath,
133
+ Name: file.Name.Name,
134
+ GoFiles: []string{browserSourceFileName},
135
+ CompiledGoFiles: []string{browserSourceFileName},
136
+ Requested: true,
137
+ }
138
+ pkg := &packages.Package{
139
+ ID: pkgPath,
140
+ Name: file.Name.Name,
141
+ PkgPath: pkgPath,
142
+ GoFiles: []string{browserSourceFileName},
143
+ CompiledGoFiles: []string{browserSourceFileName},
144
+ Imports: make(map[string]*packages.Package),
145
+ Types: typedPkg,
146
+ Fset: fset,
147
+ Syntax: []*ast.File{file},
148
+ TypesInfo: info,
149
+ TypesSizes: sizes,
150
+ }
151
+ return &PackageGraph{
152
+ RequestedPatterns: []string{pkgPath},
153
+ RequestedPackagePaths: []string{pkgPath},
154
+ Nodes: []*PackageGraphNode{node},
155
+ NodesByPackagePath: map[string]*PackageGraphNode{
156
+ pkgPath: node,
157
+ },
158
+ packagesByPath: map[string]*packages.Package{
159
+ pkgPath: pkg,
160
+ },
161
+ }, nil
162
+ }
7
163
 
8
- return "", NewCompileError([]Diagnostic{{
164
+ func browserImportsUnsupportedDiagnostic(file *ast.File) Diagnostic {
165
+ imports := make([]string, 0, len(file.Imports))
166
+ for _, spec := range file.Imports {
167
+ importPath := spec.Path.Value
168
+ if unquoted, err := strconv.Unquote(importPath); err == nil {
169
+ importPath = unquoted
170
+ }
171
+ imports = append(imports, importPath)
172
+ }
173
+ return Diagnostic{
9
174
  Severity: DiagnosticSeverityError,
10
- Code: "goscript/wasm:single-file-unsupported",
11
- Message: "browser source compilation is not supported by the v2 compiler",
12
- Detail: "Use goscript compile --package . from inside a Go module. The website uses precompiled examples until direct single-file compilation is scoped.",
13
- }})
175
+ Code: "goscript/wasm:imports-unsupported",
176
+ Message: "browser source compilation does not support imports yet",
177
+ Detail: "Use goscript compile --package . from inside a Go module for imported packages. Imports: " + strings.Join(imports, ", "),
178
+ }
14
179
  }
@@ -21,7 +21,7 @@ export declare function panic(...args: any[]): never;
21
21
  * For maps, it deletes all entries.
22
22
  * @param v The slice or map to clear
23
23
  */
24
- export declare function clear<T>(v: T[] | Map<unknown, unknown> | null): void;
24
+ export declare function clear<T>(v: Slice<T> | Map<unknown, unknown> | null): void;
25
25
  /**
26
26
  * assignStruct copies all field values from source struct to target struct.
27
27
  * Used for pointer dereference assignment: *p = value
@@ -35,8 +35,26 @@ export declare function assignStruct<T>(target: T, source: T): void;
35
35
  * variable's address.
36
36
  */
37
37
  export declare function pointerValue<T>(value: T | VarRef<T> | null | undefined): T;
38
+ export declare function arrayEqual(a: unknown, b: unknown): boolean;
39
+ export interface Complex {
40
+ real: number;
41
+ imag: number;
42
+ }
43
+ export declare function complex(real: number, imag: number): Complex;
44
+ export declare function real(value: number | Complex | null | undefined): number;
45
+ export declare function imag(value: number | Complex | null | undefined): number;
38
46
  export type Bytes = Uint8Array | Slice<number>;
39
- export declare function int(value: number): number;
47
+ export declare function int(value: number | bigint, bits?: number): number;
48
+ export declare function uint(value: number | bigint, bits?: number): number;
49
+ export declare function uint64Shl(value: number | bigint, shift: number | bigint): number;
50
+ export declare function uint64Shr(value: number | bigint, shift: number | bigint): number;
51
+ export declare function uintShr(value: number | bigint, shift: number | bigint, bits?: number): number;
52
+ export declare function uint64Mul(left: number | bigint, right: number | bigint): number;
53
+ export declare function uint64Add(left: number | bigint, right: number | bigint): number;
54
+ export declare function uint64Sub(left: number | bigint, right: number | bigint): number;
55
+ export declare function uint64And(left: number | bigint, right: number | bigint): number;
56
+ export declare function uint64Or(left: number | bigint, right: number | bigint): number;
57
+ export declare function uint64Xor(left: number | bigint, right: number | bigint): number;
40
58
  /**
41
59
  * Normalizes various byte representations into a `Uint8Array` for protobuf compatibility.
42
60
  *
@@ -38,11 +38,38 @@ export function clear(v) {
38
38
  v.clear();
39
39
  return;
40
40
  }
41
+ if (v instanceof Uint8Array) {
42
+ v.fill(0);
43
+ return;
44
+ }
45
+ if (isSliceProxy(v)) {
46
+ const zero = clearZeroValue(v);
47
+ for (let i = 0; i < v.length; i++) {
48
+ v[i] = zero;
49
+ }
50
+ return;
51
+ }
41
52
  if (Array.isArray(v)) {
42
- v.fill(null);
53
+ v.fill(clearZeroValue(v));
43
54
  return;
44
55
  }
45
56
  }
57
+ function clearZeroValue(v) {
58
+ for (const item of v) {
59
+ if (item !== null && item !== undefined) {
60
+ switch (typeof item) {
61
+ case 'number':
62
+ return 0;
63
+ case 'string':
64
+ return '';
65
+ case 'boolean':
66
+ return false;
67
+ }
68
+ break;
69
+ }
70
+ }
71
+ return null;
72
+ }
46
73
  /**
47
74
  * assignStruct copies all field values from source struct to target struct.
48
75
  * Used for pointer dereference assignment: *p = value
@@ -84,9 +111,107 @@ export function pointerValue(value) {
84
111
  }
85
112
  return value;
86
113
  }
114
+ export function arrayEqual(a, b) {
115
+ return comparableEqual(a, b);
116
+ }
117
+ function comparableEqual(a, b) {
118
+ if (a === b) {
119
+ return true;
120
+ }
121
+ if (a === null || a === undefined || b === null || b === undefined) {
122
+ return false;
123
+ }
124
+ if (isArrayLike(a) && isArrayLike(b)) {
125
+ if (a.length !== b.length) {
126
+ return false;
127
+ }
128
+ for (let i = 0; i < a.length; i++) {
129
+ if (!comparableEqual(a[i], b[i])) {
130
+ return false;
131
+ }
132
+ }
133
+ return true;
134
+ }
135
+ if (hasGoType(a) || hasGoType(b)) {
136
+ if (!hasGoType(a) || !hasGoType(b) || a.__goType !== b.__goType) {
137
+ return false;
138
+ }
139
+ if (a.__isTypedNil || b.__isTypedNil) {
140
+ return a.__isTypedNil === true && b.__isTypedNil === true;
141
+ }
142
+ }
143
+ if (isStructValue(a) && isStructValue(b)) {
144
+ return fieldsEqual(a._fields, b._fields);
145
+ }
146
+ return false;
147
+ }
148
+ function isArrayLike(value) {
149
+ return Array.isArray(value) || value instanceof Uint8Array;
150
+ }
151
+ function hasGoType(value) {
152
+ return (typeof value === 'object' &&
153
+ value !== null &&
154
+ typeof value.__goType === 'string');
155
+ }
156
+ function isStructValue(value) {
157
+ return (typeof value === 'object' &&
158
+ value !== null &&
159
+ typeof value._fields === 'object' &&
160
+ value._fields !== null);
161
+ }
162
+ function fieldsEqual(a, b) {
163
+ const aKeys = Object.keys(a);
164
+ const bKeys = Object.keys(b);
165
+ if (aKeys.length !== bKeys.length) {
166
+ return false;
167
+ }
168
+ for (const key of aKeys) {
169
+ if (!(key in b) || !comparableEqual(a[key].value, b[key].value)) {
170
+ return false;
171
+ }
172
+ }
173
+ return true;
174
+ }
175
+ export function complex(real, imag) {
176
+ return { real, imag };
177
+ }
178
+ export function real(value) {
179
+ if (typeof value === 'number') {
180
+ return value;
181
+ }
182
+ return value?.real ?? 0;
183
+ }
184
+ export function imag(value) {
185
+ if (typeof value === 'number') {
186
+ return 0;
187
+ }
188
+ return value?.imag ?? 0;
189
+ }
87
190
  // int converts a value to a Go int type, handling proper signed integer conversion
88
191
  // This ensures that values like 2147483648 (2^31) are properly handled according to Go semantics
89
- export function int(value) {
192
+ export function int(value, bits = 0) {
193
+ if (typeof value === 'bigint') {
194
+ if (bits > 0 && bits <= 64) {
195
+ return Number(BigInt.asIntN(bits, value));
196
+ }
197
+ return Number(value);
198
+ }
199
+ if (bits > 0 && bits < 64) {
200
+ const modulo = 2 ** bits;
201
+ const sign = 2 ** (bits - 1);
202
+ let truncated = Math.trunc(value);
203
+ if (!Number.isFinite(truncated)) {
204
+ return truncated;
205
+ }
206
+ truncated %= modulo;
207
+ if (truncated < 0) {
208
+ truncated += modulo;
209
+ }
210
+ if (truncated >= sign) {
211
+ truncated -= modulo;
212
+ }
213
+ return truncated;
214
+ }
90
215
  // In Go, int is typically 64-bit on 64-bit systems, but for compatibility with JavaScript
91
216
  // we need to handle the conversion properly. The issue is that JavaScript's number type
92
217
  // can represent values larger than 32-bit signed integers, but when cast in certain contexts
@@ -98,6 +223,70 @@ export function int(value) {
98
223
  // For this we use Math.trunc.
99
224
  return Math.trunc(value);
100
225
  }
226
+ // uint converts a value to an unsigned Go integer width.
227
+ export function uint(value, bits = 64) {
228
+ if (typeof value === 'bigint') {
229
+ const normalized = BigInt.asUintN(Math.min(bits, 64), value);
230
+ if (bits >= 64) {
231
+ return normalized;
232
+ }
233
+ return Number(normalized);
234
+ }
235
+ const modulo = bits >= 64 ? 2 ** 64 : 2 ** bits;
236
+ let truncated = Math.trunc(value);
237
+ if (!Number.isFinite(truncated)) {
238
+ return truncated;
239
+ }
240
+ truncated %= modulo;
241
+ if (truncated < 0) {
242
+ truncated += modulo;
243
+ }
244
+ return truncated;
245
+ }
246
+ export function uint64Shl(value, shift) {
247
+ return uint64Result(uint64Value(value) << BigInt(Math.trunc(Number(shift))));
248
+ }
249
+ export function uint64Shr(value, shift) {
250
+ return uint64Result(uint64Value(value) >> BigInt(Math.trunc(Number(shift))));
251
+ }
252
+ export function uintShr(value, shift, bits = 32) {
253
+ const width = Math.min(bits, 32);
254
+ const amount = Math.trunc(Number(shift));
255
+ if (amount < 0) {
256
+ throw new Error('runtime error: negative shift amount');
257
+ }
258
+ if (amount >= width) {
259
+ return 0;
260
+ }
261
+ return uint(value, width) >>> amount;
262
+ }
263
+ export function uint64Mul(left, right) {
264
+ return uint64Result(uint64Value(left) * uint64Value(right));
265
+ }
266
+ export function uint64Add(left, right) {
267
+ return uint64Result(uint64Value(left) + uint64Value(right));
268
+ }
269
+ export function uint64Sub(left, right) {
270
+ return uint64Result(uint64Value(left) - uint64Value(right));
271
+ }
272
+ export function uint64And(left, right) {
273
+ return uint64Result(uint64Value(left) & uint64Value(right));
274
+ }
275
+ export function uint64Or(left, right) {
276
+ return uint64Result(uint64Value(left) | uint64Value(right));
277
+ }
278
+ export function uint64Xor(left, right) {
279
+ return uint64Result(uint64Value(left) ^ uint64Value(right));
280
+ }
281
+ function uint64Value(value) {
282
+ if (typeof value === 'bigint') {
283
+ return BigInt.asUintN(64, value);
284
+ }
285
+ return BigInt.asUintN(64, BigInt(Math.trunc(value)));
286
+ }
287
+ function uint64Result(value) {
288
+ return BigInt.asUintN(64, value);
289
+ }
101
290
  /**
102
291
  * Normalizes various byte representations into a `Uint8Array` for protobuf compatibility.
103
292
  *
@@ -218,15 +407,14 @@ export function bytesToArray(bytes) {
218
407
  if (bytes instanceof Uint8Array) {
219
408
  return Array.from(bytes);
220
409
  }
221
- if (Array.isArray(bytes)) {
222
- return bytes;
223
- }
224
- // Handle SliceProxy
225
410
  if (isSliceProxy(bytes)) {
226
411
  const proxy = bytes;
227
412
  const meta = proxy.__meta__;
228
413
  return meta.backing.slice(meta.offset, meta.offset + meta.length);
229
414
  }
415
+ if (Array.isArray(bytes)) {
416
+ return bytes;
417
+ }
230
418
  throw new Error(`Cannot convert bytes of type ${typeof bytes} to array`);
231
419
  }
232
420
  /**
@@ -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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"}
@@ -68,6 +68,10 @@ export interface Channel<T> {
68
68
  * Used for non-blocking select operations.
69
69
  */
70
70
  canSendNonBlocking(): boolean;
71
+ /**
72
+ * Reports the number of buffered values currently queued in the channel.
73
+ */
74
+ len(): number;
71
75
  }
72
76
  /**
73
77
  * Represents a case in a select statement.
@@ -140,6 +144,7 @@ export interface ChannelRef<T> {
140
144
  canReceiveNonBlocking(): boolean;
141
145
  selectSend(value: T, id: number): Promise<SelectResult<boolean>>;
142
146
  selectReceive(id: number): Promise<SelectResult<T>>;
147
+ len(): number;
143
148
  }
144
149
  /**
145
150
  * A bidirectional channel reference.
@@ -156,6 +161,7 @@ export declare class BidirectionalChannelRef<T> implements ChannelRef<T> {
156
161
  canReceiveNonBlocking(): boolean;
157
162
  selectSend(value: T, id: number): Promise<SelectResult<boolean>>;
158
163
  selectReceive(id: number): Promise<SelectResult<T>>;
164
+ len(): number;
159
165
  }
160
166
  /**
161
167
  * A send-only channel reference.
@@ -172,6 +178,7 @@ export declare class SendOnlyChannelRef<T> implements ChannelRef<T> {
172
178
  receiveWithOk(): Promise<ChannelReceiveResult<T>>;
173
179
  canReceiveNonBlocking(): boolean;
174
180
  selectReceive(_id: number): Promise<SelectResult<T>>;
181
+ len(): number;
175
182
  }
176
183
  /**
177
184
  * A receive-only channel reference.
@@ -188,6 +195,7 @@ export declare class ReceiveOnlyChannelRef<T> implements ChannelRef<T> {
188
195
  close(): void;
189
196
  canSendNonBlocking(): boolean;
190
197
  selectSend(_value: T, _id: number): Promise<SelectResult<boolean>>;
198
+ len(): number;
191
199
  }
192
200
  /**
193
201
  * Creates a new channel reference with the specified direction.