UNPKG

@informalsystems/quint

Version:

Core tool for the Quint specification language

48 lines (47 loc) 1.96 kB
"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