Skip to content

null pointer bug in $externalize #1300

Closed
@davewalker-wk

Description

@davewalker-wk

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions