Skip to content

Commit dd907ce

Browse files
authored
refactor: bring closer in line with #133 (#136)
1 parent 3add47b commit dd907ce

File tree

1 file changed

+23
-24
lines changed

1 file changed

+23
-24
lines changed

core/types/rlp_payload.libevm.go

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,10 @@ func RegisterExtras[
7474
// The [ExtraPayloads] that we returns is based on [HPtr,BPtr,SA], not
7575
// [H,B,SA] so our constructors MUST match that. This guarantees that calls to
7676
// the [HeaderHooks] and [BodyHooks] methods will never be performed on a nil pointer.
77-
newHeader: pseudo.NewConstructor[H]().NewPointer, // i.e. non-nil HPtr
78-
newBody: pseudo.NewConstructor[B]().NewPointer, // i.e. non-nil BPtr
79-
newStateAccount: pseudo.NewConstructor[SA]().Zero,
80-
cloneStateAccount: extra.cloneStateAccount,
81-
hooks: extra,
77+
newHeader: pseudo.NewConstructor[H]().NewPointer, // i.e. non-nil HPtr
78+
newBody: pseudo.NewConstructor[B]().NewPointer, // i.e. non-nil BPtr
79+
newStateAccount: pseudo.NewConstructor[SA]().Zero,
80+
hooks: extra,
8281
})
8382
return extra
8483
}
@@ -96,29 +95,17 @@ func TestOnlyClearRegisteredExtras() {
9695
var registeredExtras register.AtMostOnce[*extraConstructors]
9796

9897
type extraConstructors struct {
99-
stateAccountType string
100-
newHeader func() *pseudo.Type
101-
newBody func() *pseudo.Type
102-
newStateAccount func() *pseudo.Type
103-
cloneStateAccount func(*StateAccountExtra) *StateAccountExtra
104-
hooks interface {
98+
stateAccountType string
99+
newHeader func() *pseudo.Type
100+
newBody func() *pseudo.Type
101+
newStateAccount func() *pseudo.Type
102+
hooks interface {
105103
hooksFromHeader(*Header) HeaderHooks
106104
hooksFromBody(*Body) BodyHooks
105+
cloneStateAccount(*StateAccountExtra) *StateAccountExtra
107106
}
108107
}
109108

110-
func (h *Header) extraPayload() *pseudo.Type {
111-
return extraPayloadOrSetDefault(&h.extra, func(c *extraConstructors) *pseudo.Type {
112-
return c.newHeader()
113-
})
114-
}
115-
116-
func (b *Body) extraPayload() *pseudo.Type {
117-
return extraPayloadOrSetDefault(&b.extra, func(c *extraConstructors) *pseudo.Type {
118-
return c.newBody()
119-
})
120-
}
121-
122109
func extraPayloadOrSetDefault(field **pseudo.Type, construct func(*extraConstructors) *pseudo.Type) *pseudo.Type {
123110
r := registeredExtras
124111
if !r.Registered() {
@@ -131,6 +118,18 @@ func extraPayloadOrSetDefault(field **pseudo.Type, construct func(*extraConstruc
131118
return *field
132119
}
133120

121+
func (h *Header) extraPayload() *pseudo.Type {
122+
return extraPayloadOrSetDefault(&h.extra, func(c *extraConstructors) *pseudo.Type {
123+
return c.newHeader()
124+
})
125+
}
126+
127+
func (b *Body) extraPayload() *pseudo.Type {
128+
return extraPayloadOrSetDefault(&b.extra, func(c *extraConstructors) *pseudo.Type {
129+
return c.newBody()
130+
})
131+
}
132+
134133
// hooks returns the [Header]'s registered [HeaderHooks], if any, otherwise a
135134
// [NOOPHeaderHooks] suitable for running default behaviour.
136135
func (h *Header) hooks() HeaderHooks {
@@ -154,7 +153,7 @@ func (e *StateAccountExtra) clone() *StateAccountExtra {
154153
case !r.Registered(), e == nil:
155154
return nil
156155
default:
157-
return r.Get().cloneStateAccount(e)
156+
return r.Get().hooks.cloneStateAccount(e)
158157
}
159158
}
160159

0 commit comments

Comments
 (0)