goscript 0.0.84 → 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.
- package/README.md +267 -243
- package/cmd/goscript/cmd-test.go +193 -0
- package/cmd/goscript/cmd-test_test.go +76 -0
- package/cmd/goscript/cmd_compile.go +70 -69
- package/cmd/goscript/cmd_compile_test.go +79 -0
- package/cmd/goscript/main.go +11 -5
- package/compiler/build-flags.go +38 -0
- package/compiler/compile-request.go +220 -0
- package/compiler/compiler.go +16 -1336
- package/compiler/compliance_test.go +188 -0
- package/compiler/config.go +6 -13
- package/compiler/diagnostic.go +70 -0
- package/compiler/gotest/owner.go +24 -0
- package/compiler/gotest/package-result.go +67 -0
- package/compiler/gotest/request.go +145 -0
- package/compiler/gotest/result.go +28 -0
- package/compiler/gotest/runner.go +588 -0
- package/compiler/gotest/runner_test.go +627 -0
- package/compiler/gotest/test.go +9 -0
- package/compiler/index.test.ts +28 -28
- package/compiler/index.ts +40 -72
- package/compiler/lowered-program.go +184 -0
- package/compiler/lowering.go +8072 -0
- package/compiler/override-facts.go +307 -0
- package/compiler/override-registry.go +283 -0
- package/compiler/override-registry_test.go +254 -0
- package/compiler/package-graph.go +254 -0
- package/compiler/package-graph_test.go +316 -0
- package/compiler/package-test-function.go +9 -0
- package/compiler/package-test-graph-package.go +40 -0
- package/compiler/package-test-graph-variant.go +105 -0
- package/compiler/package-test-graph.go +117 -0
- package/compiler/package-test-graph_test.go +144 -0
- package/compiler/result.go +13 -0
- package/compiler/runtime-contract.go +439 -0
- package/compiler/runtime-contract_test.go +104 -0
- package/compiler/semantic-model-types.go +113 -0
- package/compiler/semantic-model.go +1422 -0
- package/compiler/semantic-model_test.go +471 -0
- package/compiler/service.go +133 -0
- package/compiler/skeleton_test.go +1775 -0
- package/compiler/tsworkspace/owner.go +334 -0
- package/compiler/tsworkspace/owner_test.go +93 -0
- package/compiler/tsworkspace/result.go +17 -0
- package/compiler/typescript-emitter.go +1040 -0
- package/compiler/wasm/compile.go +2 -3
- package/compiler/wasm/compile_test.go +79 -0
- package/compiler/wasm_api.go +140 -124
- package/dist/compiler/index.d.ts +1 -3
- package/dist/compiler/index.js +31 -55
- package/dist/compiler/index.js.map +1 -1
- package/dist/gs/builtin/builtin.d.ts +33 -2
- package/dist/gs/builtin/builtin.js +217 -6
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +11 -3
- package/dist/gs/builtin/channel.js +12 -0
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/hostio.d.ts +15 -1
- package/dist/gs/builtin/hostio.js +134 -49
- package/dist/gs/builtin/hostio.js.map +1 -1
- package/dist/gs/builtin/index.d.ts +1 -0
- package/dist/gs/builtin/index.js +1 -0
- package/dist/gs/builtin/index.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +23 -3
- package/dist/gs/builtin/slice.js +216 -44
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +16 -2
- package/dist/gs/builtin/type.js +134 -21
- package/dist/gs/builtin/type.js.map +1 -1
- package/dist/gs/builtin/varRef.d.ts +5 -0
- package/dist/gs/builtin/varRef.js +23 -0
- package/dist/gs/builtin/varRef.js.map +1 -1
- package/dist/gs/bytes/buffer.gs.js +48 -44
- package/dist/gs/bytes/buffer.gs.js.map +1 -1
- package/dist/gs/bytes/bytes.gs.js.map +1 -1
- package/dist/gs/bytes/reader.gs.js +20 -18
- package/dist/gs/bytes/reader.gs.js.map +1 -1
- package/dist/gs/context/context.d.ts +5 -4
- package/dist/gs/context/context.js +10 -10
- package/dist/gs/context/context.js.map +1 -1
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.d.ts +1 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.js +2 -0
- package/dist/gs/crypto/internal/fips140deps/byteorder/index.js.map +1 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.d.ts +1 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.js +2 -0
- package/dist/gs/crypto/internal/fips140deps/godebug/index.js.map +1 -0
- package/dist/gs/crypto/rand/index.d.ts +5 -0
- package/dist/gs/crypto/rand/index.js +77 -0
- package/dist/gs/crypto/rand/index.js.map +1 -0
- package/dist/gs/embed/index.d.ts +7 -0
- package/dist/gs/embed/index.js +16 -0
- package/dist/gs/embed/index.js.map +1 -0
- package/dist/gs/encoding/json/index.d.ts +4 -0
- package/dist/gs/encoding/json/index.js +178 -0
- package/dist/gs/encoding/json/index.js.map +1 -0
- package/dist/gs/errors/errors.d.ts +4 -0
- package/dist/gs/errors/errors.js +81 -0
- package/dist/gs/errors/errors.js.map +1 -1
- package/dist/gs/fmt/fmt.d.ts +4 -4
- package/dist/gs/fmt/fmt.js +42 -11
- package/dist/gs/fmt/fmt.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.d.ts +36 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +212 -2
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js.map +1 -1
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.d.ts +189 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js +825 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.js.map +1 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.d.ts +163 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js +449 -0
- package/dist/gs/github.com/aperturerobotics/starpc/srpc/index.js.map +1 -0
- package/dist/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/browser.js.map +1 -1
- package/dist/gs/github.com/klauspost/compress/internal/le/index.d.ts +9 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js +71 -0
- package/dist/gs/github.com/klauspost/compress/internal/le/index.js.map +1 -0
- package/dist/gs/github.com/pkg/errors/errors.js.map +1 -1
- package/dist/gs/github.com/pkg/errors/stack.js.map +1 -1
- package/dist/gs/go/internal/scannerhooks/index.d.ts +3 -0
- package/dist/gs/go/internal/scannerhooks/index.js +5 -0
- package/dist/gs/go/internal/scannerhooks/index.js.map +1 -0
- package/dist/gs/go/scanner/index.d.ts +42 -0
- package/dist/gs/go/scanner/index.js +155 -0
- package/dist/gs/go/scanner/index.js.map +1 -0
- package/dist/gs/go/token/index.d.ts +187 -0
- package/dist/gs/go/token/index.js +578 -0
- package/dist/gs/go/token/index.js.map +1 -0
- package/dist/gs/internal/abi/index.d.ts +4 -0
- package/dist/gs/internal/abi/index.js +10 -0
- package/dist/gs/internal/abi/index.js.map +1 -1
- package/dist/gs/internal/bytealg/index.d.ts +2 -0
- package/dist/gs/internal/bytealg/index.js +14 -0
- package/dist/gs/internal/bytealg/index.js.map +1 -1
- package/dist/gs/internal/byteorder/index.d.ts +8 -2
- package/dist/gs/internal/byteorder/index.js +56 -25
- package/dist/gs/internal/byteorder/index.js.map +1 -1
- package/dist/gs/internal/godebug/index.d.ts +12 -0
- package/dist/gs/internal/godebug/index.js +30 -0
- package/dist/gs/internal/godebug/index.js.map +1 -0
- package/dist/gs/io/fs/fs.js.map +1 -1
- package/dist/gs/io/fs/index.d.ts +1 -0
- package/dist/gs/io/fs/index.js +1 -0
- package/dist/gs/io/fs/index.js.map +1 -1
- package/dist/gs/io/fs/readdir.js.map +1 -1
- package/dist/gs/io/fs/readfile.js.map +1 -1
- package/dist/gs/io/fs/readlink.d.ts +8 -0
- package/dist/gs/io/fs/readlink.js +64 -0
- package/dist/gs/io/fs/readlink.js.map +1 -0
- package/dist/gs/io/fs/stat.js.map +1 -1
- package/dist/gs/io/fs/sub.js.map +1 -1
- package/dist/gs/io/fs/walk.d.ts +3 -3
- package/dist/gs/io/fs/walk.js +7 -7
- package/dist/gs/io/fs/walk.js.map +1 -1
- package/dist/gs/io/io.d.ts +40 -6
- package/dist/gs/io/io.js +151 -26
- package/dist/gs/io/io.js.map +1 -1
- package/dist/gs/maps/iter.d.ts +3 -3
- package/dist/gs/maps/iter.js +3 -3
- package/dist/gs/maps/iter.js.map +1 -1
- package/dist/gs/maps/maps.d.ts +2 -2
- package/dist/gs/maps/maps.js +1 -1
- package/dist/gs/maps/maps.js.map +1 -1
- package/dist/gs/math/bits/index.d.ts +13 -4
- package/dist/gs/math/bits/index.js +66 -34
- package/dist/gs/math/bits/index.js.map +1 -1
- package/dist/gs/math/const.gs.d.ts +5 -5
- package/dist/gs/math/const.gs.js +4 -4
- package/dist/gs/math/const.gs.js.map +1 -1
- package/dist/gs/mime/index.d.ts +1 -0
- package/dist/gs/mime/index.js +50 -0
- package/dist/gs/mime/index.js.map +1 -0
- package/dist/gs/net/http/httptest/index.d.ts +11 -0
- package/dist/gs/net/http/httptest/index.js +21 -0
- package/dist/gs/net/http/httptest/index.js.map +1 -0
- package/dist/gs/net/http/index.d.ts +27 -0
- package/dist/gs/net/http/index.js +61 -0
- package/dist/gs/net/http/index.js.map +1 -0
- package/dist/gs/os/dir_unix.gs.js +2 -2
- package/dist/gs/os/dir_unix.gs.js.map +1 -1
- package/dist/gs/os/error.gs.js +2 -4
- package/dist/gs/os/error.gs.js.map +1 -1
- package/dist/gs/os/exec.gs.js.map +1 -1
- package/dist/gs/os/exec_posix.gs.js.map +1 -1
- package/dist/gs/os/rawconn_js.gs.js.map +1 -1
- package/dist/gs/os/root_js.gs.js.map +1 -1
- package/dist/gs/os/tempfile.gs.js +66 -9
- package/dist/gs/os/tempfile.gs.js.map +1 -1
- package/dist/gs/os/types.gs.js.map +1 -1
- package/dist/gs/os/types_js.gs.js +9 -9
- package/dist/gs/os/types_js.gs.js.map +1 -1
- package/dist/gs/os/types_unix.gs.js.map +1 -1
- package/dist/gs/path/filepath/match.js +165 -3
- package/dist/gs/path/filepath/match.js.map +1 -1
- package/dist/gs/path/filepath/path.d.ts +3 -1
- package/dist/gs/path/filepath/path.js +133 -4
- package/dist/gs/path/filepath/path.js.map +1 -1
- package/dist/gs/path/match.js.map +1 -1
- package/dist/gs/path/path.d.ts +4 -1
- package/dist/gs/path/path.js +16 -4
- package/dist/gs/path/path.js.map +1 -1
- package/dist/gs/reflect/index.d.ts +3 -3
- package/dist/gs/reflect/index.js +2 -2
- package/dist/gs/reflect/index.js.map +1 -1
- package/dist/gs/reflect/map.js +3 -0
- package/dist/gs/reflect/map.js.map +1 -1
- package/dist/gs/reflect/type.d.ts +9 -5
- package/dist/gs/reflect/type.js +233 -21
- package/dist/gs/reflect/type.js.map +1 -1
- package/dist/gs/reflect/types.js.map +1 -1
- package/dist/gs/reflect/visiblefields.js.map +1 -1
- package/dist/gs/runtime/debug/index.d.ts +2 -0
- package/dist/gs/runtime/debug/index.js +8 -0
- package/dist/gs/runtime/debug/index.js.map +1 -0
- package/dist/gs/runtime/runtime.d.ts +35 -3
- package/dist/gs/runtime/runtime.js +72 -0
- package/dist/gs/runtime/runtime.js.map +1 -1
- package/dist/gs/slices/slices.d.ts +24 -5
- package/dist/gs/slices/slices.js +214 -5
- package/dist/gs/slices/slices.js.map +1 -1
- package/dist/gs/sort/slice.gs.d.ts +3 -3
- package/dist/gs/sort/slice.gs.js +6 -6
- package/dist/gs/sort/slice.gs.js.map +1 -1
- package/dist/gs/sort/sort.gs.d.ts +4 -4
- package/dist/gs/sort/sort.gs.js +11 -8
- package/dist/gs/sort/sort.gs.js.map +1 -1
- package/dist/gs/strconv/atoi.gs.js.map +1 -1
- package/dist/gs/strconv/quote.gs.js.map +1 -1
- package/dist/gs/strings/builder.d.ts +1 -1
- package/dist/gs/strings/builder.js +3 -2
- package/dist/gs/strings/builder.js.map +1 -1
- package/dist/gs/strings/reader.js.map +1 -1
- package/dist/gs/strings/replace.js.map +1 -1
- package/dist/gs/sync/atomic/type.gs.d.ts +9 -8
- package/dist/gs/sync/atomic/type.gs.js +0 -2
- package/dist/gs/sync/atomic/type.gs.js.map +1 -1
- package/dist/gs/sync/atomic/value.gs.js.map +1 -1
- package/dist/gs/sync/sync.d.ts +3 -0
- package/dist/gs/sync/sync.js +39 -0
- package/dist/gs/sync/sync.js.map +1 -1
- package/dist/gs/syscall/constants.d.ts +36 -24
- package/dist/gs/syscall/constants.js +12 -0
- package/dist/gs/syscall/constants.js.map +1 -1
- package/dist/gs/syscall/errors.d.ts +2 -0
- package/dist/gs/syscall/errors.js +8 -0
- package/dist/gs/syscall/errors.js.map +1 -1
- package/dist/gs/syscall/fs.d.ts +43 -0
- package/dist/gs/syscall/fs.js +102 -0
- package/dist/gs/syscall/fs.js.map +1 -1
- package/dist/gs/syscall/js/index.d.ts +90 -0
- package/dist/gs/syscall/js/index.js +375 -0
- package/dist/gs/syscall/js/index.js.map +1 -0
- package/dist/gs/syscall/types.d.ts +22 -0
- package/dist/gs/syscall/types.js +45 -1
- package/dist/gs/syscall/types.js.map +1 -1
- package/dist/gs/testing/index.d.ts +1 -0
- package/dist/gs/testing/index.js +2 -0
- package/dist/gs/testing/index.js.map +1 -0
- package/dist/gs/testing/testing.d.ts +77 -0
- package/dist/gs/testing/testing.js +301 -0
- package/dist/gs/testing/testing.js.map +1 -0
- package/dist/gs/time/time.d.ts +41 -4
- package/dist/gs/time/time.js +205 -36
- package/dist/gs/time/time.js.map +1 -1
- package/dist/gs/unicode/unicode.d.ts +23 -1
- package/dist/gs/unicode/unicode.js +79 -10
- package/dist/gs/unicode/unicode.js.map +1 -1
- package/dist/gs/unicode/utf8/utf8.d.ts +4 -4
- package/dist/gs/unicode/utf8/utf8.js +24 -11
- package/dist/gs/unicode/utf8/utf8.js.map +1 -1
- package/dist/gs/unique/index.d.ts +11 -0
- package/dist/gs/unique/index.js +71 -0
- package/dist/gs/unique/index.js.map +1 -0
- package/go.mod +2 -2
- package/go.sum +9 -0
- package/gs/builtin/builtin.ts +266 -8
- package/gs/builtin/channel.ts +22 -0
- package/gs/builtin/hostio.test.ts +177 -0
- package/gs/builtin/hostio.ts +171 -56
- package/gs/builtin/index.ts +1 -0
- package/gs/builtin/runtime-contract.test.ts +356 -0
- package/gs/builtin/slice.ts +259 -50
- package/gs/builtin/type.ts +188 -30
- package/gs/builtin/varRef.ts +38 -1
- package/gs/bytes/buffer.gs.ts +48 -44
- package/gs/bytes/meta.json +8 -3
- package/gs/bytes/reader.gs.ts +20 -19
- package/gs/context/context.test.ts +41 -0
- package/gs/context/context.ts +22 -26
- package/gs/crypto/internal/fips140deps/byteorder/index.ts +1 -0
- package/gs/crypto/internal/fips140deps/godebug/index.ts +1 -0
- package/gs/crypto/rand/index.test.ts +32 -0
- package/gs/crypto/rand/index.ts +90 -0
- package/gs/crypto/rand/meta.json +5 -0
- package/gs/embed/index.ts +20 -0
- package/gs/embed/meta.json +5 -0
- package/gs/encoding/json/index.test.ts +79 -0
- package/gs/encoding/json/index.ts +210 -0
- package/gs/errors/errors.test.ts +82 -0
- package/gs/errors/errors.ts +104 -0
- package/gs/fmt/fmt.ts +56 -16
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.test.ts +95 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +300 -2
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.test.ts +159 -0
- package/gs/github.com/aperturerobotics/protobuf-go-lite/json/index.ts +1005 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/index.ts +719 -0
- package/gs/github.com/aperturerobotics/starpc/srpc/meta.json +40 -0
- package/gs/github.com/aperturerobotics/wasivm/wazero/kernel/runtime/browser/meta.json +3 -1
- package/gs/github.com/klauspost/compress/internal/le/index.test.ts +36 -0
- package/gs/github.com/klauspost/compress/internal/le/index.ts +114 -0
- package/gs/go/internal/scannerhooks/index.test.ts +14 -0
- package/gs/go/internal/scannerhooks/index.ts +9 -0
- package/gs/go/scanner/index.test.ts +72 -0
- package/gs/go/scanner/index.ts +204 -0
- package/gs/go/token/index.test.ts +67 -0
- package/gs/go/token/index.ts +686 -0
- package/gs/internal/abi/index.test.ts +18 -0
- package/gs/internal/abi/index.ts +14 -0
- package/gs/internal/bytealg/index.test.ts +18 -0
- package/gs/internal/bytealg/index.ts +16 -0
- package/gs/internal/byteorder/index.test.ts +39 -0
- package/gs/internal/byteorder/index.ts +100 -27
- package/gs/internal/godebug/index.test.ts +16 -0
- package/gs/internal/godebug/index.ts +35 -0
- package/gs/io/fs/index.ts +1 -0
- package/gs/io/fs/meta.json +5 -0
- package/gs/io/fs/readlink.test.ts +43 -0
- package/gs/io/fs/readlink.ts +77 -0
- package/gs/io/fs/walk.test.ts +61 -0
- package/gs/io/fs/walk.ts +9 -9
- package/gs/io/io.ts +174 -31
- package/gs/io/meta.json +10 -2
- package/gs/maps/iter.ts +12 -6
- package/gs/maps/maps.ts +8 -6
- package/gs/math/bits/index.ts +103 -47
- package/gs/math/const.gs.test.ts +11 -5
- package/gs/math/const.gs.ts +5 -6
- package/gs/mime/index.ts +54 -0
- package/gs/net/http/httptest/index.ts +25 -0
- package/gs/net/http/index.test.ts +20 -0
- package/gs/net/http/index.ts +81 -0
- package/gs/os/dir_unix.gs.ts +2 -3
- package/gs/os/file_unix_js.test.ts +50 -0
- package/gs/os/meta.json +1 -2
- package/gs/os/tempfile.gs.test.ts +85 -0
- package/gs/os/tempfile.gs.ts +71 -11
- package/gs/os/types_js.gs.ts +11 -11
- package/gs/path/filepath/match.test.ts +31 -12
- package/gs/path/filepath/match.ts +178 -3
- package/gs/path/filepath/path.test.ts +25 -0
- package/gs/path/filepath/path.ts +159 -5
- package/gs/path/path.ts +20 -5
- package/gs/reflect/index.ts +2 -1
- package/gs/reflect/map.test.ts +19 -0
- package/gs/reflect/map.ts +4 -0
- package/gs/reflect/type.ts +298 -29
- package/gs/reflect/typefor.test.ts +75 -0
- package/gs/runtime/debug/index.test.ts +24 -0
- package/gs/runtime/debug/index.ts +8 -0
- package/gs/runtime/runtime.test.ts +19 -0
- package/gs/runtime/runtime.ts +98 -3
- package/gs/slices/slices.test.ts +94 -0
- package/gs/slices/slices.ts +245 -5
- package/gs/sort/meta.json +7 -0
- package/gs/sort/slice.gs.ts +16 -7
- package/gs/sort/sort.gs.ts +16 -13
- package/gs/strings/builder.ts +4 -3
- package/gs/sync/atomic/type.gs.ts +13 -14
- package/gs/sync/meta.json +3 -1
- package/gs/sync/sync.test.ts +36 -0
- package/gs/sync/sync.ts +39 -0
- package/gs/syscall/constants.ts +39 -24
- package/gs/syscall/errors.ts +10 -0
- package/gs/syscall/fs.ts +195 -0
- package/gs/syscall/js/index.ts +458 -0
- package/gs/syscall/js/meta.json +4 -0
- package/gs/syscall/net.test.ts +85 -0
- package/gs/syscall/types.ts +56 -0
- package/gs/testing/index.ts +1 -0
- package/gs/testing/meta.json +5 -0
- package/gs/testing/testing.test.ts +90 -0
- package/gs/testing/testing.ts +382 -0
- package/gs/time/time.test.ts +106 -0
- package/gs/time/time.ts +278 -57
- package/gs/unicode/unicode.test.ts +25 -0
- package/gs/unicode/unicode.ts +119 -9
- package/gs/unicode/utf8/utf8.test.ts +13 -0
- package/gs/unicode/utf8/utf8.ts +28 -16
- package/gs/unique/index.ts +91 -0
- package/package.json +14 -13
- package/compiler/analysis.go +0 -3475
- package/compiler/analysis_test.go +0 -338
- package/compiler/assignment.go +0 -580
- package/compiler/builtin_test.go +0 -92
- package/compiler/code-writer.go +0 -115
- package/compiler/compiler_test.go +0 -149
- package/compiler/composite-lit.go +0 -779
- package/compiler/config_test.go +0 -62
- package/compiler/constraint.go +0 -86
- package/compiler/decl.go +0 -801
- package/compiler/expr-call-async.go +0 -188
- package/compiler/expr-call-builtins.go +0 -208
- package/compiler/expr-call-helpers.go +0 -382
- package/compiler/expr-call-make.go +0 -318
- package/compiler/expr-call-type-conversion.go +0 -520
- package/compiler/expr-call.go +0 -413
- package/compiler/expr-selector.go +0 -343
- package/compiler/expr-star.go +0 -82
- package/compiler/expr-type.go +0 -442
- package/compiler/expr-value.go +0 -89
- package/compiler/expr.go +0 -773
- package/compiler/field.go +0 -183
- package/compiler/gs_dependencies_test.go +0 -298
- package/compiler/lit.go +0 -322
- package/compiler/output.go +0 -72
- package/compiler/primitive.go +0 -149
- package/compiler/protobuf.go +0 -697
- package/compiler/sanitize.go +0 -100
- package/compiler/spec-struct.go +0 -995
- package/compiler/spec-value.go +0 -540
- package/compiler/spec.go +0 -725
- package/compiler/stmt-assign.go +0 -664
- package/compiler/stmt-for.go +0 -266
- package/compiler/stmt-range.go +0 -475
- package/compiler/stmt-select.go +0 -262
- package/compiler/stmt-type-switch.go +0 -147
- package/compiler/stmt.go +0 -1308
- package/compiler/type-assert.go +0 -386
- package/compiler/type-info.go +0 -156
- package/compiler/type-utils.go +0 -207
- package/compiler/type.go +0 -892
package/compiler/wasm/compile.go
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
// Package wasm provides
|
|
1
|
+
// Package wasm provides the WASM-friendly compiler adapter surface.
|
|
2
2
|
package wasm
|
|
3
3
|
|
|
4
4
|
import (
|
|
5
5
|
"github.com/aperturerobotics/goscript/compiler"
|
|
6
6
|
)
|
|
7
7
|
|
|
8
|
-
// CompileSource compiles
|
|
9
|
-
// It takes the source code as a string and returns the generated TypeScript.
|
|
8
|
+
// CompileSource compiles import-free browser source strings to TypeScript.
|
|
10
9
|
func CompileSource(source string, packageName string) (string, error) {
|
|
11
10
|
return compiler.CompileSourceToTypeScript(source, packageName)
|
|
12
11
|
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
package wasm
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"errors"
|
|
5
|
+
"strings"
|
|
6
|
+
"testing"
|
|
7
|
+
|
|
8
|
+
"github.com/aperturerobotics/goscript/compiler"
|
|
9
|
+
)
|
|
10
|
+
|
|
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")
|
|
57
|
+
if err == nil {
|
|
58
|
+
t.Fatal("expected compile error")
|
|
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
|
+
|
|
66
|
+
var compileErr *compiler.CompileError
|
|
67
|
+
if !errors.As(err, &compileErr) {
|
|
68
|
+
t.Fatalf("expected CompileError, got %T: %v", err, err)
|
|
69
|
+
}
|
|
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
|
+
}
|
|
77
|
+
}
|
|
78
|
+
t.Fatalf("missing diagnostic %q in %#v", code, compileErr.Diagnostics)
|
|
79
|
+
}
|
package/compiler/wasm_api.go
CHANGED
|
@@ -1,49 +1,94 @@
|
|
|
1
1
|
package compiler
|
|
2
2
|
|
|
3
3
|
import (
|
|
4
|
-
"
|
|
5
|
-
"fmt"
|
|
4
|
+
"context"
|
|
6
5
|
"go/ast"
|
|
7
|
-
"go/importer"
|
|
8
6
|
"go/parser"
|
|
9
7
|
"go/token"
|
|
10
8
|
"go/types"
|
|
11
|
-
"
|
|
9
|
+
"strconv"
|
|
10
|
+
"strings"
|
|
12
11
|
|
|
13
12
|
"golang.org/x/tools/go/packages"
|
|
14
13
|
)
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
//
|
|
15
|
+
const browserSourceFileName = "main.go"
|
|
16
|
+
|
|
17
|
+
// CompileSourceToTypeScript is the WASM adapter for browser source compilation.
|
|
19
18
|
func CompileSourceToTypeScript(source string, packageName string) (string, error) {
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
graph, diagnostics := browserSourceGraph(source, packageName)
|
|
20
|
+
if diagnosticsHaveErrors(diagnostics) {
|
|
21
|
+
return "", NewCompileError(diagnostics)
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
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
|
+
}
|
|
26
31
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if
|
|
30
|
-
return "",
|
|
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)
|
|
31
44
|
}
|
|
32
45
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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)}
|
|
44
86
|
}
|
|
45
87
|
|
|
46
|
-
|
|
88
|
+
pkgPath := strings.TrimSpace(packageName)
|
|
89
|
+
if pkgPath == "" {
|
|
90
|
+
pkgPath = file.Name.Name
|
|
91
|
+
}
|
|
47
92
|
info := &types.Info{
|
|
48
93
|
Types: make(map[ast.Expr]types.TypeAndValue),
|
|
49
94
|
Defs: make(map[*ast.Ident]types.Object),
|
|
@@ -51,113 +96,84 @@ func CompileSourceToTypeScript(source string, packageName string) (string, error
|
|
|
51
96
|
Implicits: make(map[ast.Node]types.Object),
|
|
52
97
|
Selections: make(map[*ast.SelectorExpr]*types.Selection),
|
|
53
98
|
Scopes: make(map[ast.Node]*types.Scope),
|
|
54
|
-
Instances: make(map[*ast.Ident]types.Instance),
|
|
55
99
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// Create a packages.Package compatible structure
|
|
61
|
-
pkgData := &packages.Package{
|
|
62
|
-
ID: packageName,
|
|
63
|
-
Name: astFile.Name.Name,
|
|
64
|
-
PkgPath: packageName,
|
|
65
|
-
Fset: fset,
|
|
66
|
-
Syntax: []*ast.File{astFile},
|
|
67
|
-
Types: pkg,
|
|
68
|
-
TypesInfo: info,
|
|
69
|
-
CompiledGoFiles: []string{"main.go"},
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Create an empty map for all packages (we only have one)
|
|
73
|
-
allPackages := map[string]*packages.Package{
|
|
74
|
-
packageName: pkgData,
|
|
100
|
+
sizes := types.SizesFor("gc", "wasm")
|
|
101
|
+
if sizes == nil {
|
|
102
|
+
sizes = types.SizesFor("gc", "amd64")
|
|
75
103
|
}
|
|
76
104
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
ast: astFile,
|
|
89
|
-
fullPath: "main.go",
|
|
90
|
-
Analysis: analysis,
|
|
91
|
-
PackageAnalysis: packageAnalysis,
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
// Compile to the buffer
|
|
95
|
-
if err := fileCompiler.CompileToWriter(&buf); err != nil {
|
|
96
|
-
return "", fmt.Errorf("compilation error: %w", err)
|
|
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
|
+
},
|
|
97
116
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
// Pass analysis to compiler
|
|
110
|
-
goWriter := NewGoToTSCompiler(c.codeWriter, c.pkg, c.Analysis, c.fullPath)
|
|
111
|
-
|
|
112
|
-
// Add import for the goscript runtime using namespace import and alias
|
|
113
|
-
c.codeWriter.WriteLinef(
|
|
114
|
-
"import * as $ from %q",
|
|
115
|
-
translateTypescriptModulePathToIndexImportPath("@goscript/builtin"),
|
|
116
|
-
)
|
|
117
|
-
|
|
118
|
-
c.codeWriter.WriteLine("") // Add a newline after imports
|
|
119
|
-
|
|
120
|
-
if err := goWriter.WriteDecls(f.Decls); err != nil {
|
|
121
|
-
return fmt.Errorf("failed to write declarations: %w", err)
|
|
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
|
|
122
128
|
}
|
|
123
129
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
cache map[string]*types.Package
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
func (i *wasmImporter) Import(path string) (*types.Package, error) {
|
|
135
|
-
if pkg, ok := i.cache[path]; ok {
|
|
136
|
-
return pkg, nil
|
|
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
137
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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,
|
|
144
150
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
|
152
162
|
}
|
|
153
163
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
if
|
|
159
|
-
|
|
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
|
|
160
170
|
}
|
|
171
|
+
imports = append(imports, importPath)
|
|
172
|
+
}
|
|
173
|
+
return Diagnostic{
|
|
174
|
+
Severity: DiagnosticSeverityError,
|
|
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, ", "),
|
|
161
178
|
}
|
|
162
|
-
return path
|
|
163
179
|
}
|
package/dist/compiler/index.d.ts
CHANGED
|
@@ -8,13 +8,11 @@ export interface CompileConfig {
|
|
|
8
8
|
output?: string;
|
|
9
9
|
/** The working directory for the compiler. Defaults to the current working directory. */
|
|
10
10
|
dir?: string;
|
|
11
|
-
/** The path to the goscript executable. Defaults to
|
|
11
|
+
/** The path to the goscript executable. Defaults to `go run ./cmd/goscript`. */
|
|
12
12
|
goscriptPath?: string;
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
15
|
* Compiles a Go package to TypeScript using the goscript compiler.
|
|
16
|
-
* @param config - The compilation configuration.
|
|
17
|
-
* @returns A promise that resolves when compilation is complete, or rejects on error.
|
|
18
16
|
*/
|
|
19
17
|
export declare function compile(config: CompileConfig): Promise<void>;
|
|
20
18
|
/**
|
package/dist/compiler/index.js
CHANGED
|
@@ -1,68 +1,44 @@
|
|
|
1
|
-
import * as path from
|
|
2
|
-
import { dirname } from
|
|
3
|
-
import { fileURLToPath } from
|
|
4
|
-
import {
|
|
5
|
-
import { promisify } from
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { dirname } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { execFile } from 'node:child_process';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
const execFileAsync = promisify(execFile);
|
|
6
7
|
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
-
const execAsync = promisify(exec);
|
|
8
8
|
const __dirname = dirname(__filename);
|
|
9
|
-
const projectRoot = dirname(__dirname);
|
|
9
|
+
const projectRoot = dirname(__dirname);
|
|
10
10
|
/**
|
|
11
11
|
* Compiles a Go package to TypeScript using the goscript compiler.
|
|
12
|
-
* @param config - The compilation configuration.
|
|
13
|
-
* @returns A promise that resolves when compilation is complete, or rejects on error.
|
|
14
12
|
*/
|
|
15
13
|
export async function compile(config) {
|
|
16
14
|
if (!config.pkg) {
|
|
17
|
-
throw new Error(
|
|
15
|
+
throw new Error('Package path (pkg) must be specified.');
|
|
18
16
|
}
|
|
19
|
-
// Construct the go run command with the absolute path to the goscript executable
|
|
20
|
-
const goscriptCmd = config.goscriptPath ??
|
|
21
|
-
`go run "${path.join(projectRoot, "./cmd/goscript")}"`;
|
|
22
|
-
const args = ["compile", "--package", `"${config.pkg}"`];
|
|
23
|
-
if (config.output) {
|
|
24
|
-
args.push("--output", `"${path.resolve(config.output)}"`);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
// Default output path if not specified, relative to the working directory
|
|
28
|
-
args.push("--output", `"./output"`);
|
|
29
|
-
}
|
|
30
|
-
// Pass the working directory to the goscript command
|
|
31
|
-
if (config.dir) {
|
|
32
|
-
args.push("--dir", `"${path.resolve(config.dir)}"`);
|
|
33
|
-
}
|
|
34
|
-
const command = `${goscriptCmd} ${args.join(" ")}`;
|
|
35
|
-
// Execute go run from the specified working directory (or current)
|
|
36
17
|
const cwd = config.dir ? path.resolve(config.dir) : process.cwd();
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
console.error(`GoScript compilation failed: ${compileErr.message}`);
|
|
50
|
-
if (typeof error === "object" &&
|
|
51
|
-
error !== null &&
|
|
52
|
-
"stderr" in error &&
|
|
53
|
-
typeof error.stderr === "string") {
|
|
54
|
-
console.error(`GoScript stderr:\n${error.stderr}`);
|
|
55
|
-
}
|
|
56
|
-
if (typeof error === "object" &&
|
|
57
|
-
error !== null &&
|
|
58
|
-
"stdout" in error &&
|
|
59
|
-
typeof error.stdout === "string") {
|
|
60
|
-
console.error(`GoScript stdout:\n${error.stdout}`);
|
|
61
|
-
}
|
|
62
|
-
throw new Error(`GoScript compilation failed: ${compileErr.message}`, {
|
|
63
|
-
cause: error,
|
|
64
|
-
});
|
|
18
|
+
const output = config.output ? path.resolve(config.output) : './output';
|
|
19
|
+
if (config.goscriptPath) {
|
|
20
|
+
await execFileAsync(config.goscriptPath, [
|
|
21
|
+
'compile',
|
|
22
|
+
'--package',
|
|
23
|
+
config.pkg,
|
|
24
|
+
'--output',
|
|
25
|
+
output,
|
|
26
|
+
'--dir',
|
|
27
|
+
cwd,
|
|
28
|
+
]);
|
|
29
|
+
return;
|
|
65
30
|
}
|
|
31
|
+
await execFileAsync('go', [
|
|
32
|
+
'run',
|
|
33
|
+
path.join(projectRoot, 'cmd/goscript'),
|
|
34
|
+
'compile',
|
|
35
|
+
'--package',
|
|
36
|
+
config.pkg,
|
|
37
|
+
'--output',
|
|
38
|
+
output,
|
|
39
|
+
'--dir',
|
|
40
|
+
cwd,
|
|
41
|
+
]);
|
|
66
42
|
}
|
|
67
43
|
/**
|
|
68
44
|
* Default export for convenience.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../compiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AACzC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;AACjD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AACrC,MAAM,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAgBtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAAqB;IACjD,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACjE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAA;IAEvE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE;YACvC,SAAS;YACT,WAAW;YACX,MAAM,CAAC,GAAG;YACV,UAAU;YACV,MAAM;YACN,OAAO;YACP,GAAG;SACJ,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,MAAM,aAAa,CAAC,IAAI,EAAE;QACxB,KAAK;QACL,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC;QACtC,SAAS;QACT,WAAW;QACX,MAAM,CAAC,GAAG;QACV,UAAU;QACV,MAAM;QACN,OAAO;QACP,GAAG;KACJ,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,eAAe;IACb,OAAO;CACR,CAAA"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { Slice } from './slice.js';
|
|
2
|
+
import { type VarRef } from './varRef.js';
|
|
3
|
+
/**
|
|
4
|
+
* Implementation of Go's built-in print function
|
|
5
|
+
* @param args Arguments to print
|
|
6
|
+
*/
|
|
7
|
+
export declare function print(...args: any[]): void;
|
|
2
8
|
/**
|
|
3
9
|
* Implementation of Go's built-in println function
|
|
4
10
|
* @param args Arguments to print
|
|
@@ -15,15 +21,40 @@ export declare function panic(...args: any[]): never;
|
|
|
15
21
|
* For maps, it deletes all entries.
|
|
16
22
|
* @param v The slice or map to clear
|
|
17
23
|
*/
|
|
18
|
-
export declare function clear<T>(v: T
|
|
24
|
+
export declare function clear<T>(v: Slice<T> | Map<unknown, unknown> | null): void;
|
|
19
25
|
/**
|
|
20
26
|
* assignStruct copies all field values from source struct to target struct.
|
|
21
27
|
* Used for pointer dereference assignment: *p = value
|
|
22
28
|
* Copies the _fields contents from source to target.
|
|
23
29
|
*/
|
|
24
30
|
export declare function assignStruct<T>(target: T, source: T): void;
|
|
31
|
+
/**
|
|
32
|
+
* pointerValue unwraps a Go pointer value for generated field, method, and
|
|
33
|
+
* dereference access. Struct pointers may be represented directly as class
|
|
34
|
+
* instances or indirectly as VarRef values when the pointer came from taking a
|
|
35
|
+
* variable's address.
|
|
36
|
+
*/
|
|
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;
|
|
25
46
|
export type Bytes = Uint8Array | Slice<number>;
|
|
26
|
-
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;
|
|
27
58
|
/**
|
|
28
59
|
* Normalizes various byte representations into a `Uint8Array` for protobuf compatibility.
|
|
29
60
|
*
|