case pkgbits.ObjAlias:
pos := r.pos()
- var tparams []*types2.TypeParam // TODO(#68778): Read tparams for unified IR.
+ var tparams []*types2.TypeParam
+ if r.Version().Has(pkgbits.AliasTypeParamNames) {
+ tparams = r.typeParamNames()
+ }
typ := r.typ()
return newAliasTypeName(pr.enableAlias, pos, objPkg, objName, typ, tparams)
case pkgbits.ObjAlias:
name := do(ir.OTYPE, false)
+ if r.Version().Has(pkgbits.AliasTypeParamNames) {
+ r.typeParamNames()
+ }
+
// Clumsy dance: the r.typ() call here might recursively find this
// type alias name, before we've set its type (#66873). So we
// temporarily clear sym.Def and then restore it later, if still
case *types2.TypeName:
if obj.IsAlias() {
w.pos(obj)
- t := obj.Type()
- if alias, ok := t.(*types2.Alias); ok { // materialized alias
- t = alias.Rhs()
+ rhs := obj.Type()
+ var tparams *types2.TypeParamList
+ if alias, ok := rhs.(*types2.Alias); ok { // materialized alias
+ assert(alias.TypeArgs() == nil)
+ tparams = alias.TypeParams()
+ rhs = alias.Rhs()
}
- w.typ(t)
+ if w.Version().Has(pkgbits.AliasTypeParamNames) {
+ w.typeParamNames(tparams)
+ }
+ // TODO(taking): enable this assertion once this is not intended to be a nop.
+ // assert(w.Version().Has(pkgbits.AliasTypeParamNames) || tparams.Len() == 0)
+ w.typ(rhs)
return pkgbits.ObjAlias
}
case pkgbits.ObjAlias:
pos := r.pos()
- var tparams []*types.TypeParam // TODO(#68778): Read tparams for unified IR.
+ var tparams []*types.TypeParam
+ if r.Version().Has(pkgbits.AliasTypeParamNames) {
+ tparams = r.typeParamNames()
+ }
typ := r.typ()
declare(newAliasTypeName(pos, objPkg, objName, typ, tparams))