Closed
Description
I believe #1194 introduced an unintentional bug for externalized slices.
Prior to this PR included in 1.18.0-beta3 the following example works just fine, after we have exceptions.
//go:build js
package test
import (
"github.com/gopherjs/gopherjs/js"
"testing"
)
type Bar struct {
*js.Object
V []int `js:"V"`
}
func TestExposeBug(t *testing.T) {
b := Bar{Object: js.Global.Get("Object").New()}
_ = b.V
}
Running with 1.18.0-beta3
davewalker@WK01450:~/src/go/src/github.com/.../...$ gopherjs version
GopherJS 1.18.0-beta3+go1.18.10
davewalker@WK01450:~/src/go/src/github.com/.../...$ GO111MODULE=off gopherjs test -v --tags=jstest github.com/.../.../api/test
=== RUN TestExposeBug
--- FAIL: TestExposeBug (0.00s)
/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:1703
throw err;
^
TypeError: Cannot read properties of null (reading 'constructor')
at $mapArray (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:93:28)
at $internalize (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:2284:18)
at TestExposeBug (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:41328:11)
at tRunner (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:38172:8)
at $goroutine (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:1694:19)
at $runScheduled (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:1740:7)
at $schedule (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:1764:5)
at queueEntry (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:1837:5)
at $send (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:1796:5)
at $b (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:19943:9)
at $b (/Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:19048:9)
at /Users/davewalker/src/go/src/github.com/.../.../api/test_test.4111829808.js:68:72
at FSReqCallback.wrapper [as oncomplete] (node:fs:829:5)
Running with 1.18.0-beta2
davewalker@WK01450:~/src/go/src/github.com/.../...$ gopherjs version
GopherJS 1.18.0-beta2+go1.18.5
davewalker@WK01450:~/src/go/src/github.com/.../...$ GO111MODULE=off gopherjs test -v --tags=jstest github.com/.../.../api/test
=== RUN TestExposeBug
--- PASS: TestExposeBug (0.00s)
PASS
ok github.com/.../.../api/test 0.299s