UNPKG

solidity-antlr4

Version:

Solidity Lang Lexer and Parser by official ANTLR4 grammar

47 lines (46 loc) 1.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LibraryDefinition = exports.InterfaceDefinition = exports.ContractDefinition = void 0; var _base = require("../base.cjs"); var _antlr = require("../../antlr4/index.cjs"); class ContractDefinition extends _base.BaseNode { type = "ContractDefinition"; /** * The contract name */ name; /** * Type of contract declaration, e.g. `contract`, `library` or `interface`. */ contractKind = "contract"; /** * Is `true` if contract is declared as an abstract * (using `abstract` keyword since Solidity 0.6). * * Is `false` otherwise. */ abstract = false; /** * Base contracts */ baseContracts = []; nodes = []; constructor(ctx, visitor) { super(ctx, visitor); this.name = visitor.visit(ctx.identifier()); this.nodes = ctx.contractBodyElement().map(element => element.accept(visitor)); if (ctx instanceof _antlr.InterfaceDefinitionContext) { this.contractKind = "interface"; this.baseContracts = ctx.inheritanceSpecifierList()?.accept(visitor) ?? []; } else if (ctx instanceof _antlr.LibraryDefinitionContext) { this.contractKind = "library"; } else { this.contractKind = "contract"; this.abstract = !!ctx.Abstract(); this.baseContracts = ctx.inheritanceSpecifierList()?.accept(visitor) ?? []; } } } exports.LibraryDefinition = exports.InterfaceDefinition = exports.ContractDefinition = ContractDefinition;