occam-verify-cli 0.0.308 → 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 +38 -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 +38 -54
- 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,23 +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
|
-
getFilePaths() { return this.release.
|
|
58
|
-
|
|
59
|
-
getFileContent(filePath) { return this.release.getFileContent(filePath); }
|
|
64
|
+
getFilePaths() { return this.release.getFilePaths(); }
|
|
60
65
|
|
|
61
66
|
getDependencies() { return this.release.getDependencies(); }
|
|
62
67
|
|
|
63
68
|
getRules(releaseNames = []) {
|
|
64
|
-
const
|
|
65
|
-
|
|
69
|
+
const name = this.getName(),
|
|
70
|
+
rules = [],
|
|
71
|
+
releaseName = name, ///
|
|
66
72
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
67
73
|
|
|
68
74
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -87,8 +93,9 @@ export default class ReleaseContext {
|
|
|
87
93
|
}
|
|
88
94
|
|
|
89
95
|
getTypes(releaseNames = []) {
|
|
90
|
-
const
|
|
91
|
-
|
|
96
|
+
const name = this.getName(),
|
|
97
|
+
types = [],
|
|
98
|
+
releaseName = name, ///
|
|
92
99
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
93
100
|
|
|
94
101
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -113,8 +120,9 @@ export default class ReleaseContext {
|
|
|
113
120
|
}
|
|
114
121
|
|
|
115
122
|
getAxioms(releaseNames = []) {
|
|
116
|
-
const
|
|
117
|
-
|
|
123
|
+
const name = this.getName(),
|
|
124
|
+
axioms = [],
|
|
125
|
+
releaseName = name, ///
|
|
118
126
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
119
127
|
|
|
120
128
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -139,8 +147,9 @@ export default class ReleaseContext {
|
|
|
139
147
|
}
|
|
140
148
|
|
|
141
149
|
getCombinators(releaseNames = []) {
|
|
142
|
-
const
|
|
143
|
-
|
|
150
|
+
const name = this.getName(),
|
|
151
|
+
combinators = [],
|
|
152
|
+
releaseName = name, ///
|
|
144
153
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
145
154
|
|
|
146
155
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -165,8 +174,9 @@ export default class ReleaseContext {
|
|
|
165
174
|
}
|
|
166
175
|
|
|
167
176
|
getConstructors(releaseNames = []) {
|
|
168
|
-
const
|
|
177
|
+
const name = this.getName(),
|
|
169
178
|
constructors = [],
|
|
179
|
+
releaseName = name, ///
|
|
170
180
|
releaseNamesIncludesReleaseName = releaseNames.includes(releaseName);
|
|
171
181
|
|
|
172
182
|
if (!releaseNamesIncludesReleaseName) {
|
|
@@ -190,20 +200,6 @@ export default class ReleaseContext {
|
|
|
190
200
|
return constructors;
|
|
191
201
|
}
|
|
192
202
|
|
|
193
|
-
getCustomGrammar() {
|
|
194
|
-
const releaseName = this.getReleaseName(),
|
|
195
|
-
name = releaseName, ///
|
|
196
|
-
termBNF = this.release.getTermBNF(),
|
|
197
|
-
statementBNF = this.release.getStatementBNF(),
|
|
198
|
-
metastatementBNF = this.release.getMetastatementBNF(),
|
|
199
|
-
typePattern = this.release.getTypePattern(),
|
|
200
|
-
symbolPattern = this.release.getSymbolPattern(),
|
|
201
|
-
operatorPattern = this.release.getOperatorPattern(),
|
|
202
|
-
customGrammar = CustomGrammar.fromNameTermBNFStatementBNFMetastatementBNFTypePatternSymbolPatternAndOperatorPattern(name, termBNF, statementBNF, metastatementBNF, typePattern, symbolPattern, operatorPattern);
|
|
203
|
-
|
|
204
|
-
return customGrammar;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
203
|
addFileContext(fileContext) {
|
|
208
204
|
this.fileContexts.push(fileContext);
|
|
209
205
|
}
|
|
@@ -212,45 +208,33 @@ export default class ReleaseContext {
|
|
|
212
208
|
|
|
213
209
|
parse(tokens) { return this.florenceParser.parse(tokens); }
|
|
214
210
|
|
|
215
|
-
trace(message) { this.log.trace(message); }
|
|
216
|
-
|
|
217
|
-
debug(message) { this.log.debug(message); }
|
|
218
|
-
|
|
219
|
-
info(message) { this.log.info(message); }
|
|
220
|
-
|
|
221
|
-
warning(message) { this.log.warning(message); }
|
|
222
|
-
|
|
223
|
-
error(message) { this.log.error(message); }
|
|
224
|
-
|
|
225
|
-
fatal(message) { this.log.fatal(message); }
|
|
226
|
-
|
|
227
211
|
initialise(releaseContexts, dependencyReleaseContexts) {
|
|
228
|
-
this.releaseContexts = releaseContexts;
|
|
229
|
-
|
|
230
212
|
const releaseContext = this; ///
|
|
231
213
|
|
|
232
214
|
releaseContexts = [ releaseContext, ...dependencyReleaseContexts ]; ///
|
|
233
215
|
|
|
234
|
-
const
|
|
235
|
-
const customGrammar = releaseContext.getCustomGrammar();
|
|
236
|
-
|
|
237
|
-
return customGrammar;
|
|
238
|
-
}),
|
|
239
|
-
combinedCustomGrammar = CombinedCustomGrammar.fromCustomGrammars(customGrammars);
|
|
216
|
+
const combinedCustomGrammar = combinedCustomGrammarFromReleaseContexts(releaseContexts);
|
|
240
217
|
|
|
241
218
|
this.florenceLexer = florenceLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
242
219
|
|
|
243
220
|
this.florenceParser = florenceParserFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
221
|
+
|
|
222
|
+
this.releaseContexts = releaseContexts;
|
|
244
223
|
}
|
|
245
224
|
|
|
246
225
|
static fromLogAndRelease(log, release, ...remainingArguments) {
|
|
247
226
|
const verified = false,
|
|
227
|
+
customGrammar = customGrammarFromRelease(release),
|
|
248
228
|
fileContexts = [],
|
|
249
229
|
florenceLexer = null,
|
|
250
230
|
florenceParser = null,
|
|
251
231
|
releaseContexts = [],
|
|
252
|
-
releaseContext = new ReleaseContext(log, release, verified, fileContexts, florenceLexer, florenceParser, releaseContexts, ...remainingArguments);
|
|
232
|
+
releaseContext = new ReleaseContext(log, release, verified, customGrammar, fileContexts, florenceLexer, florenceParser, releaseContexts, ...remainingArguments);
|
|
253
233
|
|
|
254
234
|
return releaseContext;
|
|
255
235
|
}
|
|
256
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(),
|