accounts/abi: simplify reflection logic (#21058)
* accounts/abi: simplified reflection logic * accounts/abi: simplified reflection logic * accounts/abi: removed unpack * accounts/abi: removed comments * accounts/abi: removed uneccessary complications * accounts/abi: minor changes in error messages * accounts/abi: removed unnused code * accounts/abi: fixed indexed argument unpacking * accounts/abi: removed superfluous test cases This commit removes two test cases. The first one is trivially invalid as we have the same test cases as passing in packing_test.go L375. The second one passes now, because we don't need the mapArgNamesToStructFields in unpack_atomic anymore. Checking for purely underscored arg names generally should not be something we do as the abi/contract is generally out of the control of the user. * accounts/abi: removed comments, debug println * accounts/abi: added commented out code * accounts/abi: addressed comments * accounts/abi: remove unnecessary dst.CanSet check * accounts/abi: added dst.CanSet checks
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							677724af0c
						
					
				
				
					commit
					f3f1e59eea
				
			@@ -120,8 +120,7 @@ var unpackTests = []unpackTest{
 | 
			
		||||
	{
 | 
			
		||||
		def:  `[{"type": "bytes"}]`,
 | 
			
		||||
		enc:  "000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200100000000000000000000000000000000000000000000000000000000000000",
 | 
			
		||||
		want: [32]byte{},
 | 
			
		||||
		err:  "abi: cannot unmarshal []uint8 in to [32]uint8",
 | 
			
		||||
		want: [32]byte{1},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		def:  `[{"type": "bytes32"}]`,
 | 
			
		||||
@@ -135,8 +134,7 @@ var unpackTests = []unpackTest{
 | 
			
		||||
		want: struct {
 | 
			
		||||
			IntOne *big.Int
 | 
			
		||||
			Intone *big.Int
 | 
			
		||||
		}{},
 | 
			
		||||
		err: "abi: purely underscored output cannot unpack to struct",
 | 
			
		||||
		}{IntOne: big.NewInt(1)},
 | 
			
		||||
	},
 | 
			
		||||
	{
 | 
			
		||||
		def: `[{"name":"int_one","type":"int256"},{"name":"IntOne","type":"int256"}]`,
 | 
			
		||||
@@ -362,7 +360,7 @@ func TestMethodMultiReturn(t *testing.T) {
 | 
			
		||||
	}, {
 | 
			
		||||
		&[]interface{}{new(int)},
 | 
			
		||||
		&[]interface{}{},
 | 
			
		||||
		"abi: insufficient number of elements in the list/array for unpack, want 2, got 1",
 | 
			
		||||
		"abi: insufficient number of arguments for unpack, want 2, got 1",
 | 
			
		||||
		"Can not unpack into a slice with wrong types",
 | 
			
		||||
	}}
 | 
			
		||||
	for _, tc := range testCases {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user