solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
47 lines (46 loc) • 1.5 kB
JavaScript
;
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;