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.
- package/README.md +267 -255
- package/cmd/goscript/cmd-test.go +193 -0
- package/cmd/goscript/cmd-test_test.go +76 -0
- package/cmd/goscript/main.go +1 -0
- package/compiler/build-flags.go +38 -0
- package/compiler/compile-request.go +2 -0
- package/compiler/compliance_test.go +0 -8
- 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 +1 -1
- package/compiler/lowered-program.go +71 -19
- package/compiler/lowering.go +5065 -569
- package/compiler/override-facts.go +307 -0
- package/compiler/override-registry.go +50 -189
- package/compiler/override-registry_test.go +47 -0
- package/compiler/package-graph.go +50 -27
- package/compiler/package-graph_test.go +37 -2
- 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/runtime-contract.go +189 -29
- package/compiler/runtime-contract_test.go +44 -30
- package/compiler/semantic-model-types.go +9 -6
- package/compiler/semantic-model.go +538 -38
- package/compiler/semantic-model_test.go +55 -0
- package/compiler/service.go +1 -1
- package/compiler/skeleton_test.go +679 -49
- 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 +459 -82
- package/compiler/wasm/compile.go +1 -1
- package/compiler/wasm/compile_test.go +61 -11
- package/compiler/wasm_api.go +172 -7
- package/dist/gs/builtin/builtin.d.ts +20 -2
- package/dist/gs/builtin/builtin.js +194 -6
- package/dist/gs/builtin/builtin.js.map +1 -1
- package/dist/gs/builtin/channel.d.ts +8 -0
- package/dist/gs/builtin/channel.js +12 -0
- package/dist/gs/builtin/channel.js.map +1 -1
- package/dist/gs/builtin/slice.d.ts +22 -2
- package/dist/gs/builtin/slice.js +216 -44
- package/dist/gs/builtin/slice.js.map +1 -1
- package/dist/gs/builtin/type.d.ts +5 -2
- package/dist/gs/builtin/type.js +83 -24
- 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/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/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 +1 -0
- package/dist/gs/encoding/json/index.js +18 -0
- package/dist/gs/encoding/json/index.js.map +1 -1
- 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 +35 -0
- package/dist/gs/github.com/aperturerobotics/protobuf-go-lite/index.js +211 -1
- 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/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/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 +13 -0
- package/dist/gs/go/scanner/index.js +35 -0
- package/dist/gs/go/scanner/index.js.map +1 -1
- package/dist/gs/go/token/index.d.ts +156 -0
- package/dist/gs/go/token/index.js +500 -4
- package/dist/gs/go/token/index.js.map +1 -1
- 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/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/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/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/types_js.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/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 +1 -1
- package/dist/gs/reflect/index.js +1 -1
- 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 +7 -4
- package/dist/gs/reflect/type.js +148 -7
- package/dist/gs/reflect/type.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/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/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/sync.d.ts +2 -0
- package/dist/gs/sync/sync.js +27 -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.sum +9 -0
- package/gs/builtin/builtin.ts +239 -8
- package/gs/builtin/channel.ts +22 -0
- package/gs/builtin/runtime-contract.test.ts +126 -0
- package/gs/builtin/slice.ts +259 -50
- package/gs/builtin/type.ts +109 -34
- 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/embed/index.ts +20 -0
- package/gs/embed/meta.json +5 -0
- package/gs/encoding/json/index.test.ts +15 -1
- package/gs/encoding/json/index.ts +24 -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 +73 -1
- package/gs/github.com/aperturerobotics/protobuf-go-lite/index.ts +297 -1
- 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/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 +22 -0
- package/gs/go/scanner/index.ts +47 -0
- package/gs/go/token/index.test.ts +47 -1
- package/gs/go/token/index.ts +570 -4
- 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/types_js.gs.ts +2 -2
- 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 +1 -0
- package/gs/reflect/map.test.ts +19 -0
- package/gs/reflect/map.ts +4 -0
- package/gs/reflect/type.ts +197 -17
- 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 +13 -1
- package/gs/sync/sync.ts +27 -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 +2 -1
|
@@ -3,6 +3,10 @@ package compiler
|
|
|
3
3
|
import (
|
|
4
4
|
"cmp"
|
|
5
5
|
"slices"
|
|
6
|
+
"strings"
|
|
7
|
+
|
|
8
|
+
gs "github.com/aperturerobotics/goscript"
|
|
9
|
+
"github.com/pkg/errors"
|
|
6
10
|
)
|
|
7
11
|
|
|
8
12
|
// RuntimeHelperCategory names a runtime helper family owned by the contract.
|
|
@@ -25,33 +29,53 @@ const (
|
|
|
25
29
|
type RuntimeHelper string
|
|
26
30
|
|
|
27
31
|
const (
|
|
28
|
-
RuntimeHelperPrintln
|
|
29
|
-
RuntimeHelperPrint
|
|
30
|
-
RuntimeHelperInt
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
32
|
+
RuntimeHelperPrintln RuntimeHelper = "builtin.println"
|
|
33
|
+
RuntimeHelperPrint RuntimeHelper = "builtin.print"
|
|
34
|
+
RuntimeHelperInt RuntimeHelper = "builtin.int"
|
|
35
|
+
RuntimeHelperUint RuntimeHelper = "builtin.uint"
|
|
36
|
+
RuntimeHelperByte RuntimeHelper = "builtin.byte"
|
|
37
|
+
RuntimeHelperLen RuntimeHelper = "builtin.len"
|
|
38
|
+
RuntimeHelperCap RuntimeHelper = "builtin.cap"
|
|
39
|
+
RuntimeHelperClear RuntimeHelper = "builtin.clear"
|
|
40
|
+
RuntimeHelperPanic RuntimeHelper = "builtin.panic"
|
|
41
|
+
RuntimeHelperRecover RuntimeHelper = "builtin.recover"
|
|
42
|
+
RuntimeHelperMin RuntimeHelper = "builtin.min"
|
|
43
|
+
RuntimeHelperMax RuntimeHelper = "builtin.max"
|
|
44
|
+
RuntimeHelperComplex RuntimeHelper = "builtin.complex"
|
|
45
|
+
RuntimeHelperReal RuntimeHelper = "builtin.real"
|
|
46
|
+
RuntimeHelperImag RuntimeHelper = "builtin.imag"
|
|
47
|
+
RuntimeHelperUint64Shl RuntimeHelper = "builtin.uint64Shl"
|
|
48
|
+
RuntimeHelperUint64Shr RuntimeHelper = "builtin.uint64Shr"
|
|
49
|
+
RuntimeHelperUintShr RuntimeHelper = "builtin.uintShr"
|
|
50
|
+
RuntimeHelperUint64Mul RuntimeHelper = "builtin.uint64Mul"
|
|
51
|
+
RuntimeHelperUint64Add RuntimeHelper = "builtin.uint64Add"
|
|
52
|
+
RuntimeHelperUint64Sub RuntimeHelper = "builtin.uint64Sub"
|
|
53
|
+
RuntimeHelperUint64And RuntimeHelper = "builtin.uint64And"
|
|
54
|
+
RuntimeHelperUint64Or RuntimeHelper = "builtin.uint64Or"
|
|
55
|
+
RuntimeHelperUint64Xor RuntimeHelper = "builtin.uint64Xor"
|
|
39
56
|
|
|
40
57
|
RuntimeHelperAssignStruct RuntimeHelper = "value.assignStruct"
|
|
41
58
|
RuntimeHelperMarkAsStructValue RuntimeHelper = "value.markAsStructValue"
|
|
59
|
+
RuntimeHelperCloneStructValue RuntimeHelper = "value.cloneStructValue"
|
|
42
60
|
RuntimeHelperPointerValue RuntimeHelper = "value.pointerValue"
|
|
61
|
+
RuntimeHelperArrayEqual RuntimeHelper = "value.arrayEqual"
|
|
43
62
|
|
|
44
|
-
RuntimeHelperVarRef
|
|
45
|
-
|
|
46
|
-
|
|
63
|
+
RuntimeHelperVarRef RuntimeHelper = "varref.varRef"
|
|
64
|
+
RuntimeHelperFieldRef RuntimeHelper = "varref.fieldRef"
|
|
65
|
+
RuntimeHelperUnref RuntimeHelper = "varref.unref"
|
|
66
|
+
RuntimeHelperIsVarRef RuntimeHelper = "varref.isVarRef"
|
|
67
|
+
RuntimeHelperUnsupportedPointerRef RuntimeHelper = "varref.unsupportedPointerRef"
|
|
47
68
|
|
|
48
69
|
RuntimeHelperMakeSlice RuntimeHelper = "slice.makeSlice"
|
|
49
70
|
RuntimeHelperGoSlice RuntimeHelper = "slice.goSlice"
|
|
50
71
|
RuntimeHelperArrayToSlice RuntimeHelper = "slice.arrayToSlice"
|
|
72
|
+
RuntimeHelperSliceToArray RuntimeHelper = "slice.sliceToArray"
|
|
73
|
+
RuntimeHelperSliceToArrayPointer RuntimeHelper = "slice.sliceToArrayPointer"
|
|
51
74
|
RuntimeHelperAppend RuntimeHelper = "slice.append"
|
|
52
75
|
RuntimeHelperCopy RuntimeHelper = "slice.copy"
|
|
53
76
|
RuntimeHelperAsArray RuntimeHelper = "slice.asArray"
|
|
54
77
|
RuntimeHelperStringToRunes RuntimeHelper = "slice.stringToRunes"
|
|
78
|
+
RuntimeHelperRangeString RuntimeHelper = "slice.rangeString"
|
|
55
79
|
RuntimeHelperStringToRune RuntimeHelper = "slice.stringToRune"
|
|
56
80
|
RuntimeHelperRunesToString RuntimeHelper = "slice.runesToString"
|
|
57
81
|
RuntimeHelperStringToBytes RuntimeHelper = "slice.stringToBytes"
|
|
@@ -59,6 +83,8 @@ const (
|
|
|
59
83
|
RuntimeHelperGenericBytesOrStringToString RuntimeHelper = "slice.genericBytesOrStringToString"
|
|
60
84
|
RuntimeHelperIndexStringOrBytes RuntimeHelper = "slice.indexStringOrBytes"
|
|
61
85
|
RuntimeHelperSliceStringOrBytes RuntimeHelper = "slice.sliceStringOrBytes"
|
|
86
|
+
RuntimeHelperIndexRef RuntimeHelper = "slice.indexRef"
|
|
87
|
+
RuntimeHelperIndexAddress RuntimeHelper = "slice.indexAddress"
|
|
62
88
|
|
|
63
89
|
RuntimeHelperMakeMap RuntimeHelper = "map.makeMap"
|
|
64
90
|
RuntimeHelperMapGet RuntimeHelper = "map.mapGet"
|
|
@@ -70,21 +96,22 @@ const (
|
|
|
70
96
|
RuntimeHelperToGoError RuntimeHelper = "error.toGoError"
|
|
71
97
|
RuntimeHelperWrapPrimitiveError RuntimeHelper = "error.wrapPrimitiveError"
|
|
72
98
|
|
|
73
|
-
RuntimeHelperTypeKind
|
|
74
|
-
RuntimeHelperRegisterStructType
|
|
75
|
-
RuntimeHelperRegisterInterfaceType
|
|
76
|
-
RuntimeHelperGetTypeByName
|
|
77
|
-
RuntimeHelperTypeAssert
|
|
78
|
-
RuntimeHelperTypeAssertTuple
|
|
79
|
-
RuntimeHelperMustTypeAssert
|
|
80
|
-
RuntimeHelperIs
|
|
81
|
-
RuntimeHelperTypeSwitch
|
|
82
|
-
RuntimeHelperTypedNil
|
|
83
|
-
RuntimeHelperInterfaceValue
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
99
|
+
RuntimeHelperTypeKind RuntimeHelper = "type.TypeKind"
|
|
100
|
+
RuntimeHelperRegisterStructType RuntimeHelper = "type.registerStructType"
|
|
101
|
+
RuntimeHelperRegisterInterfaceType RuntimeHelper = "type.registerInterfaceType"
|
|
102
|
+
RuntimeHelperGetTypeByName RuntimeHelper = "type.getTypeByName"
|
|
103
|
+
RuntimeHelperTypeAssert RuntimeHelper = "type.typeAssert"
|
|
104
|
+
RuntimeHelperTypeAssertTuple RuntimeHelper = "type.typeAssertTuple"
|
|
105
|
+
RuntimeHelperMustTypeAssert RuntimeHelper = "type.mustTypeAssert"
|
|
106
|
+
RuntimeHelperIs RuntimeHelper = "type.is"
|
|
107
|
+
RuntimeHelperTypeSwitch RuntimeHelper = "type.typeSwitch"
|
|
108
|
+
RuntimeHelperTypedNil RuntimeHelper = "type.typedNil"
|
|
109
|
+
RuntimeHelperInterfaceValue RuntimeHelper = "type.interfaceValue"
|
|
110
|
+
RuntimeHelperNamedValueInterfaceValue RuntimeHelper = "type.namedValueInterfaceValue"
|
|
111
|
+
RuntimeHelperFunctionValue RuntimeHelper = "type.functionValue"
|
|
112
|
+
RuntimeHelperNamedFunction RuntimeHelper = "type.namedFunction"
|
|
113
|
+
RuntimeHelperGenericZero RuntimeHelper = "type.genericZero"
|
|
114
|
+
RuntimeHelperCallGenericMethod RuntimeHelper = "type.callGenericMethod"
|
|
88
115
|
|
|
89
116
|
RuntimeHelperMakeChannel RuntimeHelper = "channel.makeChannel"
|
|
90
117
|
RuntimeHelperMakeChannelRef RuntimeHelper = "channel.makeChannelRef"
|
|
@@ -185,6 +212,22 @@ func (o *RuntimeContractOwner) QualifiedHelper(helper RuntimeHelper) string {
|
|
|
185
212
|
return o.BuiltinImport().Alias + "." + name
|
|
186
213
|
}
|
|
187
214
|
|
|
215
|
+
// MissingRuntimeExports returns helper exports absent from the real runtime source.
|
|
216
|
+
func (o *RuntimeContractOwner) MissingRuntimeExports() ([]string, error) {
|
|
217
|
+
exports, err := scanBuiltinRuntimeExports()
|
|
218
|
+
if err != nil {
|
|
219
|
+
return nil, err
|
|
220
|
+
}
|
|
221
|
+
var missing []string
|
|
222
|
+
for _, helper := range o.Helpers() {
|
|
223
|
+
if !exports[helper.Export] {
|
|
224
|
+
missing = append(missing, helper.Export)
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
slices.Sort(missing)
|
|
228
|
+
return missing, nil
|
|
229
|
+
}
|
|
230
|
+
|
|
188
231
|
func compareRuntimeHelperContract(a RuntimeHelperContract, b RuntimeHelperContract) int {
|
|
189
232
|
if c := cmp.Compare(a.Category, b.Category); c != 0 {
|
|
190
233
|
return c
|
|
@@ -200,6 +243,7 @@ func runtimeHelperContracts() []RuntimeHelperContract {
|
|
|
200
243
|
runtimeHelper(RuntimeHelperPrintln, "println", RuntimeHelperCategoryBuiltin),
|
|
201
244
|
runtimeHelper(RuntimeHelperPrint, "print", RuntimeHelperCategoryBuiltin),
|
|
202
245
|
runtimeHelper(RuntimeHelperInt, "int", RuntimeHelperCategoryBuiltin),
|
|
246
|
+
runtimeHelper(RuntimeHelperUint, "uint", RuntimeHelperCategoryBuiltin),
|
|
203
247
|
runtimeHelper(RuntimeHelperByte, "byte", RuntimeHelperCategoryBuiltin),
|
|
204
248
|
runtimeHelper(RuntimeHelperLen, "len", RuntimeHelperCategoryBuiltin),
|
|
205
249
|
runtimeHelper(RuntimeHelperCap, "cap", RuntimeHelperCategoryBuiltin),
|
|
@@ -208,19 +252,38 @@ func runtimeHelperContracts() []RuntimeHelperContract {
|
|
|
208
252
|
runtimeHelper(RuntimeHelperRecover, "recover", RuntimeHelperCategoryBuiltin),
|
|
209
253
|
runtimeHelper(RuntimeHelperMin, "min", RuntimeHelperCategoryBuiltin),
|
|
210
254
|
runtimeHelper(RuntimeHelperMax, "max", RuntimeHelperCategoryBuiltin),
|
|
255
|
+
runtimeHelper(RuntimeHelperComplex, "complex", RuntimeHelperCategoryBuiltin),
|
|
256
|
+
runtimeHelper(RuntimeHelperReal, "real", RuntimeHelperCategoryBuiltin),
|
|
257
|
+
runtimeHelper(RuntimeHelperImag, "imag", RuntimeHelperCategoryBuiltin),
|
|
258
|
+
runtimeHelper(RuntimeHelperUint64Shl, "uint64Shl", RuntimeHelperCategoryBuiltin),
|
|
259
|
+
runtimeHelper(RuntimeHelperUint64Shr, "uint64Shr", RuntimeHelperCategoryBuiltin),
|
|
260
|
+
runtimeHelper(RuntimeHelperUintShr, "uintShr", RuntimeHelperCategoryBuiltin),
|
|
261
|
+
runtimeHelper(RuntimeHelperUint64Mul, "uint64Mul", RuntimeHelperCategoryBuiltin),
|
|
262
|
+
runtimeHelper(RuntimeHelperUint64Add, "uint64Add", RuntimeHelperCategoryBuiltin),
|
|
263
|
+
runtimeHelper(RuntimeHelperUint64Sub, "uint64Sub", RuntimeHelperCategoryBuiltin),
|
|
264
|
+
runtimeHelper(RuntimeHelperUint64And, "uint64And", RuntimeHelperCategoryBuiltin),
|
|
265
|
+
runtimeHelper(RuntimeHelperUint64Or, "uint64Or", RuntimeHelperCategoryBuiltin),
|
|
266
|
+
runtimeHelper(RuntimeHelperUint64Xor, "uint64Xor", RuntimeHelperCategoryBuiltin),
|
|
211
267
|
runtimeHelper(RuntimeHelperAssignStruct, "assignStruct", RuntimeHelperCategoryValue),
|
|
212
268
|
runtimeHelper(RuntimeHelperMarkAsStructValue, "markAsStructValue", RuntimeHelperCategoryValue),
|
|
269
|
+
runtimeHelper(RuntimeHelperCloneStructValue, "cloneStructValue", RuntimeHelperCategoryValue),
|
|
213
270
|
runtimeHelper(RuntimeHelperPointerValue, "pointerValue", RuntimeHelperCategoryValue),
|
|
271
|
+
runtimeHelper(RuntimeHelperArrayEqual, "arrayEqual", RuntimeHelperCategoryValue),
|
|
214
272
|
runtimeHelper(RuntimeHelperVarRef, "varRef", RuntimeHelperCategoryVarRef),
|
|
273
|
+
runtimeHelper(RuntimeHelperFieldRef, "fieldRef", RuntimeHelperCategoryVarRef),
|
|
215
274
|
runtimeHelper(RuntimeHelperUnref, "unref", RuntimeHelperCategoryVarRef),
|
|
216
275
|
runtimeHelper(RuntimeHelperIsVarRef, "isVarRef", RuntimeHelperCategoryVarRef),
|
|
276
|
+
runtimeHelper(RuntimeHelperUnsupportedPointerRef, "unsupportedPointerRef", RuntimeHelperCategoryVarRef),
|
|
217
277
|
runtimeHelper(RuntimeHelperMakeSlice, "makeSlice", RuntimeHelperCategorySlice),
|
|
218
278
|
runtimeHelper(RuntimeHelperGoSlice, "goSlice", RuntimeHelperCategorySlice),
|
|
219
279
|
runtimeHelper(RuntimeHelperArrayToSlice, "arrayToSlice", RuntimeHelperCategorySlice),
|
|
280
|
+
runtimeHelper(RuntimeHelperSliceToArray, "sliceToArray", RuntimeHelperCategorySlice),
|
|
281
|
+
runtimeHelper(RuntimeHelperSliceToArrayPointer, "sliceToArrayPointer", RuntimeHelperCategorySlice),
|
|
220
282
|
runtimeHelper(RuntimeHelperAppend, "append", RuntimeHelperCategorySlice),
|
|
221
283
|
runtimeHelper(RuntimeHelperCopy, "copy", RuntimeHelperCategorySlice),
|
|
222
284
|
runtimeHelper(RuntimeHelperAsArray, "asArray", RuntimeHelperCategorySlice),
|
|
223
285
|
runtimeHelper(RuntimeHelperStringToRunes, "stringToRunes", RuntimeHelperCategorySlice),
|
|
286
|
+
runtimeHelper(RuntimeHelperRangeString, "rangeString", RuntimeHelperCategorySlice),
|
|
224
287
|
runtimeHelper(RuntimeHelperStringToRune, "stringToRune", RuntimeHelperCategorySlice),
|
|
225
288
|
runtimeHelper(RuntimeHelperRunesToString, "runesToString", RuntimeHelperCategorySlice),
|
|
226
289
|
runtimeHelper(RuntimeHelperStringToBytes, "stringToBytes", RuntimeHelperCategorySlice),
|
|
@@ -228,6 +291,8 @@ func runtimeHelperContracts() []RuntimeHelperContract {
|
|
|
228
291
|
runtimeHelper(RuntimeHelperGenericBytesOrStringToString, "genericBytesOrStringToString", RuntimeHelperCategorySlice),
|
|
229
292
|
runtimeHelper(RuntimeHelperIndexStringOrBytes, "indexStringOrBytes", RuntimeHelperCategorySlice),
|
|
230
293
|
runtimeHelper(RuntimeHelperSliceStringOrBytes, "sliceStringOrBytes", RuntimeHelperCategorySlice),
|
|
294
|
+
runtimeHelper(RuntimeHelperIndexRef, "indexRef", RuntimeHelperCategorySlice),
|
|
295
|
+
runtimeHelper(RuntimeHelperIndexAddress, "indexAddress", RuntimeHelperCategorySlice),
|
|
231
296
|
runtimeHelper(RuntimeHelperMakeMap, "makeMap", RuntimeHelperCategoryMap),
|
|
232
297
|
runtimeHelper(RuntimeHelperMapGet, "mapGet", RuntimeHelperCategoryMap),
|
|
233
298
|
runtimeHelper(RuntimeHelperMapSet, "mapSet", RuntimeHelperCategoryMap),
|
|
@@ -247,6 +312,7 @@ func runtimeHelperContracts() []RuntimeHelperContract {
|
|
|
247
312
|
runtimeHelper(RuntimeHelperTypeSwitch, "typeSwitch", RuntimeHelperCategoryType),
|
|
248
313
|
runtimeHelper(RuntimeHelperTypedNil, "typedNil", RuntimeHelperCategoryType),
|
|
249
314
|
runtimeHelper(RuntimeHelperInterfaceValue, "interfaceValue", RuntimeHelperCategoryType),
|
|
315
|
+
runtimeHelper(RuntimeHelperNamedValueInterfaceValue, "namedValueInterfaceValue", RuntimeHelperCategoryType),
|
|
250
316
|
runtimeHelper(RuntimeHelperFunctionValue, "functionValue", RuntimeHelperCategoryType),
|
|
251
317
|
runtimeHelper(RuntimeHelperNamedFunction, "namedFunction", RuntimeHelperCategoryType),
|
|
252
318
|
runtimeHelper(RuntimeHelperGenericZero, "genericZero", RuntimeHelperCategoryType),
|
|
@@ -277,3 +343,97 @@ func runtimeHelper(
|
|
|
277
343
|
Category: category,
|
|
278
344
|
}
|
|
279
345
|
}
|
|
346
|
+
|
|
347
|
+
func scanBuiltinRuntimeExports() (map[string]bool, error) {
|
|
348
|
+
index, err := gs.GsOverrides.ReadFile("gs/builtin/index.ts")
|
|
349
|
+
if err != nil {
|
|
350
|
+
return nil, err
|
|
351
|
+
}
|
|
352
|
+
exports := make(map[string]bool)
|
|
353
|
+
for _, module := range builtinReexportModules(string(index)) {
|
|
354
|
+
data, err := gs.GsOverrides.ReadFile("gs/builtin/" + module + ".ts")
|
|
355
|
+
if err != nil {
|
|
356
|
+
return nil, errors.Wrapf(err, "read builtin export module %s", module)
|
|
357
|
+
}
|
|
358
|
+
for _, name := range sourceExportNames(string(data)) {
|
|
359
|
+
exports[name] = true
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
return exports, nil
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
func builtinReexportModules(index string) []string {
|
|
366
|
+
var modules []string
|
|
367
|
+
for line := range strings.SplitSeq(index, "\n") {
|
|
368
|
+
line = strings.TrimSpace(line)
|
|
369
|
+
if !strings.HasPrefix(line, "export * from ") {
|
|
370
|
+
continue
|
|
371
|
+
}
|
|
372
|
+
module := quotedModulePath(line)
|
|
373
|
+
module = strings.TrimPrefix(module, "./")
|
|
374
|
+
module = strings.TrimSuffix(module, ".js")
|
|
375
|
+
if module != "" {
|
|
376
|
+
modules = append(modules, module)
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
slices.Sort(modules)
|
|
380
|
+
return modules
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
func quotedModulePath(line string) string {
|
|
384
|
+
for _, quote := range []string{"'", "\""} {
|
|
385
|
+
_, remaining, ok := strings.Cut(line, quote)
|
|
386
|
+
if !ok {
|
|
387
|
+
continue
|
|
388
|
+
}
|
|
389
|
+
module, _, ok := strings.Cut(remaining, quote)
|
|
390
|
+
if ok {
|
|
391
|
+
return module
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return ""
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
func sourceExportNames(data string) []string {
|
|
398
|
+
names := make(map[string]bool)
|
|
399
|
+
for line := range strings.SplitSeq(data, "\n") {
|
|
400
|
+
line = strings.TrimSpace(line)
|
|
401
|
+
for _, prefix := range []string{
|
|
402
|
+
"export async function ",
|
|
403
|
+
"export function ",
|
|
404
|
+
"export const ",
|
|
405
|
+
"export class ",
|
|
406
|
+
"export enum ",
|
|
407
|
+
"export type ",
|
|
408
|
+
"export interface ",
|
|
409
|
+
} {
|
|
410
|
+
if !strings.HasPrefix(line, prefix) {
|
|
411
|
+
continue
|
|
412
|
+
}
|
|
413
|
+
name := exportNameAfterPrefix(line, prefix)
|
|
414
|
+
if name != "" {
|
|
415
|
+
names[name] = true
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
result := make([]string, 0, len(names))
|
|
420
|
+
for name := range names {
|
|
421
|
+
result = append(result, name)
|
|
422
|
+
}
|
|
423
|
+
slices.Sort(result)
|
|
424
|
+
return result
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
func exportNameAfterPrefix(line, prefix string) string {
|
|
428
|
+
remaining := strings.TrimSpace(strings.TrimPrefix(line, prefix))
|
|
429
|
+
for idx, char := range remaining {
|
|
430
|
+
if char == '_' || char == '$' ||
|
|
431
|
+
(char >= 'a' && char <= 'z') ||
|
|
432
|
+
(char >= 'A' && char <= 'Z') ||
|
|
433
|
+
(idx > 0 && char >= '0' && char <= '9') {
|
|
434
|
+
continue
|
|
435
|
+
}
|
|
436
|
+
return remaining[:idx]
|
|
437
|
+
}
|
|
438
|
+
return remaining
|
|
439
|
+
}
|
|
@@ -11,36 +11,40 @@ func TestRuntimeContractOwnsBuiltinImportAndHelpers(t *testing.T) {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
wantHelpers := map[RuntimeHelper]RuntimeHelperCategory{
|
|
14
|
-
RuntimeHelperPrintln:
|
|
15
|
-
RuntimeHelperPrint:
|
|
16
|
-
RuntimeHelperInt:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
14
|
+
RuntimeHelperPrintln: RuntimeHelperCategoryBuiltin,
|
|
15
|
+
RuntimeHelperPrint: RuntimeHelperCategoryBuiltin,
|
|
16
|
+
RuntimeHelperInt: RuntimeHelperCategoryBuiltin,
|
|
17
|
+
RuntimeHelperUint: RuntimeHelperCategoryBuiltin,
|
|
18
|
+
RuntimeHelperByte: RuntimeHelperCategoryBuiltin,
|
|
19
|
+
RuntimeHelperVarRef: RuntimeHelperCategoryVarRef,
|
|
20
|
+
RuntimeHelperUnref: RuntimeHelperCategoryVarRef,
|
|
21
|
+
RuntimeHelperUnsupportedPointerRef: RuntimeHelperCategoryVarRef,
|
|
22
|
+
RuntimeHelperAssignStruct: RuntimeHelperCategoryValue,
|
|
23
|
+
RuntimeHelperMarkAsStructValue: RuntimeHelperCategoryValue,
|
|
24
|
+
RuntimeHelperPointerValue: RuntimeHelperCategoryValue,
|
|
25
|
+
RuntimeHelperMakeSlice: RuntimeHelperCategorySlice,
|
|
26
|
+
RuntimeHelperAppend: RuntimeHelperCategorySlice,
|
|
27
|
+
RuntimeHelperIndexAddress: RuntimeHelperCategorySlice,
|
|
28
|
+
RuntimeHelperMakeMap: RuntimeHelperCategoryMap,
|
|
29
|
+
RuntimeHelperMapGet: RuntimeHelperCategoryMap,
|
|
30
|
+
RuntimeHelperNewError: RuntimeHelperCategoryError,
|
|
31
|
+
RuntimeHelperRegisterStructType: RuntimeHelperCategoryType,
|
|
32
|
+
RuntimeHelperTypeAssert: RuntimeHelperCategoryType,
|
|
33
|
+
RuntimeHelperTypedNil: RuntimeHelperCategoryType,
|
|
34
|
+
RuntimeHelperInterfaceValue: RuntimeHelperCategoryType,
|
|
35
|
+
RuntimeHelperNamedValueInterfaceValue: RuntimeHelperCategoryType,
|
|
36
|
+
RuntimeHelperFunctionValue: RuntimeHelperCategoryType,
|
|
37
|
+
RuntimeHelperNamedFunction: RuntimeHelperCategoryType,
|
|
38
|
+
RuntimeHelperGenericZero: RuntimeHelperCategoryType,
|
|
39
|
+
RuntimeHelperCallGenericMethod: RuntimeHelperCategoryType,
|
|
40
|
+
RuntimeHelperMakeChannel: RuntimeHelperCategoryChannel,
|
|
41
|
+
RuntimeHelperSelectStatement: RuntimeHelperCategoryChannel,
|
|
42
|
+
RuntimeHelperDisposableStack: RuntimeHelperCategoryDefer,
|
|
43
|
+
RuntimeHelperAsyncDisposableStack: RuntimeHelperCategoryDefer,
|
|
44
|
+
RuntimeHelperGetHostRuntime: RuntimeHelperCategoryHost,
|
|
45
|
+
RuntimeHelperWriteHostStdoutText: RuntimeHelperCategoryHost,
|
|
46
|
+
RuntimeHelperWriteHostStderrText: RuntimeHelperCategoryHost,
|
|
47
|
+
RuntimeHelperIsMainScript: RuntimeHelperCategoryHost,
|
|
44
48
|
}
|
|
45
49
|
for helper, category := range wantHelpers {
|
|
46
50
|
contract, ok := owner.Helper(helper)
|
|
@@ -88,3 +92,13 @@ func TestCompileServiceSharesRuntimeContractOwner(t *testing.T) {
|
|
|
88
92
|
t.Fatalf("qualified println helper = %q, want $.println", got)
|
|
89
93
|
}
|
|
90
94
|
}
|
|
95
|
+
|
|
96
|
+
func TestRuntimeContractHelpersAreExportedByBuiltinRuntime(t *testing.T) {
|
|
97
|
+
missing, err := NewRuntimeContractOwner().MissingRuntimeExports()
|
|
98
|
+
if err != nil {
|
|
99
|
+
t.Fatal(err.Error())
|
|
100
|
+
}
|
|
101
|
+
if len(missing) != 0 {
|
|
102
|
+
t.Fatalf("runtime helper exports missing from gs/builtin: %v", missing)
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -12,6 +12,7 @@ type SemanticModel struct {
|
|
|
12
12
|
addressTaken map[types.Object]bool
|
|
13
13
|
needsVarRef map[types.Object]bool
|
|
14
14
|
functions map[*types.Func]*semanticFunction
|
|
15
|
+
functionsByFullName map[string]*semanticFunction
|
|
15
16
|
types map[*types.Named]*semanticType
|
|
16
17
|
values map[types.Object]*semanticValue
|
|
17
18
|
generatedImports map[string]map[string]bool
|
|
@@ -64,12 +65,13 @@ type semanticField struct {
|
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
type semanticValue struct {
|
|
67
|
-
name
|
|
68
|
-
object
|
|
69
|
-
typ
|
|
70
|
-
zeroValueKind
|
|
71
|
-
position
|
|
72
|
-
topLevel
|
|
68
|
+
name string
|
|
69
|
+
object types.Object
|
|
70
|
+
typ types.Type
|
|
71
|
+
zeroValueKind string
|
|
72
|
+
position sourcePosition
|
|
73
|
+
topLevel bool
|
|
74
|
+
asyncCompatibleFunction bool
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
type semanticFunction struct {
|
|
@@ -79,6 +81,7 @@ type semanticFunction struct {
|
|
|
79
81
|
receiver *types.Named
|
|
80
82
|
receiverPointer bool
|
|
81
83
|
position sourcePosition
|
|
84
|
+
hasBody bool
|
|
82
85
|
async bool
|
|
83
86
|
asyncReasons []string
|
|
84
87
|
calls map[*types.Func]bool
|