mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-14 07:53:40 +00:00
compiler: fix incorrect DWARF type in some generic parameters
For some reason, the type of a function parameter can sometimes be of interface type, while it should be the underlying type. This might be a bug in the x/tools/go/ssa package but this is a simple workaround.
This commit is contained in:
committed by
Ron Evans
parent
c4d99e5297
commit
f6e6aca8d9
@@ -688,7 +688,7 @@ func (b *builder) getLocalVariable(variable *types.Var) llvm.Metadata {
|
|||||||
Name: param.Name(),
|
Name: param.Name(),
|
||||||
File: b.getDIFile(pos.Filename),
|
File: b.getDIFile(pos.Filename),
|
||||||
Line: pos.Line,
|
Line: pos.Line,
|
||||||
Type: b.getDIType(variable.Type()),
|
Type: b.getDIType(param.Type()),
|
||||||
AlwaysPreserve: true,
|
AlwaysPreserve: true,
|
||||||
ArgNo: i + 1,
|
ArgNo: i + 1,
|
||||||
})
|
})
|
||||||
|
|||||||
Vendored
+5
@@ -12,6 +12,8 @@ func main() {
|
|||||||
var c C[int]
|
var c C[int]
|
||||||
c.F() // issue 2951
|
c.F() // issue 2951
|
||||||
|
|
||||||
|
SliceOp([]int(nil)) // issue 3002
|
||||||
|
|
||||||
testa.Test()
|
testa.Test()
|
||||||
testb.Test()
|
testb.Test()
|
||||||
}
|
}
|
||||||
@@ -28,3 +30,6 @@ func Add[T Integer](a, b T) T {
|
|||||||
type C[V any] struct{}
|
type C[V any] struct{}
|
||||||
|
|
||||||
func (c *C[V]) F() {}
|
func (c *C[V]) F() {}
|
||||||
|
|
||||||
|
// Test for https://github.com/tinygo-org/tinygo/issues/3002
|
||||||
|
func SliceOp[S ~[]E, E any](s S) {}
|
||||||
|
|||||||
Reference in New Issue
Block a user