solidity/test/libsolidity/ASTJSON/mappings_parseOnly.json
Soham Zemse fa78e0f3d4 feat: allow named parameters in mapping types
Co-authored-by: Hari <webmail.hari@gmail.com>

test: add parser and abi test cases

docs: add example on using named parameters for mappings

- Add changelog

feat: update antlr grammar to allow named parameters in mappings

fix: prevent conflicting mapping parameter names

ref: change order of mapping initializers

test: update expectations and fix build

test: add more tests

fix: use common error & code for conflicting params

fix: issue with accessing nested mapping

test: add conflicting params tests for more nested levels

Update libsolidity/analysis/DeclarationTypeChecker.cpp

Co-authored-by: Nikola Matić <nikola.matic@ethereum.org>

fix: error reported with the same code twice

test: add more tests for 3 level nested mapping

Address review comments
2022-12-08 11:56:58 +01:00

190 lines
4.8 KiB
JSON

{
"absolutePath": "a",
"id": 20,
"nodeType": "SourceUnit",
"nodes":
[
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"id": 19,
"name": "C",
"nameLocation": "9:1:1",
"nodeType": "ContractDefinition",
"nodes":
[
{
"id": 4,
"members":
[
{
"id": 1,
"name": "A",
"nameLocation": "26:1:1",
"nodeType": "EnumValue",
"src": "26:1:1"
},
{
"id": 2,
"name": "B",
"nameLocation": "29:1:1",
"nodeType": "EnumValue",
"src": "29:1:1"
},
{
"id": 3,
"name": "C",
"nameLocation": "32:1:1",
"nodeType": "EnumValue",
"src": "32:1:1"
}
],
"name": "E",
"nameLocation": "22:1:1",
"nodeType": "EnumDefinition",
"src": "17:18:1"
},
{
"constant": false,
"id": 9,
"mutability": "mutable",
"name": "a",
"nameLocation": "59:1:1",
"nodeType": "VariableDeclaration",
"src": "40:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {},
"typeName":
{
"id": 8,
"keyName": "",
"keyType":
{
"id": 6,
"nodeType": "UserDefinedTypeName",
"pathNode":
{
"id": 5,
"name": "C",
"nameLocations":
[
"48:1:1"
],
"nodeType": "IdentifierPath",
"src": "48:1:1"
},
"src": "48:1:1",
"typeDescriptions": {}
},
"nodeType": "Mapping",
"src": "40:18:1",
"typeDescriptions": {},
"valueName": "",
"valueType":
{
"id": 7,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "53:4:1",
"typeDescriptions": {}
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 13,
"mutability": "mutable",
"name": "b",
"nameLocation": "91:1:1",
"nodeType": "VariableDeclaration",
"src": "66:26:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {},
"typeName":
{
"id": 12,
"keyName": "",
"keyType":
{
"id": 10,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "74:7:1",
"typeDescriptions": {}
},
"nodeType": "Mapping",
"src": "66:24:1",
"typeDescriptions": {},
"valueName": "",
"valueType":
{
"id": 11,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "85:4:1",
"typeDescriptions": {}
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 18,
"mutability": "mutable",
"name": "c",
"nameLocation": "117:1:1",
"nodeType": "VariableDeclaration",
"src": "98:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {},
"typeName":
{
"id": 17,
"keyName": "",
"keyType":
{
"id": 15,
"nodeType": "UserDefinedTypeName",
"pathNode":
{
"id": 14,
"name": "E",
"nameLocations":
[
"106:1:1"
],
"nodeType": "IdentifierPath",
"src": "106:1:1"
},
"src": "106:1:1",
"typeDescriptions": {}
},
"nodeType": "Mapping",
"src": "98:18:1",
"typeDescriptions": {},
"valueName": "",
"valueType":
{
"id": 16,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "111:4:1",
"typeDescriptions": {}
}
},
"visibility": "internal"
}
],
"src": "0:121:1",
"usedErrors": []
}
],
"src": "0:122:1"
}