UNPKG

@newos/upgrades

Version:
1,366 lines (1,365 loc) 58.9 kB
{ "fileName": "MultipleInheritanceInitializableMocks.sol", "contractName": "SampleHuman", "source": "pragma solidity ^0.5.0;\n\nimport '../Initializable.sol';\n\n// Sample contracts showing upgradeability with multiple inheritance.\n// Child contract inherits from Father and Mother contracts, and Father extends from Gramps.\n// \n// Human\n// / \\\n// | Gramps\n// | |\n// Mother Father\n// | |\n// -- Child --\n\n/**\n * Sample base intializable contract that is a human\n */\ncontract SampleHuman is Initializable {\n bool public isHuman;\n\n function initialize() initializer public {\n isHuman = true;\n }\n}\n\n/**\n * Sample base intializable contract that defines a field mother\n */\ncontract SampleMother is Initializable, SampleHuman {\n uint256 public mother;\n\n function initialize(uint256 value) initializer public {\n SampleHuman.initialize();\n mother = value;\n }\n}\n\n/**\n * Sample base intializable contract that defines a field gramps\n */\ncontract SampleGramps is Initializable, SampleHuman {\n uint256 public gramps;\n\n function initialize(uint256 value) initializer public {\n SampleHuman.initialize();\n gramps = value;\n }\n}\n\n/**\n * Sample base intializable contract that defines a field father and extends from gramps\n */\ncontract SampleFather is Initializable, SampleGramps {\n uint256 public father;\n\n function initialize(uint256 _gramps, uint256 _father) initializer public {\n SampleGramps.initialize(_gramps);\n father = _father;\n }\n}\n\n/**\n * Child extends from mother, father (gramps)\n */\ncontract SampleChild is Initializable, SampleMother, SampleFather {\n uint256 public child;\n\n function initialize(uint256 _mother, uint256 _gramps, uint256 _father, uint256 _child) initializer public {\n SampleMother.initialize(_mother);\n SampleFather.initialize(_gramps, _father);\n child = _child;\n }\n}\n", "sourcePath": "contracts/mocks/MultipleInheritanceInitializableMocks.sol", "sourceMap": "428:134:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:134:14;;;;;;;", "deployedSourceMap": "428:134:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;428:134:14;;;;;;;;;;;;;;;;;;;;;;;;470:19;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;494:66;;;:::i;:::-;;470:19;;;;;;;;;;;;;:::o;494:66::-;1024:12:0;;;;;;;;;;;:31;;;;1040:15;:13;:15::i;:::-;1024:31;:47;;;;1060:11;;;;;;;;;;;1059:12;1024:47;1016:106;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1129:19;1152:12;;;;;;;;;;;1151:13;1129:35;;1174:14;1170:80;;;1213:4;1198:12;;:19;;;;;;;;;;;;;;;;;;1239:4;1225:11;;:18;;;;;;;;;;;;;;;;;;1170:80;551:4:14;541:7;;:14;;;;;;;;;;;;;;;;;;1268::0;1264:55;;;1307:5;1292:12;;:20;;;;;;;;;;;;;;;;;;1264:55;494:66:14;:::o;1409:498:0:-;1456:4;1797:12;1820:4;1797:28;;1831:10;1876:4;1864:17;1858:23;;1901:1;1895:2;:7;1888:14;;;;1409:498;:::o", "abi": [ { "constant": true, "inputs": [], "name": "isHuman", "outputs": [ { "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "initialize", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "ast": { "absolutePath": "contracts/mocks/MultipleInheritanceInitializableMocks.sol", "exportedSymbols": { "SampleChild": [ 4112 ], "SampleFather": [ 4072 ], "SampleGramps": [ 4045 ], "SampleHuman": [ 3997 ], "SampleMother": [ 4021 ] }, "id": 4113, "nodeType": "SourceUnit", "nodes": [ { "id": 3981, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:14" }, { "absolutePath": "contracts/Initializable.sol", "file": "../Initializable.sol", "id": 3982, "nodeType": "ImportDirective", "scope": 4113, "sourceUnit": 69, "src": "25:30:14", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 3983, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 68, "src": "452:13:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$68", "typeString": "contract Initializable" } }, "id": 3984, "nodeType": "InheritanceSpecifier", "src": "452:13:14" } ], "contractDependencies": [ 68 ], "contractKind": "contract", "documentation": "Sample base intializable contract that is a human", "fullyImplemented": true, "id": 3997, "linearizedBaseContracts": [ 3997, 68 ], "name": "SampleHuman", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 3986, "name": "isHuman", "nodeType": "VariableDeclaration", "scope": 3997, "src": "470:19:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 3985, "name": "bool", "nodeType": "ElementaryTypeName", "src": "470:4:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "public" }, { "body": { "id": 3995, "nodeType": "Block", "src": "535:25:14", "statements": [ { "expression": { "argumentTypes": null, "id": 3993, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 3991, "name": "isHuman", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3986, "src": "541:7:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 3992, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "551:4:14", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "541:14:14", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 3994, "nodeType": "ExpressionStatement", "src": "541:14:14" } ] }, "documentation": null, "id": 3996, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 3989, "modifierName": { "argumentTypes": null, "id": 3988, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "516:11:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "516:11:14" } ], "name": "initialize", "nodeType": "FunctionDefinition", "parameters": { "id": 3987, "nodeType": "ParameterList", "parameters": [], "src": "513:2:14" }, "returnParameters": { "id": 3990, "nodeType": "ParameterList", "parameters": [], "src": "535:0:14" }, "scope": 3997, "src": "494:66:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 4113, "src": "428:134:14" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 3998, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 68, "src": "662:13:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$68", "typeString": "contract Initializable" } }, "id": 3999, "nodeType": "InheritanceSpecifier", "src": "662:13:14" }, { "arguments": null, "baseName": { "contractScope": null, "id": 4000, "name": "SampleHuman", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3997, "src": "677:11:14", "typeDescriptions": { "typeIdentifier": "t_contract$_SampleHuman_$3997", "typeString": "contract SampleHuman" } }, "id": 4001, "nodeType": "InheritanceSpecifier", "src": "677:11:14" } ], "contractDependencies": [ 68, 3997 ], "contractKind": "contract", "documentation": "Sample base intializable contract that defines a field mother", "fullyImplemented": true, "id": 4021, "linearizedBaseContracts": [ 4021, 3997, 68 ], "name": "SampleMother", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 4003, "name": "mother", "nodeType": "VariableDeclaration", "scope": 4021, "src": "693:21:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4002, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "693:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 4019, "nodeType": "Block", "src": "773:55:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 4010, "name": "SampleHuman", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3997, "src": "779:11:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SampleHuman_$3997_$", "typeString": "type(contract SampleHuman)" } }, "id": 4012, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 3996, "src": "779:22:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 4013, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "779:24:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4014, "nodeType": "ExpressionStatement", "src": "779:24:14" }, { "expression": { "argumentTypes": null, "id": 4017, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4015, "name": "mother", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4003, "src": "809:6:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 4016, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4005, "src": "818:5:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "809:14:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4018, "nodeType": "ExpressionStatement", "src": "809:14:14" } ] }, "documentation": null, "id": 4020, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 4008, "modifierName": { "argumentTypes": null, "id": 4007, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "754:11:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "754:11:14" } ], "name": "initialize", "nodeType": "FunctionDefinition", "parameters": { "id": 4006, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4005, "name": "value", "nodeType": "VariableDeclaration", "scope": 4020, "src": "739:13:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4004, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "739:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "738:15:14" }, "returnParameters": { "id": 4009, "nodeType": "ParameterList", "parameters": [], "src": "773:0:14" }, "scope": 4021, "src": "719:109:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 4113, "src": "637:193:14" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 4022, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 68, "src": "930:13:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$68", "typeString": "contract Initializable" } }, "id": 4023, "nodeType": "InheritanceSpecifier", "src": "930:13:14" }, { "arguments": null, "baseName": { "contractScope": null, "id": 4024, "name": "SampleHuman", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3997, "src": "945:11:14", "typeDescriptions": { "typeIdentifier": "t_contract$_SampleHuman_$3997", "typeString": "contract SampleHuman" } }, "id": 4025, "nodeType": "InheritanceSpecifier", "src": "945:11:14" } ], "contractDependencies": [ 68, 3997 ], "contractKind": "contract", "documentation": "Sample base intializable contract that defines a field gramps", "fullyImplemented": true, "id": 4045, "linearizedBaseContracts": [ 4045, 3997, 68 ], "name": "SampleGramps", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 4027, "name": "gramps", "nodeType": "VariableDeclaration", "scope": 4045, "src": "961:21:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4026, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "961:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 4043, "nodeType": "Block", "src": "1041:55:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "id": 4034, "name": "SampleHuman", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3997, "src": "1047:11:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SampleHuman_$3997_$", "typeString": "type(contract SampleHuman)" } }, "id": 4036, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 3996, "src": "1047:22:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, "id": 4037, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1047:24:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4038, "nodeType": "ExpressionStatement", "src": "1047:24:14" }, { "expression": { "argumentTypes": null, "id": 4041, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4039, "name": "gramps", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4027, "src": "1077:6:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 4040, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4029, "src": "1086:5:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1077:14:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4042, "nodeType": "ExpressionStatement", "src": "1077:14:14" } ] }, "documentation": null, "id": 4044, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 4032, "modifierName": { "argumentTypes": null, "id": 4031, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "1022:11:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1022:11:14" } ], "name": "initialize", "nodeType": "FunctionDefinition", "parameters": { "id": 4030, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4029, "name": "value", "nodeType": "VariableDeclaration", "scope": 4044, "src": "1007:13:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4028, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1007:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1006:15:14" }, "returnParameters": { "id": 4033, "nodeType": "ParameterList", "parameters": [], "src": "1041:0:14" }, "scope": 4045, "src": "987:109:14", "stateMutability": "nonpayable", "superFunction": 4020, "visibility": "public" } ], "scope": 4113, "src": "905:193:14" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 4046, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 68, "src": "1222:13:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$68", "typeString": "contract Initializable" } }, "id": 4047, "nodeType": "InheritanceSpecifier", "src": "1222:13:14" }, { "arguments": null, "baseName": { "contractScope": null, "id": 4048, "name": "SampleGramps", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4045, "src": "1237:12:14", "typeDescriptions": { "typeIdentifier": "t_contract$_SampleGramps_$4045", "typeString": "contract SampleGramps" } }, "id": 4049, "nodeType": "InheritanceSpecifier", "src": "1237:12:14" } ], "contractDependencies": [ 68, 3997, 4045 ], "contractKind": "contract", "documentation": "Sample base intializable contract that defines a field father and extends from gramps", "fullyImplemented": true, "id": 4072, "linearizedBaseContracts": [ 4072, 4045, 3997, 68 ], "name": "SampleFather", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 4051, "name": "father", "nodeType": "VariableDeclaration", "scope": 4072, "src": "1254:21:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4050, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1254:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 4070, "nodeType": "Block", "src": "1353:65:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4063, "name": "_gramps", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4053, "src": "1383:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 4060, "name": "SampleGramps", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4045, "src": "1359:12:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SampleGramps_$4045_$", "typeString": "type(contract SampleGramps)" } }, "id": 4062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 4044, "src": "1359:23:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 4064, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1359:32:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4065, "nodeType": "ExpressionStatement", "src": "1359:32:14" }, { "expression": { "argumentTypes": null, "id": 4068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4066, "name": "father", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4051, "src": "1397:6:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 4067, "name": "_father", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4055, "src": "1406:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "1397:16:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 4069, "nodeType": "ExpressionStatement", "src": "1397:16:14" } ] }, "documentation": null, "id": 4071, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 4058, "modifierName": { "argumentTypes": null, "id": 4057, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 43, "src": "1334:11:14", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "1334:11:14" } ], "name": "initialize", "nodeType": "FunctionDefinition", "parameters": { "id": 4056, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4053, "name": "_gramps", "nodeType": "VariableDeclaration", "scope": 4071, "src": "1300:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4052, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1300:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 4055, "name": "_father", "nodeType": "VariableDeclaration", "scope": 4071, "src": "1317:15:14", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4054, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1317:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "1299:34:14" }, "returnParameters": { "id": 4059, "nodeType": "ParameterList", "parameters": [], "src": "1353:0:14" }, "scope": 4072, "src": "1280:138:14", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 4113, "src": "1197:223:14" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 4073, "name": "Initializable", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 68, "src": "1500:13:14", "typeDescriptions": { "typeIdentifier": "t_contract$_Initializable_$68", "typeString": "contract Initializable" } }, "id": 4074, "nodeType": "InheritanceSpecifier", "src": "1500:13:14" }, { "arguments": null, "baseName": { "contractScope": null, "id": 4075, "name": "SampleMother", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4021, "src": "1515:12:14", "typeDescriptions": { "typeIdentifier": "t_contract$_SampleMother_$4021", "typeString": "contract SampleMother" } }, "id": 4076, "nodeType": "InheritanceSpecifier", "src": "1515:12:14" }, { "arguments": null, "baseName": { "contractScope": null, "id": 4077, "name": "SampleFather", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 4072, "src": "1529:12:14", "typeDescriptions": { "typeIdentifier": "t_contract$_SampleFather_$4072", "typeString": "contract SampleFather" } }, "id": 4078, "nodeType": "InheritanceSpecifier", "src": "1529:12:14" } ], "contractDependencies": [ 68, 3997, 4021, 4045, 4072 ], "contractKind": "contract", "documentation": "Child extends from mother, father (gramps)", "fullyImplemented": true, "id": 4112, "linearizedBaseContracts": [ 4112, 4072, 4045, 4021, 3997, 68 ], "name": "SampleChild", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 4080, "name": "child", "nodeType": "VariableDeclaration", "scope": 4112, "src": "1546:20:14", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4079, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1546:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "public" }, { "body": { "id": 4110, "nodeType": "Block", "src": "1677:110:14", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4096, "name": "_mother", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4082, "src": "1707:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 4093, "name": "SampleMother", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4021, "src": "1683:12:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SampleMother_$4021_$", "typeString": "type(contract SampleMother)" } }, "id": 4095, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 4020, "src": "1683:23:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, "id": 4097, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1683:32:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4098, "nodeType": "ExpressionStatement", "src": "1683:32:14" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 4102, "name": "_gramps", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4084, "src": "1745:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 4103, "name": "_father", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4086, "src": "1754:7:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 4099, "name": "SampleFather", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4072, "src": "1721:12:14", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_SampleFather_$4072_$", "typeString": "type(contract SampleFather)" } }, "id": 4101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 4071, "src": "1721:23:14", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", "typeString": "function (uint256,uint256)" } }, "id": 4104, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "1721:41:14", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4105, "nodeType": "ExpressionStatement", "src": "1721:41:14" }, { "expression": { "argumentTypes": null, "id": 4108, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 4106, "name": "child", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4080, "src": "1768:5:14", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256"