Removed stray localName in array sub-coders.
This commit is contained in:
parent
059b03e090
commit
aa48dfcdf4
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ethers",
|
"name": "ethers",
|
||||||
"version": "3.0.22",
|
"version": "3.0.23",
|
||||||
"description": "Ethereum wallet library.",
|
"description": "Ethereum wallet library.",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
@ -173,6 +173,26 @@ describe('ABI Coder ABIv2 Decoding', function() {
|
|||||||
it(('decodes ABIv2 parameters - ' + test.name + ' - ' + test.types), function() {
|
it(('decodes ABIv2 parameters - ' + test.name + ' - ' + test.types), function() {
|
||||||
var decoded = coder.decode(types, result);
|
var decoded = coder.decode(types, result);
|
||||||
assert.ok(equals(decoded, values), 'decoded positional parameters - ' + title);
|
assert.ok(equals(decoded, values), 'decoded positional parameters - ' + title);
|
||||||
|
|
||||||
|
// Test for mutation
|
||||||
|
// https://github.com/ethers-io/ethers.js/issues/200
|
||||||
|
// https://github.com/ethers-io/ethers.js/issues/201
|
||||||
|
|
||||||
|
// @TODO: Expose parseParameter
|
||||||
|
// Check that it works with objects as well as strings
|
||||||
|
var expandedTypes = [];
|
||||||
|
types.forEach(function(type) {
|
||||||
|
var sig = 'function foo(' + type + ' foo)';
|
||||||
|
var abi = ethers.utils.AbiCoder.parseSignature(sig);
|
||||||
|
expandedTypes.push(abi.inputs[0]);
|
||||||
|
});
|
||||||
|
|
||||||
|
var typesBefore = JSON.stringify(expandedTypes);
|
||||||
|
|
||||||
|
decoded = coder.decode(expandedTypes, result);
|
||||||
|
assert.ok(equals(decoded, values), 'decoded positional parameters - ' + title);
|
||||||
|
|
||||||
|
assert.equal(typesBefore, JSON.stringify(expandedTypes), 'decoding does not modify the types');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -382,7 +382,7 @@ var coderBoolean = function(coerceFunc, localName) {
|
|||||||
encode: function(value) {
|
encode: function(value) {
|
||||||
return uint256Coder.encode(!!value ? 1: 0);
|
return uint256Coder.encode(!!value ? 1: 0);
|
||||||
},
|
},
|
||||||
decode: function(data, offset) {
|
decode: function(data, offset) {
|
||||||
try {
|
try {
|
||||||
var result = uint256Coder.decode(data, offset);
|
var result = uint256Coder.decode(data, offset);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -758,8 +758,17 @@ function coderArray(coerceFunc, coder, length, localName) {
|
|||||||
offset += decodedLength.consumed;
|
offset += decodedLength.consumed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We don't want the children to have a localName
|
||||||
|
var subCoder = {
|
||||||
|
name: coder.name,
|
||||||
|
type: coder.type,
|
||||||
|
encode: coder.encode,
|
||||||
|
decode: coder.decode,
|
||||||
|
dynamic: coder.dynamic
|
||||||
|
};
|
||||||
|
|
||||||
var coders = [];
|
var coders = [];
|
||||||
for (var i = 0; i < count; i++) { coders.push(coder); }
|
for (var i = 0; i < count; i++) { coders.push(subCoder); }
|
||||||
|
|
||||||
var result = unpack(coders, data, offset);
|
var result = unpack(coders, data, offset);
|
||||||
result.consumed += consumed;
|
result.consumed += consumed;
|
||||||
|
Loading…
Reference in New Issue
Block a user