separate ast blocks

pull/7/head
aniket-engg 5 years ago
parent 4507a805f1
commit 2657a39ef6
  1. 62
      remix-analyzer/test/analysis/astBlocks/assignment.json
  2. 204
      remix-analyzer/test/analysis/astBlocks/doWhileLoopNode.json
  3. 20
      remix-analyzer/test/analysis/astBlocks/externalDirect.json
  4. 264
      remix-analyzer/test/analysis/astBlocks/forLoopNode.json
  5. 12
      remix-analyzer/test/analysis/astBlocks/index.js
  6. 7
      remix-analyzer/test/analysis/astBlocks/inlineAssembly.json
  7. 16
      remix-analyzer/test/analysis/astBlocks/libCall.json
  8. 29
      remix-analyzer/test/analysis/astBlocks/localCall.json
  9. 16
      remix-analyzer/test/analysis/astBlocks/superLocal.json
  10. 10
      remix-analyzer/test/analysis/astBlocks/thisLocalCall.json
  11. 204
      remix-analyzer/test/analysis/astBlocks/whileLoopNode.json
  12. 2512
      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,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,12 @@
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')
}

@ -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,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