From cfb6cac80432e3d70d3cc613bd06eba6e2689fc4 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 6 Jul 2020 16:38:12 -0700 Subject: [PATCH] [dev.go2go] go/go2go: handle embedded pointers to instantiated types Change-Id: I47d23dd4a44c644e9ec2f1abbc3cd8cec4a35d04 Reviewed-on: https://go-review.googlesource.com/c/go/+/241125 Reviewed-by: Ian Lance Taylor --- src/go/go2go/rewrite.go | 3 +++ test/gen/g014.go2 | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/go/go2go/rewrite.go b/src/go/go2go/rewrite.go index 3f34eb1a8c..0b160dd6fd 100644 --- a/src/go/go2go/rewrite.go +++ b/src/go/go2go/rewrite.go @@ -798,6 +798,9 @@ func (t *translator) translateSelectorExpr(pe *ast.Expr) { if typ == nil { typ = f.Type() } + if pt := typ.Pointer(); pt != nil { + typ = pt.Elem() + } named, ok := typ.(*types.Named) if !ok || len(named.TArgs()) == 0 { return diff --git a/test/gen/g014.go2 b/test/gen/g014.go2 index 0b369a6bc2..8ea1d0e465 100644 --- a/test/gen/g014.go2 +++ b/test/gen/g014.go2 @@ -24,6 +24,10 @@ type S2 struct { V string } +type S3 struct { + *T(int) +} + func main() { var s1 S1 if s1.T.V != 0 { @@ -33,4 +37,8 @@ func main() { if s2.Tint.V != 0 || s2.Tbool.V { panic(s2) } + var s3 S3 + if s3.T != nil { + panic(s3) + } }