occam-verify-cli 0.0.273 → 0.0.274
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/.swcrc +5 -0
- package/bin/abbreviations.js +4 -2
- package/bin/context/{package → release}/fileSystem.js +38 -25
- package/bin/fileNames.js +7 -7
- package/bin/loadReleaseContexts.js +52 -0
- package/bin/main.js +8 -9
- package/bin/options.js +2 -2
- package/bin/utilities/fileSystem.js +13 -15
- package/lib/assertion.js +140 -0
- package/lib/axiom.js +90 -0
- package/lib/browser.js +27 -0
- package/lib/combinator.js +58 -0
- package/lib/conclusion.js +140 -0
- package/lib/constants.js +42 -0
- package/lib/constructor.js +76 -0
- package/lib/context/file.js +342 -0
- package/lib/context/metaproof.js +232 -0
- package/lib/context/proof.js +211 -0
- package/lib/context/release.js +303 -0
- package/lib/main.js +27 -0
- package/lib/metaAssertion.js +200 -0
- package/lib/metaSubstitution.js +123 -0
- package/lib/permutationsMatrix.js +466136 -0
- package/lib/premise.js +168 -0
- package/lib/rule.js +139 -0
- package/lib/ruleNames.js +46 -0
- package/lib/type.js +153 -0
- package/lib/utilities/array.js +99 -0
- package/lib/utilities/metastatement.js +45 -0
- package/lib/utilities/permutations.js +114 -0
- package/lib/utilities/query.js +81 -0
- package/lib/utilities/string.js +54 -0
- package/lib/variable.js +94 -0
- package/lib/verify/IndicativeConditional.js +29 -0
- package/lib/verify/assertion/type.js +52 -0
- package/lib/verify/axiom.js +52 -0
- package/lib/verify/conclusion.js +34 -0
- package/lib/verify/conditinalInference.js +30 -0
- package/lib/verify/declaration/combinator.js +24 -0
- package/lib/verify/declaration/constructor.js +24 -0
- package/lib/verify/declaration/topLevel.js +51 -0
- package/lib/verify/declaration/type.js +24 -0
- package/lib/verify/declaration/variable.js +24 -0
- package/lib/verify/equality.js +45 -0
- package/lib/verify/file.js +39 -0
- package/lib/verify/files.js +48 -0
- package/lib/verify/label.js +24 -0
- package/lib/verify/labels.js +27 -0
- package/lib/verify/metaDerivation.js +94 -0
- package/lib/verify/metaproof.js +81 -0
- package/lib/verify/metastatement/qualified.js +31 -0
- package/lib/verify/metastatement/unqualified.js +39 -0
- package/lib/verify/premiseOrPremises.js +39 -0
- package/lib/verify/release.js +61 -0
- package/lib/verify/rule.js +61 -0
- package/lib/verify/statement/qualified.js +24 -0
- package/lib/verify/statement/unqualified.js +32 -0
- package/lib/verify/statement.js +43 -0
- package/lib/verify/statementAsCombinator.js +102 -0
- package/lib/verify/supposition.js +29 -0
- package/lib/verify/term.js +121 -0
- package/lib/verify/termAsConstructor.js +126 -0
- package/lib/verify/termAsVariable.js +31 -0
- package/lib/verify/type.js +45 -0
- package/lib/verify/unconditionalInference.js +31 -0
- package/lib/verify/variable.js +48 -0
- package/package.json +21 -5
- package/{bin → src}/assertion.js +2 -4
- package/src/axiom.js +49 -0
- package/src/browser.js +4 -0
- package/{bin → src}/combinator.js +2 -4
- package/{bin → src}/conclusion.js +4 -6
- package/src/constants.js +9 -0
- package/{bin → src}/constructor.js +2 -4
- package/{bin → src}/context/file.js +34 -24
- package/{bin → src}/context/metaproof.js +13 -3
- package/{bin → src}/context/proof.js +13 -3
- package/src/context/release.js +219 -0
- package/src/main.js +4 -0
- package/{bin → src}/metaAssertion.js +4 -6
- package/{bin → src}/metaSubstitution.js +2 -4
- package/{bin → src}/permutationsMatrix.js +1 -1
- package/{bin → src}/premise.js +6 -8
- package/{bin → src}/rule.js +24 -15
- package/src/ruleNames.js +10 -0
- package/{bin → src}/type.js +1 -3
- package/{bin → src}/utilities/array.js +19 -24
- package/{bin → src}/utilities/metastatement.js +5 -10
- package/{bin → src}/utilities/permutations.js +4 -4
- package/{bin → src}/utilities/query.js +8 -18
- package/{bin → src}/utilities/string.js +4 -10
- package/{bin → src}/variable.js +1 -3
- package/src/verify/IndicativeConditional.js +20 -0
- package/{bin → src}/verify/assertion/type.js +8 -14
- package/src/verify/axiom.js +68 -0
- package/{bin → src}/verify/conclusion.js +4 -6
- package/src/verify/conditinalInference.js +25 -0
- package/{bin → src}/verify/declaration/combinator.js +3 -5
- package/{bin → src}/verify/declaration/constructor.js +3 -5
- package/{bin → src}/verify/declaration/topLevel.js +8 -10
- package/{bin → src}/verify/declaration/type.js +3 -5
- package/{bin → src}/verify/declaration/variable.js +3 -5
- package/{bin → src}/verify/equality.js +4 -6
- package/{bin → src}/verify/file.js +9 -15
- package/{bin → src}/verify/files.js +5 -7
- package/{bin → src}/verify/label.js +3 -9
- package/{bin → src}/verify/labels.js +2 -4
- package/{bin → src}/verify/metaDerivation.js +24 -18
- package/{bin → src}/verify/metaproof.js +6 -7
- package/{bin → src}/verify/metastatement/qualified.js +4 -10
- package/{bin → src}/verify/metastatement/unqualified.js +5 -11
- package/{bin → src}/verify/premiseOrPremises.js +9 -10
- package/src/verify/release.js +70 -0
- package/{bin → src}/verify/rule.js +13 -21
- package/{bin → src}/verify/statement/qualified.js +3 -5
- package/{bin → src}/verify/statement/unqualified.js +3 -5
- package/{bin → src}/verify/statement.js +7 -13
- package/{bin → src}/verify/statementAsCombinator.js +8 -14
- package/{bin → src}/verify/supposition.js +4 -6
- package/{bin → src}/verify/term.js +7 -13
- package/{bin → src}/verify/termAsConstructor.js +13 -19
- package/{bin → src}/verify/termAsVariable.js +3 -9
- package/{bin → src}/verify/type.js +7 -13
- package/{bin → src}/verify/unconditionalInference.js +4 -6
- package/{bin → src}/verify/variable.js +6 -12
- package/bin/axiom.js +0 -52
- package/bin/consequent.js +0 -19
- package/bin/constants.js +0 -19
- package/bin/context/package.js +0 -221
- package/bin/loadPackageContexts.js +0 -53
- package/bin/permutations.js +0 -3
- package/bin/ruleNames.js +0 -23
- package/bin/verify/axiom/IndicativeConditional.js +0 -54
- package/bin/verify/axiom/unqualifiedStatement.js +0 -40
- package/bin/verify/axiom.js +0 -37
- package/bin/verify/conditinalInference.js +0 -36
- package/bin/verify/consequent.js +0 -32
- package/bin/verify/metaSupposition.js +0 -24
- package/bin/verify/package.js +0 -81
- package/index.js +0 -9
|
@@ -0,0 +1,102 @@
|
|
|
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 verifyStatementAsCombinator;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _combinator = /*#__PURE__*/ _interopRequireDefault(require("../combinator"));
|
|
12
|
+
var _string = require("../utilities/string");
|
|
13
|
+
var _query = require("../utilities/query");
|
|
14
|
+
var _ruleNames = require("../ruleNames");
|
|
15
|
+
function _interopRequireDefault(obj) {
|
|
16
|
+
return obj && obj.__esModule ? obj : {
|
|
17
|
+
default: obj
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function verifyStatementAsCombinator(statementNode, context) {
|
|
21
|
+
var statementVerifiedAsCombinator = false;
|
|
22
|
+
var statementString = (0, _string.nodeAsString)(statementNode);
|
|
23
|
+
context.debug("Verifying the ".concat(statementString, " statement as a combinator..."));
|
|
24
|
+
var nonTerminalNode = statementNode, childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, context);
|
|
25
|
+
if (childNodesVerified) {
|
|
26
|
+
statementVerifiedAsCombinator = true;
|
|
27
|
+
}
|
|
28
|
+
if (statementVerifiedAsCombinator) {
|
|
29
|
+
var combinator = _combinator.default.fromStatementNode(statementNode);
|
|
30
|
+
context.addCombinator(combinator);
|
|
31
|
+
var statementString1 = (0, _string.nodeAsString)(statementNode);
|
|
32
|
+
context.info("Verified the '".concat(statementString1, "' combinator."));
|
|
33
|
+
}
|
|
34
|
+
return statementVerifiedAsCombinator;
|
|
35
|
+
}
|
|
36
|
+
function verifyNode(node, context) {
|
|
37
|
+
var nodeVerified;
|
|
38
|
+
var nodeTerminalNode = node.isTerminalNode();
|
|
39
|
+
if (nodeTerminalNode) {
|
|
40
|
+
var terminalNode = node, terminalNodeVerified = verifyTerminalNode(terminalNode, context);
|
|
41
|
+
nodeVerified = terminalNodeVerified; ///
|
|
42
|
+
} else {
|
|
43
|
+
var nonTerminalNode = node, nonTerminalNodeVerified = verifyNonTerminalNode(nonTerminalNode, context);
|
|
44
|
+
nodeVerified = nonTerminalNodeVerified; ///
|
|
45
|
+
}
|
|
46
|
+
return nodeVerified;
|
|
47
|
+
}
|
|
48
|
+
function verifyChildNodes(childNodes, context) {
|
|
49
|
+
var childNodesVerified = childNodes.every(function(childNode) {
|
|
50
|
+
var node = childNode, nodeVerified = verifyNode(node, context);
|
|
51
|
+
if (nodeVerified) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
return childNodesVerified;
|
|
56
|
+
}
|
|
57
|
+
function verifyTerminalNode(terminalNode, context) {
|
|
58
|
+
var terminalNodeVerified = true;
|
|
59
|
+
return terminalNodeVerified;
|
|
60
|
+
}
|
|
61
|
+
function verifyNonTerminalNode(nonTerminalNode, context) {
|
|
62
|
+
var nonTerminalNodeVerified;
|
|
63
|
+
var ruleName = nonTerminalNode.getRuleName();
|
|
64
|
+
switch(ruleName){
|
|
65
|
+
case _ruleNames.TYPE_RULE_NAME:
|
|
66
|
+
{
|
|
67
|
+
var typeNode = nonTerminalNode, typeNodeVerified = verifyTypeNode(typeNode, context);
|
|
68
|
+
nonTerminalNodeVerified = typeNodeVerified; ///
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
case _ruleNames.TERM_RULE_NAME:
|
|
72
|
+
{
|
|
73
|
+
var termNode = nonTerminalNode, termNodeVerified = verifyTermNode(termNode, context);
|
|
74
|
+
nonTerminalNodeVerified = termNodeVerified; ///
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
default:
|
|
78
|
+
{
|
|
79
|
+
var childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, context);
|
|
80
|
+
nonTerminalNodeVerified = childNodesVerified; ///
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return nonTerminalNodeVerified;
|
|
85
|
+
}
|
|
86
|
+
function verifyTypeNode(typeNode, context) {
|
|
87
|
+
var typeNodeVerified = false;
|
|
88
|
+
var typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = context.isTypePresentByTypeName(typeName);
|
|
89
|
+
if (!typePresent) {
|
|
90
|
+
context.error("The type '".concat(typeName, "' is missing."));
|
|
91
|
+
} else {
|
|
92
|
+
typeNodeVerified = true;
|
|
93
|
+
}
|
|
94
|
+
return typeNodeVerified;
|
|
95
|
+
}
|
|
96
|
+
function verifyTermNode(termNode, context) {
|
|
97
|
+
var termNodeVerified = false;
|
|
98
|
+
debugger;
|
|
99
|
+
return termNodeVerified;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50QXNDb21iaW5hdG9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgQ29tYmluYXRvciBmcm9tIFwiLi4vY29tYmluYXRvclwiO1xuXG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSwgVFlQRV9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVN0YXRlbWVudEFzQ29tYmluYXRvcihzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCBzdGF0ZW1lbnRWZXJpZmllZEFzQ29tYmluYXRvciA9IGZhbHNlO1xuXG4gIGNvbnN0IHN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyhzdGF0ZW1lbnROb2RlKTtcblxuICBjb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICR7c3RhdGVtZW50U3RyaW5nfSBzdGF0ZW1lbnQgYXMgYSBjb21iaW5hdG9yLi4uYCk7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gc3RhdGVtZW50Tm9kZSwgIC8vL1xuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBjb250ZXh0KTtcblxuICBpZiAoY2hpbGROb2Rlc1ZlcmlmaWVkKSB7XG4gICAgc3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IgPSB0cnVlO1xuICB9XG5cbiAgaWYgKHN0YXRlbWVudFZlcmlmaWVkQXNDb21iaW5hdG9yKSB7XG4gICAgY29uc3QgY29tYmluYXRvciA9IENvbWJpbmF0b3IuZnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LmFkZENvbWJpbmF0b3IoY29tYmluYXRvcik7XG5cbiAgICBjb25zdCBzdGF0ZW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoc3RhdGVtZW50Tm9kZSk7XG5cbiAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHtzdGF0ZW1lbnRTdHJpbmd9JyBjb21iaW5hdG9yLmApO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlbWVudFZlcmlmaWVkQXNDb21iaW5hdG9yO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb2RlKG5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVWZXJpZmllZDtcblxuICBjb25zdCBub2RlVGVybWluYWxOb2RlID0gbm9kZS5pc1Rlcm1pbmFsTm9kZSgpO1xuXG4gIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgY29uc3QgdGVybWluYWxOb2RlID0gbm9kZSwgIC8vL1xuICAgICAgICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICBub2RlVmVyaWZpZWQgPSB0ZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gIH1cblxuICByZXR1cm4gbm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgY2hpbGROb2Rlc1ZlcmlmaWVkID0gY2hpbGROb2Rlcy5ldmVyeSgoY2hpbGROb2RlKSA9PiB7XG4gICAgY29uc3Qgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9kZShub2RlLCBjb250ZXh0KTtcblxuICAgIGlmIChub2RlVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXNWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICBjb25zdCB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRydWU7XG5cbiAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICBjYXNlIFRZUEVfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0eXBlTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0eXBlTm9kZVZlcmlmaWVkID0gdmVyaWZ5VHlwZU5vZGUodHlwZU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHR5cGVOb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRFUk1fUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0ZXJtTm9kZVZlcmlmaWVkID0gdmVyaWZ5VGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRlcm1Ob2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgY29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gY2hpbGROb2Rlc1ZlcmlmaWVkOyAvLy9cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUeXBlTm9kZSh0eXBlTm9kZSwgY29udGV4dCkge1xuICBsZXQgdHlwZU5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICBjb250ZXh0LmVycm9yKGBUaGUgdHlwZSAnJHt0eXBlTmFtZX0nIGlzIG1pc3NpbmcuYCk7XG4gIH0gZWxzZSB7XG4gICAgdHlwZU5vZGVWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdHlwZU5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1Ob2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBkZWJ1Z2dlclxuXG4gIHJldHVybiB0ZXJtTm9kZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVN0YXRlbWVudEFzQ29tYmluYXRvciIsInN0YXRlbWVudE5vZGUiLCJjb250ZXh0Iiwic3RhdGVtZW50VmVyaWZpZWRBc0NvbWJpbmF0b3IiLCJzdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc1ZlcmlmaWVkIiwidmVyaWZ5Q2hpbGROb2RlcyIsImNvbWJpbmF0b3IiLCJDb21iaW5hdG9yIiwiZnJvbVN0YXRlbWVudE5vZGUiLCJhZGRDb21iaW5hdG9yIiwiaW5mbyIsInZlcmlmeU5vZGUiLCJub2RlIiwibm9kZVZlcmlmaWVkIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsImV2ZXJ5IiwiY2hpbGROb2RlIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIlRZUEVfUlVMRV9OQU1FIiwidHlwZU5vZGUiLCJ0eXBlTm9kZVZlcmlmaWVkIiwidmVyaWZ5VHlwZU5vZGUiLCJURVJNX1JVTEVfTkFNRSIsInRlcm1Ob2RlIiwidGVybU5vZGVWZXJpZmllZCIsInZlcmlmeVRlcm1Ob2RlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBUUE7OztlQUF3QkE7OzsrREFORDtzQkFFTTtxQkFDUTt5QkFDVTs7Ozs7O0FBRWhDLFNBQVNBLDRCQUE0QkMsYUFBYSxFQUFFQyxPQUFPLEVBQUU7SUFDMUUsSUFBSUMsZ0NBQWdDLEtBQUs7SUFFekMsSUFBTUMsa0JBQWtCQyxJQUFBQSxvQkFBWSxFQUFDSjtJQUVyQ0MsUUFBUUksS0FBSyxDQUFDLEFBQUMsaUJBQWdDLE9BQWhCRixpQkFBZ0I7SUFFL0MsSUFBTUcsa0JBQWtC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
|
|
@@ -0,0 +1,29 @@
|
|
|
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 verifySupposition;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _assertion = /*#__PURE__*/ _interopRequireDefault(require("../assertion"));
|
|
12
|
+
var _unqualified = /*#__PURE__*/ _interopRequireDefault(require("../verify/statement/unqualified"));
|
|
13
|
+
var _query = require("../utilities/query");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var unqualifiedStatementNodeQuery = (0, _query.nodeQuery)("/supposition/unqualifiedStatement!");
|
|
20
|
+
function verifySupposition(suppositionNode, suppositions, context) {
|
|
21
|
+
var unqualifiedStatementNode = unqualifiedStatementNodeQuery(suppositionNode), unqualifiedStatementVerified = (0, _unqualified.default)(unqualifiedStatementNode, context), suppositionVerified = unqualifiedStatementVerified;
|
|
22
|
+
if (suppositionVerified) {
|
|
23
|
+
var supposition = _assertion.default.fromUnqualifiedStatementNode(unqualifiedStatementNode);
|
|
24
|
+
suppositions.push(supposition);
|
|
25
|
+
}
|
|
26
|
+
return suppositionVerified;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvc3VwcG9zaXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uL2Fzc2VydGlvblwiO1xuaW1wb3J0IHZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50IGZyb20gXCIuLi92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvc3VwcG9zaXRpb24vdW5xdWFsaWZpZWRTdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlTdXBwb3NpdGlvbihzdXBwb3NpdGlvbk5vZGUsIHN1cHBvc2l0aW9ucywgY29udGV4dCkge1xuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZFN0YXRlbWVudE5vZGVRdWVyeShzdXBwb3NpdGlvbk5vZGUpLFxuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBjb250ZXh0KSxcbiAgICAgICAgc3VwcG9zaXRpb25WZXJpZmllZCA9IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQ7XG5cbiAgaWYgKHN1cHBvc2l0aW9uVmVyaWZpZWQpIHtcbiAgICBjb25zdCBzdXBwb3NpdGlvbiA9IEFzc2VydGlvbi5mcm9tVW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKHVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSk7XG5cbiAgICBzdXBwb3NpdGlvbnMucHVzaChzdXBwb3NpdGlvbik7XG4gIH1cblxuICByZXR1cm4gc3VwcG9zaXRpb25WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlTdXBwb3NpdGlvbiIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5Iiwic3VwcG9zaXRpb25Ob2RlIiwic3VwcG9zaXRpb25zIiwiY29udGV4dCIsInVucXVhbGlmaWVkU3RhdGVtZW50Tm9kZSIsInVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQiLCJ2ZXJpZnlVbnF1YWxpZmllZFN0YXRlbWVudCIsInN1cHBvc2l0aW9uVmVyaWZpZWQiLCJzdXBwb3NpdGlvbiIsIkFzc2VydGlvbiIsImZyb21VbnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFTQTs7O2VBQXdCQTs7OzhEQVBGO2dFQUNpQjtxQkFFYjs7Ozs7O0FBRTFCLElBQU1DLGdDQUFnQ0MsSUFBQUEsZ0JBQVMsRUFBQztBQUVqQyxTQUFTRixrQkFBa0JHLGVBQWUsRUFBRUMsWUFBWSxFQUFFQyxPQUFPLEVBQUU7SUFDaEYsSUFBTUMsMkJBQTJCTCw4QkFBOEJFLGtCQUN6REksK0JBQStCQyxJQUFBQSxvQkFBMEIsRUFBQ0YsMEJBQTBCRCxVQUNwRkksc0JBQXNCRjtJQUU1QixJQUFJRSxxQkFBcUI7UUFDdkIsSUFBTUMsY0FBY0Msa0JBQVMsQ0FBQ0MsNEJBQTRCLENBQUNOO1FBRTNERixhQUFhUyxJQUFJLENBQUNIO0lBQ3BCLENBQUM7SUFFRCxPQUFPRDtBQUNUIn0=
|
|
@@ -0,0 +1,121 @@
|
|
|
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 verifyTerm;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _termAsVariable = /*#__PURE__*/ _interopRequireDefault(require("../verify/termAsVariable"));
|
|
12
|
+
var _array = require("../utilities/array");
|
|
13
|
+
var _string = require("../utilities/string");
|
|
14
|
+
var _ruleNames = require("../ruleNames");
|
|
15
|
+
var _query = require("../utilities/query");
|
|
16
|
+
function _interopRequireDefault(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!");
|
|
22
|
+
function verifyTerm(termNode, types, values, context) {
|
|
23
|
+
var termVerified = false;
|
|
24
|
+
var names = [], termVerifiedAsVariable = (0, _termAsVariable.default)(termNode, types, names, values, context);
|
|
25
|
+
if (termVerifiedAsVariable) {
|
|
26
|
+
termVerified = true;
|
|
27
|
+
} else {
|
|
28
|
+
var constructors = context.getConstructors(), constructor = constructors.find(function(constructor) {
|
|
29
|
+
var termVerifiedAgainstConstructor = verifyTermAgainstConstructor(termNode, constructor, context);
|
|
30
|
+
if (termVerifiedAgainstConstructor) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
}) || null;
|
|
34
|
+
if (constructor !== null) {
|
|
35
|
+
var type = constructor.getType(), value = termNode; ///
|
|
36
|
+
types.push(type);
|
|
37
|
+
values.push(value);
|
|
38
|
+
termVerified = true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return termVerified;
|
|
42
|
+
}
|
|
43
|
+
function verifyTermAgainstConstructor(termNode, constructor, context) {
|
|
44
|
+
var constructorTermNode = constructor.getTermNode(), node = termNode, constructorNode = constructorTermNode, nodeVerified = verifyNode(node, constructorNode, context), termVerifiedAgainstConstructor = nodeVerified; ///
|
|
45
|
+
return termVerifiedAgainstConstructor;
|
|
46
|
+
}
|
|
47
|
+
function verifyNode(node, constructorNode, context) {
|
|
48
|
+
var nodeVerified;
|
|
49
|
+
var nodeTerminalNode = node.isTerminalNode(), constructorNodeTerminalNode = constructorNode.isTerminalNode();
|
|
50
|
+
if (nodeTerminalNode === constructorNodeTerminalNode) {
|
|
51
|
+
if (nodeTerminalNode) {
|
|
52
|
+
var terminalNode = node, constructorTerminalNode = constructorNode, terminalNodeVerified = verifyTerminalNode(terminalNode, constructorTerminalNode, context);
|
|
53
|
+
nodeVerified = terminalNodeVerified; ///
|
|
54
|
+
} else {
|
|
55
|
+
var nonTerminalNode = node, constructorNonTerminalNode = constructorNode, nonTerminalNodeVerified = verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, context);
|
|
56
|
+
nodeVerified = nonTerminalNodeVerified; ///
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return nodeVerified;
|
|
60
|
+
}
|
|
61
|
+
function verifyChildNodes(childNodes, constructorChildNodes, context) {
|
|
62
|
+
var childNodesVerified = false;
|
|
63
|
+
var childNodesLength = childNodes.length, constructorChildNodesLength = constructorChildNodes.length;
|
|
64
|
+
if (childNodesLength === constructorChildNodesLength) {
|
|
65
|
+
childNodesVerified = childNodes.every(function(childNode, index) {
|
|
66
|
+
var constructorChildNode = constructorChildNodes[index], node = childNode, constructorNode = constructorChildNode, nodeVerified = verifyNode(node, constructorNode, context);
|
|
67
|
+
if (nodeVerified) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return childNodesVerified;
|
|
73
|
+
}
|
|
74
|
+
function verifyTerminalNode(terminalNode, constructorTerminalNode, context) {
|
|
75
|
+
var terminalNodeVerified = false;
|
|
76
|
+
var matches = terminalNode.match(constructorTerminalNode);
|
|
77
|
+
if (matches) {
|
|
78
|
+
terminalNodeVerified = true;
|
|
79
|
+
}
|
|
80
|
+
return terminalNodeVerified;
|
|
81
|
+
}
|
|
82
|
+
function verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, context) {
|
|
83
|
+
var nonTerminalNodeVerified = false;
|
|
84
|
+
var ruleName = nonTerminalNode.getRuleName(), constructorRuleName = constructorNonTerminalNode.getRuleName();
|
|
85
|
+
if (ruleName === constructorRuleName) {
|
|
86
|
+
switch(ruleName){
|
|
87
|
+
case _ruleNames.ARGUMENT_RULE_NAME:
|
|
88
|
+
{
|
|
89
|
+
var argumentNode = nonTerminalNode, constructorArgumentNode = constructorNonTerminalNode, argumentNodeVerified = verifyArgumentNode(argumentNode, constructorArgumentNode, context);
|
|
90
|
+
nonTerminalNodeVerified = argumentNodeVerified; ///
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
default:
|
|
94
|
+
{
|
|
95
|
+
var childNodes = nonTerminalNode.getChildNodes(), constructorChildNodes = constructorNonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, constructorChildNodes, context);
|
|
96
|
+
nonTerminalNodeVerified = childNodesVerified; ///
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return nonTerminalNodeVerified;
|
|
102
|
+
}
|
|
103
|
+
function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
|
|
104
|
+
var argumentNodeVerified = false;
|
|
105
|
+
var termNode = termNodeQuery(argumentNode);
|
|
106
|
+
if (termNode === null) {
|
|
107
|
+
var argumentString = (0, _string.nodeAsString)(argumentNode);
|
|
108
|
+
context.error("The ".concat(argumentString, " argument should be a term, not a type"));
|
|
109
|
+
} else {
|
|
110
|
+
var types = [], values = [], termVerified = verifyTerm(termNode, types, values, context);
|
|
111
|
+
if (termVerified) {
|
|
112
|
+
var firstType = (0, _array.first)(types), termType = firstType, typeNode = typeNodeQuery(constructorArgumentNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), type = context.findTypeByTypeName(typeName), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
113
|
+
if (termTypeEqualToOrSubTypeOfType) {
|
|
114
|
+
argumentNodeVerified = true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return argumentNodeVerified;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlIGZyb20gXCIuLi92ZXJpZnkvdGVybUFzVmFyaWFibGVcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuaW1wb3J0IHsgQVJHVU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5LCB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90ZXJtIVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdHlwZSFcIilcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIHZhbHVlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbmFtZXMgPSBbXSxcbiAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB0eXBlcywgbmFtZXMsIHZhbHVlcywgY29udGV4dCk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICB0ZXJtVmVyaWZpZWQgPSB0cnVlO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCksXG4gICAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZmluZCgoY29uc3RydWN0b3IpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGNvbnN0cnVjdG9yLCBjb250ZXh0KTtcblxuICAgICAgICAgICAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSB8fCBudWxsO1xuXG4gICAgaWYgKGNvbnN0cnVjdG9yICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gY29uc3RydWN0b3IuZ2V0VHlwZSgpLFxuICAgICAgICAgICAgdmFsdWUgPSB0ZXJtTm9kZTsgLy8vXG5cbiAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcblxuICAgICAgdGVybVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCBjb25zdHJ1Y3RvciwgY29udGV4dCkge1xuICBjb25zdCBjb25zdHJ1Y3RvclRlcm1Ob2RlID0gY29uc3RydWN0b3IuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgbm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGNvbnN0cnVjdG9yVGVybU5vZGUsIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IG5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vZGUobm9kZSwgY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub2RlVmVyaWZpZWQ7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgY29uc3RydWN0b3JOb2RlVGVybWluYWxOb2RlID0gY29uc3RydWN0b3JOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IGNvbnN0cnVjdG9yTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSA9IGNvbnN0cnVjdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBjb25zdHJ1Y3RvckNoaWxkTm9kZXMsIGNvbnRleHQpIHtcbiAgbGV0IGNoaWxkTm9kZXNWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGNoaWxkTm9kZXNMZW5ndGggPSBjaGlsZE5vZGVzLmxlbmd0aCxcbiAgICAgICAgY29uc3RydWN0b3JDaGlsZE5vZGVzTGVuZ3RoID0gY29uc3RydWN0b3JDaGlsZE5vZGVzLmxlbmd0aDtcblxuICBpZiAoY2hpbGROb2Rlc0xlbmd0aCA9PT0gY29uc3RydWN0b3JDaGlsZE5vZGVzTGVuZ3RoKSB7XG4gICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gY2hpbGROb2Rlcy5ldmVyeSgoY2hpbGROb2RlLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgY29uc3RydWN0b3JDaGlsZE5vZGUgPSBjb25zdHJ1Y3RvckNoaWxkTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBjb25zdHJ1Y3RvckNoaWxkTm9kZSwgIC8vL1xuICAgICAgICAgICAgbm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9kZShub2RlLCBjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobm9kZVZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXNWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JUZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IHRlcm1pbmFsTm9kZS5tYXRjaChjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSk7XG5cbiAgaWYgKG1hdGNoZXMpIHtcbiAgICB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCksXG4gICAgICAgIGNvbnN0cnVjdG9yUnVsZU5hbWUgPSBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpO1xuXG4gIGlmIChydWxlTmFtZSA9PT0gY29uc3RydWN0b3JSdWxlTmFtZSkge1xuICAgIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yQXJndW1lbnROb2RlID0gY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHZlcmlmeUFyZ3VtZW50Tm9kZShhcmd1bWVudE5vZGUsIGNvbnN0cnVjdG9yQXJndW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGFyZ3VtZW50Tm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JDaGlsZE5vZGVzID0gY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBjaGlsZE5vZGVzVmVyaWZpZWQgPSB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGNvbnN0cnVjdG9yQ2hpbGROb2RlcywgY29udGV4dCk7XG5cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBjaGlsZE5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29uc3RydWN0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgaWYgKHRlcm1Ob2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgYXJndW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke2FyZ3VtZW50U3RyaW5nfSBhcmd1bWVudCBzaG91bGQgYmUgYSB0ZXJtLCBub3QgYSB0eXBlYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICB2YWx1ZXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICAgIHRlcm1UeXBlID0gZmlyc3RUeXBlLCAvLy9cbiAgICAgICAgICAgIHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeShjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSksXG4gICAgICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgICAgIHR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSksXG4gICAgICAgICAgICB0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUgPSB0ZXJtVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0eXBlKTtcblxuICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZ3VtZW50Tm9kZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInRlcm1Ob2RlIiwidHlwZXMiLCJ2YWx1ZXMiLCJjb250ZXh0IiwidGVybVZlcmlmaWVkIiwibmFtZXMiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsImZpbmQiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yIiwidHlwZSIsImdldFR5cGUiLCJ2YWx1ZSIsInB1c2giLCJjb25zdHJ1Y3RvclRlcm1Ob2RlIiwiZ2V0VGVybU5vZGUiLCJub2RlIiwiY29uc3RydWN0b3JOb2RlIiwibm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9kZSIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yTm9kZVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGUiLCJjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9uVGVybWluYWxOb2RlIiwidmVyaWZ5Q2hpbGROb2RlcyIsImNoaWxkTm9kZXMiLCJjb25zdHJ1Y3RvckNoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZpZWQiLCJjaGlsZE5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiY29uc3RydWN0b3JDaGlsZE5vZGVzTGVuZ3RoIiwiZXZlcnkiLCJjaGlsZE5vZGUiLCJpbmRleCIsImNvbnN0cnVjdG9yQ2hpbGROb2RlIiwibWF0Y2hlcyIsIm1hdGNoIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsImNvbnN0cnVjdG9yUnVsZU5hbWUiLCJBUkdVTUVOVF9SVUxFX05BTUUiLCJhcmd1bWVudE5vZGUiLCJjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50Tm9kZVZlcmlmaWVkIiwidmVyaWZ5QXJndW1lbnROb2RlIiwiZ2V0Q2hpbGROb2RlcyIsImFyZ3VtZW50U3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZXJyb3IiLCJmaXJzdFR5cGUiLCJmaXJzdCIsInRlcm1UeXBlIiwidHlwZU5vZGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBd0JBOzs7bUVBVlM7cUJBRVg7c0JBQ087eUJBQ007cUJBQ2E7Ozs7OztBQUVoRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsb0JBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0YsV0FBV0ksUUFBUSxFQUFFQyxLQUFLLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxFQUFFO0lBQ25FLElBQUlDLGVBQWUsS0FBSztJQUV4QixJQUFNQyxRQUFRLEVBQUUsRUFDVkMseUJBQXlCQyxJQUFBQSx1QkFBb0IsRUFBQ1As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
|
|
@@ -0,0 +1,126 @@
|
|
|
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 verifyTermAsConstructor;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _term = /*#__PURE__*/ _interopRequireDefault(require("../verify/term"));
|
|
12
|
+
var _constructor = /*#__PURE__*/ _interopRequireDefault(require("../constructor"));
|
|
13
|
+
var _array = require("../utilities/array");
|
|
14
|
+
var _string = require("../utilities/string");
|
|
15
|
+
var _query = require("../utilities/query");
|
|
16
|
+
var _ruleNames = require("../ruleNames");
|
|
17
|
+
function _interopRequireDefault(obj) {
|
|
18
|
+
return obj && obj.__esModule ? obj : {
|
|
19
|
+
default: obj
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var typeNodeQuery = (0, _query.nodeQuery)("/argument/type");
|
|
23
|
+
function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
24
|
+
var termVerifiedAsConstructor = false;
|
|
25
|
+
var termString = (0, _string.nodeAsString)(termNode);
|
|
26
|
+
context.debug("Verifying the '".concat(termString, "' term as a constructor..."));
|
|
27
|
+
var nonTerminalNode = termNode, childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, context);
|
|
28
|
+
var type = null;
|
|
29
|
+
if (childNodesVerified) {
|
|
30
|
+
if (typeNode === null) {
|
|
31
|
+
termVerifiedAsConstructor = true;
|
|
32
|
+
} else {
|
|
33
|
+
var typeName = (0, _query.typeNameFromTypeNode)(typeNode);
|
|
34
|
+
type = context.findTypeByTypeName(typeName);
|
|
35
|
+
if (type !== null) {
|
|
36
|
+
termVerifiedAsConstructor = true;
|
|
37
|
+
} else {
|
|
38
|
+
var termString1 = (0, _string.nodeAsString)(termNode);
|
|
39
|
+
context.error("The '".concat(termString1, "' constructor's '").concat(typeName, "' type is missing."));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (termVerifiedAsConstructor) {
|
|
44
|
+
var constructor = _constructor.default.fromTermNodeAndType(termNode, type);
|
|
45
|
+
context.addConstructor(constructor);
|
|
46
|
+
var termString2 = (0, _string.nodeAsString)(termNode);
|
|
47
|
+
context.info("Verified the '".concat(termString2, "' constructor."));
|
|
48
|
+
}
|
|
49
|
+
return termVerifiedAsConstructor;
|
|
50
|
+
}
|
|
51
|
+
function verifyNode(node, context) {
|
|
52
|
+
var nodeVerified;
|
|
53
|
+
var nodeTerminalNode = node.isTerminalNode();
|
|
54
|
+
if (nodeTerminalNode) {
|
|
55
|
+
var terminalNode = node, terminalNodeVerified = verifyTerminalNode(terminalNode, context);
|
|
56
|
+
nodeVerified = terminalNodeVerified; ///
|
|
57
|
+
} else {
|
|
58
|
+
var nonTerminalNode = node, nonTerminalNodeVerified = verifyNonTerminalNode(nonTerminalNode, context);
|
|
59
|
+
nodeVerified = nonTerminalNodeVerified; ///
|
|
60
|
+
}
|
|
61
|
+
return nodeVerified;
|
|
62
|
+
}
|
|
63
|
+
function verifyChildNodes(childNodes, context) {
|
|
64
|
+
var childNodesVerified = childNodes.every(function(childNode) {
|
|
65
|
+
var node = childNode, nodeVerified = verifyNode(node, context);
|
|
66
|
+
if (nodeVerified) {
|
|
67
|
+
return true;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return childNodesVerified;
|
|
71
|
+
}
|
|
72
|
+
function verifyTerminalNode(terminalNode, context) {
|
|
73
|
+
var terminalNodeVerified = true;
|
|
74
|
+
return terminalNodeVerified;
|
|
75
|
+
}
|
|
76
|
+
function verifyNonTerminalNode(nonTerminalNode, context) {
|
|
77
|
+
var nonTerminalNodeVerified;
|
|
78
|
+
var ruleName = nonTerminalNode.getRuleName();
|
|
79
|
+
switch(ruleName){
|
|
80
|
+
case _ruleNames.ARGUMENT_RULE_NAME:
|
|
81
|
+
{
|
|
82
|
+
var argumentNode = nonTerminalNode, argumentNodeVerified = verifyArgumentNode(argumentNode, context);
|
|
83
|
+
nonTerminalNodeVerified = argumentNodeVerified; ///
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
case _ruleNames.TERM_RULE_NAME:
|
|
87
|
+
{
|
|
88
|
+
var termNode = nonTerminalNode, types = [], values = [], termVerified = (0, _term.default)(termNode, types, values, context);
|
|
89
|
+
if (termVerified) {
|
|
90
|
+
var firstType = (0, _array.first)(types), type = firstType; ///
|
|
91
|
+
if (type !== null) {
|
|
92
|
+
var termString = (0, _string.nodeAsString)(termNode);
|
|
93
|
+
context.error("The type of the constructor's compound '".concat(termString, "' term node is not null."));
|
|
94
|
+
} else {
|
|
95
|
+
nonTerminalNodeVerified = true; ///
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
default:
|
|
101
|
+
{
|
|
102
|
+
var childNodes = nonTerminalNode.getChildNodes(), childNodesVerified = verifyChildNodes(childNodes, context);
|
|
103
|
+
nonTerminalNodeVerified = childNodesVerified; ///
|
|
104
|
+
break;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return nonTerminalNodeVerified;
|
|
108
|
+
}
|
|
109
|
+
function verifyArgumentNode(argumentNode, context) {
|
|
110
|
+
var typeNodeVerified = false;
|
|
111
|
+
var typeNode = typeNodeQuery(argumentNode);
|
|
112
|
+
if (typeNode === null) {
|
|
113
|
+
var argumentString = (0, _string.nodeAsString)(argumentNode);
|
|
114
|
+
context.error("The ".concat(argumentString, " argument should be a type."));
|
|
115
|
+
} else {
|
|
116
|
+
var typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = context.isTypePresentByTypeName(typeName);
|
|
117
|
+
if (!typePresent) {
|
|
118
|
+
context.error("The type '".concat(typeName, "' is missing."));
|
|
119
|
+
} else {
|
|
120
|
+
typeNodeVerified = true;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return typeNodeVerified;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVBc1N0cmluZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuaW1wb3J0IHsgVEVSTV9SVUxFX05BTUUsIEFSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcblxuY29uc3QgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90eXBlXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUZXJtQXNDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgdHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBjb25zdCB0ZXJtU3RyaW5nID0gbm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBjb250ZXh0LmRlYnVnKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGFzIGEgY29uc3RydWN0b3IuLi5gKTtcblxuICBjb25zdCBub25UZXJtaW5hbE5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgY2hpbGROb2Rlc1ZlcmlmaWVkID0gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBjb250ZXh0KTtcblxuICBsZXQgdHlwZSA9IG51bGw7XG5cbiAgaWYgKGNoaWxkTm9kZXNWZXJpZmllZCkge1xuICAgIGlmICh0eXBlTm9kZSA9PT0gbnVsbCkge1xuICAgICAgdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpO1xuXG4gICAgICB0eXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICB0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSAnJHt0ZXJtU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHt0eXBlTmFtZX0nIHR5cGUgaXMgbWlzc2luZy5gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodGVybVZlcmlmaWVkQXNDb25zdHJ1Y3Rvcikge1xuICAgIGNvbnN0IGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3IuZnJvbVRlcm1Ob2RlQW5kVHlwZSh0ZXJtTm9kZSwgdHlwZSk7XG5cbiAgICBjb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcblxuICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgY29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIGNvbnN0cnVjdG9yLmApO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vZGUobm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBjb250ZXh0KTtcblxuICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gIH0gZWxzZSB7XG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gbm9kZSwgLy8vXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb250ZXh0KTtcblxuICAgIG5vZGVWZXJpZmllZCA9IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkOyAvLy9cbiAgfVxuXG4gIHJldHVybiBub2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgY29udGV4dCkge1xuICBjb25zdCBjaGlsZE5vZGVzVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbnRleHQpO1xuXG4gICAgaWYgKG5vZGVWZXJpZmllZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gY2hpbGROb2Rlc1ZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTtcblxuICByZXR1cm4gdGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBhcmd1bWVudE5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNhc2UgVEVSTV9SVUxFX05BTUU6IHtcbiAgICAgIGNvbnN0IHRlcm1Ob2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgIHR5cGVzID0gW10sXG4gICAgICAgICAgICB2YWx1ZXMgPSBbXSxcbiAgICAgICAgICAgIHRlcm1WZXJpZmllZCA9IHZlcmlmeVRlcm0odGVybU5vZGUsIHR5cGVzLCB2YWx1ZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICAgICAgdHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICAgICAgaWYgKHR5cGUgIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gbm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgICAgICAgIGNvbnRleHQuZXJyb3IoYFRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3RvcidzIGNvbXBvdW5kICcke3Rlcm1TdHJpbmd9JyB0ZXJtIG5vZGUgaXMgbm90IG51bGwuYCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSB0cnVlOyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBkZWZhdWx0OiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgY29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gY2hpbGROb2Rlc1ZlcmlmaWVkOyAvLy9cblxuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb250ZXh0KSB7XG4gIGxldCB0eXBlTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVOb2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgYXJndW1lbnRTdHJpbmcgPSBub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgIGNvbnRleHQuZXJyb3IoYFRoZSAke2FyZ3VtZW50U3RyaW5nfSBhcmd1bWVudCBzaG91bGQgYmUgYSB0eXBlLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gY29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICBpZiAoIXR5cGVQcmVzZW50KSB7XG4gICAgICBjb250ZXh0LmVycm9yKGBUaGUgdHlwZSAnJHt0eXBlTmFtZX0nIGlzIG1pc3NpbmcuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR5cGVOb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0eXBlTm9kZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVRlcm1Bc0NvbnN0cnVjdG9yIiwidHlwZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInRlcm1Ob2RlIiwidHlwZU5vZGUiLCJjb250ZXh0IiwidGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciIsInRlcm1TdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsIm5vblRlcm1pbmFsTm9kZSIsImNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwiY2hpbGROb2Rlc1ZlcmlmaWVkIiwidmVyaWZ5Q2hpbGROb2RlcyIsInR5cGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZXJyb3IiLCJjb25zdHJ1Y3RvciIsIkNvbnN0cnVjdG9yIiwiZnJvbVRlcm1Ob2RlQW5kVHlwZSIsImFkZENvbnN0cnVjdG9yIiwiaW5mbyIsInZlcmlmeU5vZGUiLCJub2RlIiwibm9kZVZlcmlmaWVkIiwibm9kZVRlcm1pbmFsTm9kZSIsImlzVGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlIiwidGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsImV2ZXJ5IiwiY2hpbGROb2RlIiwicnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsIkFSR1VNRU5UX1JVTEVfTkFNRSIsImFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50Tm9kZVZlcmlmaWVkIiwidmVyaWZ5QXJndW1lbnROb2RlIiwiVEVSTV9SVUxFX05BTUUiLCJ0eXBlcyIsInZhbHVlcyIsInRlcm1WZXJpZmllZCIsInZlcmlmeVRlcm0iLCJmaXJzdFR5cGUiLCJmaXJzdCIsInR5cGVOb2RlVmVyaWZpZWQiLCJhcmd1bWVudFN0cmluZyIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVlBOzs7ZUFBd0JBOzs7eURBVkQ7Z0VBQ0M7cUJBRUY7c0JBQ087cUJBQ21CO3lCQUNHOzs7Ozs7QUFFbkQsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDO0FBRWpCLFNBQVNGLHdCQUF3QkcsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRTtJQUMzRSxJQUFJQyw0QkFBNEIsS0FBSztJQUVyQyxJQUFNQyxhQUFhQyxJQUFBQSxvQkFBWSxFQUFDTDtJQUVoQ0UsUUFBUUksS0FBSyxDQUFDLEFBQUMsa0JBQTRCLE9BQVhGLFlBQVc7SUFFM0MsSUFBTUcsa0JBQWtCUCxVQUNsQlEsYUFBYUQsZ0JBQWdCRSxhQUFhLElBQzFDQyxxQkFBcUJDLGlCQUFpQkgsWUFBWU47SUFFeEQsSUFBSVUsT0FBTyxJQUFJO0lBRWYsSUFBSUYsb0JBQW9CO1FBQ3RCLElBQUlULGFBQWEsSUFBSSxFQUFFO1lBQ3JCRSw0QkFBNEIsSUFBSTtRQUNsQyxPQUFPO1lBQ0wsSUFBTVUsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNiO1lBRXRDVyxPQUFPVixRQUFRYSxrQkFBa0IsQ0FBQ0Y7WUFFbEMsSUFBSUQsU0FBUyxJQUFJLEVBQUU7Z0JBQ2pCVCw0QkFBNEIsSUFBSTtZQUNsQyxPQUFPO2dCQUNMLElBQU1DLGNBQWFDLElBQUFBLG9CQUFZLEVBQUNMO2dCQUVoQ0UsUUFBUWMsS0FBSyxDQUFDLEFBQUMsUUFBcUNILE9BQTlCVCxhQUFXLHFCQUE0QixPQUFUUyxVQUFTO1lBQy9ELENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlWLDJCQUEyQjtRQUM3QixJQUFNYyxjQUFjQyxvQkFBVyxDQUFDQyxtQkFBbUIsQ0FBQ25CLFVBQVVZO1FBRTlEVixRQUFRa0IsY0FBYyxDQUFDSDtRQUV2QixJQUFNYixjQUFhQyxJQUFBQSxvQkFBWSxFQUFDTDtR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
|
|
@@ -0,0 +1,31 @@
|
|
|
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 verifyTermAsVariable;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _query = require("../utilities/query");
|
|
12
|
+
var variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
|
|
13
|
+
function verifyTermAsVariable(termNode, types, names, values, context) {
|
|
14
|
+
var termVerifiedAsVariable = false;
|
|
15
|
+
var variableNode = variableNodeQuery(termNode);
|
|
16
|
+
if (variableNode !== null) {
|
|
17
|
+
var variableName = (0, _query.variableNameFromVariableNode)(variableNode), variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
18
|
+
if (!variablePresent) {
|
|
19
|
+
context.error("The ".concat(variableName, " variable is not present."));
|
|
20
|
+
} else {
|
|
21
|
+
var variable = context.findVariableByVariableName(variableName), type = variable.getType(), name = variableName, value = variable.getValue();
|
|
22
|
+
types.push(type);
|
|
23
|
+
names.push(name);
|
|
24
|
+
values.push(value);
|
|
25
|
+
termVerifiedAsVariable = true;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return termVerifiedAsVariable;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzVmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSwgdmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZX0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB2YXJpYWJsZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90ZXJtL3ZhcmlhYmxlIVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHR5cGVzLCBuYW1lcywgdmFsdWVzLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gZmFsc2U7XG5cbiAgY29uc3QgdmFyaWFibGVOb2RlID0gdmFyaWFibGVOb2RlUXVlcnkodGVybU5vZGUpO1xuXG4gIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVQcmVzZW50ID0gY29udGV4dC5pc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lKHZhcmlhYmxlTmFtZSk7XG5cbiAgICBpZiAoIXZhcmlhYmxlUHJlc2VudCkge1xuICAgICAgY29udGV4dC5lcnJvcihgVGhlICR7dmFyaWFibGVOYW1lfSB2YXJpYWJsZSBpcyBub3QgcHJlc2VudC5gKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB2YXJpYWJsZSA9IGNvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKSxcbiAgICAgICAgICAgIHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4gICAgICAgICAgICB2YWx1ZSA9IHZhcmlhYmxlLmdldFZhbHVlKCk7XG5cbiAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgIG5hbWVzLnB1c2gobmFtZSk7XG5cbiAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcblxuICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFzVmFyaWFibGU7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInRlcm1Ob2RlIiwidHlwZXMiLCJuYW1lcyIsInZhbHVlcyIsImNvbnRleHQiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJlcnJvciIsInZhcmlhYmxlIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUiLCJ0eXBlIiwiZ2V0VHlwZSIsIm5hbWUiLCJ2YWx1ZSIsImdldFZhbHVlIiwicHVzaCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBTUE7OztlQUF3QkE7OztxQkFKK0I7QUFFdkQsSUFBTUMsb0JBQW9CQyxJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLFNBQVNGLHFCQUFxQkcsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUU7SUFDcEYsSUFBSUMseUJBQXlCLEtBQUs7SUFFbEMsSUFBTUMsZUFBZVIsa0JBQWtCRTtJQUV2QyxJQUFJTSxpQkFBaUIsSUFBSSxFQUFFO1FBQ3pCLElBQU1DLGVBQWVDLElBQUFBLG1DQUE0QixFQUFDRixlQUM1Q0csa0JBQWtCTCxRQUFRTSwrQkFBK0IsQ0FBQ0g7UUFFaEUsSUFBSSxDQUFDRSxpQkFBaUI7WUFDcEJMLFFBQVFPLEtBQUssQ0FBQyxBQUFDLE9BQW1CLE9BQWJKLGNBQWE7UUFDcEMsT0FBTztZQUNMLElBQU1LLFdBQVdSLFFBQVFTLDBCQUEwQixDQUFDTixlQUM5Q08sT0FBT0YsU0FBU0csT0FBTyxJQUN2QkMsT0FBT1QsY0FDUFUsUUFBUUwsU0FBU00sUUFBUTtZQUUvQmpCLE1BQU1rQixJQUFJLENBQUNMO1lBRVhaLE1BQU1pQixJQUFJLENBQUNIO1lBRVhiLE9BQU9nQixJQUFJLENBQUNGO1lBRVpaLHlCQUF5QixJQUFJO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBT0E7QUFDVCJ9
|
|
@@ -0,0 +1,45 @@
|
|
|
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 verifyType;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _type = /*#__PURE__*/ _interopRequireDefault(require("../type"));
|
|
12
|
+
var _query = require("../utilities/query");
|
|
13
|
+
function _interopRequireDefault(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function verifyType(typeNode, superTypeNode, context) {
|
|
19
|
+
var typeVerified = false;
|
|
20
|
+
var typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = context.isTypePresentByTypeName(typeName);
|
|
21
|
+
if (typePresent) {
|
|
22
|
+
context.error("The type '".concat(typeName, "' is already present."));
|
|
23
|
+
} else {
|
|
24
|
+
var superTypeName = (0, _query.typeNameFromTypeNode)(superTypeNode);
|
|
25
|
+
if (superTypeName === null) {
|
|
26
|
+
var type = _type.default.fromTypeName(typeName), typeString = type.asString();
|
|
27
|
+
context.addType(type);
|
|
28
|
+
typeVerified = true;
|
|
29
|
+
context.info("Verified the '".concat(typeString, "' type."));
|
|
30
|
+
} else {
|
|
31
|
+
var superType = context.findTypeByTypeName(superTypeName);
|
|
32
|
+
if (superType === null) {
|
|
33
|
+
context.error("The super-type '".concat(superTypeName, "' is missing."));
|
|
34
|
+
} else {
|
|
35
|
+
var type1 = _type.default.fromTypeNameAndSuperType(typeName, superType), typeString1 = type1.asString();
|
|
36
|
+
context.addType(type1);
|
|
37
|
+
typeVerified = true;
|
|
38
|
+
context.info("Verified the '".concat(typeString1, "' type."));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return typeVerified;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFR5cGUgZnJvbSBcIi4uL3R5cGVcIjtcblxuaW1wb3J0IHsgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVR5cGUodHlwZU5vZGUsIHN1cGVyVHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHR5cGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICh0eXBlUHJlc2VudCkge1xuICAgIGNvbnRleHQuZXJyb3IoYFRoZSB0eXBlICcke3R5cGVOYW1lfScgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN1cGVyVHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZShzdXBlclR5cGVOb2RlKTtcblxuICAgIGlmIChzdXBlclR5cGVOYW1lID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWUodHlwZU5hbWUpLFxuICAgICAgICAgICAgdHlwZVN0cmluZyA9IHR5cGUuYXNTdHJpbmcoKTtcblxuICAgICAgY29udGV4dC5hZGRUeXBlKHR5cGUpO1xuXG4gICAgICB0eXBlVmVyaWZpZWQgPSB0cnVlO1xuXG4gICAgICBjb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZS5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc3VwZXJUeXBlID0gY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoc3VwZXJUeXBlTmFtZSk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgY29udGV4dC5lcnJvcihgVGhlIHN1cGVyLXR5cGUgJyR7c3VwZXJUeXBlTmFtZX0nIGlzIG1pc3NpbmcuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWVBbmRTdXBlclR5cGUodHlwZU5hbWUsIHN1cGVyVHlwZSksXG4gICAgICAgICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlLmFzU3RyaW5nKCk7XG5cbiAgICAgICAgY29udGV4dC5hZGRUeXBlKHR5cGUpO1xuXG4gICAgICAgIHR5cGVWZXJpZmllZCA9IHRydWU7XG5cbiAgICAgICAgY29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR5cGVWZXJpZmllZDtcbn1cblxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGUiLCJ0eXBlTm9kZSIsInN1cGVyVHlwZU5vZGUiLCJjb250ZXh0IiwidHlwZVZlcmlmaWVkIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsInR5cGVQcmVzZW50IiwiaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUiLCJlcnJvciIsInN1cGVyVHlwZU5hbWUiLCJ0eXBlIiwiVHlwZSIsImZyb21UeXBlTmFtZSIsInR5cGVTdHJpbmciLCJhc1N0cmluZyIsImFkZFR5cGUiLCJpbmZvIiwic3VwZXJUeXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiZnJvbVR5cGVOYW1lQW5kU3VwZXJUeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFNQTs7O2VBQXdCQTs7O3lEQUpQO3FCQUVvQjs7Ozs7O0FBRXRCLFNBQVNBLFdBQVdDLFFBQVEsRUFBRUMsYUFBYSxFQUFFQyxPQUFPLEVBQUU7SUFDbkUsSUFBSUMsZUFBZSxLQUFLO0lBRXhCLElBQU1DLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDTCxXQUNoQ00sY0FBY0osUUFBUUssdUJBQXVCLENBQUNIO0lBRXBELElBQUlFLGFBQWE7UUFDZkosUUFBUU0sS0FBSyxDQUFDLEFBQUMsYUFBcUIsT0FBVEosVUFBUztJQUN0QyxPQUFPO1FBQ0wsSUFBTUssZ0JBQWdCSixJQUFBQSwyQkFBb0IsRUFBQ0o7UUFFM0MsSUFBSVEsa0JBQWtCLElBQUksRUFBRTtZQUMxQixJQUFNQyxPQUFPQyxhQUFJLENBQUNDLFlBQVksQ0FBQ1IsV0FDekJTLGFBQWFILEtBQUtJLFFBQVE7WUFFaENaLFFBQVFhLE9BQU8sQ0FBQ0w7WUFFaEJQLGVBQWUsSUFBSTtZQUVuQkQsUUFBUWMsSUFBSSxDQUFDLEFBQUMsaUJBQTJCLE9BQVhILFlBQVc7UUFDM0MsT0FBTztZQUNMLElBQU1JLFlBQVlmLFFBQVFnQixrQkFBa0IsQ0FBQ1Q7WUFFN0MsSUFBSVEsY0FBYyxJQUFJLEVBQUU7Z0JBQ3RCZixRQUFRTSxLQUFLLENBQUMsQUFBQyxtQkFBZ0MsT0FBZEMsZUFBYztZQUNqRCxPQUFPO2dCQUNMLElBQU1DLFFBQU9DLGFBQUksQ0FBQ1Esd0JBQXdCLENBQUNmLFVBQVVhLFlBQy9DSixjQUFhSCxNQUFLSSxRQUFRO2dCQUVoQ1osUUFBUWEsT0FBTyxDQUFDTDtnQkFFaEJQLGVBQWUsSUFBSTtnQkFFbkJELFFBQVFjLElBQUksQ0FBQyxBQUFDLGlCQUEyQixPQUFYSCxhQUFXO1lBQzNDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9WO0FBQ1QifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
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 verifyUnconditionalInference;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _conclusion = /*#__PURE__*/ _interopRequireDefault(require("../conclusion"));
|
|
12
|
+
var _unqualified = /*#__PURE__*/ _interopRequireDefault(require("../verify/metastatement/unqualified"));
|
|
13
|
+
var _query = require("../utilities/query");
|
|
14
|
+
function _interopRequireDefault(obj) {
|
|
15
|
+
return obj && obj.__esModule ? obj : {
|
|
16
|
+
default: obj
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
var metastatementNodeQuery = (0, _query.nodeQuery)("/unconditionalInference/unqualifiedMetastatement!/metastatement!"), unqualifiedMetastatementNodeQuery = (0, _query.nodeQuery)("/unconditionalInference/unqualifiedMetastatement!");
|
|
20
|
+
function verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, context) {
|
|
21
|
+
var unconditionalInferenceVerified = false;
|
|
22
|
+
var metastatementNode = metastatementNodeQuery(unconditionalInferenceNode), unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode), unqualifiedMetastatementVerified = (0, _unqualified.default)(unqualifiedMetastatementNode, context);
|
|
23
|
+
if (unqualifiedMetastatementVerified) {
|
|
24
|
+
var conclusion = _conclusion.default.fromMetastatementNode(metastatementNode);
|
|
25
|
+
conclusions.push(conclusion);
|
|
26
|
+
unconditionalInferenceVerified = true;
|
|
27
|
+
}
|
|
28
|
+
return unconditionalInferenceVerified;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdW5jb25kaXRpb25hbEluZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbmNsdXNpb24gZnJvbSBcIi4uL2NvbmNsdXNpb25cIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgbWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi91bmNvbmRpdGlvbmFsSW5mZXJlbmNlL3VucXVhbGlmaWVkTWV0YXN0YXRlbWVudCEvbWV0YXN0YXRlbWVudCFcIiksXG4gICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5jb25kaXRpb25hbEluZmVyZW5jZS91bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlVbmNvbmRpdGlvbmFsSW5mZXJlbmNlKHVuY29uZGl0aW9uYWxJbmZlcmVuY2VOb2RlLCBwcmVtaXNlcywgY29uY2x1c2lvbnMsIGNvbnRleHQpIHtcbiAgbGV0IHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bmNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZSksXG4gICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkodW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUpLFxuICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICBpZiAodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uY2x1c2lvbnMucHVzaChjb25jbHVzaW9uKTtcblxuICAgIHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdW5jb25kaXRpb25hbEluZmVyZW5jZVZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVVuY29uZGl0aW9uYWxJbmZlcmVuY2UiLCJtZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZVF1ZXJ5IiwidW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUiLCJwcmVtaXNlcyIsImNvbmNsdXNpb25zIiwiY29udGV4dCIsInVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCIsIm1ldGFzdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50IiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJwdXNoIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXdCQTs7OytEQVJEO2dFQUNvQjtxQkFFakI7Ozs7OztBQUUxQixJQUFNQyx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMscUVBQ25DQyxvQ0FBb0NELElBQUFBLGdCQUFTLEVBQUM7QUFFckMsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE9BQU8sRUFBRTtJQUMvRyxJQUFJQyxpQ0FBaUMsS0FBSztJQUUxQyxJQUFNQyxvQkFBb0JSLHVCQUF1QkcsNkJBQzNDTSwrQkFBK0JQLGtDQUFrQ0MsNkJBQ2pFTyxtQ0FBbUNDLElBQUFBLG9CQUE4QixFQUFDRiw4QkFBOEJIO0lBRXRHLElBQUlJLGtDQUFrQztRQUNwQyxJQUFNRSxhQUFhQyxtQkFBVSxDQUFDQyxxQkFBcUIsQ0FBQ047UUFFcERILFlBQVlVLElBQUksQ0FBQ0g7UUFFakJMLGlDQUFpQyxJQUFJO0lBQ3ZDLENBQUM7SUFFRCxPQUFPQTtBQUNUIn0=
|
|
@@ -0,0 +1,48 @@
|
|
|
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 verifyVariable;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
var _variable = /*#__PURE__*/ _interopRequireDefault(require("../variable"));
|
|
12
|
+
var _query = require("../utilities/query");
|
|
13
|
+
function _interopRequireDefault(obj) {
|
|
14
|
+
return obj && obj.__esModule ? obj : {
|
|
15
|
+
default: obj
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function verifyVariable(variableNode, typeNode, context) {
|
|
19
|
+
var variableVerified = false;
|
|
20
|
+
var variableName = (0, _query.variableNameFromVariableNode)(variableNode), variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
21
|
+
if (variablePresent) {
|
|
22
|
+
context.error("The variable '".concat(variableName, "' is already present."));
|
|
23
|
+
} else {
|
|
24
|
+
var variable = null;
|
|
25
|
+
var typeName = (0, _query.typeNameFromTypeNode)(typeNode);
|
|
26
|
+
if (typeName === null) {
|
|
27
|
+
var type = null, name = variableName; ///
|
|
28
|
+
variable = _variable.default.fromTypeAndName(type, name);
|
|
29
|
+
} else {
|
|
30
|
+
var type1 = context.findTypeByTypeName(typeName);
|
|
31
|
+
if (type1 === null) {
|
|
32
|
+
context.error("The '".concat(variableName, "' variable's '").concat(typeName, "' type is missing."));
|
|
33
|
+
} else {
|
|
34
|
+
var name1 = variableName; ///
|
|
35
|
+
variable = _variable.default.fromTypeAndName(type1, name1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (variable !== null) {
|
|
39
|
+
var variableString = variable.asString();
|
|
40
|
+
context.addVariable(variable);
|
|
41
|
+
variableVerified = true;
|
|
42
|
+
context.info("Verified the '".concat(variableString, "' variable."));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return variableVerified;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgdHlwZU5hbWVGcm9tVHlwZU5vZGUsIHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVZhcmlhYmxlKHZhcmlhYmxlTm9kZSwgdHlwZU5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGNvbnRleHQuaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gIGlmICh2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBjb250ZXh0LmVycm9yKGBUaGUgdmFyaWFibGUgJyR7dmFyaWFibGVOYW1lfScgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGxldCB2YXJpYWJsZSA9IG51bGw7XG5cbiAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKTtcbiAgICBcbiAgICBpZiAodHlwZU5hbWUgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBudWxsLFxuICAgICAgICAgICAgbmFtZSA9IHZhcmlhYmxlTmFtZTsgIC8vL1xuXG4gICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21UeXBlQW5kTmFtZSh0eXBlLCBuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IGNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgY29udGV4dC5lcnJvcihgVGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlJ3MgJyR7dHlwZU5hbWV9JyB0eXBlIGlzIG1pc3NpbmcuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuYW1lID0gdmFyaWFibGVOYW1lOyAgLy8vXG5cbiAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmFzU3RyaW5nKCk7XG5cbiAgICAgIGNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICB2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcblxuICAgICAgY29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlWYXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsInR5cGVOb2RlIiwiY29udGV4dCIsInZhcmlhYmxlVmVyaWZpZWQiLCJ2YXJpYWJsZU5hbWUiLCJ2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIiwidmFyaWFibGVQcmVzZW50IiwiaXNWYXJpYWJsZVByZXNlbnRCeVZhcmlhYmxlTmFtZSIsImVycm9yIiwidmFyaWFibGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZSIsIm5hbWUiLCJWYXJpYWJsZSIsImZyb21UeXBlQW5kTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInZhcmlhYmxlU3RyaW5nIiwiYXNTdHJpbmciLCJhZGRWYXJpYWJsZSIsImluZm8iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBd0JBOzs7NkRBSkg7cUJBRThDOzs7Ozs7QUFFcEQsU0FBU0EsZUFBZUMsWUFBWSxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRTtJQUN0RSxJQUFJQyxtQkFBbUIsS0FBSztJQUU1QixJQUFNQyxlQUFlQyxJQUFBQSxtQ0FBNEIsRUFBQ0wsZUFDNUNNLGtCQUFrQkosUUFBUUssK0JBQStCLENBQUNIO0lBRWhFLElBQUlFLGlCQUFpQjtRQUNuQkosUUFBUU0sS0FBSyxDQUFDLEFBQUMsaUJBQTZCLE9BQWJKLGNBQWE7SUFDOUMsT0FBTztRQUNMLElBQUlLLFdBQVcsSUFBSTtRQUVuQixJQUFNQyxXQUFXQyxJQUFBQSwyQkFBb0IsRUFBQ1Y7UUFFdEMsSUFBSVMsYUFBYSxJQUFJLEVBQUU7WUFDckIsSUFBTUUsT0FBTyxJQUFJLEVBQ1hDLE9BQU9ULGNBQWUsR0FBRztZQUUvQkssV0FBV0ssaUJBQVEsQ0FBQ0MsZUFBZSxDQUFDSCxNQUFNQztRQUM1QyxPQUFPO1lBQ0wsSUFBTUQsUUFBT1YsUUFBUWMsa0JBQWtCLENBQUNOO1lBRXhDLElBQUlFLFVBQVMsSUFBSSxFQUFFO2dCQUNqQlYsUUFBUU0sS0FBSyxDQUFDLEFBQUMsUUFBb0NFLE9BQTdCTixjQUFhLGtCQUF5QixPQUFUTSxVQUFTO1lBQzlELE9BQU87Z0JBQ0wsSUFBTUcsUUFBT1QsY0FBZSxHQUFHO2dCQUUvQkssV0FBV0ssaUJBQVEsQ0FBQ0MsZUFBZSxDQUFDSCxPQUFNQztZQUM1QyxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUlKLGFBQWEsSUFBSSxFQUFFO1lBQ3JCLElBQU1RLGlCQUFpQlIsU0FBU1MsUUFBUTtZQUV4Q2hCLFFBQVFpQixXQUFXLENBQUNWO1lBRXBCTixtQkFBbUIsSUFBSTtZQUV2QkQsUUFBUWtCLElBQUksQ0FBQyxBQUFDLGlCQUErQixPQUFmSCxnQkFBZTtRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU9kO0FBQ1QifQ==
|