UNPKG

solidity-antlr4

Version:

Solidity Lang Lexer and Parser by official ANTLR4 grammar

74 lines (73 loc) 2.5 kB
"use strict"; var _utils = require("./utils.test.cjs"); var _vitest = require("vitest"); (0, _vitest.test)("sourceUnit", () => { (0, _vitest.expect)((0, _utils.createParse)(p => p.sourceUnit())(`// SPDX-License-Identifier: MIT`)).toMatchObject({ type: "SourceUnit" }); }); (0, _vitest.test)("pragmaDirective", () => { (0, _vitest.expect)((0, _utils.createParse)(p => p.pragmaDirective())(`pragma solidity ^0.8.24;`)).toMatchObject({ literals: ["solidity", "^0.8.24"] }); (0, _vitest.expect)((0, _utils.createParse)(p => p.pragmaDirective())(`pragma version >=0.8.24;`)).toMatchObject({ literals: ["version", ">=0.8.24"] }); }); (0, _vitest.test)("usingDirective", () => { (0, _vitest.expect)((0, _utils.createParse)(p => p.usingDirective())(`using A for uint;`)).toMatchObject({ libraryName: "A", typeName: "uint" }); (0, _vitest.expect)((0, _utils.createParse)(p => p.usingDirective())(`using A for B.C;`)).toMatchObject({ libraryName: "A", typeName: "B.C" }); (0, _vitest.expect)((0, _utils.createParse)(p => p.usingDirective())(`using A for unit[] global;`)).toMatchObject({ libraryName: "A", typeName: "unit[]", global: true }); (0, _vitest.expect)((0, _utils.createParse)(p => p.usingDirective())(`using { A, C.D } for B;`)).toMatchObject({ usingAliases: [{ name: "A" }, { name: "C.D" }], typeName: "B", global: false }); (0, _vitest.expect)((0, _utils.createParse)(p => p.usingDirective())(`using { B, add as + } for B;`)).toMatchObject({ usingAliases: [{ name: "B" }, { name: "add", operator: "+" }], typeName: "B", global: false }); }); (0, _vitest.test)("importDirective", () => { (0, _vitest.expect)((0, _utils.createParse)(p => p.importDirective())(`import "./Foo.sol";`)).toMatchObject({ path: "./Foo.sol" }); (0, _vitest.expect)((0, _utils.createParse)(p => p.importDirective())(`import * as Foo from "./Foo.sol";`)).toMatchObject({ importAll: true, unitAlias: "Foo", symbolAliases: [] }); (0, _vitest.expect)((0, _utils.createParse)(p => p.importDirective())(`import "./Foo.sol" as Foo;`)).toMatchObject({ importAll: false, unitAlias: "Foo", symbolAliases: [] }); (0, _vitest.expect)((0, _utils.createParse)(p => p.importDirective())(`import { Foo, Bar as Me } from "./Foo.sol";`)).toMatchObject({ symbolAliases: [{ foreign: "Foo" }, { foreign: "Bar", local: "Me" }] }); });