occam-verify-cli 0.0.1009 → 0.0.1011
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/lib/argument.js +106 -0
- package/lib/combinator.js +6 -4
- package/lib/conclusion.js +4 -5
- package/lib/context/release.js +2 -2
- package/lib/declaration/combinator.js +16 -9
- package/lib/declaration/metavariable.js +87 -0
- package/lib/metaType.js +11 -20
- package/lib/metavariable.js +50 -6
- package/lib/premise.js +4 -4
- package/lib/statement/qualified.js +3 -3
- package/lib/statement/unqualified.js +30 -13
- package/lib/utilities/releaseContext.js +5 -10
- package/lib/verifier/topLevel.js +4 -4
- package/package.json +1 -1
- package/src/argument.js +79 -0
- package/src/combinator.js +6 -7
- package/src/conclusion.js +5 -8
- package/src/context/release.js +1 -1
- package/src/declaration/combinator.js +13 -8
- package/src/declaration/metavariable.js +57 -0
- package/src/metaType.js +6 -12
- package/src/metavariable.js +64 -5
- package/src/premise.js +4 -7
- package/src/statement/qualified.js +3 -5
- package/src/statement/unqualified.js +28 -14
- package/src/utilities/releaseContext.js +5 -14
- package/src/verifier/topLevel.js +5 -3
- package/lib/verify/declaration/metavariable.js +0 -89
- package/src/verify/declaration/metavariable.js +0 -125
|
@@ -86,8 +86,6 @@ export function createReleaseContext(dependency, dependentNames, context, callba
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
export function initialiseReleaseContext(dependency, context) {
|
|
89
|
-
let releaseContextInitialised = false;
|
|
90
|
-
|
|
91
89
|
const { releaseContextMap } = context,
|
|
92
90
|
dependencyName = dependency.getName(),
|
|
93
91
|
releaseName = dependencyName, ///
|
|
@@ -98,7 +96,7 @@ export function initialiseReleaseContext(dependency, context) {
|
|
|
98
96
|
|
|
99
97
|
log.warning(`Unable to initialise the '${dependencyName}' context because it has not been created.`);
|
|
100
98
|
} else {
|
|
101
|
-
releaseContextInitialised = releaseContext.isInitialised();
|
|
99
|
+
const releaseContextInitialised = releaseContext.isInitialised();
|
|
102
100
|
|
|
103
101
|
if (!releaseContextInitialised) {
|
|
104
102
|
initialiseDependencyReleaseContexts(dependency, releaseContext, context);
|
|
@@ -113,8 +111,6 @@ export function initialiseReleaseContext(dependency, context) {
|
|
|
113
111
|
log.info(`...initialised the '${dependencyName}' context.`);
|
|
114
112
|
}
|
|
115
113
|
}
|
|
116
|
-
|
|
117
|
-
return releaseContextInitialised;
|
|
118
114
|
}
|
|
119
115
|
|
|
120
116
|
export default {
|
|
@@ -277,14 +273,9 @@ function createDependencyReleaseContexts(dependency, releaseContext, dependentNa
|
|
|
277
273
|
}
|
|
278
274
|
|
|
279
275
|
function initialiseDependencyReleaseContexts(dependency, releaseContext, context) {
|
|
280
|
-
const dependencies = releaseContext.getDependencies()
|
|
281
|
-
dependencyReleaseContextsInitialised = dependencies.everyDependency((dependency) => { ///
|
|
282
|
-
const releaseContextInitialised = initialiseReleaseContext(dependency, context);
|
|
283
|
-
|
|
284
|
-
if (releaseContextInitialised) {
|
|
285
|
-
return true;
|
|
286
|
-
}
|
|
287
|
-
});
|
|
276
|
+
const dependencies = releaseContext.getDependencies();
|
|
288
277
|
|
|
289
|
-
|
|
278
|
+
dependencies.forEachDependency((dependency) => { ///
|
|
279
|
+
initialiseReleaseContext(dependency, context);
|
|
280
|
+
});
|
|
290
281
|
}
|
package/src/verifier/topLevel.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Rule from "../rule";
|
|
4
|
+
import CombinatorDeclaration from "../declaration/combinator";
|
|
5
|
+
import MetavariableDeclaration from "../declaration/metavariable";
|
|
6
|
+
|
|
4
7
|
import Verifier from "../verifier";
|
|
5
8
|
import verifyError from "../verify/error";
|
|
6
9
|
import verifyAxiom from "../verify/axiom";
|
|
@@ -9,11 +12,9 @@ import verifyTheorem from "../verify/theorem";
|
|
|
9
12
|
import verifyMetaLemma from "../verify/metaLemma";
|
|
10
13
|
import verifyConjecture from "../verify/conjecture";
|
|
11
14
|
import verifyMetatheorem from "../verify/metatheorem";
|
|
12
|
-
import CombinatorDeclaration from "../declaration/combinator";
|
|
13
15
|
import verifyTypeDeclaration from "../verify/declaration/type";
|
|
14
16
|
import verifyVariableDeclaration from "../verify/declaration/variable";
|
|
15
17
|
import verifyConstructorDeclaration from "../verify/declaration/constructor";
|
|
16
|
-
import verifyMetavariableDeclaration from "../verify/declaration/metavariable";
|
|
17
18
|
|
|
18
19
|
import { nodeQuery } from "../utilities/query";
|
|
19
20
|
|
|
@@ -145,7 +146,8 @@ class TopLevelVerifier extends Verifier {
|
|
|
145
146
|
{
|
|
146
147
|
nodeQuery: metavariableDeclarationNodeQuery,
|
|
147
148
|
verify: (metavariableDeclarationNode, fileContext) => {
|
|
148
|
-
const
|
|
149
|
+
const metavariableDeclaration = MetavariableDeclaration.fromMetavariableDeclarationNode(metavariableDeclarationNode, fileContext),
|
|
150
|
+
metavariableDeclarationVerified = metavariableDeclaration.verify(fileContext);
|
|
149
151
|
|
|
150
152
|
return metavariableDeclarationVerified;
|
|
151
153
|
}
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return verifyMetavariableDeclaration;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _metavariable = /*#__PURE__*/ _interop_require_default(require("../../metavariable"));
|
|
12
|
-
var _metavariable1 = /*#__PURE__*/ _interop_require_default(require("../../assignment/metavariable"));
|
|
13
|
-
var _array = require("../../utilities/array");
|
|
14
|
-
var _query = require("../../utilities/query");
|
|
15
|
-
function _interop_require_default(obj) {
|
|
16
|
-
return obj && obj.__esModule ? obj : {
|
|
17
|
-
default: obj
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
var termNodeQuery = (0, _query.nodeQuery)("/argument/term"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type"), argumentNodeQuery = (0, _query.nodeQuery)("/metavariable/argument!"), metaTypeNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration/metaType"), metavariableNodeQuery = (0, _query.nodeQuery)("/metavariableDeclaration/metavariable");
|
|
21
|
-
function verifyMetavariableDeclaration(metavariableDeclarationNode, fileContext) {
|
|
22
|
-
var metavariableDeclarationVerified;
|
|
23
|
-
var metaTypeNode = metaTypeNodeQuery(metavariableDeclarationNode), metavariableNode = metavariableNodeQuery(metavariableDeclarationNode), metaTypeString = fileContext.nodeAsString(metaTypeNode), metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
24
|
-
fileContext.trace("Verifying the '".concat(metavariableString, ":").concat(metaTypeString, "' metavariable declaration..."));
|
|
25
|
-
var metavariableVVerified = verifyMetavariable(metavariableNode, metaTypeNode, fileContext);
|
|
26
|
-
metavariableDeclarationVerified = metavariableVVerified; ///
|
|
27
|
-
if (metavariableDeclarationVerified) {
|
|
28
|
-
fileContext.debug("...verified the '".concat(metavariableString, ":").concat(metaTypeString, "' metavariable declaration."));
|
|
29
|
-
}
|
|
30
|
-
return metavariableDeclarationVerified;
|
|
31
|
-
}
|
|
32
|
-
function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
33
|
-
var metavariableVerified = false;
|
|
34
|
-
var metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
35
|
-
fileContext.trace("Verifying the '".concat(metavariableString, "' metavariable..."));
|
|
36
|
-
var metavariablePresent = fileContext.isMetavariablePresentByMetavariableNode(metavariableNode);
|
|
37
|
-
if (metavariablePresent) {
|
|
38
|
-
fileContext.debug("The metavariable '".concat(metavariableString, "' is already present."));
|
|
39
|
-
} else {
|
|
40
|
-
var termTypes = [], metaTypes = [], argumentNode = argumentNodeQuery(metavariableNode), argumentVerified = verifyArgument(argumentNode, termTypes, fileContext), metaTypeVerified = verifyMetaType(metaTypeNode, metaTypes, fileContext);
|
|
41
|
-
if (argumentVerified && metaTypeVerified) {
|
|
42
|
-
var metaType;
|
|
43
|
-
var firstMetaType = (0, _array.first)(metaTypes);
|
|
44
|
-
metaType = firstMetaType; ///
|
|
45
|
-
var metavariable = _metavariable.default.fromMetavariableNodeAndMetaType(metavariableNode, metaType, fileContext), metavariableAssignment = _metavariable1.default.fromMetavariable(metavariable), metavariableAssigned = metavariableAssignment.assign(fileContext);
|
|
46
|
-
if (metavariableAssigned) {
|
|
47
|
-
metavariableVerified = true;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (metavariableVerified) {
|
|
52
|
-
fileContext.debug("...verified the '".concat(metavariableString, "' metavariable."));
|
|
53
|
-
}
|
|
54
|
-
return metavariableVerified;
|
|
55
|
-
}
|
|
56
|
-
function verifyArgument(argumentNode, termTypes, fileContext) {
|
|
57
|
-
var argumentVerified = false;
|
|
58
|
-
if (argumentNode === null) {
|
|
59
|
-
argumentVerified = true;
|
|
60
|
-
} else {
|
|
61
|
-
var termNode = termNodeQuery(argumentNode);
|
|
62
|
-
if (termNode === null) {} else {
|
|
63
|
-
var termString = fileContext.nodeAsString(termNode);
|
|
64
|
-
fileContext.debug("The '".concat(termString, "' term was found when a type should have been present."));
|
|
65
|
-
}
|
|
66
|
-
var typeNode = typeNodeQuery(argumentNode);
|
|
67
|
-
if (typeNode !== null) {
|
|
68
|
-
var type = fileContext.findTypeByTypeNode(typeNode);
|
|
69
|
-
if (type !== null) {
|
|
70
|
-
var termType = type; ///
|
|
71
|
-
termTypes.push(termType);
|
|
72
|
-
argumentVerified = true;
|
|
73
|
-
} else {
|
|
74
|
-
var typeString = fileContext.nodeAsString(typeNode);
|
|
75
|
-
fileContext.debug("The '".concat(typeString, "' type is not present."));
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return argumentVerified;
|
|
80
|
-
}
|
|
81
|
-
function verifyMetaType(metaTypeNode, metaTypes, fileContext) {
|
|
82
|
-
var metaTypeVerified;
|
|
83
|
-
var metaType = fileContext.findMetaTypeByMetaTypeNode(metaTypeNode);
|
|
84
|
-
metaTypes.push(metaType);
|
|
85
|
-
metaTypeVerified = true;
|
|
86
|
-
return metaTypeVerified;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvZGVjbGFyYXRpb24vbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi8uLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi8uLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90ZXJtXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90eXBlXCIpLFxuICAgICAgYXJndW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvbWV0YXZhcmlhYmxlL2FyZ3VtZW50IVwiKSxcbiAgICAgIG1ldGFUeXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uL21ldGFUeXBlXCIpLFxuICAgICAgbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZURlY2xhcmF0aW9uL21ldGF2YXJpYWJsZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5TWV0YXZhcmlhYmxlRGVjbGFyYXRpb24obWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllZDtcblxuICBjb25zdCBtZXRhVHlwZU5vZGUgPSBtZXRhVHlwZU5vZGVRdWVyeShtZXRhdmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpLFxuICAgICAgICBtZXRhdmFyaWFibGVOb2RlID0gbWV0YXZhcmlhYmxlTm9kZVF1ZXJ5KG1ldGF2YXJpYWJsZURlY2xhcmF0aW9uTm9kZSksXG4gICAgICAgIG1ldGFUeXBlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGFUeXBlTm9kZSksXG4gICAgICAgIG1ldGF2YXJpYWJsZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKTtcblxuICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9OiR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uLi5gKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVWVmVyaWZpZWQgPSB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllZCA9IG1ldGF2YXJpYWJsZVZWZXJpZmllZDsgIC8vL1xuXG4gIGlmIChtZXRhdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9OiR7bWV0YVR5cGVTdHJpbmd9JyBtZXRhdmFyaWFibGUgZGVjbGFyYXRpb24uYCk7XG4gIH1cblxuICByZXR1cm4gbWV0YXZhcmlhYmxlRGVjbGFyYXRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5TWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZU5vZGUsIG1ldGFUeXBlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWV0YXZhcmlhYmxlU3RyaW5nID0gZmlsZUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGZpbGVDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS4uLmApO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVByZXNlbnQgPSBmaWxlQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlIG1ldGF2YXJpYWJsZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdGVybVR5cGVzID0gW10sXG4gICAgICAgICAgbWV0YVR5cGVzID0gW10sXG4gICAgICAgICAgYXJndW1lbnROb2RlID0gYXJndW1lbnROb2RlUXVlcnkobWV0YXZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgYXJndW1lbnRWZXJpZmllZCA9IHZlcmlmeUFyZ3VtZW50KGFyZ3VtZW50Tm9kZSwgdGVybVR5cGVzLCBmaWxlQ29udGV4dCksXG4gICAgICAgICAgbWV0YVR5cGVWZXJpZmllZCA9IHZlcmlmeU1ldGFUeXBlKG1ldGFUeXBlTm9kZSwgbWV0YVR5cGVzLCBmaWxlQ29udGV4dCk7XG5cbiAgICBpZiAoYXJndW1lbnRWZXJpZmllZCAmJiBtZXRhVHlwZVZlcmlmaWVkKSB7XG4gICAgICBsZXQgbWV0YVR5cGU7XG5cbiAgICAgIGNvbnN0IGZpcnN0TWV0YVR5cGUgPSBmaXJzdChtZXRhVHlwZXMpO1xuXG4gICAgICBtZXRhVHlwZSA9IGZpcnN0TWV0YVR5cGU7IC8vL1xuXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbU1ldGF2YXJpYWJsZU5vZGVBbmRNZXRhVHlwZShtZXRhdmFyaWFibGVOb2RlLCBtZXRhVHlwZSwgZmlsZUNvbnRleHQpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWdubWVudCA9IE1ldGF2YXJpYWJsZUFzc2lnbm1lbnQuZnJvbU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGUpLFxuICAgICAgICAgICAgbWV0YXZhcmlhYmxlQXNzaWduZWQgPSBtZXRhdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICAgIGlmIChtZXRhdmFyaWFibGVBc3NpZ25lZCkge1xuICAgICAgICBtZXRhdmFyaWFibGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuYCk7XG4gIH1cblxuICByZXR1cm4gbWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFyZ3VtZW50KGFyZ3VtZW50Tm9kZSwgdGVybVR5cGVzLCBmaWxlQ29udGV4dCkge1xuICBsZXQgYXJndW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChhcmd1bWVudE5vZGUgPT09IG51bGwpIHtcbiAgICBhcmd1bWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICAgIGlmICh0ZXJtTm9kZSA9PT0gbnVsbCkge1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdhcyBmb3VuZCB3aGVuIGEgdHlwZSBzaG91bGQgaGF2ZSBiZWVuIHByZXNlbnQuYCk7XG4gICAgfVxuICAgIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeShhcmd1bWVudE5vZGUpO1xuXG4gICAgaWYgKHR5cGVOb2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gZmlsZUNvbnRleHQuZmluZFR5cGVCeVR5cGVOb2RlKHR5cGVOb2RlKTtcblxuICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGVybVR5cGUgPSB0eXBlOyAgLy8vXG5cbiAgICAgICAgdGVybVR5cGVzLnB1c2godGVybVR5cGUpO1xuXG4gICAgICAgIGFyZ3VtZW50VmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdHlwZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJndW1lbnRWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5TWV0YVR5cGUobWV0YVR5cGVOb2RlLCBtZXRhVHlwZXMsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBtZXRhVHlwZVZlcmlmaWVkO1xuXG4gIGNvbnN0IG1ldGFUeXBlID0gZmlsZUNvbnRleHQuZmluZE1ldGFUeXBlQnlNZXRhVHlwZU5vZGUobWV0YVR5cGVOb2RlKTtcblxuICBtZXRhVHlwZXMucHVzaChtZXRhVHlwZSk7XG5cbiAgbWV0YVR5cGVWZXJpZmllZCA9IHRydWU7XG5cbiAgcmV0dXJuIG1ldGFUeXBlVmVyaWZpZWQ7XG59Il0sIm5hbWVzIjpbInZlcmlmeU1ldGF2YXJpYWJsZURlY2xhcmF0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJhcmd1bWVudE5vZGVRdWVyeSIsIm1ldGFUeXBlTm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlTm9kZVF1ZXJ5IiwibWV0YXZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIiwiZmlsZUNvbnRleHQiLCJtZXRhdmFyaWFibGVEZWNsYXJhdGlvblZlcmlmaWVkIiwibWV0YVR5cGVOb2RlIiwibWV0YXZhcmlhYmxlTm9kZSIsIm1ldGFUeXBlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVWVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhdmFyaWFibGUiLCJkZWJ1ZyIsIm1ldGF2YXJpYWJsZVZlcmlmaWVkIiwibWV0YXZhcmlhYmxlUHJlc2VudCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsInRlcm1UeXBlcyIsIm1ldGFUeXBlcyIsImFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50VmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudCIsIm1ldGFUeXBlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhVHlwZSIsIm1ldGFUeXBlIiwiZmlyc3RNZXRhVHlwZSIsImZpcnN0IiwibWV0YXZhcmlhYmxlIiwiTWV0YXZhcmlhYmxlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGVBbmRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZUFzc2lnbm1lbnQiLCJNZXRhdmFyaWFibGVBc3NpZ25tZW50IiwiZnJvbU1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUFzc2lnbmVkIiwiYXNzaWduIiwidGVybU5vZGUiLCJ0ZXJtU3RyaW5nIiwidHlwZU5vZGUiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOb2RlIiwidGVybVR5cGUiLCJwdXNoIiwidHlwZVN0cmluZyIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOb2RlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFjQTs7O2VBQXdCQTs7O21FQVpDO29FQUNVO3FCQUViO3FCQUNJOzs7Ozs7QUFFMUIsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLG1CQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLG1CQUMxQkUsb0JBQW9CRixJQUFBQSxnQkFBUyxFQUFDLDRCQUM5Qkcsb0JBQW9CSCxJQUFBQSxnQkFBUyxFQUFDLHND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
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Metavariable from "../../metavariable";
|
|
4
|
-
import MetavariableAssignment from "../../assignment/metavariable";
|
|
5
|
-
|
|
6
|
-
import { first } from "../../utilities/array";
|
|
7
|
-
import { nodeQuery } from "../../utilities/query";
|
|
8
|
-
|
|
9
|
-
const termNodeQuery = nodeQuery("/argument/term"),
|
|
10
|
-
typeNodeQuery = nodeQuery("/argument/type"),
|
|
11
|
-
argumentNodeQuery = nodeQuery("/metavariable/argument!"),
|
|
12
|
-
metaTypeNodeQuery = nodeQuery("/metavariableDeclaration/metaType"),
|
|
13
|
-
metavariableNodeQuery = nodeQuery("/metavariableDeclaration/metavariable");
|
|
14
|
-
|
|
15
|
-
export default function verifyMetavariableDeclaration(metavariableDeclarationNode, fileContext) {
|
|
16
|
-
let metavariableDeclarationVerified;
|
|
17
|
-
|
|
18
|
-
const metaTypeNode = metaTypeNodeQuery(metavariableDeclarationNode),
|
|
19
|
-
metavariableNode = metavariableNodeQuery(metavariableDeclarationNode),
|
|
20
|
-
metaTypeString = fileContext.nodeAsString(metaTypeNode),
|
|
21
|
-
metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
22
|
-
|
|
23
|
-
fileContext.trace(`Verifying the '${metavariableString}:${metaTypeString}' metavariable declaration...`);
|
|
24
|
-
|
|
25
|
-
const metavariableVVerified = verifyMetavariable(metavariableNode, metaTypeNode, fileContext);
|
|
26
|
-
|
|
27
|
-
metavariableDeclarationVerified = metavariableVVerified; ///
|
|
28
|
-
|
|
29
|
-
if (metavariableDeclarationVerified) {
|
|
30
|
-
fileContext.debug(`...verified the '${metavariableString}:${metaTypeString}' metavariable declaration.`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
return metavariableDeclarationVerified;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
37
|
-
let metavariableVerified = false;
|
|
38
|
-
|
|
39
|
-
const metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
40
|
-
|
|
41
|
-
fileContext.trace(`Verifying the '${metavariableString}' metavariable...`);
|
|
42
|
-
|
|
43
|
-
const metavariablePresent = fileContext.isMetavariablePresentByMetavariableNode(metavariableNode);
|
|
44
|
-
|
|
45
|
-
if (metavariablePresent) {
|
|
46
|
-
fileContext.debug(`The metavariable '${metavariableString}' is already present.`);
|
|
47
|
-
} else {
|
|
48
|
-
const termTypes = [],
|
|
49
|
-
metaTypes = [],
|
|
50
|
-
argumentNode = argumentNodeQuery(metavariableNode),
|
|
51
|
-
argumentVerified = verifyArgument(argumentNode, termTypes, fileContext),
|
|
52
|
-
metaTypeVerified = verifyMetaType(metaTypeNode, metaTypes, fileContext);
|
|
53
|
-
|
|
54
|
-
if (argumentVerified && metaTypeVerified) {
|
|
55
|
-
let metaType;
|
|
56
|
-
|
|
57
|
-
const firstMetaType = first(metaTypes);
|
|
58
|
-
|
|
59
|
-
metaType = firstMetaType; ///
|
|
60
|
-
|
|
61
|
-
const metavariable = Metavariable.fromMetavariableNodeAndMetaType(metavariableNode, metaType, fileContext),
|
|
62
|
-
metavariableAssignment = MetavariableAssignment.fromMetavariable(metavariable),
|
|
63
|
-
metavariableAssigned = metavariableAssignment.assign(fileContext);
|
|
64
|
-
|
|
65
|
-
if (metavariableAssigned) {
|
|
66
|
-
metavariableVerified = true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (metavariableVerified) {
|
|
72
|
-
fileContext.debug(`...verified the '${metavariableString}' metavariable.`);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return metavariableVerified;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
function verifyArgument(argumentNode, termTypes, fileContext) {
|
|
79
|
-
let argumentVerified = false;
|
|
80
|
-
|
|
81
|
-
if (argumentNode === null) {
|
|
82
|
-
argumentVerified = true;
|
|
83
|
-
} else {
|
|
84
|
-
const termNode = termNodeQuery(argumentNode);
|
|
85
|
-
|
|
86
|
-
if (termNode === null) {
|
|
87
|
-
|
|
88
|
-
} else {
|
|
89
|
-
const termString = fileContext.nodeAsString(termNode);
|
|
90
|
-
|
|
91
|
-
fileContext.debug(`The '${termString}' term was found when a type should have been present.`);
|
|
92
|
-
}
|
|
93
|
-
const typeNode = typeNodeQuery(argumentNode);
|
|
94
|
-
|
|
95
|
-
if (typeNode !== null) {
|
|
96
|
-
const type = fileContext.findTypeByTypeNode(typeNode);
|
|
97
|
-
|
|
98
|
-
if (type !== null) {
|
|
99
|
-
const termType = type; ///
|
|
100
|
-
|
|
101
|
-
termTypes.push(termType);
|
|
102
|
-
|
|
103
|
-
argumentVerified = true;
|
|
104
|
-
} else {
|
|
105
|
-
const typeString = fileContext.nodeAsString(typeNode);
|
|
106
|
-
|
|
107
|
-
fileContext.debug(`The '${typeString}' type is not present.`);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return argumentVerified;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
function verifyMetaType(metaTypeNode, metaTypes, fileContext) {
|
|
116
|
-
let metaTypeVerified;
|
|
117
|
-
|
|
118
|
-
const metaType = fileContext.findMetaTypeByMetaTypeNode(metaTypeNode);
|
|
119
|
-
|
|
120
|
-
metaTypes.push(metaType);
|
|
121
|
-
|
|
122
|
-
metaTypeVerified = true;
|
|
123
|
-
|
|
124
|
-
return metaTypeVerified;
|
|
125
|
-
}
|