Skip to content

Commit 229bfc4

Browse files
committed
Match the public mapper kind names in layout lint
Mapper kind constants are now public TypeMapperKind values, so the lint's pairing between concrete mappers and their kind constants has to look them up by the new names.
1 parent 7744c55 commit 229bfc4

4 files changed

Lines changed: 30 additions & 28 deletions

File tree

‎tools/customlint/testdata/unsafelayout/internal/checker/checker.go‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,15 +74,15 @@ func shadowedUpcast(c *Checker) {
7474
c.newType(0, 0, data.AsType(), typeKindLiteral)
7575
}
7676

77-
type typeMapperKind uint8
77+
type TypeMapperKind uint8
7878

7979
const (
80-
typeMapperSimple typeMapperKind = iota
81-
typeMapperArray
80+
TypeMapperKindSimple TypeMapperKind = iota
81+
TypeMapperKindArray
8282
)
8383

8484
type TypeMapper struct {
85-
kind typeMapperKind
85+
kind TypeMapperKind
8686
}
8787

8888
type SimpleTypeMapper struct {
@@ -93,19 +93,19 @@ type ArrayTypeMapper struct {
9393
TypeMapper
9494
}
9595

96-
func castTypeMapper[T any](m *TypeMapper, kind typeMapperKind) *T {
96+
func castTypeMapper[T any](m *TypeMapper, kind TypeMapperKind) *T {
9797
if m.kind != kind {
9898
panic("Invalid type mapper cast")
9999
}
100100
return (*T)(unsafe.Pointer(m))
101101
}
102102

103103
func mapperCalls(simple *SimpleTypeMapper, header *TypeMapper) {
104-
simple.kind = typeMapperSimple
105-
simple.kind = typeMapperArray
106-
header.kind = typeMapperSimple
107-
_ = castTypeMapper[SimpleTypeMapper](header, typeMapperSimple)
108-
_ = castTypeMapper[SimpleTypeMapper](header, typeMapperArray)
104+
simple.kind = TypeMapperKindSimple
105+
simple.kind = TypeMapperKindArray
106+
header.kind = TypeMapperKindSimple
107+
_ = castTypeMapper[SimpleTypeMapper](header, TypeMapperKindSimple)
108+
_ = castTypeMapper[SimpleTypeMapper](header, TypeMapperKindArray)
109109
_ = (*SimpleTypeMapper)(unsafe.Pointer(header))
110110
}
111111

@@ -128,7 +128,7 @@ func freshRecords(c *Checker) *Type {
128128

129129
func freshMappers() (*TypeMapper, *TypeMapper) {
130130
tagged := &SimpleTypeMapper{}
131-
tagged.kind = typeMapperSimple
131+
tagged.kind = TypeMapperKindSimple
132132
untagged := &ArrayTypeMapper{}
133133
return &tagged.TypeMapper, &untagged.TypeMapper
134134
}
@@ -149,14 +149,14 @@ func zeroValueRecords() (*LiteralType, *SimpleTypeMapper) {
149149
var literals [2]LiteralType
150150
_ = literals
151151
var mappers [2]SimpleTypeMapper
152-
mappers[0].kind = typeMapperSimple
152+
mappers[0].kind = TypeMapperKindSimple
153153
return &literal, &mappers[0]
154154
}
155155

156156
func (m *SimpleTypeMapper) Map(t *Type) *Type { return t }
157157

158158
func initSimpleTypeMapper(m *SimpleTypeMapper) *TypeMapper {
159-
m.kind = typeMapperSimple
159+
m.kind = TypeMapperKindSimple
160160
return &m.TypeMapper
161161
}
162162

‎tools/customlint/testdata/unsafelayout/internal/checker/checker.go.golden‎

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -106,15 +106,15 @@
106106
!!! unsafelayout: newType must directly pair a concrete AsType() receiver with its matching constant kind
107107
}
108108

109-
type typeMapperKind uint8
109+
type TypeMapperKind uint8
110110

111111
const (
112-
typeMapperSimple typeMapperKind = iota
113-
typeMapperArray
112+
TypeMapperKindSimple TypeMapperKind = iota
113+
TypeMapperKindArray
114114
)
115115

116116
type TypeMapper struct {
117-
kind typeMapperKind
117+
kind TypeMapperKind
118118
}
119119

120120
type SimpleTypeMapper struct {
@@ -125,23 +125,23 @@
125125
TypeMapper
126126
}
127127

128-
func castTypeMapper[T any](m *TypeMapper, kind typeMapperKind) *T {
128+
func castTypeMapper[T any](m *TypeMapper, kind TypeMapperKind) *T {
129129
if m.kind != kind {
130130
panic("Invalid type mapper cast")
131131
}
132132
return (*T)(unsafe.Pointer(m))
133133
}
134134

135135
func mapperCalls(simple *SimpleTypeMapper, header *TypeMapper) {
136-
simple.kind = typeMapperSimple
137-
simple.kind = typeMapperArray
136+
simple.kind = TypeMapperKindSimple
137+
simple.kind = TypeMapperKindArray
138138
~
139139
!!! unsafelayout: mapper tag must match the concrete mapper allocation
140-
header.kind = typeMapperSimple
140+
header.kind = TypeMapperKindSimple
141141
~
142142
!!! unsafelayout: mapper tag must match the concrete mapper allocation
143-
_ = castTypeMapper[SimpleTypeMapper](header, typeMapperSimple)
144-
_ = castTypeMapper[SimpleTypeMapper](header, typeMapperArray)
143+
_ = castTypeMapper[SimpleTypeMapper](header, TypeMapperKindSimple)
144+
_ = castTypeMapper[SimpleTypeMapper](header, TypeMapperKindArray)
145145
~
146146
!!! unsafelayout: checked cast must directly pair its concrete target type with its matching constant kind
147147
_ = (*SimpleTypeMapper)(unsafe.Pointer(header))
@@ -186,7 +186,7 @@
186186

187187
func freshMappers() (*TypeMapper, *TypeMapper) {
188188
tagged := &SimpleTypeMapper{}
189-
tagged.kind = typeMapperSimple
189+
tagged.kind = TypeMapperKindSimple
190190
untagged := &ArrayTypeMapper{}
191191
~
192192
!!! unsafelayout: a fresh mapper must be tagged by the statement after its allocation
@@ -219,7 +219,7 @@
219219
var mappers [2]SimpleTypeMapper
220220
~
221221
!!! unsafelayout: a zero-value compiler record bypasses checked construction; use its owning factory
222-
mappers[0].kind = typeMapperSimple
222+
mappers[0].kind = TypeMapperKindSimple
223223
return &literal, &mappers[0]
224224
~
225225
!!! unsafelayout: mapper storage held by value is untagged until an init*TypeMapper function tags it; pass its address there first
@@ -228,7 +228,7 @@
228228
func (m *SimpleTypeMapper) Map(t *Type) *Type { return t }
229229

230230
func initSimpleTypeMapper(m *SimpleTypeMapper) *TypeMapper {
231-
m.kind = typeMapperSimple
231+
m.kind = TypeMapperKindSimple
232232
return &m.TypeMapper
233233
}
234234

‎tools/customlint/unsafelayout.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ func layoutKind(typ types.Type) *types.Const {
214214
case "Type":
215215
name = "typeKind" + strings.TrimSuffix(named.Obj().Name(), "Type")
216216
case "TypeMapper":
217-
name = "typeMapper" + strings.TrimSuffix(named.Obj().Name(), "TypeMapper")
217+
name = "TypeMapperKind" + strings.TrimSuffix(named.Obj().Name(), "TypeMapper")
218218
default:
219219
return nil
220220
}

‎tsc/internal/checker/types_test.go‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,9 @@ func TestCompactTypeMapperLayout(t *testing.T) {
460460
}{
461461
{TypeMapperKindSimple, mapper, func(m *TypeMapper) any { return castTypeMapper[SimpleTypeMapper](m, TypeMapperKindSimple) }},
462462
{TypeMapperKindArray, newArrayTypeMapper(nil, nil), func(m *TypeMapper) any { return castTypeMapper[ArrayTypeMapper](m, TypeMapperKindArray) }},
463-
{TypeMapperKindArrayToSingle, newArrayToSingleTypeMapper(nil, nil), func(m *TypeMapper) any { return castTypeMapper[ArrayToSingleTypeMapper](m, TypeMapperKindArrayToSingle) }},
463+
{TypeMapperKindArrayToSingle, newArrayToSingleTypeMapper(nil, nil), func(m *TypeMapper) any {
464+
return castTypeMapper[ArrayToSingleTypeMapper](m, TypeMapperKindArrayToSingle)
465+
}},
464466
{TypeMapperKindDeferred, newDeferredTypeMapper(nil, nil), func(m *TypeMapper) any { return castTypeMapper[DeferredTypeMapper](m, TypeMapperKindDeferred) }},
465467
{TypeMapperKindFunction, newFunctionTypeMapper(func(t *Type) *Type { return t }), func(m *TypeMapper) any { return castTypeMapper[FunctionTypeMapper](m, TypeMapperKindFunction) }},
466468
{TypeMapperKindMerged, newMergedTypeMapper(mapper, mapper), func(m *TypeMapper) any { return castTypeMapper[MergedTypeMapper](m, TypeMapperKindMerged) }},

0 commit comments

Comments
 (0)