Before #46477, the Go generics proposal allowed `type T = U` where `U`
was an uninstantiated generic type. However, we decided not to allow
that, and go/types and types2 have already been updated to disallow
it. This CL just removes the analogous code from unified IR.
Change-Id: I0fe6d1754c96790b498c1d5185b948333646d7de
Reviewed-on: https://go-review.googlesource.com/c/go/+/390315
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
}
case *types2.Named:
- // Type aliases can refer to uninstantiated generic types, so we
- // might see len(TParams) != 0 && len(TArgs) == 0 here.
- // TODO(mdempsky): Revisit after #46477 is resolved.
- assert(typ.TypeParams().Len() == typ.TypeArgs().Len() || typ.TypeArgs().Len() == 0)
+ assert(typ.TypeParams().Len() == typ.TypeArgs().Len())
// TODO(mdempsky): Why do we need to loop here?
orig := typ
break
}
- // Skip aliases to uninstantiated generic types.
- // TODO(mdempsky): Revisit after #46477 is resolved.
- if name.IsAlias() {
- named, ok := name.Type().(*types2.Named)
- if ok && named.TypeParams().Len() != 0 && named.TypeArgs().Len() == 0 {
- break
- }
- }
-
w.Code(declOther)
w.pkgObjs(decl.Name)