Merge pull request #1308 from ethereum/separate_ast_blocks

Separate AST blocks in remix-analyzer tests
pull/7/head
yann300 5 years ago committed by GitHub
commit 062cb9b43d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 62
      remix-analyzer/test/analysis/astBlocks/assignment.json
  2. 16
      remix-analyzer/test/analysis/astBlocks/blockHashAccess.json
  3. 204
      remix-analyzer/test/analysis/astBlocks/doWhileLoopNode.json
  4. 20
      remix-analyzer/test/analysis/astBlocks/externalDirect.json
  5. 264
      remix-analyzer/test/analysis/astBlocks/forLoopNode.json
  6. 74
      remix-analyzer/test/analysis/astBlocks/fullyQualifiedFunctionDefinition.json
  7. 24
      remix-analyzer/test/analysis/astBlocks/functionDefinition.json
  8. 22
      remix-analyzer/test/analysis/astBlocks/index.js
  9. 15
      remix-analyzer/test/analysis/astBlocks/inheritance.json
  10. 7
      remix-analyzer/test/analysis/astBlocks/inlineAssembly.json
  11. 16
      remix-analyzer/test/analysis/astBlocks/libCall.json
  12. 29
      remix-analyzer/test/analysis/astBlocks/localCall.json
  13. 42
      remix-analyzer/test/analysis/astBlocks/lowlevelCall.json
  14. 71
      remix-analyzer/test/analysis/astBlocks/parameterFunction.json
  15. 89
      remix-analyzer/test/analysis/astBlocks/parameterFunctionCall.json
  16. 23
      remix-analyzer/test/analysis/astBlocks/selfdestruct.json
  17. 108
      remix-analyzer/test/analysis/astBlocks/stateVariableContractNode.json
  18. 74
      remix-analyzer/test/analysis/astBlocks/storageVariableNodes.json
  19. 16
      remix-analyzer/test/analysis/astBlocks/superLocal.json
  20. 10
      remix-analyzer/test/analysis/astBlocks/thisLocalCall.json
  21. 204
      remix-analyzer/test/analysis/astBlocks/whileLoopNode.json
  22. 3020
      remix-analyzer/test/analysis/staticAnalysisCommon-test.js

@ -0,0 +1,62 @@
{
"attributes": {
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"type": "uint256"
},
"children": [
{
"attributes": {
"type": "mapping(address => uint256)",
"value": "c"
},
"id": 61,
"name": "Identifier",
"src": "873:1:0"
},
{
"attributes": {
"member_name": "sender",
"type": "address"
},
"children": [
{
"attributes": {
"type": "msg",
"value": "msg"
},
"id": 62,
"name": "Identifier",
"src": "875:3:0"
}
],
"id": 63,
"name": "MemberAccess",
"src": "875:10:0"
}
],
"id": 64,
"name": "IndexAccess",
"src": "873:13:0"
},
{
"attributes": {
"hexvalue": "30",
"subdenomination": null,
"token": null,
"type": "int_const 0",
"value": "0"
},
"id": 65,
"name": "Literal",
"src": "889:1:0"
}
],
"id": 66,
"name": "Assignment",
"src": "873:17:0"
}

@ -0,0 +1,16 @@
{
"attributes": {
"member_name": "blockhash",
"type": "function (uint256) returns (bytes32)"
},
"children": [
{
"attributes": {
"type": "block",
"value": "block"
},
"name": "Identifier"
}
],
"name": "MemberAccess"
}

@ -0,0 +1,204 @@
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"commonType":
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<",
"type": "bool"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 69,
"type": "uint256",
"value": "i"
},
"id": 82,
"name": "Identifier",
"src": "592:1:0"
},
{
"attributes":
{
"argumentTypes": null,
"hexvalue": "3130",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 10",
"value": "10"
},
"id": 83,
"name": "Literal",
"src": "596:2:0"
}
],
"id": 84,
"name": "BinaryOperation",
"src": "592:6:0"
},
{
"children":
[
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names":
[
null
],
"type": "uint256",
"type_conversion": false
},
"children":
[
{
"attributes":
{
"argumentTypes":
[
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "push",
"referencedDeclaration": null,
"type": "function (uint256) returns (uint256)"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 4,
"type": "uint256[] storage ref",
"value": "array"
},
"id": 72,
"name": "Identifier",
"src": "544:5:0"
}
],
"id": 74,
"name": "MemberAccess",
"src": "544:10:0"
},
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 69,
"type": "uint256",
"value": "i"
},
"id": 75,
"name": "Identifier",
"src": "555:1:0"
}
],
"id": 76,
"name": "FunctionCall",
"src": "544:13:0"
}
],
"id": 77,
"name": "ExpressionStatement",
"src": "544:13:0"
},
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 69,
"type": "uint256",
"value": "i"
},
"id": 78,
"name": "Identifier",
"src": "571:1:0"
}
],
"id": 79,
"name": "UnaryOperation",
"src": "571:3:0"
}
],
"id": 80,
"name": "ExpressionStatement",
"src": "571:3:0"
}
],
"id": 81,
"name": "Block",
"src": "530:55:0"
}
],
"id": 85,
"name": "DoWhileStatement",
"src": "528:72:0"
}

@ -0,0 +1,20 @@
{
"attributes": {
"member_name": "info",
"type": "function () payable external returns (uint256)"
},
"children": [
{
"attributes": {
"type": "contract InfoFeed",
"value": "f"
},
"id": 30,
"name": "Identifier",
"src": "405:1:0"
}
],
"id": 32,
"name": "MemberAccess",
"src": "405:6:0"
}

@ -0,0 +1,264 @@
{
"children":
[
{
"attributes":
{
"assignments":
[
21
]
},
"children":
[
{
"attributes":
{
"constant": false,
"name": "i",
"scope": 39,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children":
[
{
"attributes":
{
"name": "uint",
"type": "uint256"
},
"id": 20,
"name": "ElementaryTypeName",
"src": "207:4:0"
}
],
"id": 21,
"name": "VariableDeclaration",
"src": "207:6:0"
},
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 17,
"type": "uint256",
"value": "index"
},
"id": 22,
"name": "Identifier",
"src": "216:5:0"
}
],
"id": 23,
"name": "VariableDeclarationStatement",
"src": "207:14:0"
},
{
"attributes":
{
"argumentTypes": null,
"commonType":
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<",
"type": "bool"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 21,
"type": "uint256",
"value": "i"
},
"id": 24,
"name": "Identifier",
"src": "223:1:0"
},
{
"attributes":
{
"argumentTypes": null,
"hexvalue": "3130",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 10",
"value": "10"
},
"id": 25,
"name": "Literal",
"src": "227:2:0"
}
],
"id": 26,
"name": "BinaryOperation",
"src": "223:6:0"
},
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 21,
"type": "uint256",
"value": "i"
},
"id": 27,
"name": "Identifier",
"src": "231:1:0"
}
],
"id": 28,
"name": "UnaryOperation",
"src": "231:3:0"
}
],
"id": 29,
"name": "ExpressionStatement",
"src": "231:3:0"
},
{
"children":
[
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names":
[
null
],
"type": "uint256",
"type_conversion": false
},
"children":
[
{
"attributes":
{
"argumentTypes":
[
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "push",
"referencedDeclaration": null,
"type": "function (uint256) returns (uint256)"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 4,
"type": "uint256[] storage ref",
"value": "array"
},
"id": 30,
"name": "Identifier",
"src": "250:5:0"
}
],
"id": 32,
"name": "MemberAccess",
"src": "250:10:0"
},
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 21,
"type": "uint256",
"value": "i"
},
"id": 33,
"name": "Identifier",
"src": "261:1:0"
}
],
"id": 34,
"name": "FunctionCall",
"src": "250:13:0"
}
],
"id": 35,
"name": "ExpressionStatement",
"src": "250:13:0"
}
],
"id": 36,
"name": "Block",
"src": "236:38:0"
}
],
"id": 37,
"name": "ForStatement",
"src": "202:72:0"
}

@ -0,0 +1,74 @@
{
"attributes": {
"constant": false,
"name": "getY",
"payable": false,
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"name": "z",
"type": "uint256"
},
"children": [
{
"attributes": {
"name": "uint"
},
"name": "ElementaryTypeName"
}
],
"name": "VariableDeclaration"
},
{
"attributes": {
"name": "r",
"type": "bool"
},
"children": [
{
"attributes": {
"name": "bool"
},
"name": "ElementaryTypeName"
}
],
"name": "VariableDeclaration"
}
],
"name": "ParameterList"
},
{
"children": [
{
"attributes": {
"name": "",
"type": "uint256"
},
"children": [
{
"attributes": {
"name": "uint"
},
"id": 34,
"name": "ElementaryTypeName",
"src": "285:4:0"
}
],
"id": 35,
"name": "VariableDeclaration",
"src": "285:4:0"
}
],
"name": "ParameterList"
},
{
"children": [],
"name": "Block"
}
],
"name": "FunctionDefinition"
}

@ -0,0 +1,24 @@
{
"attributes": {
"constant": true,
"name": "winnerName",
"payable": false,
"visibility": "public"
},
"children": [
{
"children": [
],
"name": "ParameterList"
},
{
"children": [],
"name": "ParameterList"
},
{
"children": [],
"name": "Block"
}
],
"name": "FunctionDefinition"
}

@ -0,0 +1,22 @@
module.exports = {
localCall: require('./localCall.json'),
thisLocalCall: require('./thisLocalCall.json'),
libCall: require('./libCall.json'),
externalDirect: require('./externalDirect.json'),
superLocal: require('./superLocal.json'),
assignment: require('./assignment.json'),
inlineAssembly: require('./inlineAssembly.json'),
forLoopNode: require('./forLoopNode.json'),
whileLoopNode: require('./whileLoopNode.json'),
doWhileLoopNode: require('./doWhileLoopNode.json'),
stateVariableContractNode: require('./stateVariableContractNode.json'),
functionDefinition: require('./functionDefinition.json'),
fullyQualifiedFunctionDefinition: require('./fullyQualifiedFunctionDefinition.json'),
selfdestruct: require('./selfdestruct.json'),
storageVariableNodes: require('./storageVariableNodes.json'),
lowlevelCall: require('./lowlevelCall.json'),
parameterFunction: require('./parameterFunction.json'),
parameterFunctionCall: require('./parameterFunctionCall.json'),
inheritance: require('./inheritance.json'),
blockHashAccess: require('./blockHashAccess.json')
}

@ -0,0 +1,15 @@
{
"children": [
{
"attributes": {
"name": "r"
},
"id": 7,
"name": "UserDefinedTypeName",
"src": "84:1:0"
}
],
"id": 8,
"name": "InheritanceSpecifier",
"src": "84:1:0"
}

@ -0,0 +1,7 @@
{
"children": [
],
"id": 21,
"name": "InlineAssembly",
"src": "809:41:0"
}

@ -0,0 +1,16 @@
{
"attributes": {
"member_name": "insert",
"type": "function (struct Set.Data storage pointer,uint256) returns (bool)"
},
"children": [
{
"attributes": {
"type": "type(library Set)",
"value": "Set"
},
"name": "Identifier"
}
],
"name": "MemberAccess"
}

@ -0,0 +1,29 @@
{
"attributes": {
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"type": "function (struct Ballot.Voter storage pointer)",
"value": "bli"
},
"id": 37,
"name": "Identifier",
"src": "540:3:0"
},
{
"attributes": {
"type": "struct Ballot.Voter storage pointer",
"value": "x"
},
"id": 38,
"name": "Identifier",
"src": "544:1:0"
}
],
"id": 39,
"name": "FunctionCall",
"src": "540:6:0"
}

@ -0,0 +1,42 @@
{
"sendAst": { "name": "MemberAccess",
"children": [
{
"attributes": {
"value": "d",
"type": "address"
}
}],
"attributes": {
"value": "send",
"type": "function (uint256) returns (bool)" }
},
"callAst": { "name": "MemberAccess", "children": [{
"attributes": {
"value": "f",
"type": "address"
}}],
"attributes": {
"member_name": "call",
"type": "function () payable returns (bool)" } },
"callcodeAst": {
"name": "MemberAccess",
"children": [{
"attributes": {
"value": "f",
"type": "address"
}}],
"attributes": {
"member_name": "callcode",
"type": "function () payable returns (bool)" } },
"delegatecallAst": {
"name": "MemberAccess",
"children": [{
"attributes": {
"value": "g",
"type": "address"
}}],
"attributes": {
"member_name": "delegatecall",
"type": "function () returns (bool)" } }
}

@ -0,0 +1,71 @@
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 25,
"type": "function (uint256,uint256) pure returns (uint256)",
"value": "f"
},
"id": 34,
"name": "Identifier",
"src": "267:1:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 27,
"type": "uint256",
"value": "x"
},
"id": 35,
"name": "Identifier",
"src": "269:1:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 29,
"type": "uint256",
"value": "y"
},
"id": 36,
"name": "Identifier",
"src": "272:1:0"
}
],
"id": 37,
"name": "FunctionCall",
"src": "267:7:0"
}

@ -0,0 +1,89 @@
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "uint256",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
"typeString": "function (uint256,uint256) pure returns (uint256)"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 40,
"type": "function (function (uint256,uint256) pure returns (uint256),uint256,uint256) pure returns (uint256)",
"value": "eval"
},
"id": 49,
"name": "Identifier",
"src": "361:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 15,
"type": "function (uint256,uint256) pure returns (uint256)",
"value": "plus"
},
"id": 50,
"name": "Identifier",
"src": "366:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 42,
"type": "uint256",
"value": "x"
},
"id": 51,
"name": "Identifier",
"src": "372:1:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 44,
"type": "uint256",
"value": "y"
},
"id": 52,
"name": "Identifier",
"src": "375:1:0"
}
],
"id": 53,
"name": "FunctionCall",
"src": "361:16:0"
}

@ -0,0 +1,23 @@
{
"attributes": {
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"type": "function (address)",
"value": "selfdestruct"
},
"name": "Identifier"
},
{
"attributes": {
"type": "address",
"value": "a"
},
"name": "Identifier"
}
],
"name": "FunctionCall"
}

@ -0,0 +1,108 @@
{
"attributes": {
"fullyImplemented": true,
"isLibrary": false,
"linearizedBaseContracts": [
274
],
"name": "Ballot"
},
"children": [
{
"attributes": {
"name": "Voter"
},
"children": [],
"name": "StructDefinition"
},
{
"attributes": {
"name": "Proposal"
},
"children": [],
"name": "StructDefinition"
},
{
"attributes": {
"name": "chairperson",
"type": "address"
},
"children": [
{
"attributes": {
"name": "address"
},
"name": "ElementaryTypeName"
}
],
"name": "VariableDeclaration"
},
{
"attributes": {
"name": "voters",
"type": "mapping(address => struct Ballot.Voter storage ref)"
},
"children": [
{
"children": [
{
"attributes": {
"name": "address"
},
"name": "ElementaryTypeName"
},
{
"attributes": {
"name": "Voter"
},
"name": "UserDefinedTypeName"
}
],
"name": "Mapping"
}
],
"name": "VariableDeclaration"
},
{
"attributes": {
"name": "proposals",
"type": "struct Ballot.Proposal storage ref[] storage ref"
},
"children": [
{
"children": [
{
"attributes": {
"name": "Proposal"
},
"name": "UserDefinedTypeName"
}
],
"name": "ArrayTypeName"
}
],
"name": "VariableDeclaration"
},
{
"attributes": {
"constant": false,
"name": "Ballot",
"payable": false,
"visibility": "public"
},
"children": [],
"name": "FunctionDefinition"
},
{
"attributes": {
"constant": false,
"name": "giveRightToVote",
"payable": false,
"visibility": "public"
},
"children": [],
"name": "FunctionDefinition"
}
],
"name": "ContractDefinition"
}

@ -0,0 +1,74 @@
{
"node1": {
"attributes": {
"name": "x",
"type": "struct Ballot.Voter storage pointer"
},
"children": [
{
"attributes": {
"name": "Voter"
},
"id": 43,
"name": "UserDefinedTypeName",
"src": "604:5:0"
}
],
"id": 44,
"name": "VariableDeclaration",
"src": "604:15:0"
},
"node2": {
"attributes": {
"name": "voters",
"type": "mapping(address => struct Ballot.Voter storage ref)"
},
"children": [
{
"children": [
{
"attributes": {
"name": "address"
},
"id": 16,
"name": "ElementaryTypeName",
"src": "235:7:0"
},
{
"attributes": {
"name": "Voter"
},
"id": 17,
"name": "UserDefinedTypeName",
"src": "246:5:0"
}
],
"id": 18,
"name": "Mapping",
"src": "227:25:0"
}
],
"id": 19,
"name": "VariableDeclaration",
"src": "227:32:0"
},
"node3": {
"attributes": {
"name": "voters",
"type": "bytes32"
},
"children": [
{
"attributes": {
"name": "bytes"
},
"id": 16,
"name": "ElementaryTypeName",
"src": "235:7:0"
}
],
"id": 19,
"name": "VariableDeclaration",
"src": "227:32:0"
}
}

@ -0,0 +1,16 @@
{
"attributes": {
"member_name": "duper",
"type": "function ()"
},
"children": [
{
"attributes": {
"type": "contract super a",
"value": "super"
},
"name": "Identifier"
}
],
"name": "MemberAccess"
}

@ -0,0 +1,10 @@
{
"name": "MemberAccess",
"children": [ {
"attributes": {
"value": "this",
"type": "contract test" },
"name": "Identifier" } ],
"attributes": {
"value": "b",
"type": "function (bytes32,address) returns (bool)" } }

@ -0,0 +1,204 @@
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"commonType":
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<",
"type": "bool"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 45,
"type": "uint256",
"value": "i"
},
"id": 48,
"name": "Identifier",
"src": "372:1:0"
},
{
"attributes":
{
"argumentTypes": null,
"hexvalue": "3130",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 10",
"value": "10"
},
"id": 49,
"name": "Literal",
"src": "376:2:0"
}
],
"id": 50,
"name": "BinaryOperation",
"src": "372:6:0"
},
{
"children":
[
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names":
[
null
],
"type": "uint256",
"type_conversion": false
},
"children":
[
{
"attributes":
{
"argumentTypes":
[
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "push",
"referencedDeclaration": null,
"type": "function (uint256) returns (uint256)"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 4,
"type": "uint256[] storage ref",
"value": "array"
},
"id": 51,
"name": "Identifier",
"src": "394:5:0"
}
],
"id": 53,
"name": "MemberAccess",
"src": "394:10:0"
},
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 45,
"type": "uint256",
"value": "i"
},
"id": 54,
"name": "Identifier",
"src": "405:1:0"
}
],
"id": 55,
"name": "FunctionCall",
"src": "394:13:0"
}
],
"id": 56,
"name": "ExpressionStatement",
"src": "394:13:0"
},
{
"children":
[
{
"attributes":
{
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children":
[
{
"attributes":
{
"argumentTypes": null,
"overloadedDeclarations":
[
null
],
"referencedDeclaration": 45,
"type": "uint256",
"value": "i"
},
"id": 57,
"name": "Identifier",
"src": "421:1:0"
}
],
"id": 58,
"name": "UnaryOperation",
"src": "421:3:0"
}
],
"id": 59,
"name": "ExpressionStatement",
"src": "421:3:0"
}
],
"id": 60,
"name": "Block",
"src": "380:55:0"
}
],
"id": 61,
"name": "WhileStatement",
"src": "365:70:0"
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save