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; | 	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) | bool ASTJsonConverter::visit(ParameterList const& _node) | ||||||
| { | { | ||||||
| 	setJsonNode(_node, "ParameterList", { | 	setJsonNode(_node, "ParameterList", { | ||||||
|  | |||||||
| @ -81,6 +81,7 @@ public: | |||||||
| 	bool visit(StructDefinition const& _node) override; | 	bool visit(StructDefinition const& _node) override; | ||||||
| 	bool visit(EnumDefinition const& _node) override; | 	bool visit(EnumDefinition const& _node) override; | ||||||
| 	bool visit(EnumValue const& _node) override; | 	bool visit(EnumValue const& _node) override; | ||||||
|  | 	bool visit(UserDefinedValueTypeDefinition const& _node) override; | ||||||
| 	bool visit(ParameterList const& _node) override; | 	bool visit(ParameterList const& _node) override; | ||||||
| 	bool visit(OverrideSpecifier const& _node) override; | 	bool visit(OverrideSpecifier const& _node) override; | ||||||
| 	bool visit(FunctionDefinition const& _node) override; | 	bool visit(FunctionDefinition const& _node) override; | ||||||
|  | |||||||
| @ -133,6 +133,8 @@ ASTPointer<ASTNode> ASTJsonImporter::convertJsonToASTNode(Json::Value const& _js | |||||||
| 		return createEnumDefinition(_json); | 		return createEnumDefinition(_json); | ||||||
| 	if (nodeType == "EnumValue") | 	if (nodeType == "EnumValue") | ||||||
| 		return createEnumValue(_json); | 		return createEnumValue(_json); | ||||||
|  | 	if (nodeType == "UserDefinedValueTypeDefinition") | ||||||
|  | 		return createUserDefinedValueTypeDefinition(_json); | ||||||
| 	if (nodeType == "ParameterList") | 	if (nodeType == "ParameterList") | ||||||
| 		return createParameterList(_json); | 		return createParameterList(_json); | ||||||
| 	if (nodeType == "OverrideSpecifier") | 	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) | ASTPointer<ParameterList> ASTJsonImporter::createParameterList(Json::Value const&  _node) | ||||||
| { | { | ||||||
| 	std::vector<ASTPointer<VariableDeclaration>> parameters; | 	std::vector<ASTPointer<VariableDeclaration>> parameters; | ||||||
|  | |||||||
| @ -81,6 +81,7 @@ private: | |||||||
| 	ASTPointer<ASTNode> createStructDefinition(Json::Value const& _node); | 	ASTPointer<ASTNode> createStructDefinition(Json::Value const& _node); | ||||||
| 	ASTPointer<EnumDefinition> createEnumDefinition(Json::Value const& _node); | 	ASTPointer<EnumDefinition> createEnumDefinition(Json::Value const& _node); | ||||||
| 	ASTPointer<EnumValue> createEnumValue(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<ParameterList> createParameterList(Json::Value const& _node); | ||||||
| 	ASTPointer<OverrideSpecifier> createOverrideSpecifier(Json::Value const& _node); | 	ASTPointer<OverrideSpecifier> createOverrideSpecifier(Json::Value const& _node); | ||||||
| 	ASTPointer<FunctionDefinition> createFunctionDefinition(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