From c10e468d017435ea4bb1ba7a1640b93e6f2608fd Mon Sep 17 00:00:00 2001 From: bysir <61535029+zbysir@users.noreply.github.com> Date: Sat, 1 Jul 2023 18:58:05 +0800 Subject: [PATCH] interp: fix fieldName method parsing embedded + generic fields Fix https://github.com/traefik/yaegi/issues/1571 --- _test/issue-1571.go | 20 ++++++++++++++++++++ interp/type.go | 2 ++ 2 files changed, 22 insertions(+) create mode 100644 _test/issue-1571.go diff --git a/_test/issue-1571.go b/_test/issue-1571.go new file mode 100644 index 00000000..aa295ad6 --- /dev/null +++ b/_test/issue-1571.go @@ -0,0 +1,20 @@ +package main + +type A struct { + *B[string] +} + +type B[T any] struct { + data T +} + +func main() { + _ = &A{ + B: &B[string]{}, + } + + println("PASS") +} + +// Output: +// PASS diff --git a/interp/type.go b/interp/type.go index 6c493b31..81cf5203 100644 --- a/interp/type.go +++ b/interp/type.go @@ -1230,6 +1230,8 @@ func fieldName(n *node) string { return fieldName(n.child[1]) case starExpr: return fieldName(n.child[0]) + case indexExpr: + return fieldName(n.child[0]) case identExpr: return n.ident default: