occam-verify-cli 0.0.697 → 0.0.700
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/assignment/equality.js +7 -5
- package/lib/assignment/metavariable.js +62 -0
- package/lib/assignment/variable.js +7 -5
- package/lib/constructor.js +3 -10
- package/lib/context/file.js +37 -97
- package/lib/context/local.js +28 -22
- package/lib/context/localMeta.js +21 -21
- package/lib/context/release.js +2 -4
- package/lib/equality.js +15 -7
- package/lib/metaType.js +10 -10
- package/lib/metavariable.js +27 -31
- package/lib/mixins/context.js +107 -0
- package/lib/ruleNames.js +9 -1
- package/lib/substitution/metastatementForMetavariable.js +17 -10
- package/lib/substitution/statementForMetavariable.js +17 -10
- package/lib/substitution/termForVariable.js +17 -11
- package/lib/type.js +23 -27
- package/lib/utilities/node.js +3 -73
- package/lib/utilities/query.js +2 -16
- package/lib/utilities/tokens.js +1 -8
- package/lib/variable.js +43 -36
- package/lib/verifier/node/metastatement.js +2 -3
- package/lib/verifier/node/statementAsCombinator.js +1 -1
- package/lib/verifier/node.js +2 -2
- package/lib/verifier/nodes/metastatementForMetavariable.js +5 -5
- package/lib/verifier/nodes/statementForMetavariable.js +5 -5
- package/lib/verifier/nodes/termForVariable.js +6 -6
- package/lib/verifier/nodes.js +2 -2
- package/lib/verify/axiom.js +3 -8
- package/lib/verify/conclusion.js +2 -2
- package/lib/verify/conjecture.js +4 -9
- package/lib/verify/derivation.js +3 -8
- package/lib/verify/equality.js +11 -11
- package/lib/verify/file.js +2 -2
- package/lib/verify/lemma.js +4 -9
- package/lib/verify/metavariable.js +8 -6
- package/lib/verify/premises.js +28 -0
- package/lib/verify/rule.js +3 -8
- package/lib/verify/ruleDerivation.js +6 -8
- package/lib/verify/standaloneType.js +32 -0
- package/lib/verify/statement/unqualified.js +2 -2
- package/lib/verify/supposition.js +4 -7
- package/lib/verify/suppositions.js +37 -0
- package/lib/verify/term.js +3 -4
- package/lib/verify/termAndStandaloneType.js +39 -0
- package/lib/verify/termAsVariableAndStandaloneType.js +39 -0
- package/lib/verify/theorem.js +4 -9
- package/lib/verify/type.js +2 -2
- package/lib/verify/typeAssertion.js +59 -89
- package/lib/verify/variable.js +12 -10
- package/package.json +1 -1
- package/src/assignment/equality.js +13 -4
- package/src/assignment/metavariable.js +30 -0
- package/src/assignment/variable.js +15 -4
- package/src/constructor.js +2 -7
- package/src/context/file.js +50 -41
- package/src/context/local.js +40 -27
- package/src/context/localMeta.js +26 -22
- package/src/context/release.js +6 -9
- package/src/equality.js +12 -5
- package/src/metaType.js +10 -10
- package/src/metavariable.js +24 -22
- package/src/mixins/{file.js → context.js} +20 -2
- package/src/ruleNames.js +2 -0
- package/src/substitution/metastatementForMetavariable.js +13 -7
- package/src/substitution/statementForMetavariable.js +13 -7
- package/src/substitution/termForVariable.js +13 -9
- package/src/type.js +27 -39
- package/src/utilities/node.js +3 -81
- package/src/utilities/query.js +1 -19
- package/src/utilities/tokens.js +0 -8
- package/src/variable.js +48 -30
- package/src/verifier/node/metastatement.js +1 -3
- package/src/verifier/node/statementAsCombinator.js +1 -1
- package/src/verifier/nodes/metastatementForMetavariable.js +5 -7
- package/src/verifier/nodes/statementForMetavariable.js +5 -7
- package/src/verifier/nodes/termForVariable.js +6 -8
- package/src/verify/axiom.js +2 -8
- package/src/verify/conclusion.js +1 -1
- package/src/verify/conjecture.js +3 -9
- package/src/verify/derivation.js +2 -8
- package/src/verify/equality.js +10 -10
- package/src/verify/file.js +1 -1
- package/src/verify/lemma.js +3 -9
- package/src/verify/metavariable.js +10 -9
- package/src/verify/premises.js +17 -0
- package/src/verify/rule.js +2 -8
- package/src/verify/ruleDerivation.js +5 -7
- package/src/verify/standaloneType.js +34 -0
- package/src/verify/statement/unqualified.js +1 -1
- package/src/verify/supposition.js +2 -7
- package/src/verify/suppositions.js +29 -0
- package/src/verify/term.js +3 -6
- package/src/verify/termAndStandaloneType.js +37 -0
- package/src/verify/termAsVariableAndStandaloneType.js +38 -0
- package/src/verify/theorem.js +3 -9
- package/src/verify/type.js +1 -1
- package/src/verify/typeAssertion.js +79 -110
- package/src/verify/variable.js +13 -13
- package/lib/mixins/file.js +0 -83
- package/lib/mixins/logging.js +0 -39
- package/src/mixins/logging.js +0 -24
|
@@ -2,25 +2,18 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
default: function() {
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
13
8
|
return verifyTypeAssertion;
|
|
14
|
-
},
|
|
15
|
-
verifyVariableTypeAssertion: function() {
|
|
16
|
-
return verifyVariableTypeAssertion;
|
|
17
9
|
}
|
|
18
10
|
});
|
|
19
11
|
var _variable = /*#__PURE__*/ _interop_require_default(require("../variable"));
|
|
20
12
|
var _variable1 = /*#__PURE__*/ _interop_require_default(require("../assignment/variable"));
|
|
13
|
+
var _termAndStandaloneType = /*#__PURE__*/ _interop_require_default(require("../verify/termAndStandaloneType"));
|
|
14
|
+
var _termAsVariableAndStandaloneType = /*#__PURE__*/ _interop_require_default(require("../verify/termAsVariableAndStandaloneType"));
|
|
21
15
|
var _array = require("../utilities/array");
|
|
22
16
|
var _query = require("../utilities/query");
|
|
23
|
-
var _term = require("../verify/term");
|
|
24
17
|
function _interop_require_default(obj) {
|
|
25
18
|
return obj && obj.__esModule ? obj : {
|
|
26
19
|
default: obj
|
|
@@ -28,97 +21,74 @@ function _interop_require_default(obj) {
|
|
|
28
21
|
}
|
|
29
22
|
var termNodeQuery = (0, _query.nodeQuery)("/typeAssertion/term!"), typeNodeQuery = (0, _query.nodeQuery)("/typeAssertion/type!");
|
|
30
23
|
function verifyTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead) {
|
|
31
|
-
var typeAssertionVerified
|
|
24
|
+
var typeAssertionVerified;
|
|
32
25
|
var typeAssertionString = context.nodeAsString(typeAssertionNode);
|
|
33
26
|
context.trace("Verifying the '".concat(typeAssertionString, "' type assertion..."), typeAssertionNode);
|
|
34
|
-
var
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (typeAssertionVerified) {
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
}
|
|
27
|
+
var verifyTypeAssertionFunctions = [
|
|
28
|
+
verifyDerivedTypeAssertion,
|
|
29
|
+
verifyGivenTypeAssertion
|
|
30
|
+
];
|
|
31
|
+
typeAssertionVerified = verifyTypeAssertionFunctions.some(function(verifyTypeAssertionFunction) {
|
|
32
|
+
var typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, derived, context, verifyAhead);
|
|
33
|
+
if (typeAssertionVerified) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
49
37
|
if (typeAssertionVerified) {
|
|
50
|
-
context.debug("...verified the '".concat(typeAssertionString, "'
|
|
38
|
+
context.debug("...verified the '".concat(typeAssertionString, "' type assertion."), typeAssertionNode);
|
|
51
39
|
}
|
|
52
40
|
return typeAssertionVerified;
|
|
53
41
|
}
|
|
54
|
-
function
|
|
55
|
-
var
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
var
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
} else {
|
|
67
|
-
verifiedAhead = verifyAhead();
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
var assertedTypeEqualToOrSubTypeOfVariableType = assertedType.isEqualToOrSubTypeOf(variableType);
|
|
71
|
-
if (!assertedTypeEqualToOrSubTypeOfVariableType) {
|
|
72
|
-
var assertedTypeName1 = assertedType.getName(), variableTypeName1 = variableType.getName();
|
|
73
|
-
context.debug("The '".concat(assertedTypeName1, "' asserted type is not equal to or a sub-type of the '").concat(variableName, "' variable's '").concat(variableTypeName1, "' type."), typeAssertionNode);
|
|
74
|
-
} else {
|
|
75
|
-
var name = variableName, type = assertedType, variable1 = _variable.default.fromNameAndType(name, type), variableAssignment = _variable1.default.fromVariable(variable1), assignment = variableAssignment; ///
|
|
76
|
-
assignments.push(assignment);
|
|
77
|
-
verifiedAhead = verifyAhead();
|
|
78
|
-
if (!verifiedAhead) {
|
|
79
|
-
assignments.pop();
|
|
42
|
+
function verifyDerivedTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead) {
|
|
43
|
+
var derivedTypeAssertionVerified = false;
|
|
44
|
+
if (derived) {
|
|
45
|
+
var typeAssertionString = context.nodeAsString(typeAssertionNode);
|
|
46
|
+
context.trace("Verifying the '".concat(typeAssertionString, "' derived type assertion..."), typeAssertionNode);
|
|
47
|
+
var terms = [], types = [], termNode = termNodeQuery(typeAssertionNode), typeNode = typeNodeQuery(typeAssertionNode), termAndStandaloneTypeVerified = (0, _termAndStandaloneType.default)(termNode, typeNode, terms, types, context, function() {
|
|
48
|
+
var verifiedAhead = false;
|
|
49
|
+
var firstTerm = (0, _array.first)(terms), firstType = (0, _array.first)(types), term = firstTerm, type = firstType, termType = term.getType(), termTypeEqualToOrSuperTypeOfType = termType.isEqualToOrSuperTypeOf(type);
|
|
50
|
+
if (termTypeEqualToOrSuperTypeOfType) {
|
|
51
|
+
debugger;
|
|
52
|
+
if (false) {
|
|
53
|
+
verifiedAhead = verifyAhead();
|
|
80
54
|
}
|
|
81
55
|
}
|
|
56
|
+
return verifiedAhead;
|
|
57
|
+
});
|
|
58
|
+
derivedTypeAssertionVerified = termAndStandaloneTypeVerified; ///
|
|
59
|
+
if (derivedTypeAssertionVerified) {
|
|
60
|
+
context.trace("...verified the '".concat(typeAssertionString, "' derived type assertion."), typeAssertionNode);
|
|
82
61
|
}
|
|
83
|
-
return verifiedAhead;
|
|
84
|
-
});
|
|
85
|
-
variableTypeAssertionVerified = termVerifiedAsVariable; ///
|
|
86
|
-
if (variableTypeAssertionVerified) {
|
|
87
|
-
context.debug("...verified the '".concat(typeAssertionString, "' variable type assertion."), typeAssertionNode);
|
|
88
62
|
}
|
|
89
|
-
return
|
|
63
|
+
return derivedTypeAssertionVerified;
|
|
90
64
|
}
|
|
91
|
-
function
|
|
92
|
-
var
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
var
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
var
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
106
|
-
} else {
|
|
107
|
-
var assertedTypeIsEqualToOrSubTypeOfTermType = assertedType.isEqualToOrSubTypeOf(termType);
|
|
108
|
-
if (!assertedTypeIsEqualToOrSubTypeOfTermType) {
|
|
109
|
-
var termString1 = context.nodeAsString(termNode), termTypeName1 = termType.getName(), assertedTypeName1 = assertedType.getName();
|
|
110
|
-
context.debug("The '".concat(assertedTypeName1, "' asserted type is not equal to or a sub-type of the '").concat(termString1, "' term's '").concat(termTypeName1, "' type."), typeAssertionNode);
|
|
111
|
-
} else {
|
|
65
|
+
function verifyGivenTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead) {
|
|
66
|
+
var givenTypeAssertionVerified = false;
|
|
67
|
+
if (!derived) {
|
|
68
|
+
var typeAssertionString = context.nodeAsString(typeAssertionNode);
|
|
69
|
+
context.trace("Verifying the '".concat(typeAssertionString, "' given type assertion..."), typeAssertionNode);
|
|
70
|
+
var types = [], variables = [], termNode = termNodeQuery(typeAssertionNode), typeNode = typeNodeQuery(typeAssertionNode), termAsVariableAndStandaloneTypeVerified = (0, _termAsVariableAndStandaloneType.default)(termNode, typeNode, variables, types, context, function() {
|
|
71
|
+
var verifiedAhead = false;
|
|
72
|
+
var firstVariable = (0, _array.first)(variables);
|
|
73
|
+
var variable = firstVariable; ///
|
|
74
|
+
var firstType = (0, _array.first)(types), type = firstType, variableType = variable.getType(), variableTypeEqualToOrSuperTypeOfType = variableType.isEqualToOrSuperTypeOf(type);
|
|
75
|
+
if (variableTypeEqualToOrSuperTypeOfType) {
|
|
76
|
+
variable = _variable.default.fromVariableAndType(variable, type); ///
|
|
77
|
+
var variableAssignment = _variable1.default.fromVariable(variable), assignment = variableAssignment; ///
|
|
78
|
+
assignments.push(assignment);
|
|
112
79
|
verifiedAhead = verifyAhead();
|
|
80
|
+
if (!verifiedAhead) {
|
|
81
|
+
assignments.pop();
|
|
82
|
+
}
|
|
113
83
|
}
|
|
84
|
+
return verifiedAhead;
|
|
85
|
+
});
|
|
86
|
+
givenTypeAssertionVerified = termAsVariableAndStandaloneTypeVerified; ///
|
|
87
|
+
if (givenTypeAssertionVerified) {
|
|
88
|
+
context.trace("...verified the '".concat(typeAssertionString, "' given type assertion."), typeAssertionNode);
|
|
114
89
|
}
|
|
115
|
-
return verifiedAhead;
|
|
116
|
-
});
|
|
117
|
-
termTypeAssertionVerified = termVerifiedAgainstConstructors; ///
|
|
118
|
-
if (termTypeAssertionVerified) {
|
|
119
|
-
context.debug("...verified the '".concat(typeAssertionString, "' term type assertion."), typeAssertionNode);
|
|
120
90
|
}
|
|
121
|
-
return
|
|
91
|
+
return givenTypeAssertionVerified;
|
|
122
92
|
}
|
|
123
93
|
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdHlwZUFzc2VydGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZhcmlhYmxlIGZyb20gXCIuLi92YXJpYWJsZVwiO1xuaW1wb3J0IFZhcmlhYmxlQXNzaWdubWVudCBmcm9tIFwiLi4vYXNzaWdubWVudC92YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNWYXJpYWJsZSwgdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMgfSBmcm9tIFwiLi4vdmVyaWZ5L3Rlcm1cIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm0hXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3R5cGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSksXG4gICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICBhc3NlcnRlZFR5cGUgPSBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShhc3NlcnRlZFR5cGVOYW1lKTtcblxuICBpZiAoYXNzZXJ0ZWRUeXBlID09PSBudWxsKSB7XG4gICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdmVyaWZ5VHlwZUFzc2VydGlvbkZ1bmN0aW9ucyA9IFtcbiAgICAgIHZlcmlmeVZhcmlhYmxlVHlwZUFzc2VydGlvbixcbiAgICAgIHZlcmlmeVRlcm1UeXBlQXNzZXJ0aW9uXG4gICAgXTtcblxuICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMuc29tZSgodmVyaWZ5VHlwZUFzc2VydGlvbkZ1bmN0aW9uKSA9PiB7XG4gICAgICBjb25zdCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2VydGVkVHlwZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgICAgaWYgKHR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGlmICh0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHN0YXRlbWVudCB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NlcnRlZFR5cGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG5cbiAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB2YXJpYWJsZSB0eXBlIGFzc2VydGlvbi4uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICBjb25zdCB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICAgICAgdmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlLCAvLy9cbiAgICAgICAgICAgICAgICB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICAgICAgaWYgKGRlcml2ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVmFyaWFibGVUeXBlID0gYXNzZXJ0ZWRUeXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YodmFyaWFibGVUeXBlKTtcblxuICAgICAgICAgICAgaWYgKCFhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlTmFtZSA9IHZhcmlhYmxlVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1cGVyLXR5cGUgb2YgdGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlJ3MgJyR7dmFyaWFibGVUeXBlTmFtZX0nIHR5cGUuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSA9IGFzc2VydGVkVHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIWFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVUeXBlTmFtZSA9IHZhcmlhYmxlVHlwZS5nZXROYW1lKCk7XG5cbiAgICAgICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke2Fzc2VydGVkVHlwZU5hbWV9JyBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1Yi10eXBlIG9mIHRoZSAnJHt2YXJpYWJsZU5hbWV9JyB2YXJpYWJsZSdzICcke3ZhcmlhYmxlVHlwZU5hbWV9JyB0eXBlLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSB2YXJpYWJsZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgICAgICAgdHlwZSA9IGFzc2VydGVkVHlwZSwgIC8vL1xuICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21OYW1lQW5kVHlwZShuYW1lLCB0eXBlKSxcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVBc3NpZ25tZW50ID0gVmFyaWFibGVBc3NpZ25tZW50LmZyb21WYXJpYWJsZSh2YXJpYWJsZSksXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnQ7IC8vL1xuXG4gICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICAgICAgICAgICAgYXNzaWdubWVudHMucG9wKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgfSk7XG5cbiAgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlOyAvLy9cblxuICBpZiAodmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHZhcmlhYmxlIHR5cGUgYXNzZXJ0aW9uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2VydGVkVHlwZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSB7XG4gIGxldCB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdGVybSB0eXBlIGFzc2VydGlvbi4uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHR5cGVzLCBjb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQgPSBmYWxzZTtcblxuICAgICAgICAgIGNvbnN0IGZpcnN0VHlwZSA9IGZpcnN0KHR5cGVzKSxcbiAgICAgICAgICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZTsgLy8vXG5cbiAgICAgICAgICBpZiAoZGVyaXZlZCkge1xuICAgICAgICAgICAgY29uc3QgYXNzZXJ0ZWRUeXBlSXNFcXVhbFRvT3JTdXBlclR5cGVPZlRlcm1UeXBlID0gYXNzZXJ0ZWRUeXBlLmlzRXF1YWxUb09yU3VwZXJUeXBlT2YodGVybVR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIWFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtVHlwZU5hbWUgPSB0ZXJtVHlwZS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSBhc3NlcnRlZFR5cGUuZ2V0TmFtZSgpO1xuXG4gICAgICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHthc3NlcnRlZFR5cGVOYW1lfScgYXNzZXJ0ZWQgdHlwZSBpcyBub3QgZXF1YWwgdG8gb3IgYSBzdXBlci10eXBlIG9mIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSdzICcke3Rlcm1UeXBlTmFtZX0nIHR5cGUuYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUgPSBhc3NlcnRlZFR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodGVybVR5cGUpO1xuXG4gICAgICAgICAgICBpZiAoIWFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgdGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKSxcbiAgICAgICAgICAgICAgICAgICAgdGVybVR5cGVOYW1lID0gdGVybVR5cGUuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgICAgICBhc3NlcnRlZFR5cGVOYW1lID0gYXNzZXJ0ZWRUeXBlLmdldE5hbWUoKTtcblxuICAgICAgICAgICAgICBjb250ZXh0LmRlYnVnKGBUaGUgJyR7YXNzZXJ0ZWRUeXBlTmFtZX0nIGFzc2VydGVkIHR5cGUgaXMgbm90IGVxdWFsIHRvIG9yIGEgc3ViLXR5cGUgb2YgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtJ3MgJyR7dGVybVR5cGVOYW1lfScgdHlwZS5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgfSk7XG5cbiAgdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnM7ICAvLy9cblxuICBpZiAodGVybVR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdGVybSB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIiwidmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInR5cGVBc3NlcnRpb25TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInR5cGVOb2RlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsImFzc2VydGVkVHlwZU5hbWUiLCJhc3NlcnRlZFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJkZWJ1ZyIsInZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMiLCJ2ZXJpZnlUZXJtVHlwZUFzc2VydGlvbiIsInNvbWUiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb24iLCJ2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZhcmlhYmxlcyIsInRlcm1Ob2RlIiwidGVybVZlcmlmaWVkQXNWYXJpYWJsZSIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwidmVyaWZpZWRBaGVhZCIsImZpcnN0VmFyaWFibGUiLCJmaXJzdCIsInZhcmlhYmxlIiwidmFyaWFibGVOYW1lIiwiZ2V0TmFtZSIsInZhcmlhYmxlVHlwZSIsImdldFR5cGUiLCJhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlZhcmlhYmxlVHlwZSIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJ2YXJpYWJsZVR5cGVOYW1lIiwiYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiLCJuYW1lIiwidHlwZSIsIlZhcmlhYmxlIiwiZnJvbU5hbWVBbmRUeXBlIiwidmFyaWFibGVBc3NpZ25tZW50IiwiVmFyaWFibGVBc3NpZ25tZW50IiwiZnJvbVZhcmlhYmxlIiwiYXNzaWdubWVudCIsInB1c2giLCJwb3AiLCJ0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZXMiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzIiwidmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMiLCJmaXJzdFR5cGUiLCJ0ZXJtVHlwZSIsImFzc2VydGVkVHlwZUlzRXF1YWxUb09yU3VwZXJUeXBlT2ZUZXJtVHlwZSIsInRlcm1TdHJpbmciLCJ0ZXJtVHlwZU5hbWUiLCJhc3NlcnRlZFR5cGVJc0VxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFZQSxPQWtDQztlQWxDdUJBOztJQW9DUkMsMkJBQTJCO2VBQTNCQTs7OytEQTlDSztnRUFD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
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdHlwZUFzc2VydGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZhcmlhYmxlIGZyb20gXCIuLi92YXJpYWJsZVwiO1xuaW1wb3J0IFZhcmlhYmxlQXNzaWdubWVudCBmcm9tIFwiLi4vYXNzaWdubWVudC92YXJpYWJsZVwiO1xuaW1wb3J0IHZlcmlmeVRlcm1BbmRTdGFuZGFsb25lVHlwZSBmcm9tIFwiLi4vdmVyaWZ5L3Rlcm1BbmRTdGFuZGFsb25lVHlwZVwiO1xuaW1wb3J0IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlQW5kU3RhbmRhbG9uZVR5cGUgZnJvbSBcIi4uL3ZlcmlmeS90ZXJtQXNWYXJpYWJsZUFuZFN0YW5kYWxvbmVUeXBlXCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZVF1ZXJ5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZSFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgdHlwZUFzc2VydGlvblZlcmlmaWVkO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgY29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgY29uc3QgdmVyaWZ5VHlwZUFzc2VydGlvbkZ1bmN0aW9ucyA9IFtcbiAgICB2ZXJpZnlEZXJpdmVkVHlwZUFzc2VydGlvbixcbiAgICB2ZXJpZnlHaXZlblR5cGVBc3NlcnRpb25cbiAgXTtcblxuICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb25zLnNvbWUoKHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIGRlcml2ZWQsIGNvbnRleHQsIHZlcmlmeUFoZWFkKTtcblxuICAgIGlmICh0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgIGNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5RGVyaXZlZFR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIGFzc2lnbm1lbnRzLCBkZXJpdmVkLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkge1xuICBsZXQgZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChkZXJpdmVkKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uLi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIHR5cGVzID0gW10sXG4gICAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgICB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHRlcm1BbmRTdGFuZGFsb25lVHlwZVZlcmlmaWVkID0gdmVyaWZ5VGVybUFuZFN0YW5kYWxvbmVUeXBlKHRlcm1Ob2RlLCB0eXBlTm9kZSwgdGVybXMsIHR5cGVzLCBjb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICBsZXQgdmVyaWZpZWRBaGVhZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICBjb25zdCBmaXJzdFRlcm0gPSBmaXJzdCh0ZXJtcyksXG4gICAgICAgICAgICAgICAgICBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtLCAvLy9cbiAgICAgICAgICAgICAgICAgIHR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgICAgICAgICAgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0eXBlKTtcblxuICAgICAgICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3VwZXJUeXBlT2ZUeXBlKSB7XG4gICAgICAgICAgICAgIGRlYnVnZ2VyXG5cbiAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7ICAvLy9cbiAgICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICB9KTtcblxuICAgIGRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0ZXJtQW5kU3RhbmRhbG9uZVR5cGVWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgICAgY29udGV4dC50cmFjZShgLi4udmVyaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5R2l2ZW5UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgZGVyaXZlZCwgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IGdpdmVuVHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFkZXJpdmVkKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICAgIGNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGdpdmVuIHR5cGUgYXNzZXJ0aW9uLi4uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgdGVybUFzVmFyaWFibGVBbmRTdGFuZGFsb25lVHlwZVZlcmlmaWVkID0gdmVyaWZ5VGVybUFzVmFyaWFibGVBbmRTdGFuZGFsb25lVHlwZSh0ZXJtTm9kZSwgdHlwZU5vZGUsIHZhcmlhYmxlcywgdHlwZXMsIGNvbnRleHQsICgpID0+IHtcbiAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpcnN0VmFyaWFibGUgPSBmaXJzdCh2YXJpYWJsZXMpO1xuXG4gICAgICAgICAgICBsZXQgdmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlOyAvLy9cblxuICAgICAgICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgICAgICAgdHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4gICAgICAgICAgICAgICAgICB2YXJpYWJsZVR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCksXG4gICAgICAgICAgICAgICAgICB2YXJpYWJsZVR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlR5cGUgPSB2YXJpYWJsZVR5cGUuaXNFcXVhbFRvT3JTdXBlclR5cGVPZih0eXBlKTtcblxuICAgICAgICAgICAgaWYgKHZhcmlhYmxlVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVHlwZSkge1xuICAgICAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYXJpYWJsZUFuZFR5cGUodmFyaWFibGUsIHR5cGUpOyAgLy8vXG5cbiAgICAgICAgICAgICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50ID0gVmFyaWFibGVBc3NpZ25tZW50LmZyb21WYXJpYWJsZSh2YXJpYWJsZSksXG4gICAgICAgICAgICAgICAgICAgIGFzc2lnbm1lbnQgPSB2YXJpYWJsZUFzc2lnbm1lbnQ7IC8vL1xuXG4gICAgICAgICAgICAgIGFzc2lnbm1lbnRzLnB1c2goYXNzaWdubWVudCk7XG5cbiAgICAgICAgICAgICAgdmVyaWZpZWRBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICAgICAgaWYgKCF2ZXJpZmllZEFoZWFkKSB7XG4gICAgICAgICAgICAgICAgYXNzaWdubWVudHMucG9wKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZlcmlmaWVkQWhlYWQ7XG4gICAgICAgICAgfSk7XG5cbiAgICBnaXZlblR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1Bc1ZhcmlhYmxlQW5kU3RhbmRhbG9uZVR5cGVWZXJpZmllZDsgLy8vXG5cbiAgICBpZiAoZ2l2ZW5UeXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIGNvbnRleHQudHJhY2UoYC4uLnZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgZ2l2ZW4gdHlwZSBhc3NlcnRpb24uYCwgdHlwZUFzc2VydGlvbk5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBnaXZlblR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwiZGVyaXZlZCIsImNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInR5cGVBc3NlcnRpb25WZXJpZmllZCIsInR5cGVBc3NlcnRpb25TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkVHlwZUFzc2VydGlvbiIsInZlcmlmeUdpdmVuVHlwZUFzc2VydGlvbiIsInNvbWUiLCJ2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb24iLCJkZWJ1ZyIsImRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ0ZXJtcyIsInR5cGVzIiwidGVybU5vZGUiLCJ0eXBlTm9kZSIsInRlcm1BbmRTdGFuZGFsb25lVHlwZVZlcmlmaWVkIiwidmVyaWZ5VGVybUFuZFN0YW5kYWxvbmVUeXBlIiwidmVyaWZpZWRBaGVhZCIsImZpcnN0VGVybSIsImZpcnN0IiwiZmlyc3RUeXBlIiwidGVybSIsInR5cGUiLCJ0ZXJtVHlwZSIsImdldFR5cGUiLCJ0ZXJtVHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3VwZXJUeXBlT2YiLCJnaXZlblR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZhcmlhYmxlcyIsInRlcm1Bc1ZhcmlhYmxlQW5kU3RhbmRhbG9uZVR5cGVWZXJpZmllZCIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlQW5kU3RhbmRhbG9uZVR5cGUiLCJmaXJzdFZhcmlhYmxlIiwidmFyaWFibGUiLCJ2YXJpYWJsZVR5cGUiLCJ2YXJpYWJsZVR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlR5cGUiLCJWYXJpYWJsZSIsImZyb21WYXJpYWJsZUFuZFR5cGUiLCJ2YXJpYWJsZUFzc2lnbm1lbnQiLCJWYXJpYWJsZUFzc2lnbm1lbnQiLCJmcm9tVmFyaWFibGUiLCJhc3NpZ25tZW50IiwicHVzaCIsInBvcCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUF3QkE7OzsrREFYSDtnRUFDVTs0RUFDUztzRkFDVTtxQkFFNUI7cUJBQ0k7Ozs7OztBQUUxQixJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMseUJBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysb0JBQW9CSSxpQkFBaUIsRUFBRUMsV0FBVyxFQUFFQyxPQUFPLEVBQUVDLE9BQU8sRUFBRUMsV0FBVztJQUN2RyxJQUFJQztJQUVKLElBQU1DLHNCQUFzQkgsUUFBUUksWUFBWSxDQUFDUDtJQUVqREcsUUFBUUssS0FBSyxDQUFDLEFBQUMsa0JBQXFDLE9BQXBCRixxQkFBb0Isd0JBQXNCTjtJQUUxRSxJQUFNUywrQkFBK0I7UUFDbkNDO1FBQ0FDO0tBQ0Q7SUFFRE4sd0JBQXdCSSw2QkFBNkJHLElBQUksQ0FBQyxTQUFDQztRQUN6RCxJQUFNUix3QkFBd0JRLDRCQUE0QmIsbUJBQW1CQyxhQUFhQyxTQUFTQyxTQUFTQztRQUU1RyxJQUFJQyx1QkFBdUI7WUFDekIsT0FBTztR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
|
package/lib/verify/variable.js
CHANGED
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _variable = /*#__PURE__*/ _interop_require_default(require("../variable"));
|
|
12
|
+
var _variable1 = /*#__PURE__*/ _interop_require_default(require("../assignment/variable"));
|
|
12
13
|
var _type = require("../type");
|
|
13
14
|
var _query = require("../utilities/query");
|
|
14
15
|
function _interop_require_default(obj) {
|
|
@@ -20,27 +21,28 @@ function verifyVariable(variableNode, typeNode, fileContext) {
|
|
|
20
21
|
var variableVerified = false;
|
|
21
22
|
var variableString = fileContext.nodeAsString(variableNode);
|
|
22
23
|
fileContext.trace("Verifying the '".concat(variableString, "' variable..."), variableNode);
|
|
23
|
-
var
|
|
24
|
+
var variablePresent = fileContext.isVariablePresentByVariableNode(variableNode);
|
|
24
25
|
if (variablePresent) {
|
|
25
|
-
fileContext.debug("The variable '".concat(
|
|
26
|
+
fileContext.debug("The variable '".concat(variableString, "' is already present."), variableNode);
|
|
26
27
|
} else {
|
|
27
28
|
var variable;
|
|
28
29
|
var typeName = (0, _query.typeNameFromTypeNode)(typeNode);
|
|
29
30
|
if (typeName === null) {
|
|
30
|
-
var
|
|
31
|
-
variable = _variable.default.
|
|
31
|
+
var type = _type.objectType;
|
|
32
|
+
variable = _variable.default.fromVariableNodeAndType(variableNode, type);
|
|
32
33
|
} else {
|
|
33
34
|
var type1 = fileContext.findTypeByTypeName(typeName);
|
|
34
35
|
if (type1 === null) {
|
|
35
|
-
fileContext.debug("The '".concat(
|
|
36
|
+
fileContext.debug("The '".concat(variableString, "' variable's '").concat(typeName, "' type is not present."), variableNode);
|
|
36
37
|
} else {
|
|
37
|
-
|
|
38
|
-
variable = _variable.default.fromNameAndType(name1, type1);
|
|
38
|
+
variable = _variable.default.fromVariableNodeAndType(variableNode, type1);
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
if (variable !== null) {
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
var variableAssignment = _variable1.default.fromVariable(variable), variableAssigned = variableAssignment.assign(fileContext);
|
|
43
|
+
if (variableAssigned) {
|
|
44
|
+
variableVerified = true;
|
|
45
|
+
}
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
if (variableVerified) {
|
|
@@ -49,4 +51,4 @@ function verifyVariable(variableNode, typeNode, fileContext) {
|
|
|
49
51
|
return variableVerified;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vdmFyaWFibGVcIjtcbmltcG9ydCBWYXJpYWJsZUFzc2lnbm1lbnQgZnJvbSBcIi4uL2Fzc2lnbm1lbnQvdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgb2JqZWN0VHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XG5pbXBvcnQgeyB0eXBlTmFtZUZyb21UeXBlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGUodmFyaWFibGVOb2RlLCB0eXBlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh2YXJpYWJsZU5vZGUpO1xuXG4gIGZpbGVDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUuLi5gLCB2YXJpYWJsZU5vZGUpO1xuXG4gIGNvbnN0IHZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKTtcblxuICBpZiAodmFyaWFibGVQcmVzZW50KSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSB2YXJpYWJsZSAnJHt2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCB2YXJpYWJsZU5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGxldCB2YXJpYWJsZTtcblxuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpO1xuICAgIFxuICAgIGlmICh0eXBlTmFtZSA9PT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IG9iamVjdFR5cGU7XG5cbiAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZnJvbVZhcmlhYmxlTm9kZUFuZFR5cGUodmFyaWFibGVOb2RlLCB0eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSdzICcke3R5cGVOYW1lfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCB2YXJpYWJsZU5vZGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVmFyaWFibGVOb2RlQW5kVHlwZSh2YXJpYWJsZU5vZGUsIHR5cGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh2YXJpYWJsZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdmFyaWFibGVBc3NpZ25tZW50ID0gVmFyaWFibGVBc3NpZ25tZW50LmZyb21WYXJpYWJsZSh2YXJpYWJsZSksXG4gICAgICAgICAgICB2YXJpYWJsZUFzc2lnbmVkID0gdmFyaWFibGVBc3NpZ25tZW50LmFzc2lnbihmaWxlQ29udGV4dCk7XG5cbiAgICAgIGlmICh2YXJpYWJsZUFzc2lnbmVkKSB7XG4gICAgICAgIHZhcmlhYmxlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh2YXJpYWJsZVZlcmlmaWVkKSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlLmAsIHZhcmlhYmxlTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlWYXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsInR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ2YXJpYWJsZVZlcmlmaWVkIiwidmFyaWFibGVTdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5vZGUiLCJkZWJ1ZyIsInZhcmlhYmxlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsInR5cGUiLCJvYmplY3RUeXBlIiwiVmFyaWFibGUiLCJmcm9tVmFyaWFibGVOb2RlQW5kVHlwZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInZhcmlhYmxlQXNzaWdubWVudCIsIlZhcmlhYmxlQXNzaWdubWVudCIsImZyb21WYXJpYWJsZSIsInZhcmlhYmxlQXNzaWduZWQiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBd0JBOzs7K0RBTkg7Z0VBQ1U7b0JBRUo7cUJBQ1U7Ozs7OztBQUV0QixTQUFTQSxlQUFlQyxZQUFZLEVBQUVDLFFBQVEsRUFBRUMsV0FBVztJQUN4RSxJQUFJQyxtQkFBbUI7SUFFdkIsSUFBTUMsaUJBQWlCRixZQUFZRyxZQUFZLENBQUNMO0lBRWhERSxZQUFZSSxLQUFLLENBQUMsQUFBQyxrQkFBZ0MsT0FBZkYsZ0JBQWUsa0JBQWdCSjtJQUVuRSxJQUFNTyxrQkFBa0JMLFlBQVlNLCtCQUErQixDQUFDUjtJQUVwRSxJQUFJTyxpQkFBaUI7UUFDbkJMLFlBQVlPLEtBQUssQ0FBQyxBQUFDLGlCQUErQixPQUFmTCxnQkFBZSwwQkFBd0JKO0lBQzVFLE9BQU87UUFDTCxJQUFJVTtRQUVKLElBQU1DLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDWDtRQUV0QyxJQUFJVSxhQUFhLE1BQU07WUFDckIsSUFBTUUsT0FBT0MsZ0JBQVU7WUFFdkJKLFdBQVdLLGlCQUFRLENBQUNDLHVCQUF1QixDQUFDaEIsY0FBY2E7UUFDNUQsT0FBTztZQUNMLElBQU1BLFFBQU9YLFlBQVllLGtCQUFrQixDQUFDTjtZQUU1QyxJQUFJRSxVQUFTLE1BQU07Z0JBQ2pCWCxZQUFZTyxLQUFLLENBQUMsQUFBQyxRQUFzQ0UsT0FBL0JQLGdCQUFlLGtCQUF5QixPQUFUTyxVQUFTLDJCQUF5Qlg7WUFDN0YsT0FBTztnQkFDTFUsV0FBV0ssaUJBQVEsQ0FBQ0MsdUJBQXVCLENBQUNoQixjQUFjYTtZQUM1RDtRQUNGO1FBRUEsSUFBSUgsYUFBYSxNQUFNO1lBQ3JCLElBQU1RLHFCQUFxQkMsa0JBQWtCLENBQUNDLFlBQVksQ0FBQ1YsV0FDckRXLG1CQUFtQkgsbUJBQW1CSSxNQUFNLENBQUNwQjtZQUVuRCxJQUFJbUIsa0JBQWtCO2dCQUNwQmxCLG1CQUFtQjtZQUNyQjtRQUNGO0lBQ0Y7SUFFQSxJQUFJQSxrQkFBa0I7UUFDcEJELFlBQVlPLEtBQUssQ0FBQyxBQUFDLG9CQUFrQyxPQUFmTCxnQkFBZSxnQkFBY0o7SUFDckU7SUFFQSxPQUFPRztBQUNUIn0=
|
package/package.json
CHANGED
|
@@ -9,13 +9,22 @@ export default class EqualityAssignment {
|
|
|
9
9
|
return this.equality;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
assign(
|
|
13
|
-
|
|
12
|
+
assign(context) {
|
|
13
|
+
const equalityAdded = context.addEquality(this.equality),
|
|
14
|
+
equalityNode = this.equality.getNode(),
|
|
15
|
+
equalityString = context.nodeAsString(equalityNode),
|
|
16
|
+
equalityAssigned = equalityAdded; ///
|
|
17
|
+
|
|
18
|
+
equalityAssigned ?
|
|
19
|
+
context.debug(`Able to assign the '${equalityString}' equality.`, equalityNode) :
|
|
20
|
+
context.trace(`Unable to assign the '${equalityString}' equality.`, equalityNode);
|
|
21
|
+
|
|
22
|
+
return equalityAssigned;
|
|
14
23
|
}
|
|
15
24
|
|
|
16
25
|
static fromEquality(equality) {
|
|
17
|
-
const
|
|
26
|
+
const equalityAssignment = new EqualityAssignment(equality);
|
|
18
27
|
|
|
19
|
-
return
|
|
28
|
+
return equalityAssignment;
|
|
20
29
|
}
|
|
21
30
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default class MetavariableAssignment {
|
|
4
|
+
constructor(metavariable) {
|
|
5
|
+
this.metavariable = metavariable;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
getMetavariable() {
|
|
9
|
+
return this.metavariable;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
assign(fileContext) {
|
|
13
|
+
const metavariableAdded = fileContext.addMetavariable(this.metavariable),
|
|
14
|
+
metavariableNode = this.metavariable.getNode(),
|
|
15
|
+
metavariableString = fileContext.nodeAsString(metavariableNode),
|
|
16
|
+
metavariableAssigned = metavariableAdded; ///
|
|
17
|
+
|
|
18
|
+
metavariableAssigned ?
|
|
19
|
+
fileContext.debug(`Able to assign the '${metavariableString}' metavariable.`, metavariableNode) :
|
|
20
|
+
fileContext.trace(`Unable to assign the '${metavariableString}' metavariable.`, metavariableNode);
|
|
21
|
+
|
|
22
|
+
return metavariableAssigned;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static fromMetavariable(metavariable) {
|
|
26
|
+
const metavariableAssignment = new MetavariableAssignment(metavariable);
|
|
27
|
+
|
|
28
|
+
return metavariableAssignment;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -9,13 +9,24 @@ export default class VariableAssignment {
|
|
|
9
9
|
return this.variable;
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
assign(
|
|
13
|
-
|
|
12
|
+
assign(context) {
|
|
13
|
+
const variableAdded = context.addVariable(this.variable),
|
|
14
|
+
variableNode = this.variable.getNode(),
|
|
15
|
+
variableType = this.variable.getType(),
|
|
16
|
+
variableString = context.nodeAsString(variableNode),
|
|
17
|
+
variableTypeName = variableType.getName(),
|
|
18
|
+
variableAssigned = variableAdded; ///
|
|
19
|
+
|
|
20
|
+
variableAssigned ?
|
|
21
|
+
context.debug(`Able to assign the '${variableString}' variable with type '${variableTypeName}'.`, variableNode) :
|
|
22
|
+
context.trace(`Unable to assign the '${variableString}' variable with type '${variableTypeName}'.`, variableNode);
|
|
23
|
+
|
|
24
|
+
return variableAssigned;
|
|
14
25
|
}
|
|
15
26
|
|
|
16
27
|
static fromVariable(variable) {
|
|
17
|
-
const
|
|
28
|
+
const variableAssignment = new VariableAssignment(variable);
|
|
18
29
|
|
|
19
|
-
return
|
|
30
|
+
return variableAssignment;
|
|
20
31
|
}
|
|
21
32
|
}
|
package/src/constructor.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import Type from "./type";
|
|
4
|
-
|
|
5
3
|
import { nodeAsString } from "./utilities/string";
|
|
4
|
+
import { typeFromJSONAndFileContext } from "./type";
|
|
6
5
|
import { termNodeFromConstructorDeclarationTokens } from "./utilities/node";
|
|
7
6
|
import { constructorDeclarationTokensFromTermString } from "./utilities/tokens";
|
|
8
7
|
|
|
@@ -62,11 +61,7 @@ export default class Constructor {
|
|
|
62
61
|
|
|
63
62
|
json = typeJSON; ///
|
|
64
63
|
|
|
65
|
-
type =
|
|
66
|
-
|
|
67
|
-
const typeName = type.getName();
|
|
68
|
-
|
|
69
|
-
type = fileContext.findTypeByTypeName(typeName); ///
|
|
64
|
+
type = typeFromJSONAndFileContext(json, fileContext);
|
|
70
65
|
}
|
|
71
66
|
|
|
72
67
|
const tokens = constructorDeclarationTokens, ///
|
package/src/context/file.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import Type from "../type";
|
|
4
3
|
import Rule from "../rule";
|
|
5
4
|
import Axiom from "../axiom";
|
|
6
5
|
import Lemma from "../lemma";
|
|
@@ -11,9 +10,10 @@ import Combinator from "../combinator";
|
|
|
11
10
|
import Constructor from "../constructor";
|
|
12
11
|
import Metavariable from "../metavariable";
|
|
13
12
|
|
|
13
|
+
import { push } from "../utilities/array";
|
|
14
14
|
import { objectType } from "../type";
|
|
15
|
-
import { push, filter } from "../utilities/array";
|
|
16
15
|
import { statementMetaType } from "../metaType";
|
|
16
|
+
import { typeFromJSONAndFileContext } from "../type";
|
|
17
17
|
import { nodeAsString, nodesAsString } from "../utilities/string";
|
|
18
18
|
|
|
19
19
|
const metaTypes = [
|
|
@@ -259,18 +259,15 @@ export default class FileContext {
|
|
|
259
259
|
findTypeByTypeName(typeName) {
|
|
260
260
|
let types = this.getTypes();
|
|
261
261
|
|
|
262
|
-
types
|
|
263
|
-
...types,
|
|
264
|
-
objectType
|
|
265
|
-
];
|
|
262
|
+
types.push(objectType);
|
|
266
263
|
|
|
267
264
|
const type = types.find((type) => {
|
|
268
|
-
|
|
265
|
+
const matches = type.matchTypeName(typeName);
|
|
269
266
|
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
267
|
+
if (matches) {
|
|
268
|
+
return true;
|
|
269
|
+
}
|
|
270
|
+
}) || null;
|
|
274
271
|
|
|
275
272
|
return type;
|
|
276
273
|
}
|
|
@@ -331,13 +328,13 @@ export default class FileContext {
|
|
|
331
328
|
return theorem;
|
|
332
329
|
}
|
|
333
330
|
|
|
334
|
-
|
|
335
|
-
const
|
|
331
|
+
findVariableByVariableNode(variableNode) {
|
|
332
|
+
const node = variableNode, ///
|
|
336
333
|
variables = this.getVariables(),
|
|
337
334
|
variable = variables.find((variable) => {
|
|
338
|
-
const
|
|
335
|
+
const nodeMatches = variable.matchNode(node);
|
|
339
336
|
|
|
340
|
-
if (
|
|
337
|
+
if (nodeMatches) {
|
|
341
338
|
return true;
|
|
342
339
|
}
|
|
343
340
|
}) || null;
|
|
@@ -372,11 +369,11 @@ export default class FileContext {
|
|
|
372
369
|
return conjecture;
|
|
373
370
|
}
|
|
374
371
|
|
|
375
|
-
|
|
376
|
-
const
|
|
372
|
+
findMetavariableByMetavariableNode(metavariableNode) {
|
|
373
|
+
const node = metavariableNode, ///
|
|
377
374
|
metavariables = this.getMetavariables(),
|
|
378
375
|
metavariable = metavariables.find((metavariable) => {
|
|
379
|
-
const matches = metavariable.
|
|
376
|
+
const matches = metavariable.matchNode(node);
|
|
380
377
|
|
|
381
378
|
if (matches) {
|
|
382
379
|
return true;
|
|
@@ -400,15 +397,15 @@ export default class FileContext {
|
|
|
400
397
|
return typePresent;
|
|
401
398
|
}
|
|
402
399
|
|
|
403
|
-
|
|
404
|
-
const variable = this.
|
|
400
|
+
isVariablePresentByVariableNode(variableNode) {
|
|
401
|
+
const variable = this.findVariableByVariableNode(variableNode),
|
|
405
402
|
variablePresent = (variable !== null);
|
|
406
403
|
|
|
407
404
|
return variablePresent;
|
|
408
405
|
}
|
|
409
406
|
|
|
410
|
-
|
|
411
|
-
const metavariable = this.
|
|
407
|
+
isMetavariablePresentByMetavariableNode(metavariableNode) {
|
|
408
|
+
const metavariable = this.findMetavariableByMetavariableNode(metavariableNode),
|
|
412
409
|
metavariablePresent = (metavariable !== null);
|
|
413
410
|
|
|
414
411
|
return metavariablePresent;
|
|
@@ -453,18 +450,24 @@ export default class FileContext {
|
|
|
453
450
|
}
|
|
454
451
|
|
|
455
452
|
addVariable(variable) {
|
|
456
|
-
|
|
453
|
+
let variableAdded = false;
|
|
457
454
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
455
|
+
const node = variable.getNode(),
|
|
456
|
+
variablePresent = this.variables.some((variable) => {
|
|
457
|
+
const nodeMatches = variable.matchNode(node);
|
|
461
458
|
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
459
|
+
if (nodeMatches) {
|
|
460
|
+
return true;
|
|
461
|
+
}
|
|
462
|
+
});
|
|
466
463
|
|
|
467
|
-
|
|
464
|
+
if (!variablePresent) {
|
|
465
|
+
this.variables.push(variable);
|
|
466
|
+
|
|
467
|
+
variableAdded = true;
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
return variableAdded;
|
|
468
471
|
}
|
|
469
472
|
|
|
470
473
|
addConjecture(conjecture) {
|
|
@@ -480,18 +483,24 @@ export default class FileContext {
|
|
|
480
483
|
}
|
|
481
484
|
|
|
482
485
|
addMetavariable(metavariable) {
|
|
483
|
-
|
|
486
|
+
let metavariableAdded = false;
|
|
484
487
|
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
+
const node = metavariable.getNode(),
|
|
489
|
+
metavariablePresent = this.metavariables.some((metavariable) => {
|
|
490
|
+
const nodeMatches = metavariable.matchNode(node);
|
|
488
491
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
492
|
+
if (nodeMatches) {
|
|
493
|
+
return true;
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
|
|
497
|
+
if (!metavariablePresent) {
|
|
498
|
+
this.metavariables.push(metavariable);
|
|
499
|
+
|
|
500
|
+
metavariableAdded = true;
|
|
501
|
+
}
|
|
493
502
|
|
|
494
|
-
|
|
503
|
+
return metavariableAdded;
|
|
495
504
|
}
|
|
496
505
|
|
|
497
506
|
trace(message, node) { this.releaseContext.trace(message, node, this.tokens, this.filePath); }
|
|
@@ -620,7 +629,7 @@ export default class FileContext {
|
|
|
620
629
|
|
|
621
630
|
typesJSON.forEach((typeJSON) => {
|
|
622
631
|
const json = typeJSON, ///
|
|
623
|
-
type =
|
|
632
|
+
type = typeFromJSONAndFileContext(json, fileContext);
|
|
624
633
|
|
|
625
634
|
this.types.push(type);
|
|
626
635
|
});
|