solidity-ast
Version:
Solidity AST schema and type definitions
2,356 lines • 79.4 kB
JSON
{
"$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":