mirror of
				https://github.com/ethereum/solidity
				synced 2023-10-03 13:03:40 +00:00 
			
		
		
		
	Implemented ASTJson import export for UserDefinedValueType
Also added a test.
This commit is contained in:
		
							parent
							
								
									5f393d1694
								
							
						
					
					
						commit
						d67391531e
					
				| @ -354,6 +354,20 @@ bool ASTJsonConverter::visit(EnumValue const& _node) | ||||
| 	return false; | ||||
| } | ||||
| 
 | ||||
| bool ASTJsonConverter::visit(UserDefinedValueTypeDefinition const& _node) | ||||
| { | ||||
| 	solAssert(_node.underlyingType(), ""); | ||||
| 	std::vector<pair<string, Json::Value>> attributes = { | ||||
| 		make_pair("name", _node.name()), | ||||
| 		make_pair("nameLocation", sourceLocationToString(_node.nameLocation())), | ||||
| 		make_pair("underlyingType", toJson(*_node.underlyingType())) | ||||
| 	}; | ||||
| 
 | ||||
| 	setJsonNode(_node, "UserDefinedValueTypeDefinition", std::move(attributes)); | ||||
| 
 | ||||
| 	return false; | ||||
| } | ||||
| 
 | ||||
| bool ASTJsonConverter::visit(ParameterList const& _node) | ||||
| { | ||||
| 	setJsonNode(_node, "ParameterList", { | ||||
|  | ||||
| @ -81,6 +81,7 @@ public: | ||||
| 	bool visit(StructDefinition const& _node) override; | ||||
| 	bool visit(EnumDefinition const& _node) override; | ||||
| 	bool visit(EnumValue const& _node) override; | ||||
| 	bool visit(UserDefinedValueTypeDefinition const& _node) override; | ||||
| 	bool visit(ParameterList const& _node) override; | ||||
| 	bool visit(OverrideSpecifier const& _node) override; | ||||
| 	bool visit(FunctionDefinition const& _node) override; | ||||
|  | ||||
| @ -133,6 +133,8 @@ ASTPointer<ASTNode> ASTJsonImporter::convertJsonToASTNode(Json::Value const& _js | ||||
| 		return createEnumDefinition(_json); | ||||
| 	if (nodeType == "EnumValue") | ||||
| 		return createEnumValue(_json); | ||||
| 	if (nodeType == "UserDefinedValueTypeDefinition") | ||||
| 		return createUserDefinedValueTypeDefinition(_json); | ||||
| 	if (nodeType == "ParameterList") | ||||
| 		return createParameterList(_json); | ||||
| 	if (nodeType == "OverrideSpecifier") | ||||
| @ -387,6 +389,16 @@ ASTPointer<EnumValue> ASTJsonImporter::createEnumValue(Json::Value const& _node) | ||||
| 	); | ||||
| } | ||||
| 
 | ||||
| ASTPointer<UserDefinedValueTypeDefinition> ASTJsonImporter::createUserDefinedValueTypeDefinition(Json::Value const& _node) | ||||
| { | ||||
| 	return createASTNode<UserDefinedValueTypeDefinition>( | ||||
| 		_node, | ||||
| 		memberAsASTString(_node, "name"), | ||||
| 		createNameSourceLocation(_node), | ||||
| 		convertJsonToASTNode<TypeName>(member(_node, "underlyingType")) | ||||
| 	); | ||||
| } | ||||
| 
 | ||||
| ASTPointer<ParameterList> ASTJsonImporter::createParameterList(Json::Value const&  _node) | ||||
| { | ||||
| 	std::vector<ASTPointer<VariableDeclaration>> parameters; | ||||
|  | ||||
| @ -81,6 +81,7 @@ private: | ||||
| 	ASTPointer<ASTNode> createStructDefinition(Json::Value const& _node); | ||||
| 	ASTPointer<EnumDefinition> createEnumDefinition(Json::Value const& _node); | ||||
| 	ASTPointer<EnumValue> createEnumValue(Json::Value const& _node); | ||||
| 	ASTPointer<UserDefinedValueTypeDefinition> createUserDefinedValueTypeDefinition(Json::Value const& _node); | ||||
| 	ASTPointer<ParameterList> createParameterList(Json::Value const& _node); | ||||
| 	ASTPointer<OverrideSpecifier> createOverrideSpecifier(Json::Value const& _node); | ||||
| 	ASTPointer<FunctionDefinition> createFunctionDefinition(Json::Value const& _node); | ||||
|  | ||||
							
								
								
									
										173
									
								
								test/libsolidity/ABIJson/user_defined_value_type.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										173
									
								
								test/libsolidity/ABIJson/user_defined_value_type.sol
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,173 @@ | ||||
| type MyInt is int; | ||||
| type MyByte1 is bytes1; | ||||
| contract C { | ||||
|     type MyAddress is address; | ||||
|     type MyUInt8 is uint8; | ||||
|     type MyBytes32 is bytes32; | ||||
| 
 | ||||
|     MyInt public myInt; | ||||
|     MyByte1 public myByte1; | ||||
|     MyAddress public myAddress; | ||||
|     MyUInt8 public myUInt8; | ||||
|     MyBytes32 public myBytes32; | ||||
| 
 | ||||
|     function setMyInt(MyInt a) external { | ||||
|         myInt = a; | ||||
|     } | ||||
|     function setMyByte1(MyByte1 a) external { | ||||
|         myByte1 = a; | ||||
|     } | ||||
|     function setMyAddress(MyAddress a) external { | ||||
|         myAddress = a; | ||||
|     } | ||||
|     function setMyUInt8(MyUInt8 a) external { | ||||
|         myUInt8 = a; | ||||
|     } | ||||
|     function setMyBytes32(MyBytes32 a) external { | ||||
|         myBytes32 = a; | ||||
|     } | ||||
| } | ||||
| // ---- | ||||
| //     :C | ||||
| // [ | ||||
| //   { | ||||
| //     "inputs": [], | ||||
| //     "name": "myAddress", | ||||
| //     "outputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyAddress", | ||||
| //         "name": "", | ||||
| //         "type": "address" | ||||
| //       } | ||||
| //     ], | ||||
| //     "stateMutability": "view", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": [], | ||||
| //     "name": "myByte1", | ||||
| //     "outputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyByte1", | ||||
| //         "name": "", | ||||
| //         "type": "bytes1" | ||||
| //       } | ||||
| //     ], | ||||
| //     "stateMutability": "view", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": [], | ||||
| //     "name": "myBytes32", | ||||
| //     "outputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyBytes32", | ||||
| //         "name": "", | ||||
| //         "type": "bytes32" | ||||
| //       } | ||||
| //     ], | ||||
| //     "stateMutability": "view", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": [], | ||||
| //     "name": "myInt", | ||||
| //     "outputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyInt", | ||||
| //         "name": "", | ||||
| //         "type": "int256" | ||||
| //       } | ||||
| //     ], | ||||
| //     "stateMutability": "view", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": [], | ||||
| //     "name": "myUInt8", | ||||
| //     "outputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyUInt8", | ||||
| //         "name": "", | ||||
| //         "type": "uint8" | ||||
| //       } | ||||
| //     ], | ||||
| //     "stateMutability": "view", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyAddress", | ||||
| //         "name": "a", | ||||
| //         "type": "address" | ||||
| //       } | ||||
| //     ], | ||||
| //     "name": "setMyAddress", | ||||
| //     "outputs": [], | ||||
| //     "stateMutability": "nonpayable", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyByte1", | ||||
| //         "name": "a", | ||||
| //         "type": "bytes1" | ||||
| //       } | ||||
| //     ], | ||||
| //     "name": "setMyByte1", | ||||
| //     "outputs": [], | ||||
| //     "stateMutability": "nonpayable", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyBytes32", | ||||
| //         "name": "a", | ||||
| //         "type": "bytes32" | ||||
| //       } | ||||
| //     ], | ||||
| //     "name": "setMyBytes32", | ||||
| //     "outputs": [], | ||||
| //     "stateMutability": "nonpayable", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyInt", | ||||
| //         "name": "a", | ||||
| //         "type": "int256" | ||||
| //       } | ||||
| //     ], | ||||
| //     "name": "setMyInt", | ||||
| //     "outputs": [], | ||||
| //     "stateMutability": "nonpayable", | ||||
| //     "type": "function" | ||||
| //   }, | ||||
| //   { | ||||
| //     "inputs": | ||||
| //     [ | ||||
| //       { | ||||
| //         "internalType": "user defined type MyUInt8", | ||||
| //         "name": "a", | ||||
| //         "type": "uint8" | ||||
| //       } | ||||
| //     ], | ||||
| //     "name": "setMyUInt8", | ||||
| //     "outputs": [], | ||||
| //     "stateMutability": "nonpayable", | ||||
| //     "type": "function" | ||||
| //   } | ||||
| // ] | ||||
							
								
								
									
										264
									
								
								test/libsolidity/ASTJSON/userDefinedValueType.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										264
									
								
								test/libsolidity/ASTJSON/userDefinedValueType.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,264 @@ | ||||
| { | ||||
|   "absolutePath": "a", | ||||
|   "exportedSymbols": | ||||
|   { | ||||
|     "C": | ||||
|     [ | ||||
|       21 | ||||
|     ], | ||||
|     "MyAddress": | ||||
|     [ | ||||
|       2 | ||||
|     ], | ||||
|     "MyUInt": | ||||
|     [ | ||||
|       4 | ||||
|     ], | ||||
|     "f": | ||||
|     [ | ||||
|       16 | ||||
|     ] | ||||
|   }, | ||||
|   "id": 22, | ||||
|   "nodeType": "SourceUnit", | ||||
|   "nodes": | ||||
|   [ | ||||
|     { | ||||
|       "id": 2, | ||||
|       "name": "MyAddress", | ||||
|       "nameLocation": "5:9:1", | ||||
|       "nodeType": "UserDefinedValueTypeDefinition", | ||||
|       "src": "0:26:1", | ||||
|       "underlyingType": | ||||
|       { | ||||
|         "id": 1, | ||||
|         "name": "address", | ||||
|         "nodeType": "ElementaryTypeName", | ||||
|         "src": "18:7:1", | ||||
|         "stateMutability": "nonpayable", | ||||
|         "typeDescriptions": | ||||
|         { | ||||
|           "typeIdentifier": "t_address", | ||||
|           "typeString": "address" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "id": 4, | ||||
|       "name": "MyUInt", | ||||
|       "nameLocation": "32:6:1", | ||||
|       "nodeType": "UserDefinedValueTypeDefinition", | ||||
|       "src": "27:20:1", | ||||
|       "underlyingType": | ||||
|       { | ||||
|         "id": 3, | ||||
|         "name": "uint", | ||||
|         "nodeType": "ElementaryTypeName", | ||||
|         "src": "42:4:1", | ||||
|         "typeDescriptions": | ||||
|         { | ||||
|           "typeIdentifier": "t_uint256", | ||||
|           "typeString": "uint256" | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "body": | ||||
|       { | ||||
|         "id": 15, | ||||
|         "nodeType": "Block", | ||||
|         "src": "61:34:1", | ||||
|         "statements": | ||||
|         [ | ||||
|           { | ||||
|             "assignments": | ||||
|             [ | ||||
|               9 | ||||
|             ], | ||||
|             "declarations": | ||||
|             [ | ||||
|               { | ||||
|                 "constant": false, | ||||
|                 "id": 9, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "a", | ||||
|                 "nameLocation": "77:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 15, | ||||
|                 "src": "67:11:1", | ||||
|                 "stateVariable": false, | ||||
|                 "storageLocation": "default", | ||||
|                 "typeDescriptions": | ||||
|                 { | ||||
|                   "typeIdentifier": "t_userDefinedValueType$_MyAddress_$2", | ||||
|                   "typeString": "user defined type MyAddress" | ||||
|                 }, | ||||
|                 "typeName": | ||||
|                 { | ||||
|                   "id": 8, | ||||
|                   "nodeType": "UserDefinedTypeName", | ||||
|                   "pathNode": | ||||
|                   { | ||||
|                     "id": 7, | ||||
|                     "name": "MyAddress", | ||||
|                     "nodeType": "IdentifierPath", | ||||
|                     "referencedDeclaration": 2, | ||||
|                     "src": "67:9:1" | ||||
|                   }, | ||||
|                   "referencedDeclaration": 2, | ||||
|                   "src": "67:9:1", | ||||
|                   "typeDescriptions": | ||||
|                   { | ||||
|                     "typeIdentifier": "t_userDefinedValueType$_MyAddress_$2", | ||||
|                     "typeString": "user defined type MyAddress" | ||||
|                   } | ||||
|                 }, | ||||
|                 "visibility": "internal" | ||||
|               } | ||||
|             ], | ||||
|             "id": 10, | ||||
|             "nodeType": "VariableDeclarationStatement", | ||||
|             "src": "67:11:1" | ||||
|           }, | ||||
|           { | ||||
|             "assignments": | ||||
|             [ | ||||
|               13 | ||||
|             ], | ||||
|             "declarations": | ||||
|             [ | ||||
|               { | ||||
|                 "constant": false, | ||||
|                 "id": 13, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "b", | ||||
|                 "nameLocation": "91:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "scope": 15, | ||||
|                 "src": "84:8:1", | ||||
|                 "stateVariable": false, | ||||
|                 "storageLocation": "default", | ||||
|                 "typeDescriptions": | ||||
|                 { | ||||
|                   "typeIdentifier": "t_userDefinedValueType$_MyUInt_$4", | ||||
|                   "typeString": "user defined type MyUInt" | ||||
|                 }, | ||||
|                 "typeName": | ||||
|                 { | ||||
|                   "id": 12, | ||||
|                   "nodeType": "UserDefinedTypeName", | ||||
|                   "pathNode": | ||||
|                   { | ||||
|                     "id": 11, | ||||
|                     "name": "MyUInt", | ||||
|                     "nodeType": "IdentifierPath", | ||||
|                     "referencedDeclaration": 4, | ||||
|                     "src": "84:6:1" | ||||
|                   }, | ||||
|                   "referencedDeclaration": 4, | ||||
|                   "src": "84:6:1", | ||||
|                   "typeDescriptions": | ||||
|                   { | ||||
|                     "typeIdentifier": "t_userDefinedValueType$_MyUInt_$4", | ||||
|                     "typeString": "user defined type MyUInt" | ||||
|                   } | ||||
|                 }, | ||||
|                 "visibility": "internal" | ||||
|               } | ||||
|             ], | ||||
|             "id": 14, | ||||
|             "nodeType": "VariableDeclarationStatement", | ||||
|             "src": "84:8:1" | ||||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "id": 16, | ||||
|       "implemented": true, | ||||
|       "kind": "freeFunction", | ||||
|       "modifiers": [], | ||||
|       "name": "f", | ||||
|       "nameLocation": "57:1:1", | ||||
|       "nodeType": "FunctionDefinition", | ||||
|       "parameters": | ||||
|       { | ||||
|         "id": 5, | ||||
|         "nodeType": "ParameterList", | ||||
|         "parameters": [], | ||||
|         "src": "58:2:1" | ||||
|       }, | ||||
|       "returnParameters": | ||||
|       { | ||||
|         "id": 6, | ||||
|         "nodeType": "ParameterList", | ||||
|         "parameters": [], | ||||
|         "src": "61:0:1" | ||||
|       }, | ||||
|       "scope": 22, | ||||
|       "src": "48:47:1", | ||||
|       "stateMutability": "nonpayable", | ||||
|       "virtual": false, | ||||
|       "visibility": "internal" | ||||
|     }, | ||||
|     { | ||||
|       "abstract": false, | ||||
|       "baseContracts": [], | ||||
|       "contractDependencies": [], | ||||
|       "contractKind": "contract", | ||||
|       "fullyImplemented": true, | ||||
|       "id": 21, | ||||
|       "linearizedBaseContracts": | ||||
|       [ | ||||
|         21 | ||||
|       ], | ||||
|       "name": "C", | ||||
|       "nameLocation": "105:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
|         { | ||||
|           "id": 18, | ||||
|           "name": "MyAddress", | ||||
|           "nameLocation": "118:9:1", | ||||
|           "nodeType": "UserDefinedValueTypeDefinition", | ||||
|           "src": "113:26:1", | ||||
|           "underlyingType": | ||||
|           { | ||||
|             "id": 17, | ||||
|             "name": "address", | ||||
|             "nodeType": "ElementaryTypeName", | ||||
|             "src": "131:7:1", | ||||
|             "stateMutability": "nonpayable", | ||||
|             "typeDescriptions": | ||||
|             { | ||||
|               "typeIdentifier": "t_address", | ||||
|               "typeString": "address" | ||||
|             } | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "id": 20, | ||||
|           "name": "MyUInt", | ||||
|           "nameLocation": "149:6:1", | ||||
|           "nodeType": "UserDefinedValueTypeDefinition", | ||||
|           "src": "144:20:1", | ||||
|           "underlyingType": | ||||
|           { | ||||
|             "id": 19, | ||||
|             "name": "uint", | ||||
|             "nodeType": "ElementaryTypeName", | ||||
|             "src": "159:4:1", | ||||
|             "typeDescriptions": | ||||
|             { | ||||
|               "typeIdentifier": "t_uint256", | ||||
|               "typeString": "uint256" | ||||
|             } | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "scope": 22, | ||||
|       "src": "96:70:1", | ||||
|       "usedErrors": [] | ||||
|     } | ||||
|   ], | ||||
|   "src": "0:167:1" | ||||
| } | ||||
							
								
								
									
										12
									
								
								test/libsolidity/ASTJSON/userDefinedValueType.sol
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								test/libsolidity/ASTJSON/userDefinedValueType.sol
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,12 @@ | ||||
| type MyAddress is address; | ||||
| type MyUInt is uint; | ||||
| function f() { | ||||
|     MyAddress a; | ||||
|     MyUInt b; | ||||
| } | ||||
| contract C { | ||||
|     type MyAddress is address; | ||||
|     type MyUInt is uint; | ||||
| } | ||||
| 
 | ||||
| // ---- | ||||
							
								
								
									
										200
									
								
								test/libsolidity/ASTJSON/userDefinedValueType_parseOnly.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										200
									
								
								test/libsolidity/ASTJSON/userDefinedValueType_parseOnly.json
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,200 @@ | ||||
| { | ||||
|   "absolutePath": "a", | ||||
|   "id": 22, | ||||
|   "nodeType": "SourceUnit", | ||||
|   "nodes": | ||||
|   [ | ||||
|     { | ||||
|       "id": 2, | ||||
|       "name": "MyAddress", | ||||
|       "nameLocation": "5:9:1", | ||||
|       "nodeType": "UserDefinedValueTypeDefinition", | ||||
|       "src": "0:26:1", | ||||
|       "underlyingType": | ||||
|       { | ||||
|         "id": 1, | ||||
|         "name": "address", | ||||
|         "nodeType": "ElementaryTypeName", | ||||
|         "src": "18:7:1", | ||||
|         "stateMutability": "nonpayable", | ||||
|         "typeDescriptions": {} | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "id": 4, | ||||
|       "name": "MyUInt", | ||||
|       "nameLocation": "32:6:1", | ||||
|       "nodeType": "UserDefinedValueTypeDefinition", | ||||
|       "src": "27:20:1", | ||||
|       "underlyingType": | ||||
|       { | ||||
|         "id": 3, | ||||
|         "name": "uint", | ||||
|         "nodeType": "ElementaryTypeName", | ||||
|         "src": "42:4:1", | ||||
|         "typeDescriptions": {} | ||||
|       } | ||||
|     }, | ||||
|     { | ||||
|       "body": | ||||
|       { | ||||
|         "id": 15, | ||||
|         "nodeType": "Block", | ||||
|         "src": "61:34:1", | ||||
|         "statements": | ||||
|         [ | ||||
|           { | ||||
|             "assignments": | ||||
|             [ | ||||
|               9 | ||||
|             ], | ||||
|             "declarations": | ||||
|             [ | ||||
|               { | ||||
|                 "constant": false, | ||||
|                 "id": 9, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "a", | ||||
|                 "nameLocation": "77:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "67:11:1", | ||||
|                 "stateVariable": false, | ||||
|                 "storageLocation": "default", | ||||
|                 "typeDescriptions": {}, | ||||
|                 "typeName": | ||||
|                 { | ||||
|                   "id": 8, | ||||
|                   "nodeType": "UserDefinedTypeName", | ||||
|                   "pathNode": | ||||
|                   { | ||||
|                     "id": 7, | ||||
|                     "name": "MyAddress", | ||||
|                     "nodeType": "IdentifierPath", | ||||
|                     "src": "67:9:1" | ||||
|                   }, | ||||
|                   "src": "67:9:1", | ||||
|                   "typeDescriptions": {} | ||||
|                 }, | ||||
|                 "visibility": "internal" | ||||
|               } | ||||
|             ], | ||||
|             "id": 10, | ||||
|             "nodeType": "VariableDeclarationStatement", | ||||
|             "src": "67:11:1" | ||||
|           }, | ||||
|           { | ||||
|             "assignments": | ||||
|             [ | ||||
|               13 | ||||
|             ], | ||||
|             "declarations": | ||||
|             [ | ||||
|               { | ||||
|                 "constant": false, | ||||
|                 "id": 13, | ||||
|                 "mutability": "mutable", | ||||
|                 "name": "b", | ||||
|                 "nameLocation": "91:1:1", | ||||
|                 "nodeType": "VariableDeclaration", | ||||
|                 "src": "84:8:1", | ||||
|                 "stateVariable": false, | ||||
|                 "storageLocation": "default", | ||||
|                 "typeDescriptions": {}, | ||||
|                 "typeName": | ||||
|                 { | ||||
|                   "id": 12, | ||||
|                   "nodeType": "UserDefinedTypeName", | ||||
|                   "pathNode": | ||||
|                   { | ||||
|                     "id": 11, | ||||
|                     "name": "MyUInt", | ||||
|                     "nodeType": "IdentifierPath", | ||||
|                     "src": "84:6:1" | ||||
|                   }, | ||||
|                   "src": "84:6:1", | ||||
|                   "typeDescriptions": {} | ||||
|                 }, | ||||
|                 "visibility": "internal" | ||||
|               } | ||||
|             ], | ||||
|             "id": 14, | ||||
|             "nodeType": "VariableDeclarationStatement", | ||||
|             "src": "84:8:1" | ||||
|           } | ||||
|         ] | ||||
|       }, | ||||
|       "id": 16, | ||||
|       "implemented": true, | ||||
|       "kind": "freeFunction", | ||||
|       "modifiers": [], | ||||
|       "name": "f", | ||||
|       "nameLocation": "57:1:1", | ||||
|       "nodeType": "FunctionDefinition", | ||||
|       "parameters": | ||||
|       { | ||||
|         "id": 5, | ||||
|         "nodeType": "ParameterList", | ||||
|         "parameters": [], | ||||
|         "src": "58:2:1" | ||||
|       }, | ||||
|       "returnParameters": | ||||
|       { | ||||
|         "id": 6, | ||||
|         "nodeType": "ParameterList", | ||||
|         "parameters": [], | ||||
|         "src": "61:0:1" | ||||
|       }, | ||||
|       "src": "48:47:1", | ||||
|       "stateMutability": "nonpayable", | ||||
|       "virtual": false, | ||||
|       "visibility": "internal" | ||||
|     }, | ||||
|     { | ||||
|       "abstract": false, | ||||
|       "baseContracts": [], | ||||
|       "contractDependencies": [], | ||||
|       "contractKind": "contract", | ||||
|       "id": 21, | ||||
|       "name": "C", | ||||
|       "nameLocation": "105:1:1", | ||||
|       "nodeType": "ContractDefinition", | ||||
|       "nodes": | ||||
|       [ | ||||
|         { | ||||
|           "id": 18, | ||||
|           "name": "MyAddress", | ||||
|           "nameLocation": "118:9:1", | ||||
|           "nodeType": "UserDefinedValueTypeDefinition", | ||||
|           "src": "113:26:1", | ||||
|           "underlyingType": | ||||
|           { | ||||
|             "id": 17, | ||||
|             "name": "address", | ||||
|             "nodeType": "ElementaryTypeName", | ||||
|             "src": "131:7:1", | ||||
|             "stateMutability": "nonpayable", | ||||
|             "typeDescriptions": {} | ||||
|           } | ||||
|         }, | ||||
|         { | ||||
|           "id": 20, | ||||
|           "name": "MyUInt", | ||||
|           "nameLocation": "149:6:1", | ||||
|           "nodeType": "UserDefinedValueTypeDefinition", | ||||
|           "src": "144:20:1", | ||||
|           "underlyingType": | ||||
|           { | ||||
|             "id": 19, | ||||
|             "name": "uint", | ||||
|             "nodeType": "ElementaryTypeName", | ||||
|             "src": "159:4:1", | ||||
|             "typeDescriptions": {} | ||||
|           } | ||||
|         } | ||||
|       ], | ||||
|       "src": "96:70:1", | ||||
|       "usedErrors": [] | ||||
|     } | ||||
|   ], | ||||
|   "src": "0:167:1" | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user