solidity-antlr4
Version:
Solidity Lang Lexer and Parser by official ANTLR4 grammar
74 lines (73 loc) • 2.5 kB
JavaScript
"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"
}]
});
});