mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-07-26 06:38:42 +00:00
compiler: add support for Go 1.23 range-over-func
This commit is contained in:
committed by
Ron Evans
parent
1d1f4fc401
commit
8b626e6ea7
@@ -1963,7 +1963,7 @@ func (b *builder) getValue(expr ssa.Value, pos token.Pos) llvm.Value {
|
||||
return value
|
||||
} else {
|
||||
// indicates a compiler bug
|
||||
panic("local has not been parsed: " + expr.String())
|
||||
panic("SSA value not previously found in function: " + expr.String())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -218,7 +218,7 @@ func (c *compilerContext) getFunction(fn *ssa.Function) (llvm.Type, llvm.Value)
|
||||
// should be created right away.
|
||||
// The exception is the package initializer, which does appear in the
|
||||
// *ssa.Package members and so shouldn't be created here.
|
||||
if fn.Synthetic != "" && fn.Synthetic != "package initializer" && fn.Synthetic != "generic function" {
|
||||
if fn.Synthetic != "" && fn.Synthetic != "package initializer" && fn.Synthetic != "generic function" && fn.Synthetic != "range-over-func yield" {
|
||||
irbuilder := c.ctx.NewBuilder()
|
||||
b := newBuilder(c, irbuilder, fn)
|
||||
b.createFunction()
|
||||
|
||||
@@ -97,6 +97,9 @@ func TestBuild(t *testing.T) {
|
||||
if minor >= 22 {
|
||||
tests = append(tests, "go1.22/")
|
||||
}
|
||||
if minor >= 23 {
|
||||
tests = append(tests, "go1.23/")
|
||||
}
|
||||
|
||||
if *testTarget != "" {
|
||||
// This makes it possible to run one specific test (instead of all),
|
||||
|
||||
Vendored
+3
@@ -0,0 +1,3 @@
|
||||
module github.com/tinygo-org/tinygo/testdata/go1.23
|
||||
|
||||
go 1.23
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
package main
|
||||
|
||||
func main() {
|
||||
testFuncRange(counter)
|
||||
}
|
||||
|
||||
func testFuncRange(f func(yield func(int) bool)) {
|
||||
for i := range f {
|
||||
println(i)
|
||||
}
|
||||
println("go1.23 has lift-off!")
|
||||
}
|
||||
|
||||
func counter(yield func(int) bool) {
|
||||
for i := 10; i >= 1; i-- {
|
||||
yield(i)
|
||||
}
|
||||
}
|
||||
Vendored
+11
@@ -0,0 +1,11 @@
|
||||
10
|
||||
9
|
||||
8
|
||||
7
|
||||
6
|
||||
5
|
||||
4
|
||||
3
|
||||
2
|
||||
1
|
||||
go1.23 has lift-off!
|
||||
Reference in New Issue
Block a user