From c65d33fa3d1f2364cd4cf22616eb53dac9050de9 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 16 Mar 2020 23:08:15 -0700 Subject: [PATCH] go/go2go: handle ast.Ellipsis in instantiate and rewrite Change-Id: I03d316677c2a1cf31fe28d55df1ef21515a0a2ba --- src/go/go2go/instantiate.go | 9 +++++++++ src/go/go2go/rewrite.go | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/go/go2go/instantiate.go b/src/go/go2go/instantiate.go index 0afa8ed251..f7731df6fa 100644 --- a/src/go/go2go/instantiate.go +++ b/src/go/go2go/instantiate.go @@ -464,6 +464,15 @@ func (t *translator) instantiateExpr(ta *typeArgs, e ast.Expr) ast.Expr { } } return e + case *ast.Ellipsis: + elt := t.instantiateExpr(ta, e.Elt) + if elt == e.Elt { + return e + } + return &ast.Ellipsis{ + Ellipsis: e.Ellipsis, + Elt: elt, + } case *ast.BasicLit: return e case *ast.FuncLit: diff --git a/src/go/go2go/rewrite.go b/src/go/go2go/rewrite.go index 597b1bd4d6..94db2469bb 100644 --- a/src/go/go2go/rewrite.go +++ b/src/go/go2go/rewrite.go @@ -407,9 +407,9 @@ func (t *translator) translateExpr(pe *ast.Expr) { } switch e := (*pe).(type) { case *ast.Ident: - return + case *ast.Ellipsis: + t.translateExpr(&e.Elt) case *ast.BasicLit: - return case *ast.FuncLit: t.translateFieldList(e.Type.TParams) t.translateFieldList(e.Type.Params)