occam-verify-cli 0.0.309 → 0.0.310
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/abbreviations.js +2 -4
- package/bin/main.js +10 -10
- package/bin/options.js +1 -3
- package/bin/utilities/logging.js +42 -0
- package/bin/utilities/release.js +77 -0
- package/lib/context/file.js +33 -16
- package/lib/context/metaproof.js +13 -13
- package/lib/context/proof.js +13 -13
- package/lib/context/release.js +37 -68
- package/lib/mixins/log.js +41 -0
- package/lib/utilities/customGrammar.js +32 -0
- package/lib/utilities/tokens.js +63 -0
- package/lib/verify/assertion/type.js +4 -4
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/label.js +2 -2
- package/lib/verify/metastatement/qualified.js +2 -2
- package/lib/verify/metastatement/unqualified.js +2 -2
- package/lib/verify/release.js +2 -2
- package/lib/verify/rule.js +3 -3
- package/lib/verify/statement.js +3 -3
- package/lib/verify/statementAsCombinator.js +4 -4
- package/lib/verify/term.js +2 -2
- package/lib/verify/termAsConstructor.js +7 -7
- package/lib/verify/termAsVariable.js +2 -2
- package/lib/verify/type.js +5 -5
- package/lib/verify/variable.js +4 -4
- package/package.json +2 -2
- package/src/context/file.js +26 -10
- package/src/context/metaproof.js +6 -6
- package/src/context/proof.js +6 -6
- package/src/context/release.js +37 -58
- package/src/mixins/log.js +28 -0
- package/src/utilities/customGrammar.js +27 -0
- package/src/utilities/tokens.js +67 -0
- package/src/verify/assertion/type.js +3 -3
- package/src/verify/axiom.js +2 -2
- package/src/verify/label.js +1 -1
- package/src/verify/metastatement/qualified.js +1 -1
- package/src/verify/metastatement/unqualified.js +1 -1
- package/src/verify/release.js +1 -1
- package/src/verify/rule.js +2 -2
- package/src/verify/statement.js +2 -2
- package/src/verify/statementAsCombinator.js +3 -3
- package/src/verify/term.js +1 -1
- package/src/verify/termAsConstructor.js +6 -6
- package/src/verify/termAsVariable.js +1 -1
- package/src/verify/type.js +4 -4
- package/src/verify/variable.js +3 -3
- package/bin/loadReleaseContexts.js +0 -68
package/src/context/file.js
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { levels } from "necessary";
|
|
3
4
|
import { rewriteNodes } from "occam-grammar-utilities";
|
|
4
5
|
|
|
5
6
|
import { push } from "../utilities/array";
|
|
7
|
+
import { leastLineIndexFromNodeAndTokens, greatestLineIndexFromNodeAndTokens } from "../utilities/tokens";
|
|
8
|
+
|
|
9
|
+
const { TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL, FATAL_LEVEL } = levels;
|
|
6
10
|
|
|
7
11
|
export default class FileContext {
|
|
8
|
-
constructor(tokens, node, rules, types, axioms, variables, combinators, constructors, releaseContext) {
|
|
12
|
+
constructor(filePath, tokens, node, rules, types, axioms, variables, combinators, constructors, releaseContext) {
|
|
13
|
+
this.filePath = filePath;
|
|
9
14
|
this.tokens = tokens;
|
|
10
15
|
this.node = node;
|
|
11
16
|
this.rules = rules;
|
|
@@ -17,6 +22,10 @@ export default class FileContext {
|
|
|
17
22
|
this.releaseContext = releaseContext;
|
|
18
23
|
}
|
|
19
24
|
|
|
25
|
+
getFilePath() {
|
|
26
|
+
return this.filePath;
|
|
27
|
+
}
|
|
28
|
+
|
|
20
29
|
getTokens() {
|
|
21
30
|
return this.tokens;
|
|
22
31
|
}
|
|
@@ -236,21 +245,28 @@ export default class FileContext {
|
|
|
236
245
|
this.constructors.push(constructor);
|
|
237
246
|
}
|
|
238
247
|
|
|
239
|
-
trace(message) { this.
|
|
248
|
+
trace(message, node) { this.log(node, TRACE_LEVEL, message); }
|
|
240
249
|
|
|
241
|
-
debug(message) { this.
|
|
250
|
+
debug(message, node) { this.log(node, DEBUG_LEVEL, message); }
|
|
242
251
|
|
|
243
|
-
info(message) { this.
|
|
252
|
+
info(message, node) { this.log(node, INFO_LEVEL, message); }
|
|
244
253
|
|
|
245
|
-
warning(message) { this.
|
|
254
|
+
warning(message, node) { this.log(node, WARNING_LEVEL, message); }
|
|
246
255
|
|
|
247
|
-
error(message) { this.
|
|
256
|
+
error(message, node) { this.log(node, ERROR_LEVEL, message); }
|
|
248
257
|
|
|
249
|
-
fatal(message) { this.
|
|
258
|
+
fatal(message, node) { this.log(node, FATAL_LEVEL, message); }
|
|
259
|
+
|
|
260
|
+
log(node, level, message) {
|
|
261
|
+
const leastLineIndex = leastLineIndexFromNodeAndTokens(node, this.tokens),
|
|
262
|
+
greatestLineIndex = greatestLineIndexFromNodeAndTokens(node, this.tokens);
|
|
263
|
+
|
|
264
|
+
this.releaseContext.log(level, message, this.filePath, leastLineIndex, greatestLineIndex);
|
|
265
|
+
}
|
|
250
266
|
|
|
251
267
|
static fromReleaseContextAndFilePath(releaseContext, filePath) {
|
|
252
|
-
const
|
|
253
|
-
content =
|
|
268
|
+
const file = releaseContext.getFile(filePath),
|
|
269
|
+
content = file.getContent(),
|
|
254
270
|
tokens = releaseContext.tokenise(content),
|
|
255
271
|
node = releaseContext.parse(tokens);
|
|
256
272
|
|
|
@@ -262,7 +278,7 @@ export default class FileContext {
|
|
|
262
278
|
variables = [],
|
|
263
279
|
combinators = [],
|
|
264
280
|
constructors = [],
|
|
265
|
-
fileContext = new FileContext(tokens, node, rules, types, axioms, variables, combinators, constructors, releaseContext);
|
|
281
|
+
fileContext = new FileContext(filePath, tokens, node, rules, types, axioms, variables, combinators, constructors, releaseContext);
|
|
266
282
|
|
|
267
283
|
return fileContext;
|
|
268
284
|
}
|
package/src/context/metaproof.js
CHANGED
|
@@ -79,17 +79,17 @@ export default class MetaproofContext {
|
|
|
79
79
|
this.metaAssertions.push(metaAssertion);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
trace(message) { this.context.trace(message); }
|
|
82
|
+
trace(message, node) { this.context.trace(message, node); }
|
|
83
83
|
|
|
84
|
-
debug(message) { this.context.debug(message); }
|
|
84
|
+
debug(message, node) { this.context.debug(message, node); }
|
|
85
85
|
|
|
86
|
-
info(message) { this.context.info(message); }
|
|
86
|
+
info(message, node) { this.context.info(message, node); }
|
|
87
87
|
|
|
88
|
-
warning(message) { this.context.warning(message); }
|
|
88
|
+
warning(message, node) { this.context.warning(message, node); }
|
|
89
89
|
|
|
90
|
-
error(message) { this.context.error(message); }
|
|
90
|
+
error(message, node) { this.context.error(message, node); }
|
|
91
91
|
|
|
92
|
-
fatal(message) { this.context.fatal(message); }
|
|
92
|
+
fatal(message, node) { this.context.fatal(message, node); }
|
|
93
93
|
|
|
94
94
|
static fromContext(context) {
|
|
95
95
|
const derived = false,
|
package/src/context/proof.js
CHANGED
|
@@ -80,17 +80,17 @@ export default class ProofContext {
|
|
|
80
80
|
this.statementNodes.push(statementNode);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
trace(message) { this.context.trace(message); }
|
|
83
|
+
trace(message, node) { this.context.trace(message, node); }
|
|
84
84
|
|
|
85
|
-
debug(message) { this.context.debug(message); }
|
|
85
|
+
debug(message, node) { this.context.debug(message, node); }
|
|
86
86
|
|
|
87
|
-
info(message) { this.context.info(message); }
|
|
87
|
+
info(message, node) { this.context.info(message, node); }
|
|
88
88
|
|
|
89
|
-
warning(message) { this.context.warning(message); }
|
|
89
|
+
warning(message, node) { this.context.warning(message, node); }
|
|
90
90
|
|
|
91
|
-
error(message) { this.context.error(message); }
|
|
91
|
+
error(message, node) { this.context.error(message, node); }
|
|
92
92
|
|
|
93
|
-
fatal(message) { this.context.fatal(message); }
|
|
93
|
+
fatal(message, node) { this.context.fatal(message, node); }
|
|
94
94
|
|
|
95
95
|
static fromContext(context) {
|
|
96
96
|
const derived = false,
|
package/src/context/release.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { lexersUtilities, parsersUtilities } from "occam-custom-grammars";
|
|
4
|
+
|
|
5
|
+
import logMixins from "../mixins/log";
|
|
4
6
|
|
|
5
7
|
import { push } from "../utilities/array";
|
|
8
|
+
import { customGrammarFromRelease, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
|
|
6
9
|
|
|
7
10
|
const { florenceLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
8
11
|
{ florenceParserFromCombinedCustomGrammar } = parsersUtilities;
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
constructor(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts) {
|
|
13
|
+
class ReleaseContext {
|
|
14
|
+
constructor(log, release, verified, customGrammar, fileContexts, florenceLexer, florenceParser, releaseContexts) {
|
|
12
15
|
this.log = log;
|
|
13
16
|
this.release = release;
|
|
14
17
|
this.verified = verified;
|
|
18
|
+
this.customGrammar = customGrammar;
|
|
19
|
+
|
|
15
20
|
this.fileContexts = fileContexts;
|
|
16
21
|
this.florenceLexer = florenceLexer;
|
|
17
22
|
this.florenceParser = florenceParser;
|
|
@@ -30,6 +35,10 @@ export default class ReleaseContext {
|
|
|
30
35
|
return this.verified;
|
|
31
36
|
}
|
|
32
37
|
|
|
38
|
+
getCustomGrammar() {
|
|
39
|
+
return this.customGrammar;
|
|
40
|
+
}
|
|
41
|
+
|
|
33
42
|
getFileContexts() {
|
|
34
43
|
return this.fileContexts;
|
|
35
44
|
}
|
|
@@ -46,28 +55,20 @@ export default class ReleaseContext {
|
|
|
46
55
|
return this.releaseContexts;
|
|
47
56
|
}
|
|
48
57
|
|
|
49
|
-
|
|
50
|
-
const releaseName = this.release.getName();
|
|
58
|
+
getFile(filePath) { return this.release.getFile(filePath); }
|
|
51
59
|
|
|
52
|
-
|
|
53
|
-
}
|
|
60
|
+
getName() { return this.release.getName(); }
|
|
54
61
|
|
|
55
62
|
getVersion() { return this.release.getVersion(); }
|
|
56
63
|
|
|
57
64
|
getFilePaths() { return this.release.getFilePaths(); }
|
|
58
65
|
|
|
59
|
-
getFileContent(filePath) {
|
|
60
|
-
const file = this.release.getFile(filePath),
|
|
61
|
-
fileContent = file.getContent();
|
|
62
|
-
|
|
63
|
-
return fileContent;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
66
|
getDependencies() { return this.release.getDependencies(); }
|
|
67
67
|
|
|
68
68
|
getRules(releaseNames = []) {
|
|
69
|
-
const
|
|
70
|
-
|
|
69
|
+
const name = this.getName(),
|
|
70
|
+
rules = [],
|
|
71
|
+
releaseName = name, ///
|
|
71
72
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
72
73
|
|
|
73
74
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -92,8 +93,9 @@ export default class ReleaseContext {
|
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
getTypes(releaseNames = []) {
|
|
95
|
-
const
|
|
96
|
-
|
|
96
|
+
const name = this.getName(),
|
|
97
|
+
types = [],
|
|
98
|
+
releaseName = name, ///
|
|
97
99
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
98
100
|
|
|
99
101
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -118,8 +120,9 @@ export default class ReleaseContext {
|
|
|
118
120
|
}
|
|
119
121
|
|
|
120
122
|
getAxioms(releaseNames = []) {
|
|
121
|
-
const
|
|
122
|
-
|
|
123
|
+
const name = this.getName(),
|
|
124
|
+
axioms = [],
|
|
125
|
+
releaseName = name, ///
|
|
123
126
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
124
127
|
|
|
125
128
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -144,8 +147,9 @@ export default class ReleaseContext {
|
|
|
144
147
|
}
|
|
145
148
|
|
|
146
149
|
getCombinators(releaseNames = []) {
|
|
147
|
-
const
|
|
148
|
-
|
|
150
|
+
const name = this.getName(),
|
|
151
|
+
combinators = [],
|
|
152
|
+
releaseName = name, ///
|
|
149
153
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
150
154
|
|
|
151
155
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -170,8 +174,9 @@ export default class ReleaseContext {
|
|
|
170
174
|
}
|
|
171
175
|
|
|
172
176
|
getConstructors(releaseNames = []) {
|
|
173
|
-
const
|
|
177
|
+
const name = this.getName(),
|
|
174
178
|
constructors = [],
|
|
179
|
+
releaseName = name, ///
|
|
175
180
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
176
181
|
|
|
177
182
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -195,20 +200,6 @@ export default class ReleaseContext {
|
|
|
195
200
|
return constructors;
|
|
196
201
|
}
|
|
197
202
|
|
|
198
|
-
getCustomGrammar() {
|
|
199
|
-
const releaseName = this.getReleaseName(),
|
|
200
|
-
name = releaseName, ///
|
|
201
|
-
termBNF = this.release.getTermBNF(),
|
|
202
|
-
statementBNF = this.release.getStatementBNF(),
|
|
203
|
-
metastatementBNF = this.release.getMetastatementBNF(),
|
|
204
|
-
typePattern = this.release.getTypePattern(),
|
|
205
|
-
symbolPattern = this.release.getSymbolPattern(),
|
|
206
|
-
operatorPattern = this.release.getOperatorPattern(),
|
|
207
|
-
customGrammar = CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
|
|
208
|
-
|
|
209
|
-
return customGrammar;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
203
|
addFileContext(fileContext) {
|
|
213
204
|
this.fileContexts.push(fileContext);
|
|
214
205
|
}
|
|
@@ -217,45 +208,33 @@ export default class ReleaseContext {
|
|
|
217
208
|
|
|
218
209
|
parse(tokens) { return this.florenceParser.parse(tokens); }
|
|
219
210
|
|
|
220
|
-
trace(message) { this.log.trace(message); }
|
|
221
|
-
|
|
222
|
-
debug(message) { this.log.debug(message); }
|
|
223
|
-
|
|
224
|
-
info(message) { this.log.info(message); }
|
|
225
|
-
|
|
226
|
-
warning(message) { this.log.warning(message); }
|
|
227
|
-
|
|
228
|
-
error(message) { this.log.error(message); }
|
|
229
|
-
|
|
230
|
-
fatal(message) { this.log.fatal(message); }
|
|
231
|
-
|
|
232
211
|
initialise(releaseContexts, dependencyReleaseContexts) {
|
|
233
|
-
this.releaseContexts = releaseContexts;
|
|
234
|
-
|
|
235
212
|
const releaseContext = this; ///
|
|
236
213
|
|
|
237
214
|
releaseContexts = [ releaseContext, ...dependencyReleaseContexts ]; ///
|
|
238
215
|
|
|
239
|
-
const
|
|
240
|
-
const customGrammar = releaseContext.getCustomGrammar();
|
|
241
|
-
|
|
242
|
-
return customGrammar;
|
|
243
|
-
}),
|
|
244
|
-
combinedCustomGrammar = CombinedCustomGrammar.fromCustomGrammars(customGrammars);
|
|
216
|
+
const combinedCustomGrammar = combinedCustomGrammarFromReleaseContexts(releaseContexts);
|
|
245
217
|
|
|
246
218
|
this.florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
247
219
|
|
|
248
220
|
this.florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
221
|
+
|
|
222
|
+
this.releaseContexts = releaseContexts;
|
|
249
223
|
}
|
|
250
224
|
|
|
251
225
|
static fromLogAndRelease(log, release, ...remainingArguments) {
|
|
252
226
|
const verified = false,
|
|
227
|
+
customGrammar = customGrammarFromRelease(release),
|
|
253
228
|
fileContexts = [],
|
|
254
229
|
florenceLexer = null,
|
|
255
230
|
florenceParser = null,
|
|
256
231
|
releaseContexts = [],
|
|
257
|
-
releaseContext = new ReleaseContext(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts, ...remainingArguments);
|
|
232
|
+
releaseContext = new ReleaseContext(log, release, verified, customGrammar, fileContexts, florenceLexer, florenceParser, releaseContexts, ...remainingArguments);
|
|
258
233
|
|
|
259
234
|
return releaseContext;
|
|
260
235
|
}
|
|
261
236
|
}
|
|
237
|
+
|
|
238
|
+
Object.assign(ReleaseContext.prototype, logMixins);
|
|
239
|
+
|
|
240
|
+
export default ReleaseContext;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { levels } from "necessary";
|
|
4
|
+
|
|
5
|
+
const { TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL, FATAL_LEVEL } = levels;
|
|
6
|
+
|
|
7
|
+
function trace(message) { this.log(TRACE_LEVEL, message); }
|
|
8
|
+
|
|
9
|
+
function debug(message) { this.log(DEBUG_LEVEL, message); }
|
|
10
|
+
|
|
11
|
+
function info(message) { this.log(INFO_LEVEL, message); }
|
|
12
|
+
|
|
13
|
+
function warning(message) { this.log(WARNING_LEVEL, message); }
|
|
14
|
+
|
|
15
|
+
function error(message) { this.log(ERROR_LEVEL, message); }
|
|
16
|
+
|
|
17
|
+
function fatal(message) { this.log(FATAL_LEVEL, message); }
|
|
18
|
+
|
|
19
|
+
const logMixins = {
|
|
20
|
+
trace,
|
|
21
|
+
debug,
|
|
22
|
+
info,
|
|
23
|
+
warning,
|
|
24
|
+
error,
|
|
25
|
+
fatal
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default logMixins;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { CustomGrammar, CombinedCustomGrammar } from "occam-custom-grammars";
|
|
4
|
+
|
|
5
|
+
export function customGrammarFromRelease(release) {
|
|
6
|
+
const name = release.getName(),
|
|
7
|
+
termBNF = release.getTermBNF(),
|
|
8
|
+
statementBNF = release.getStatementBNF(),
|
|
9
|
+
metastatementBNF = release.getMetastatementBNF(),
|
|
10
|
+
typePattern = release.getTypePattern(),
|
|
11
|
+
symbolPattern = release.getSymbolPattern(),
|
|
12
|
+
operatorPattern = release.getOperatorPattern(),
|
|
13
|
+
customGrammar = CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
|
|
14
|
+
|
|
15
|
+
return customGrammar;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function combinedCustomGrammarFromReleaseContexts(releaseContexts) {
|
|
19
|
+
const customGrammars = releaseContexts.map((releaseContext) => {
|
|
20
|
+
const customGrammar = releaseContext.getCustomGrammar();
|
|
21
|
+
|
|
22
|
+
return customGrammar;
|
|
23
|
+
}),
|
|
24
|
+
combinedCustomGrammar = CombinedCustomGrammar.fromCustomGrammars(customGrammars);
|
|
25
|
+
|
|
26
|
+
return combinedCustomGrammar;
|
|
27
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export function leastLineIndexFromNodeAndTokens(node, tokens) {
|
|
4
|
+
let leastLineIndex = undefined; ///
|
|
5
|
+
|
|
6
|
+
const firstSignificantToken = node.getFirstSignificantToken(),
|
|
7
|
+
firstSignificantTokenIndex = significantTokenIndexFromSignificantTokenAndTokens(firstSignificantToken, tokens); ///
|
|
8
|
+
|
|
9
|
+
let lineIndex = 0;
|
|
10
|
+
|
|
11
|
+
tokens.some((token, tokenIndex) => { ///
|
|
12
|
+
if (tokenIndex === firstSignificantTokenIndex) {
|
|
13
|
+
leastLineIndex = lineIndex; ///
|
|
14
|
+
|
|
15
|
+
return true;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const tokenEndOfLineToken = token.isEndOfLineToken();
|
|
19
|
+
|
|
20
|
+
if (tokenEndOfLineToken) {
|
|
21
|
+
lineIndex += 1;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return leastLineIndex;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function greatestLineIndexFromNodeAndTokens(node, tokens) {
|
|
29
|
+
let greatestLineIndex = undefined; ///
|
|
30
|
+
|
|
31
|
+
const lastSignificantToken = node.getLastSignificantToken(),
|
|
32
|
+
lastSignificantTokenIndex = significantTokenIndexFromSignificantTokenAndTokens(lastSignificantToken, tokens);
|
|
33
|
+
|
|
34
|
+
let lineIndex = 0;
|
|
35
|
+
|
|
36
|
+
tokens.some((token, tokenIndex) => { ///
|
|
37
|
+
if (tokenIndex === lastSignificantTokenIndex) {
|
|
38
|
+
greatestLineIndex = lineIndex; ///
|
|
39
|
+
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const tokenEndOfLineToken = token.isEndOfLineToken();
|
|
44
|
+
|
|
45
|
+
if (tokenEndOfLineToken) {
|
|
46
|
+
lineIndex += 1;
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
return greatestLineIndex;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function significantTokenIndexFromSignificantTokenAndTokens(significantToken, tokens) {
|
|
54
|
+
let significantTokenIndex = -1;
|
|
55
|
+
|
|
56
|
+
tokens.some((token) => {
|
|
57
|
+
significantTokenIndex++;
|
|
58
|
+
|
|
59
|
+
const tokenEqualToSignificantToken = token.isEqualTo(significantToken);
|
|
60
|
+
|
|
61
|
+
if (tokenEqualToSignificantToken) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
return significantTokenIndex;
|
|
67
|
+
}
|
|
@@ -17,7 +17,7 @@ export default function verifyTypeAssertion(typeAssertionNode, context) {
|
|
|
17
17
|
typePresent = context.isTypePresentByTypeName(typeName);
|
|
18
18
|
|
|
19
19
|
if (!typePresent) {
|
|
20
|
-
context.error(`The ${typeName} type is not present
|
|
20
|
+
context.error(`The ${typeName} type is not present.`, typeAssertionNode);
|
|
21
21
|
} else {
|
|
22
22
|
const derived = context.isDerived();
|
|
23
23
|
|
|
@@ -37,7 +37,7 @@ export default function verifyTypeAssertion(typeAssertionNode, context) {
|
|
|
37
37
|
value = firstValue;
|
|
38
38
|
|
|
39
39
|
if (value !== undefined) {
|
|
40
|
-
context.error(`The value of the ${variableName} variable is not undefined
|
|
40
|
+
context.error(`The value of the ${variableName} variable is not undefined.`, typeAssertionNode);
|
|
41
41
|
} else {
|
|
42
42
|
const type = context.findTypeByTypeName(typeName),
|
|
43
43
|
firstType = first(types),
|
|
@@ -45,7 +45,7 @@ export default function verifyTypeAssertion(typeAssertionNode, context) {
|
|
|
45
45
|
typeSubTypeOfVariableType = type.isSubTypeOf(variableType);
|
|
46
46
|
|
|
47
47
|
if (!typeSubTypeOfVariableType) {
|
|
48
|
-
context.error(`The asserted type of the ${variableName} variable is not a sub-type of its declared type
|
|
48
|
+
context.error(`The asserted type of the ${variableName} variable is not a sub-type of its declared type.`, typeAssertionNode);
|
|
49
49
|
} else {
|
|
50
50
|
const name = variableName, ///
|
|
51
51
|
variable = Variable.fromTypeAndName(type, name);
|
package/src/verify/axiom.js
CHANGED
|
@@ -17,7 +17,7 @@ export default function verifyAxiom(axiomNode, context) {
|
|
|
17
17
|
const labelNodes = labelNodesQuery(axiomNode),
|
|
18
18
|
labelsString = nodesAsString(labelNodes);
|
|
19
19
|
|
|
20
|
-
context.debug(`Verifying the '${labelsString}' axiom
|
|
20
|
+
context.debug(`Verifying the '${labelsString}' axiom...`, axiomNode);
|
|
21
21
|
|
|
22
22
|
const proofContext = ProofContext.fromContext(context);
|
|
23
23
|
|
|
@@ -61,7 +61,7 @@ export default function verifyAxiom(axiomNode, context) {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
if (axiomVerified) {
|
|
64
|
-
context.info(`Verified the '${labelsString}' axiom
|
|
64
|
+
context.info(`Verified the '${labelsString}' axiom.`, axiomNode);
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
return axiomVerified;
|
package/src/verify/label.js
CHANGED
|
@@ -10,7 +10,7 @@ export default function verifyLabel(labelNode, labels, context) {
|
|
|
10
10
|
labelPresent = context.isLabelPresent(label);
|
|
11
11
|
|
|
12
12
|
if (labelPresent) {
|
|
13
|
-
context.error(`The label ${label} is already present
|
|
13
|
+
context.error(`The label ${label} is already present`, labelNode);
|
|
14
14
|
} else {
|
|
15
15
|
labels.push(label);
|
|
16
16
|
|
|
@@ -26,7 +26,7 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
|
|
|
26
26
|
if (qualifiedMetastatementVerified) {
|
|
27
27
|
const metastatementString = nodeAsString(metastatementNode);
|
|
28
28
|
|
|
29
|
-
context.debug(`Verified the '${metastatementString}' qualified metastatement
|
|
29
|
+
context.debug(`Verified the '${metastatementString}' qualified metastatement.`, qualifiedMetastatementNode);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
return qualifiedMetastatementVerified;
|
|
@@ -28,7 +28,7 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
|
|
|
28
28
|
if (unqualifiedMetastatementVerified) {
|
|
29
29
|
const metastatementString = nodeAsString(metastatementNode);
|
|
30
30
|
|
|
31
|
-
context.debug(`Verified the '${metastatementString}' unqualified metastatement
|
|
31
|
+
context.debug(`Verified the '${metastatementString}' unqualified metastatement.`, unqualifiedMetastatementNode);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
return unqualifiedMetastatementVerified;
|
package/src/verify/release.js
CHANGED
|
@@ -42,7 +42,7 @@ export default function verifyRelease(releaseName, releaseContextMap, releaseCon
|
|
|
42
42
|
if (releaseVerified) {
|
|
43
43
|
releaseContexts.push(releaseContext);
|
|
44
44
|
|
|
45
|
-
releaseContext.info(`Verified the '${releaseName}'
|
|
45
|
+
releaseContext.info(`Verified the '${releaseName}' package.`);
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
}
|
package/src/verify/rule.js
CHANGED
|
@@ -26,7 +26,7 @@ export default function verifyRule(ruleNode, context) {
|
|
|
26
26
|
|
|
27
27
|
context = metaproofContext; ///
|
|
28
28
|
|
|
29
|
-
context.debug(`Verifying the '${labelsString}' rule
|
|
29
|
+
context.debug(`Verifying the '${labelsString}' rule...`, ruleNode);
|
|
30
30
|
|
|
31
31
|
const labels = [],
|
|
32
32
|
labelsVerified = verifyLabels(labelNodes, labels, context);
|
|
@@ -69,7 +69,7 @@ export default function verifyRule(ruleNode, context) {
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
if (ruleVerified) {
|
|
72
|
-
context.info(`Verified the '${labelsString}' rule
|
|
72
|
+
context.info(`Verified the '${labelsString}' rule.`, ruleNode);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
|
package/src/verify/statement.js
CHANGED
|
@@ -14,7 +14,7 @@ export default function verifyStatement(statementNode, context) {
|
|
|
14
14
|
|
|
15
15
|
const statementString = nodeAsString(statementNode);
|
|
16
16
|
|
|
17
|
-
context.debug(`Verifying the '${statementString}' statement
|
|
17
|
+
context.debug(`Verifying the '${statementString}' statement...`, statementNode);
|
|
18
18
|
|
|
19
19
|
const equalityNode = equalityNodeQuery(statementNode),
|
|
20
20
|
typeAssertionNode = typeAssertionNodeQuery(statementNode);
|
|
@@ -34,7 +34,7 @@ export default function verifyStatement(statementNode, context) {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
if (statementVerified) {
|
|
37
|
-
context.info(`Verified the '${statementString}' statement
|
|
37
|
+
context.info(`Verified the '${statementString}' statement.`, statementNode);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
return statementVerified;
|
|
@@ -11,7 +11,7 @@ export default function verifyStatementAsCombinator(statementNode, context) {
|
|
|
11
11
|
|
|
12
12
|
const statementString = nodeAsString(statementNode);
|
|
13
13
|
|
|
14
|
-
context.debug(`Verifying the ${statementString} statement as a combinator
|
|
14
|
+
context.debug(`Verifying the ${statementString} statement as a combinator...`, statementNode);
|
|
15
15
|
|
|
16
16
|
const nonTerminalNode = statementNode, ///
|
|
17
17
|
childNodes = nonTerminalNode.getChildNodes(),
|
|
@@ -28,7 +28,7 @@ export default function verifyStatementAsCombinator(statementNode, context) {
|
|
|
28
28
|
|
|
29
29
|
const statementString = nodeAsString(statementNode);
|
|
30
30
|
|
|
31
|
-
context.info(`Verified the '${statementString}' combinator
|
|
31
|
+
context.info(`Verified the '${statementString}' combinator.`, statementNode);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
return statementVerifiedAsCombinator;
|
|
@@ -117,7 +117,7 @@ function verifyTypeNode(typeNode, context) {
|
|
|
117
117
|
typePresent = context.isTypePresentByTypeName(typeName);
|
|
118
118
|
|
|
119
119
|
if (!typePresent) {
|
|
120
|
-
context.error(`The type '${typeName}' is missing
|
|
120
|
+
context.error(`The type '${typeName}' is missing.`, typeNode);
|
|
121
121
|
} else {
|
|
122
122
|
typeNodeVerified = true;
|
|
123
123
|
}
|
package/src/verify/term.js
CHANGED
|
@@ -153,7 +153,7 @@ function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
|
|
|
153
153
|
if (termNode === null) {
|
|
154
154
|
const argumentString = nodeAsString(argumentNode);
|
|
155
155
|
|
|
156
|
-
context.error(`The ${argumentString} argument should be a term, not a type
|
|
156
|
+
context.error(`The ${argumentString} argument should be a term, not a type`, argumentNode);
|
|
157
157
|
} else {
|
|
158
158
|
const types = [],
|
|
159
159
|
values = [],
|
|
@@ -15,7 +15,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
|
15
15
|
|
|
16
16
|
const termString = nodeAsString(termNode);
|
|
17
17
|
|
|
18
|
-
context.debug(`Verifying the '${termString}' term as a constructor
|
|
18
|
+
context.debug(`Verifying the '${termString}' term as a constructor...`, termNode);
|
|
19
19
|
|
|
20
20
|
const nonTerminalNode = termNode, ///
|
|
21
21
|
childNodes = nonTerminalNode.getChildNodes(),
|
|
@@ -36,7 +36,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
|
36
36
|
} else {
|
|
37
37
|
const termString = nodeAsString(termNode);
|
|
38
38
|
|
|
39
|
-
context.error(`The '${termString}' constructor's '${typeName}' type is missing
|
|
39
|
+
context.error(`The '${termString}' constructor's '${typeName}' type is missing.`, termNode);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -48,7 +48,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
|
48
48
|
|
|
49
49
|
const termString = nodeAsString(termNode);
|
|
50
50
|
|
|
51
|
-
context.info(`Verified the '${termString}' constructor
|
|
51
|
+
context.info(`Verified the '${termString}' constructor.`, termNode);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
return termVerifiedAsConstructor;
|
|
@@ -121,7 +121,7 @@ function verifyNonTerminalNode(nonTerminalNode, context) {
|
|
|
121
121
|
if (type !== null) {
|
|
122
122
|
const termString = nodeAsString(termNode);
|
|
123
123
|
|
|
124
|
-
context.error(`The type of the constructor's compound '${termString}' term node is not null
|
|
124
|
+
context.error(`The type of the constructor's compound '${termString}' term node is not null.`, termNode);
|
|
125
125
|
} else {
|
|
126
126
|
nonTerminalNodeVerified = true; ///
|
|
127
127
|
}
|
|
@@ -151,13 +151,13 @@ function verifyArgumentNode(argumentNode, context) {
|
|
|
151
151
|
if (typeNode === null) {
|
|
152
152
|
const argumentString = nodeAsString(argumentNode);
|
|
153
153
|
|
|
154
|
-
context.error(`The ${argumentString} argument should be a type
|
|
154
|
+
context.error(`The ${argumentString} argument should be a type.`, argumentNode);
|
|
155
155
|
} else {
|
|
156
156
|
const typeName = typeNameFromTypeNode(typeNode),
|
|
157
157
|
typePresent = context.isTypePresentByTypeName(typeName);
|
|
158
158
|
|
|
159
159
|
if (!typePresent) {
|
|
160
|
-
context.error(`The type '${typeName}' is missing
|
|
160
|
+
context.error(`The type '${typeName}' is missing.`, typeNode);
|
|
161
161
|
} else {
|
|
162
162
|
typeNodeVerified = true;
|
|
163
163
|
}
|
|
@@ -14,7 +14,7 @@ export default function verifyTermAsVariable(termNode, types, names, values, con
|
|
|
14
14
|
variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
15
15
|
|
|
16
16
|
if (!variablePresent) {
|
|
17
|
-
context.error(`The ${variableName} variable is not present
|
|
17
|
+
context.error(`The ${variableName} variable is not present.`, variableNode)
|
|
18
18
|
} else {
|
|
19
19
|
const variable = context.findVariableByVariableName(variableName),
|
|
20
20
|
type = variable.getType(),
|