mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Fix ICE when emitting event from another contract
This commit is contained in:
committed by
Kamil Śliwak
parent
957a9e742b
commit
964bdc711c
@@ -0,0 +1,289 @@
|
||||
{
|
||||
"absolutePath": "a",
|
||||
"exportedSymbols":
|
||||
{
|
||||
"C":
|
||||
[
|
||||
5
|
||||
],
|
||||
"D":
|
||||
[
|
||||
19
|
||||
]
|
||||
},
|
||||
"id": 20,
|
||||
"nodeType": "SourceUnit",
|
||||
"nodes":
|
||||
[
|
||||
{
|
||||
"abstract": false,
|
||||
"baseContracts": [],
|
||||
"canonicalName": "C",
|
||||
"contractDependencies": [],
|
||||
"contractKind": "contract",
|
||||
"fullyImplemented": true,
|
||||
"id": 5,
|
||||
"linearizedBaseContracts":
|
||||
[
|
||||
5
|
||||
],
|
||||
"name": "C",
|
||||
"nameLocation": "9:1:1",
|
||||
"nodeType": "ContractDefinition",
|
||||
"nodes":
|
||||
[
|
||||
{
|
||||
"anonymous": false,
|
||||
"eventSelector": "bd1155618a34fd53d1a2de9f705f42f3582842cba0b985b25c59888d86e0c929",
|
||||
"id": 4,
|
||||
"name": "E",
|
||||
"nameLocation": "23:1:1",
|
||||
"nodeType": "EventDefinition",
|
||||
"parameters":
|
||||
{
|
||||
"id": 3,
|
||||
"nodeType": "ParameterList",
|
||||
"parameters":
|
||||
[
|
||||
{
|
||||
"constant": false,
|
||||
"id": 2,
|
||||
"indexed": true,
|
||||
"mutability": "mutable",
|
||||
"name": "sender",
|
||||
"nameLocation": "41:6:1",
|
||||
"nodeType": "VariableDeclaration",
|
||||
"scope": 4,
|
||||
"src": "25:22:1",
|
||||
"stateVariable": false,
|
||||
"storageLocation": "default",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_address",
|
||||
"typeString": "address"
|
||||
},
|
||||
"typeName":
|
||||
{
|
||||
"id": 1,
|
||||
"name": "address",
|
||||
"nodeType": "ElementaryTypeName",
|
||||
"src": "25:7:1",
|
||||
"stateMutability": "nonpayable",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_address",
|
||||
"typeString": "address"
|
||||
}
|
||||
},
|
||||
"visibility": "internal"
|
||||
}
|
||||
],
|
||||
"src": "24:24:1"
|
||||
},
|
||||
"src": "17:32:1"
|
||||
}
|
||||
],
|
||||
"scope": 20,
|
||||
"src": "0:51:1",
|
||||
"usedErrors": [],
|
||||
"usedEvents":
|
||||
[
|
||||
4
|
||||
]
|
||||
},
|
||||
{
|
||||
"abstract": false,
|
||||
"baseContracts": [],
|
||||
"canonicalName": "D",
|
||||
"contractDependencies": [],
|
||||
"contractKind": "contract",
|
||||
"fullyImplemented": true,
|
||||
"id": 19,
|
||||
"linearizedBaseContracts":
|
||||
[
|
||||
19
|
||||
],
|
||||
"name": "D",
|
||||
"nameLocation": "61:1:1",
|
||||
"nodeType": "ContractDefinition",
|
||||
"nodes":
|
||||
[
|
||||
{
|
||||
"body":
|
||||
{
|
||||
"id": 17,
|
||||
"nodeType": "Block",
|
||||
"src": "106:37:1",
|
||||
"statements":
|
||||
[
|
||||
{
|
||||
"eventCall":
|
||||
{
|
||||
"arguments":
|
||||
[
|
||||
{
|
||||
"expression":
|
||||
{
|
||||
"id": 13,
|
||||
"name": "msg",
|
||||
"nodeType": "Identifier",
|
||||
"overloadedDeclarations": [],
|
||||
"referencedDeclaration": -15,
|
||||
"src": "125:3:1",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_magic_message",
|
||||
"typeString": "msg"
|
||||
}
|
||||
},
|
||||
"id": 14,
|
||||
"isConstant": false,
|
||||
"isLValue": false,
|
||||
"isPure": false,
|
||||
"lValueRequested": false,
|
||||
"memberLocation": "129:6:1",
|
||||
"memberName": "sender",
|
||||
"nodeType": "MemberAccess",
|
||||
"src": "125:10:1",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_address",
|
||||
"typeString": "address"
|
||||
}
|
||||
}
|
||||
],
|
||||
"expression":
|
||||
{
|
||||
"argumentTypes":
|
||||
[
|
||||
{
|
||||
"typeIdentifier": "t_address",
|
||||
"typeString": "address"
|
||||
}
|
||||
],
|
||||
"expression":
|
||||
{
|
||||
"id": 10,
|
||||
"name": "C",
|
||||
"nodeType": "Identifier",
|
||||
"overloadedDeclarations": [],
|
||||
"referencedDeclaration": 5,
|
||||
"src": "121:1:1",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_type$_t_contract$_C_$5_$",
|
||||
"typeString": "type(contract C)"
|
||||
}
|
||||
},
|
||||
"id": 12,
|
||||
"isConstant": false,
|
||||
"isLValue": false,
|
||||
"isPure": false,
|
||||
"lValueRequested": false,
|
||||
"memberLocation": "123:1:1",
|
||||
"memberName": "E",
|
||||
"nodeType": "MemberAccess",
|
||||
"referencedDeclaration": 4,
|
||||
"src": "121:3:1",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
|
||||
"typeString": "function (address)"
|
||||
}
|
||||
},
|
||||
"id": 15,
|
||||
"isConstant": false,
|
||||
"isLValue": false,
|
||||
"isPure": false,
|
||||
"kind": "functionCall",
|
||||
"lValueRequested": false,
|
||||
"nameLocations": [],
|
||||
"names": [],
|
||||
"nodeType": "FunctionCall",
|
||||
"src": "121:15:1",
|
||||
"tryCall": false,
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_tuple$__$",
|
||||
"typeString": "tuple()"
|
||||
}
|
||||
},
|
||||
"id": 16,
|
||||
"nodeType": "EmitStatement",
|
||||
"src": "116:20:1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"functionSelector": "bb29998e",
|
||||
"id": 18,
|
||||
"implemented": true,
|
||||
"kind": "function",
|
||||
"modifiers": [],
|
||||
"name": "test",
|
||||
"nameLocation": "78:4:1",
|
||||
"nodeType": "FunctionDefinition",
|
||||
"parameters":
|
||||
{
|
||||
"id": 8,
|
||||
"nodeType": "ParameterList",
|
||||
"parameters":
|
||||
[
|
||||
{
|
||||
"constant": false,
|
||||
"id": 7,
|
||||
"mutability": "mutable",
|
||||
"name": "sender",
|
||||
"nameLocation": "91:6:1",
|
||||
"nodeType": "VariableDeclaration",
|
||||
"scope": 18,
|
||||
"src": "83:14:1",
|
||||
"stateVariable": false,
|
||||
"storageLocation": "default",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_address",
|
||||
"typeString": "address"
|
||||
},
|
||||
"typeName":
|
||||
{
|
||||
"id": 6,
|
||||
"name": "address",
|
||||
"nodeType": "ElementaryTypeName",
|
||||
"src": "83:7:1",
|
||||
"stateMutability": "nonpayable",
|
||||
"typeDescriptions":
|
||||
{
|
||||
"typeIdentifier": "t_address",
|
||||
"typeString": "address"
|
||||
}
|
||||
},
|
||||
"visibility": "internal"
|
||||
}
|
||||
],
|
||||
"src": "82:16:1"
|
||||
},
|
||||
"returnParameters":
|
||||
{
|
||||
"id": 9,
|
||||
"nodeType": "ParameterList",
|
||||
"parameters": [],
|
||||
"src": "106:0:1"
|
||||
},
|
||||
"scope": 19,
|
||||
"src": "69:74:1",
|
||||
"stateMutability": "nonpayable",
|
||||
"virtual": false,
|
||||
"visibility": "public"
|
||||
}
|
||||
],
|
||||
"scope": 20,
|
||||
"src": "52:93:1",
|
||||
"usedErrors": [],
|
||||
"usedEvents":
|
||||
[
|
||||
4
|
||||
]
|
||||
}
|
||||
],
|
||||
"src": "0:146:1"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
contract C {
|
||||
event E(address indexed sender);
|
||||
}
|
||||
contract D {
|
||||
function test(address sender) public {
|
||||
emit C.E(msg.sender);
|
||||
}
|
||||
}
|
||||
|
||||
// ----
|
||||
@@ -0,0 +1,194 @@
|
||||
{
|
||||
"absolutePath": "a",
|
||||
"id": 20,
|
||||
"nodeType": "SourceUnit",
|
||||
"nodes":
|
||||
[
|
||||
{
|
||||
"abstract": false,
|
||||
"baseContracts": [],
|
||||
"contractDependencies": [],
|
||||
"contractKind": "contract",
|
||||
"id": 5,
|
||||
"name": "C",
|
||||
"nameLocation": "9:1:1",
|
||||
"nodeType": "ContractDefinition",
|
||||
"nodes":
|
||||
[
|
||||
{
|
||||
"anonymous": false,
|
||||
"id": 4,
|
||||
"name": "E",
|
||||
"nameLocation": "23:1:1",
|
||||
"nodeType": "EventDefinition",
|
||||
"parameters":
|
||||
{
|
||||
"id": 3,
|
||||
"nodeType": "ParameterList",
|
||||
"parameters":
|
||||
[
|
||||
{
|
||||
"constant": false,
|
||||
"id": 2,
|
||||
"indexed": true,
|
||||
"mutability": "mutable",
|
||||
"name": "sender",
|
||||
"nameLocation": "41:6:1",
|
||||
"nodeType": "VariableDeclaration",
|
||||
"src": "25:22:1",
|
||||
"stateVariable": false,
|
||||
"storageLocation": "default",
|
||||
"typeDescriptions": {},
|
||||
"typeName":
|
||||
{
|
||||
"id": 1,
|
||||
"name": "address",
|
||||
"nodeType": "ElementaryTypeName",
|
||||
"src": "25:7:1",
|
||||
"stateMutability": "nonpayable",
|
||||
"typeDescriptions": {}
|
||||
},
|
||||
"visibility": "internal"
|
||||
}
|
||||
],
|
||||
"src": "24:24:1"
|
||||
},
|
||||
"src": "17:32:1"
|
||||
}
|
||||
],
|
||||
"src": "0:51:1",
|
||||
"usedErrors": [],
|
||||
"usedEvents": []
|
||||
},
|
||||
{
|
||||
"abstract": false,
|
||||
"baseContracts": [],
|
||||
"contractDependencies": [],
|
||||
"contractKind": "contract",
|
||||
"id": 19,
|
||||
"name": "D",
|
||||
"nameLocation": "61:1:1",
|
||||
"nodeType": "ContractDefinition",
|
||||
"nodes":
|
||||
[
|
||||
{
|
||||
"body":
|
||||
{
|
||||
"id": 17,
|
||||
"nodeType": "Block",
|
||||
"src": "106:37:1",
|
||||
"statements":
|
||||
[
|
||||
{
|
||||
"eventCall":
|
||||
{
|
||||
"arguments":
|
||||
[
|
||||
{
|
||||
"expression":
|
||||
{
|
||||
"id": 13,
|
||||
"name": "msg",
|
||||
"nodeType": "Identifier",
|
||||
"overloadedDeclarations": [],
|
||||
"src": "125:3:1",
|
||||
"typeDescriptions": {}
|
||||
},
|
||||
"id": 14,
|
||||
"memberLocation": "129:6:1",
|
||||
"memberName": "sender",
|
||||
"nodeType": "MemberAccess",
|
||||
"src": "125:10:1",
|
||||
"typeDescriptions": {}
|
||||
}
|
||||
],
|
||||
"expression":
|
||||
{
|
||||
"expression":
|
||||
{
|
||||
"id": 10,
|
||||
"name": "C",
|
||||
"nodeType": "Identifier",
|
||||
"overloadedDeclarations": [],
|
||||
"src": "121:1:1",
|
||||
"typeDescriptions": {}
|
||||
},
|
||||
"id": 12,
|
||||
"memberLocation": "123:1:1",
|
||||
"memberName": "E",
|
||||
"nodeType": "MemberAccess",
|
||||
"src": "121:3:1",
|
||||
"typeDescriptions": {}
|
||||
},
|
||||
"id": 15,
|
||||
"nameLocations": [],
|
||||
"names": [],
|
||||
"nodeType": "FunctionCall",
|
||||
"src": "121:15:1",
|
||||
"tryCall": false,
|
||||
"typeDescriptions": {}
|
||||
},
|
||||
"id": 16,
|
||||
"nodeType": "EmitStatement",
|
||||
"src": "116:20:1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"id": 18,
|
||||
"implemented": true,
|
||||
"kind": "function",
|
||||
"modifiers": [],
|
||||
"name": "test",
|
||||
"nameLocation": "78:4:1",
|
||||
"nodeType": "FunctionDefinition",
|
||||
"parameters":
|
||||
{
|
||||
"id": 8,
|
||||
"nodeType": "ParameterList",
|
||||
"parameters":
|
||||
[
|
||||
{
|
||||
"constant": false,
|
||||
"id": 7,
|
||||
"mutability": "mutable",
|
||||
"name": "sender",
|
||||
"nameLocation": "91:6:1",
|
||||
"nodeType": "VariableDeclaration",
|
||||
"src": "83:14:1",
|
||||
"stateVariable": false,
|
||||
"storageLocation": "default",
|
||||
"typeDescriptions": {},
|
||||
"typeName":
|
||||
{
|
||||
"id": 6,
|
||||
"name": "address",
|
||||
"nodeType": "ElementaryTypeName",
|
||||
"src": "83:7:1",
|
||||
"stateMutability": "nonpayable",
|
||||
"typeDescriptions": {}
|
||||
},
|
||||
"visibility": "internal"
|
||||
}
|
||||
],
|
||||
"src": "82:16:1"
|
||||
},
|
||||
"returnParameters":
|
||||
{
|
||||
"id": 9,
|
||||
"nodeType": "ParameterList",
|
||||
"parameters": [],
|
||||
"src": "106:0:1"
|
||||
},
|
||||
"src": "69:74:1",
|
||||
"stateMutability": "nonpayable",
|
||||
"virtual": false,
|
||||
"visibility": "public"
|
||||
}
|
||||
],
|
||||
"src": "52:93:1",
|
||||
"usedErrors": [],
|
||||
"usedEvents": []
|
||||
}
|
||||
],
|
||||
"src": "0:146:1"
|
||||
}
|
||||
Reference in New Issue
Block a user