diff --git a/params/config.libevm.go b/params/config.libevm.go index 2f4730b8aa3d..41905649381e 100644 --- a/params/config.libevm.go +++ b/params/config.libevm.go @@ -158,6 +158,12 @@ func (ExtraPayloadGetter[C, R]) PointerFromChainConfig(c *ChainConfig) *C { return pseudo.MustPointerTo[C](c.extraPayload()).Value.Get() } +// SetOnChainConfig sets the ChainConfig's extra payload. It is equivalent to +// `*e.PointerFromChainConfig(cc) = val`. +func (e ExtraPayloadGetter[C, R]) SetOnChainConfig(cc *ChainConfig, val C) { + *e.PointerFromChainConfig(cc) = val +} + // hooksFromChainConfig is equivalent to FromChainConfig(), but returns an // interface instead of the concrete type implementing it; this allows it to be // used in non-generic code. @@ -176,6 +182,12 @@ func (ExtraPayloadGetter[C, R]) PointerFromRules(r *Rules) *R { return pseudo.MustPointerTo[R](r.extraPayload()).Value.Get() } +// SetOnRules sets the Rules' extra payload. It is equivalent to +// `*e.PointerFromRules(r) = val`. +func (e ExtraPayloadGetter[C, R]) SetOnRules(r *Rules, val R) { + *e.PointerFromRules(r) = val +} + // hooksFromRules is the [RulesHooks] equivalent of hooksFromChainConfig(). func (e ExtraPayloadGetter[C, R]) hooksFromRules(r *Rules) RulesHooks { return e.FromRules(r) diff --git a/params/config.libevm_test.go b/params/config.libevm_test.go index 129cc76ec5bc..e37e5971def9 100644 --- a/params/config.libevm_test.go +++ b/params/config.libevm_test.go @@ -162,11 +162,11 @@ func TestModificationOfZeroExtras(t *testing.T) { assertRulesExtra(t, rulesExtra{X: pi}, "after setting via pointer field") ccReplace := ccExtra{X: 142857} - *getter.PointerFromChainConfig(config) = ccReplace + getter.SetOnChainConfig(config, ccReplace) assertChainConfigExtra(t, ccReplace, "after replacement of entire extra via `*pointer = x`") rulesReplace := rulesExtra{X: 18101986} - *getter.PointerFromRules(rules) = rulesReplace + getter.SetOnRules(rules, rulesReplace) assertRulesExtra(t, rulesReplace, "after replacement of entire extra via `*pointer = x`") if t.Failed() {