From 572650ec59f4bccff442f6c71fa740d84a3beee9 Mon Sep 17 00:00:00 2001 From: Jordan Krage Date: Thu, 16 Jul 2026 09:39:05 -0500 Subject: [PATCH] go fix ./... --- internal/utils/json/json.go | 6 +++--- merge_test.go | 6 +++--- sdk/aptos/executor_test.go | 12 ++++++------ sdk/aptos/utils.go | 3 ++- sdk/evm/bindings/abigen.go | 18 +++++++++--------- sdk/evm/execution_error.go | 10 +++++----- sdk/solana/common.go | 5 +---- sdk/solana/simulator.go | 5 +++-- sdk/solana/utils_test.go | 9 +++++---- sdk/usbwallet/ledger.go | 4 ++-- sdk/usbwallet/wallet.go | 2 +- timelock_proposal.go | 5 ++--- utils.go | 3 ++- 13 files changed, 44 insertions(+), 44 deletions(-) diff --git a/internal/utils/json/json.go b/internal/utils/json/json.go index 94baff490..1e8eddd1e 100644 --- a/internal/utils/json/json.go +++ b/internal/utils/json/json.go @@ -1,5 +1,7 @@ package json +import "maps" + import "encoding/json" func Merge(json1, json2 []byte) ([]byte, error) { @@ -14,9 +16,7 @@ func Merge(json1, json2 []byte) ([]byte, error) { } // Merge map2 into map1 - for key, value := range map2 { - map1[key] = value - } + maps.Copy(map1, map2) // Marshal the merged result back into JSON return json.Marshal(map1) diff --git a/merge_test.go b/merge_test.go index a843367c5..6f67ad737 100644 --- a/merge_test.go +++ b/merge_test.go @@ -287,11 +287,11 @@ func TestTimelockProposal_Merge(t *testing.T) { }, { name: "success: merge salt", - proposal1: mustBuild(t, baseProposalBuilder().SetSalt(pointerTo(common.HexToHash("0x0123456789abcdef")))), - proposal2: mustBuild(t, baseProposalBuilder().SetSalt(pointerTo(common.HexToHash("0x9876543210fedcba")))), + proposal1: mustBuild(t, baseProposalBuilder().SetSalt(new(common.HexToHash("0x0123456789abcdef")))), + proposal2: mustBuild(t, baseProposalBuilder().SetSalt(new(common.HexToHash("0x9876543210fedcba")))), assert: func(t *testing.T, merged *TimelockProposal) { t.Helper() - want := pointerTo(common.HexToHash("0x9955115599551155")) + want := new(common.HexToHash("0x9955115599551155")) require.Equal(t, want, merged.SaltOverride) }, }, diff --git a/sdk/aptos/executor_test.go b/sdk/aptos/executor_test.go index aa3ae21e4..5c7d159b4 100644 --- a/sdk/aptos/executor_test.go +++ b/sdk/aptos/executor_test.go @@ -128,7 +128,7 @@ func TestExecutor_ExecuteOperation(t *testing.T) { mcms.EXPECT().MCMSExecutor().Return(mockMCMSExecutorModule) mockMCMSExecutorModule.EXPECT().StageData( &bind.TransactOpts{ - SequenceNumber: pointerTo(uint64(789)), + SequenceNumber: new(uint64(789)), Signer: signer, }, generateData(50_000), @@ -136,7 +136,7 @@ func TestExecutor_ExecuteOperation(t *testing.T) { ).Return(&api.PendingTransaction{Hash: "0xdeadbeef1"}, nil) mockMCMSExecutorModule.EXPECT().StageData( &bind.TransactOpts{ - SequenceNumber: pointerTo(uint64(790)), + SequenceNumber: new(uint64(790)), Signer: signer, }, generateData(50_000), @@ -144,7 +144,7 @@ func TestExecutor_ExecuteOperation(t *testing.T) { ).Return(&api.PendingTransaction{Hash: "0xdeadbeef2"}, nil) mockMCMSExecutorModule.EXPECT().StageDataAndExecute( &bind.TransactOpts{ - SequenceNumber: pointerTo(uint64(791)), + SequenceNumber: new(uint64(791)), Signer: signer, }, TimelockRoleProposer.Byte(), @@ -317,7 +317,7 @@ func TestExecutor_ExecuteOperation(t *testing.T) { mcms.EXPECT().MCMSExecutor().Return(mockMCMSExecutorModule) mockMCMSExecutorModule.EXPECT().StageData( &bind.TransactOpts{ - SequenceNumber: pointerTo(uint64(789)), + SequenceNumber: new(uint64(789)), Signer: signer, }, generateData(50_000), @@ -354,7 +354,7 @@ func TestExecutor_ExecuteOperation(t *testing.T) { mcms.EXPECT().MCMSExecutor().Return(mockMCMSExecutorModule) mockMCMSExecutorModule.EXPECT().StageData( &bind.TransactOpts{ - SequenceNumber: pointerTo(uint64(789)), + SequenceNumber: new(uint64(789)), Signer: signer, }, generateData(50_000), @@ -362,7 +362,7 @@ func TestExecutor_ExecuteOperation(t *testing.T) { ).Return(&api.PendingTransaction{Hash: "0xdeadbeef1"}, nil) mockMCMSExecutorModule.EXPECT().StageDataAndExecute( &bind.TransactOpts{ - SequenceNumber: pointerTo(uint64(790)), + SequenceNumber: new(uint64(790)), Signer: signer, }, TimelockRoleBypasser.Byte(), diff --git a/sdk/aptos/utils.go b/sdk/aptos/utils.go index e1e70fabe..360f460c5 100644 --- a/sdk/aptos/utils.go +++ b/sdk/aptos/utils.go @@ -4,8 +4,9 @@ import ( "github.com/aptos-labs/aptos-go-sdk" ) +//go:fix inline func pointerTo[T any](v T) *T { - return &v + return new(v) } func hexToAddress(address string) (aptos.AccountAddress, error) { diff --git a/sdk/evm/bindings/abigen.go b/sdk/evm/bindings/abigen.go index ff0973438..0fdf67447 100644 --- a/sdk/evm/bindings/abigen.go +++ b/sdk/evm/bindings/abigen.go @@ -365,15 +365,15 @@ func replaceAnonymousStructs(contractName string, fileNode *ast.File) *ast.File func writeAdditionalMethods(contractName string, logNames []string, abi abi.ABI, bs []byte) []byte { // Write the ParseLog method if len(logNames) > 0 { - var logSwitchBody string + var logSwitchBody strings.Builder for _, logName := range logNames { //nolint:perfsprint // allow fmt.Sprintf in loop - logSwitchBody += fmt.Sprintf(`case _%v.abi.Events["%v"].ID: + logSwitchBody.WriteString(fmt.Sprintf(`case _%v.abi.Events["%v"].ID: return _%v.Parse%v(log) -`, contractName, logName, contractName, logName) +`, contractName, logName, contractName, logName)) } - bs = append(bs, []byte(fmt.Sprintf(` + bs = append(bs, fmt.Appendf(nil, ` func (_%v *%v) ParseLog(log types.Log) (AbigenLog, error) { switch log.Topics[0] { %v @@ -381,24 +381,24 @@ func (_%v *%v) ParseLog(log types.Log) (AbigenLog, error) { return nil, fmt.Errorf("abigen wrapper received unknown log topic: %%v", log.Topics[0]) } } -`, contractName, contractName, logSwitchBody))...) +`, contractName, contractName, logSwitchBody.String())...) } // Write the Topic method for _, logName := range logNames { - bs = append(bs, []byte(fmt.Sprintf(` + bs = append(bs, fmt.Appendf(nil, ` func (%v%v) Topic() common.Hash { return common.HexToHash("%v") } -`, contractName, logName, abi.Events[logName].ID.Hex()))...) +`, contractName, logName, abi.Events[logName].ID.Hex())...) } // Write the Address method to the bottom of the file - bs = append(bs, []byte(fmt.Sprintf(` + bs = append(bs, fmt.Appendf(nil, ` func (_%v *%v) Address() common.Address { return _%v.address } -`, contractName, contractName, contractName))...) +`, contractName, contractName, contractName)...) return bs } diff --git a/sdk/evm/execution_error.go b/sdk/evm/execution_error.go index d35cdf3b5..6233f5341 100644 --- a/sdk/evm/execution_error.go +++ b/sdk/evm/execution_error.go @@ -427,10 +427,10 @@ func extractRevertReasonFromError(err error) revertReasonData { if strings.Contains(errStr, revertPrefix) { // Try to extract the plain string revert reason // Format: "execution reverted: revert: " or "revert: " - revertIdx := strings.Index(errStr, revertPrefix) - if revertIdx != -1 { + _, after, ok := strings.Cut(errStr, revertPrefix) + if ok { // Extract everything after "revert: " - reason := strings.TrimSpace(errStr[revertIdx+len(revertPrefix):]) + reason := strings.TrimSpace(after) if reason != "" { return revertReasonData{ Decoded: reason, @@ -710,8 +710,8 @@ func getUnderlyingRevertReason( rawReason = revertData.Decoded } if rawReason == "" { - if idx := strings.Index(errStr, revertPrefix); idx != -1 { - rawReason = strings.TrimSpace(errStr[idx+len(revertPrefix):]) + if _, after, ok := strings.Cut(errStr, revertPrefix); ok { + rawReason = strings.TrimSpace(after) } } if rawReason == "" { diff --git a/sdk/solana/common.go b/sdk/solana/common.go index 16339158e..4eb8736de 100644 --- a/sdk/solana/common.go +++ b/sdk/solana/common.go @@ -206,10 +206,7 @@ func chunkIndexes(numItems int, chunkSize int) [][2]int { indexes := make([][2]int, 0) for i := 0; i < numItems; i += chunkSize { - end := i + chunkSize - if end > numItems { - end = numItems - } + end := min(i+chunkSize, numItems) indexes = append(indexes, [2]int{i, end}) } diff --git a/sdk/solana/simulator.go b/sdk/solana/simulator.go index 52bc7e45a..a95717d20 100644 --- a/sdk/solana/simulator.go +++ b/sdk/solana/simulator.go @@ -82,7 +82,7 @@ func (s *Simulator) collectInstructions( result := &rpc.GetTransactionResult{ Slot: 1, - BlockTime: pointerTo(solana.UnixTimeSeconds(time.Now().Unix())), + BlockTime: new(solana.UnixTimeSeconds(time.Now().Unix())), Transaction: &rpc.TransactionResultEnvelope{}, Meta: &rpc.TransactionMeta{}, Version: 1, @@ -117,6 +117,7 @@ func (e SimulateError) Logs() []string { return e.result.Logs } +//go:fix inline func pointerTo[T any](v T) *T { - return &v + return new(v) } diff --git a/sdk/solana/utils_test.go b/sdk/solana/utils_test.go index df18b64f3..cb5489830 100644 --- a/sdk/solana/utils_test.go +++ b/sdk/solana/utils_test.go @@ -159,7 +159,7 @@ func mockSolanaTransaction( *result = &rpc.GetSignatureStatusesResult{ Value: []*rpc.SignatureStatusesResult{{ Slot: slot, - Confirmations: ptrTo(uint64(2)), + Confirmations: new(uint64(2)), ConfirmationStatus: rpc.ConfirmationStatusConfirmed, }}, } @@ -181,7 +181,7 @@ func mockSolanaTransaction( require.NoError(t, err) if blockTime == nil { - blockTime = ptrTo(solana.UnixTimeSeconds(time.Now().Unix())) + blockTime = new(solana.UnixTimeSeconds(time.Now().Unix())) } *result = &rpc.GetTransactionResult{ @@ -284,7 +284,7 @@ func generateSignatures(t *testing.T, numSignatures int) []types.Signature { signatures := make([]types.Signature, numSignatures) for i := range signatures { - payload := []byte(fmt.Sprintf("\x19Ethereum Signed Message:\n320x%d", i)) + payload := fmt.Appendf(nil, "\x19Ethereum Signed Message:\n320x%d", i) hash := crypto.Keccak256Hash(payload) sigBytes, err := crypto.Sign(hash[:], privateKey) @@ -299,4 +299,5 @@ func generateSignatures(t *testing.T, numSignatures int) []types.Signature { return signatures } -func ptrTo[T any](value T) *T { return &value } +//go:fix inline +func ptrTo[T any](value T) *T { return new(value) } diff --git a/sdk/usbwallet/ledger.go b/sdk/usbwallet/ledger.go index 6e98268bf..c3b3dc3fb 100644 --- a/sdk/usbwallet/ledger.go +++ b/sdk/usbwallet/ledger.go @@ -335,11 +335,11 @@ func (w *ledgerDriver) ledgerSign(derivationPath []uint32, tx *types.Transaction err error ) if chainID == nil { - if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data()}); err != nil { + if txrlp, err = rlp.EncodeToBytes([]any{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data()}); err != nil { return common.Address{}, nil, err } } else { - if txrlp, err = rlp.EncodeToBytes([]interface{}{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), chainID, big.NewInt(0), big.NewInt(0)}); err != nil { + if txrlp, err = rlp.EncodeToBytes([]any{tx.Nonce(), tx.GasPrice(), tx.Gas(), tx.To(), tx.Value(), tx.Data(), chainID, big.NewInt(0), big.NewInt(0)}); err != nil { return common.Address{}, nil, err } } diff --git a/sdk/usbwallet/wallet.go b/sdk/usbwallet/wallet.go index f676981c2..edae433ee 100644 --- a/sdk/usbwallet/wallet.go +++ b/sdk/usbwallet/wallet.go @@ -348,7 +348,7 @@ func (w *wallet) selfDerive() { context = context.Background() // TODO fix once CLD change with core.CtxProvider is in. ) - for i := 0; i < len(nextAddrs); i++ { + for i := range nextAddrs { for empty := false; !empty; { // Retrieve the next derived Ethereum account if nextAddrs[i] == (common.Address{}) { diff --git a/timelock_proposal.go b/timelock_proposal.go index 4c130a55d..1771df50e 100644 --- a/timelock_proposal.go +++ b/timelock_proposal.go @@ -7,6 +7,7 @@ import ( "errors" "fmt" "io" + "maps" "time" "github.com/ethereum/go-ethereum/common" @@ -188,9 +189,7 @@ func (m *TimelockProposal) Convert( // 4) Rebuild chainMetadata in baseProposal chainMetadataMap := make(map[types.ChainSelector]types.ChainMetadata) - for chain, metadata := range m.ChainMetadata { - chainMetadataMap[chain] = metadata - } + maps.Copy(chainMetadataMap, m.ChainMetadata) baseProposal.ChainMetadata = chainMetadataMap // 5) We’ll build the final MCMS-only proposal diff --git a/utils.go b/utils.go index 7b8e0c40e..0b6776353 100644 --- a/utils.go +++ b/utils.go @@ -85,6 +85,7 @@ func newProposal[T ProposalInterface](r io.Reader, predecessors []io.Reader) (T, return p, nil } +//go:fix inline func pointerTo[T any](v T) *T { - return &v + return new(v) }