@informalsystems/quint
Version:
Core tool for the Quint specification language
48 lines (47 loc) • 1.96 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const mocha_1 = require("mocha");
const chai_1 = require("chai");
const idGenerator_1 = require("../../src/idGenerator");
const quintParserFrontend_1 = require("../../src/parsing/quintParserFrontend");
const unshadower_1 = require("../../src/names/unshadower");
const src_1 = require("../../src");
const textUtils_1 = require("../textUtils");
(0, mocha_1.describe)('unshadowNames', () => {
function parseModules(text) {
const idGenerator = (0, idGenerator_1.newIdGenerator)();
const fake_path = { normalizedPath: 'fake_path', toSourceName: () => 'fake_path' };
const result = (0, quintParserFrontend_1.parse)(idGenerator, 'test_location', fake_path, text);
chai_1.assert.isEmpty(result.errors);
return result;
}
(0, mocha_1.it)('returns a module with no shadowed names', () => {
const { modules, table } = parseModules(`
module A {
val b = val a = 1 { a }
val c = val a = { val a = 1 { a } } { a }
val d = val a = 1 { val a = 2 { a } }
def f(a) = a > 0
def g(a) = a.map(a => a + 1)
}
module B {
var a: int
import A.*
}`);
const unshadowedModules = modules.map(m => (0, unshadower_1.unshadowNames)(m, table));
chai_1.assert.sameDeepMembers(unshadowedModules.map(src_1.moduleToString), [
(0, textUtils_1.dedent)(`module A {
| val d = val a = 1 { val a_19 = 2 { a_19 } }
| def f = ((a_26) => igt(a_26, 0))
| def g = ((a_36) => map(a_36, ((a_34) => iadd(a_34, 1))))
| val b = val a = 1 { a }
| val c = val a = val a_9 = 1 { a_9 } { a }
|}`),
(0, textUtils_1.dedent)(`module B {
| var a: int
| import A.*
|}`),
]);
});
});
//# sourceMappingURL=unshadower.test.js.map