diff --git a/tools/checkconst/checkconst.go b/tools/checkconst/checkconst.go index 9e5419b204..eaa06fd593 100644 --- a/tools/checkconst/checkconst.go +++ b/tools/checkconst/checkconst.go @@ -84,7 +84,7 @@ func (c *Constants) walkObject(pass *analysis.Pass, parents []string, obj types. if typ == nil || typ.Underlying() == nil { break } - if _, ok := typ.(*types.TypeParam); ok { + if _, ok := types.Unalias(typ).(*types.TypeParam); ok { break } // Add basic information. diff --git a/tools/checklocks/analysis.go b/tools/checklocks/analysis.go index 16c54884d9..09ed439460 100644 --- a/tools/checklocks/analysis.go +++ b/tools/checklocks/analysis.go @@ -56,7 +56,7 @@ func (pc *passContext) typeAlignment(pkg *types.Package, obj types.Object) atomi } case *types.Array: // Export direct alignment requirements. - if named, ok := x.Elem().(*types.Named); ok && !hasTypeParams(named) { + if named, ok := types.Unalias(x.Elem()).(*types.Named); ok && !hasTypeParams(named) { requiredOffset = pc.typeAlignment(pkg, named.Obj()) } default: diff --git a/tools/checklocks/checklocks.go b/tools/checklocks/checklocks.go index 490202e935..a0866a0711 100644 --- a/tools/checklocks/checklocks.go +++ b/tools/checklocks/checklocks.go @@ -165,7 +165,7 @@ func run(pass *analysis.Pass) (any, error) { // Check all alignments. pc.forAllTypes(func(ts *ast.TypeSpec) { - typ, ok := pass.TypesInfo.TypeOf(ts.Name).(*types.Named) + typ, ok := types.Unalias(pass.TypesInfo.TypeOf(ts.Name)).(*types.Named) if !ok { return } diff --git a/tools/checklocks/facts.go b/tools/checklocks/facts.go index 3ea1063781..4ebffd2258 100644 --- a/tools/checklocks/facts.go +++ b/tools/checklocks/facts.go @@ -678,7 +678,7 @@ func (pc *passContext) structLockGuardFacts(structType *types.Struct, ss *ast.St // See above, for anonymous structure fields. if ss, ok := field.Type.(*ast.StructType); ok { - if st, ok := fieldObj.Type().(*types.Struct); ok { + if st, ok := types.Unalias(fieldObj.Type()).(*types.Struct); ok { pc.structLockGuardFacts(st, ss) } }