UNPKG

solidity-ast

Version:
2,356 lines 79.4 kB
{ "$schema": "http://json-schema.org/draft-06/schema#", "title": "SourceUnit", "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "absolutePath": { "type": "string" }, "exportedSymbols": { "type": "object", "additionalProperties": { "type": "array", "items": { "type": "integer" } } }, "license": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "nodes": { "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/ContractDefinition" }, { "$ref": "#/definitions/EnumDefinition" }, { "$ref": "#/definitions/ErrorDefinition" }, { "$ref": "#/definitions/FunctionDefinition" }, { "$ref": "#/definitions/ImportDirective" }, { "$ref": "#/definitions/PragmaDirective" }, { "$ref": "#/definitions/StructDefinition" }, { "$ref": "#/definitions/UserDefinedValueTypeDefinition" }, { "$ref": "#/definitions/UsingForDirective" }, { "$ref": "#/definitions/VariableDeclaration" } ] } }, "nodeType": { "enum": [ "SourceUnit" ] } }, "required": [ "id", "src", "absolutePath", "exportedSymbols", "nodes", "nodeType" ], "definitions": { "SourceLocation": { "type": "string", "pattern": "^\\d+:\\d+:\\d+$" }, "Mutability": { "enum": [ "mutable", "immutable", "constant" ] }, "StateMutability": { "enum": [ "payable", "pure", "nonpayable", "view" ] }, "StorageLocation": { "enum": [ "calldata", "default", "memory", "storage" ] }, "Visibility": { "enum": [ "external", "public", "internal", "private" ] }, "TypeDescriptions": { "type": "object", "additionalProperties": false, "properties": { "typeIdentifier": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "typeString": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [] }, "Expression": { "anyOf": [ { "$ref": "#/definitions/Assignment" }, { "$ref": "#/definitions/BinaryOperation" }, { "$ref": "#/definitions/Conditional" }, { "$ref": "#/definitions/ElementaryTypeNameExpression" }, { "$ref": "#/definitions/FunctionCall" }, { "$ref": "#/definitions/FunctionCallOptions" }, { "$ref": "#/definitions/Identifier" }, { "$ref": "#/definitions/IndexAccess" }, { "$ref": "#/definitions/IndexRangeAccess" }, { "$ref": "#/definitions/Literal" }, { "$ref": "#/definitions/MemberAccess" }, { "$ref": "#/definitions/NewExpression" }, { "$ref": "#/definitions/TupleExpression" }, { "$ref": "#/definitions/UnaryOperation" } ] }, "Statement": { "anyOf": [ { "$ref": "#/definitions/Block" }, { "$ref": "#/definitions/Break" }, { "$ref": "#/definitions/Continue" }, { "$ref": "#/definitions/DoWhileStatement" }, { "$ref": "#/definitions/EmitStatement" }, { "$ref": "#/definitions/ExpressionStatement" }, { "$ref": "#/definitions/ForStatement" }, { "$ref": "#/definitions/IfStatement" }, { "$ref": "#/definitions/InlineAssembly" }, { "$ref": "#/definitions/PlaceholderStatement" }, { "$ref": "#/definitions/Return" }, { "$ref": "#/definitions/RevertStatement" }, { "$ref": "#/definitions/TryStatement" }, { "$ref": "#/definitions/UncheckedBlock" }, { "$ref": "#/definitions/VariableDeclarationStatement" }, { "$ref": "#/definitions/WhileStatement" } ] }, "TypeName": { "anyOf": [ { "$ref": "#/definitions/ArrayTypeName" }, { "$ref": "#/definitions/ElementaryTypeName" }, { "$ref": "#/definitions/FunctionTypeName" }, { "$ref": "#/definitions/Mapping" }, { "$ref": "#/definitions/UserDefinedTypeName" } ] }, "ArrayTypeName": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "baseType": { "$ref": "#/definitions/TypeName" }, "length": { "anyOf": [ { "$ref": "#/definitions/Expression" }, { "type": "null" } ] }, "nodeType": { "enum": [ "ArrayTypeName" ] } }, "required": [ "id", "src", "typeDescriptions", "baseType", "nodeType" ] }, "Assignment": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "leftHandSide": { "$ref": "#/definitions/Expression" }, "operator": { "enum": [ "=", "+=", "-=", "*=", "/=", "%=", "|=", "&=", "^=", ">>=", "<<=" ] }, "rightHandSide": { "$ref": "#/definitions/Expression" }, "nodeType": { "enum": [ "Assignment" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "leftHandSide", "operator", "rightHandSide", "nodeType" ] }, "BinaryOperation": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "commonType": { "$ref": "#/definitions/TypeDescriptions" }, "leftExpression": { "$ref": "#/definitions/Expression" }, "operator": { "enum": [ "+", "-", "*", "/", "%", "**", "&&", "||", "!=", "==", "<", "<=", ">", ">=", "^", "&", "|", "<<", ">>" ] }, "rightExpression": { "$ref": "#/definitions/Expression" }, "nodeType": { "enum": [ "BinaryOperation" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "commonType", "leftExpression", "operator", "rightExpression", "nodeType" ] }, "Block": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "statements": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/Statement" } }, { "type": "null" } ] }, "nodeType": { "enum": [ "Block" ] } }, "required": [ "id", "src", "nodeType" ] }, "Break": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "nodeType": { "enum": [ "Break" ] } }, "required": [ "id", "src", "nodeType" ] }, "Conditional": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "condition": { "$ref": "#/definitions/Expression" }, "falseExpression": { "$ref": "#/definitions/Expression" }, "trueExpression": { "$ref": "#/definitions/Expression" }, "nodeType": { "enum": [ "Conditional" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "condition", "falseExpression", "trueExpression", "nodeType" ] }, "Continue": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "nodeType": { "enum": [ "Continue" ] } }, "required": [ "id", "src", "nodeType" ] }, "ContractDefinition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "abstract": { "type": "boolean" }, "baseContracts": { "type": "array", "items": { "$ref": "#/definitions/InheritanceSpecifier" } }, "canonicalName": { "type": "string" }, "contractDependencies": { "type": "array", "items": { "type": "integer" } }, "contractKind": { "enum": [ "contract", "interface", "library" ] }, "documentation": { "anyOf": [ { "$ref": "#/definitions/StructuredDocumentation" }, { "type": "null" } ] }, "fullyImplemented": { "type": "boolean" }, "linearizedBaseContracts": { "type": "array", "items": { "type": "integer" } }, "nodes": { "type": "array", "items": { "anyOf": [ { "$ref": "#/definitions/EnumDefinition" }, { "$ref": "#/definitions/ErrorDefinition" }, { "$ref": "#/definitions/EventDefinition" }, { "$ref": "#/definitions/FunctionDefinition" }, { "$ref": "#/definitions/ModifierDefinition" }, { "$ref": "#/definitions/StructDefinition" }, { "$ref": "#/definitions/UserDefinedValueTypeDefinition" }, { "$ref": "#/definitions/UsingForDirective" }, { "$ref": "#/definitions/VariableDeclaration" } ] } }, "scope": { "type": "integer" }, "usedErrors": { "type": "array", "items": { "type": "integer" } }, "nodeType": { "enum": [ "ContractDefinition" ] } }, "required": [ "id", "src", "name", "abstract", "baseContracts", "contractDependencies", "contractKind", "fullyImplemented", "linearizedBaseContracts", "nodes", "scope", "nodeType" ] }, "DoWhileStatement": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "body": { "anyOf": [ { "$ref": "#/definitions/Block" }, { "$ref": "#/definitions/Statement" } ] }, "condition": { "$ref": "#/definitions/Expression" }, "nodeType": { "enum": [ "DoWhileStatement" ] } }, "required": [ "id", "src", "body", "condition", "nodeType" ] }, "ElementaryTypeName": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "name": { "type": "string" }, "stateMutability": { "$ref": "#/definitions/StateMutability" }, "nodeType": { "enum": [ "ElementaryTypeName" ] } }, "required": [ "id", "src", "typeDescriptions", "name", "nodeType" ] }, "ElementaryTypeNameExpression": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "typeName": { "$ref": "#/definitions/ElementaryTypeName" }, "nodeType": { "enum": [ "ElementaryTypeNameExpression" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "typeName", "nodeType" ] }, "EmitStatement": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "eventCall": { "$ref": "#/definitions/FunctionCall" }, "nodeType": { "enum": [ "EmitStatement" ] } }, "required": [ "id", "src", "eventCall", "nodeType" ] }, "EnumDefinition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "canonicalName": { "type": "string" }, "members": { "type": "array", "items": { "$ref": "#/definitions/EnumValue" } }, "nodeType": { "enum": [ "EnumDefinition" ] } }, "required": [ "id", "src", "name", "canonicalName", "members", "nodeType" ] }, "EnumValue": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "nodeType": { "enum": [ "EnumValue" ] } }, "required": [ "id", "src", "name", "nodeType" ] }, "ErrorDefinition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "documentation": { "anyOf": [ { "$ref": "#/definitions/StructuredDocumentation" }, { "type": "null" } ] }, "errorSelector": { "type": "string" }, "parameters": { "$ref": "#/definitions/ParameterList" }, "nodeType": { "enum": [ "ErrorDefinition" ] } }, "required": [ "id", "src", "name", "nameLocation", "parameters", "nodeType" ] }, "EventDefinition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "anonymous": { "type": "boolean" }, "eventSelector": { "type": "string" }, "documentation": { "anyOf": [ { "$ref": "#/definitions/StructuredDocumentation" }, { "type": "null" } ] }, "parameters": { "$ref": "#/definitions/ParameterList" }, "nodeType": { "enum": [ "EventDefinition" ] } }, "required": [ "id", "src", "name", "anonymous", "parameters", "nodeType" ] }, "ExpressionStatement": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "expression": { "$ref": "#/definitions/Expression" }, "nodeType": { "enum": [ "ExpressionStatement" ] } }, "required": [ "id", "src", "expression", "nodeType" ] }, "ForStatement": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "body": { "anyOf": [ { "$ref": "#/definitions/Block" }, { "$ref": "#/definitions/Statement" } ] }, "condition": { "anyOf": [ { "$ref": "#/definitions/Expression" }, { "type": "null" } ] }, "initializationExpression": { "anyOf": [ { "anyOf": [ { "$ref": "#/definitions/ExpressionStatement" }, { "$ref": "#/definitions/VariableDeclarationStatement" } ] }, { "type": "null" } ] }, "loopExpression": { "anyOf": [ { "$ref": "#/definitions/ExpressionStatement" }, { "type": "null" } ] }, "nodeType": { "enum": [ "ForStatement" ] } }, "required": [ "id", "src", "body", "nodeType" ] }, "FunctionCall": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "arguments": { "type": "array", "items": { "$ref": "#/definitions/Expression" } }, "expression": { "$ref": "#/definitions/Expression" }, "kind": { "enum": [ "functionCall", "typeConversion", "structConstructorCall" ] }, "names": { "type": "array", "items": { "type": "string" } }, "tryCall": { "type": "boolean" }, "nodeType": { "enum": [ "FunctionCall" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "arguments", "expression", "kind", "names", "tryCall", "nodeType" ] }, "FunctionCallOptions": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "expression": { "$ref": "#/definitions/Expression" }, "names": { "type": "array", "items": { "type": "string" } }, "options": { "type": "array", "items": { "$ref": "#/definitions/Expression" } }, "nodeType": { "enum": [ "FunctionCallOptions" ] } }, "required": [ "id", "src", "isConstant", "isPure", "lValueRequested", "typeDescriptions", "expression", "names", "options", "nodeType" ] }, "FunctionDefinition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "baseFunctions": { "type": "array", "items": { "type": "integer" } }, "body": { "anyOf": [ { "$ref": "#/definitions/Block" }, { "type": "null" } ] }, "documentation": { "anyOf": [ { "$ref": "#/definitions/StructuredDocumentation" }, { "type": "null" } ] }, "functionSelector": { "type": "string" }, "implemented": { "type": "boolean" }, "kind": { "enum": [ "function", "receive", "constructor", "fallback", "freeFunction" ] }, "modifiers": { "type": "array", "items": { "$ref": "#/definitions/ModifierInvocation" } }, "overrides": { "anyOf": [ { "$ref": "#/definitions/OverrideSpecifier" }, { "type": "null" } ] }, "parameters": { "$ref": "#/definitions/ParameterList" }, "returnParameters": { "$ref": "#/definitions/ParameterList" }, "scope": { "type": "integer" }, "stateMutability": { "$ref": "#/definitions/StateMutability" }, "virtual": { "type": "boolean" }, "visibility": { "$ref": "#/definitions/Visibility" }, "nodeType": { "enum": [ "FunctionDefinition" ] } }, "required": [ "id", "src", "name", "implemented", "kind", "modifiers", "parameters", "returnParameters", "scope", "stateMutability", "virtual", "visibility", "nodeType" ] }, "FunctionTypeName": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "parameterTypes": { "$ref": "#/definitions/ParameterList" }, "returnParameterTypes": { "$ref": "#/definitions/ParameterList" }, "stateMutability": { "$ref": "#/definitions/StateMutability" }, "visibility": { "$ref": "#/definitions/Visibility" }, "nodeType": { "enum": [ "FunctionTypeName" ] } }, "required": [ "id", "src", "typeDescriptions", "parameterTypes", "returnParameterTypes", "stateMutability", "visibility", "nodeType" ] }, "Identifier": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "name": { "type": "string" }, "overloadedDeclarations": { "type": "array", "items": { "type": "integer" } }, "referencedDeclaration": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "nodeType": { "enum": [ "Identifier" ] } }, "required": [ "id", "src", "name", "overloadedDeclarations", "typeDescriptions", "nodeType" ] }, "IdentifierPath": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "referencedDeclaration": { "type": "integer" }, "nodeType": { "enum": [ "IdentifierPath" ] } }, "required": [ "id", "src", "name", "referencedDeclaration", "nodeType" ] }, "IfStatement": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "condition": { "$ref": "#/definitions/Expression" }, "falseBody": { "anyOf": [ { "anyOf": [ { "$ref": "#/definitions/Statement" }, { "$ref": "#/definitions/Block" } ] }, { "type": "null" } ] }, "trueBody": { "anyOf": [ { "$ref": "#/definitions/Statement" }, { "$ref": "#/definitions/Block" } ] }, "nodeType": { "enum": [ "IfStatement" ] } }, "required": [ "id", "src", "condition", "trueBody", "nodeType" ] }, "ImportDirective": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "absolutePath": { "type": "string" }, "file": { "type": "string" }, "nameLocation": { "type": "string" }, "scope": { "type": "integer" }, "sourceUnit": { "type": "integer" }, "symbolAliases": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "foreign": { "$ref": "#/definitions/Identifier" }, "local": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "nameLocation": { "type": "string" } }, "required": [ "foreign" ] } }, "unitAlias": { "type": "string" }, "nodeType": { "enum": [ "ImportDirective" ] } }, "required": [ "id", "src", "absolutePath", "file", "scope", "sourceUnit", "symbolAliases", "unitAlias", "nodeType" ] }, "IndexAccess": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "baseExpression": { "$ref": "#/definitions/Expression" }, "indexExpression": { "anyOf": [ { "$ref": "#/definitions/Expression" }, { "type": "null" } ] }, "nodeType": { "enum": [ "IndexAccess" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "baseExpression", "nodeType" ] }, "IndexRangeAccess": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "baseExpression": { "$ref": "#/definitions/Expression" }, "endExpression": { "anyOf": [ { "$ref": "#/definitions/Expression" }, { "type": "null" } ] }, "startExpression": { "anyOf": [ { "$ref": "#/definitions/Expression" }, { "type": "null" } ] }, "nodeType": { "enum": [ "IndexRangeAccess" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "baseExpression", "nodeType" ] }, "InheritanceSpecifier": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "arguments": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/Expression" } }, { "type": "null" } ] }, "baseName": { "anyOf": [ { "$ref": "#/definitions/UserDefinedTypeName" }, { "$ref": "#/definitions/IdentifierPath" } ] }, "nodeType": { "enum": [ "InheritanceSpecifier" ] } }, "required": [ "id", "src", "baseName", "nodeType" ] }, "InlineAssembly": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "documentation": { "type": "string" }, "AST": { "$ref": "#/definitions/YulBlock" }, "evmVersion": { "enum": [ "homestead", "tangerineWhistle", "spuriousDragon", "byzantium", "constantinople", "petersburg", "istanbul", "berlin", "london" ] }, "externalReferences": { "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "declaration": { "type": "integer" }, "isOffset": { "type": "boolean" }, "isSlot": { "type": "boolean" }, "src": { "$ref": "#/definitions/SourceLocation" }, "valueSize": { "type": "integer" }, "suffix": { "enum": [ "slot", "offset" ] } }, "required": [ "declaration", "isOffset", "isSlot", "src", "valueSize" ] } }, "flags": { "type": "array", "items": { "enum": [ "memory-safe" ] } }, "nodeType": { "enum": [ "InlineAssembly" ] } }, "required": [ "id", "src", "AST", "evmVersion", "externalReferences", "nodeType" ] }, "Literal": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "hexValue": { "type": "string", "pattern": "^[0-9a-f]*$" }, "kind": { "enum": [ "bool", "number", "string", "hexString", "unicodeString" ] }, "subdenomination": { "type": "null" }, "value": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "nodeType": { "enum": [ "Literal" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "hexValue", "kind", "nodeType" ] }, "Mapping": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "keyType": { "$ref": "#/definitions/TypeName" }, "valueType": { "$ref": "#/definitions/TypeName" }, "nodeType": { "enum": [ "Mapping" ] } }, "required": [ "id", "src", "typeDescriptions", "keyType", "valueType", "nodeType" ] }, "MemberAccess": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref": "#/definitions/TypeDescriptions" }, "expression": { "$ref": "#/definitions/Expression" }, "memberName": { "type": "string" }, "referencedDeclaration": { "anyOf": [ { "type": "integer" }, { "type": "null" } ] }, "nodeType": { "enum": [ "MemberAccess" ] } }, "required": [ "id", "src", "isConstant", "isLValue", "isPure", "lValueRequested", "typeDescriptions", "expression", "memberName", "nodeType" ] }, "ModifierDefinition": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "name": { "type": "string" }, "nameLocation": { "type": "string" }, "baseModifiers": { "anyOf": [ { "type": "array", "items": { "type": "integer" } }, { "type": "null" } ] }, "body": { "$ref": "#/definitions/Block" }, "documentation": { "anyOf": [ { "$ref": "#/definitions/StructuredDocumentation" }, { "type": "null" } ] }, "overrides": { "anyOf": [ { "$ref": "#/definitions/OverrideSpecifier" }, { "type": "null" } ] }, "parameters": { "$ref": "#/definitions/ParameterList" }, "virtual": { "type": "boolean" }, "visibility": { "$ref": "#/definitions/Visibility" }, "nodeType": { "enum": [ "ModifierDefinition" ] } }, "required": [ "id", "src", "name", "body", "parameters", "virtual", "visibility", "nodeType" ] }, "ModifierInvocation": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "arguments": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/Expression" } }, { "type": "null" } ] }, "kind": { "enum": [ "modifierInvocation", "baseConstructorSpecifier" ] }, "modifierName": { "anyOf": [ { "$ref": "#/definitions/Identifier" }, { "$ref": "#/definitions/IdentifierPath" } ] }, "nodeType": { "enum": [ "ModifierInvocation" ] } }, "required": [ "id", "src", "modifierName", "nodeType" ] }, "NewExpression": { "type": "object", "additionalProperties": false, "properties": { "id": { "type": "integer" }, "src": { "$ref": "#/definitions/SourceLocation" }, "argumentTypes": { "anyOf": [ { "type": "array", "items": { "$ref": "#/definitions/TypeDescriptions" } }, { "type": "null" } ] }, "isConstant": { "type": "boolean" }, "isLValue": { "type": "boolean" }, "isPure": { "type": "boolean" }, "lValueRequested": { "type": "boolean" }, "typeDescriptions": { "$ref":