From 0ad15551c84c39d53a9aef1c20c9e9ed8c9e1110 Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Wed, 17 Jan 2024 15:12:17 +0100 Subject: [PATCH] compiler: update golang.org/x/tools/go/ssa package This update includes support for the new range loops over integers. --- go.mod | 6 ++++-- go.sum | 14 +++++++++----- main_test.go | 3 +++ testdata/go1.22.go | 33 +++++++++++++++++++++++++++++++++ testdata/go1.22.txt | 12 ++++++++++++ 5 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 testdata/go1.22.go create mode 100644 testdata/go1.22.txt diff --git a/go.mod b/go.mod index 6c12e81e..9fc8901b 100644 --- a/go.mod +++ b/go.mod @@ -15,8 +15,9 @@ require ( github.com/mattn/go-tty v0.0.4 github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 go.bug.st/serial v1.6.0 - golang.org/x/sys v0.11.0 - golang.org/x/tools v0.12.0 + golang.org/x/net v0.20.0 + golang.org/x/sys v0.16.0 + golang.org/x/tools v0.17.0 gopkg.in/yaml.v2 v2.4.0 tinygo.org/x/go-llvm v0.0.0-20231014233752-75a8a9fe6f74 ) @@ -30,4 +31,5 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/mattn/go-isatty v0.0.12 // indirect + golang.org/x/text v0.14.0 // indirect ) diff --git a/go.sum b/go.sum index b15186b5..8dba70c2 100644 --- a/go.sum +++ b/go.sum @@ -48,7 +48,9 @@ github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3/go.mod h1:9/etS5gpQq9 github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= go.bug.st/serial v1.6.0 h1:mAbRGN4cKE2J5gMwsMHC2KQisdLRQssO9WSM+rbZJ8A= go.bug.st/serial v1.6.0/go.mod h1:UABfsluHAiaNI+La2iESysd9Vetq7VRdpxvjx7CmmOE= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -56,10 +58,12 @@ golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= -golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/main_test.go b/main_test.go index ae7aed56..79115ffa 100644 --- a/main_test.go +++ b/main_test.go @@ -90,6 +90,9 @@ func TestBuild(t *testing.T) { if minor >= 21 { tests = append(tests, "go1.21.go") } + if minor >= 22 { + tests = append(tests, "go1.22.go") + } if *testTarget != "" { // This makes it possible to run one specific test (instead of all), diff --git a/testdata/go1.22.go b/testdata/go1.22.go new file mode 100644 index 00000000..2b02a18e --- /dev/null +++ b/testdata/go1.22.go @@ -0,0 +1,33 @@ +package main + +func main() { + testIntegerRange() + testLoopVar() +} + +func testIntegerRange() { + for i := range 10 { + println(10 - i) + } + println("go1.22 has lift-off!") +} + +func testLoopVar() { + var f func() int + for i := 0; i < 1; i++ { + if i == 0 { + f = func() int { return i } + } + } + // Prints 1 in Go 1.21, or 0 in Go 1.22. + // TODO: this still prints Go 1.21 even in Go 1.22. We probably need to + // specify the Go version somewhere. + n := f() + if n == 0 { + println("behaves like Go 1.22") + } else if n == 1 { + println("behaves like Go 1.21") + } else { + println("unknown behavior") + } +} diff --git a/testdata/go1.22.txt b/testdata/go1.22.txt new file mode 100644 index 00000000..2695c784 --- /dev/null +++ b/testdata/go1.22.txt @@ -0,0 +1,12 @@ +10 +9 +8 +7 +6 +5 +4 +3 +2 +1 +go1.22 has lift-off! +behaves like Go 1.21