occam-verify-cli 0.0.613 → 0.0.615
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/README.md +79 -78
- package/lib/log.js +2 -2
- package/lib/verify/metastatement.js +12 -4
- package/lib/verify/statement.js +30 -23
- package/lib/verify/term.js +187 -88
- package/lib/verify/termAsConstructor.js +12 -11
- package/package.json +2 -2
- package/src/log.js +2 -2
- package/src/verify/metastatement.js +1 -1
- package/src/verify/statement.js +42 -35
- package/src/verify/term.js +114 -139
- package/src/verify/termAsConstructor.js +16 -11
package/lib/verify/term.js
CHANGED
|
@@ -9,22 +9,194 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
+
termVerifier: function() {
|
|
13
|
+
return termVerifier;
|
|
14
|
+
},
|
|
12
15
|
default: function() {
|
|
13
16
|
return verifyTerm;
|
|
14
17
|
},
|
|
15
|
-
verifyTermAsVariable: function() {
|
|
16
|
-
return verifyTermAsVariable;
|
|
17
|
-
},
|
|
18
18
|
verifyTermAgainstConstructors: function() {
|
|
19
19
|
return verifyTermAgainstConstructors;
|
|
20
|
+
},
|
|
21
|
+
verifyTermAgainstConstructor: function() {
|
|
22
|
+
return verifyTermAgainstConstructor;
|
|
23
|
+
},
|
|
24
|
+
verifyTermAsVariable: function() {
|
|
25
|
+
return verifyTermAsVariable;
|
|
20
26
|
}
|
|
21
27
|
});
|
|
28
|
+
var _verifier = /*#__PURE__*/ _interop_require_default(require("../verifier"));
|
|
22
29
|
var _array = require("../utilities/array");
|
|
23
30
|
var _type = require("../type");
|
|
24
31
|
var _typeNames = require("../typeNames");
|
|
25
32
|
var _ruleNames = require("../ruleNames");
|
|
26
33
|
var _query = require("../utilities/query");
|
|
34
|
+
function _assert_this_initialized(self) {
|
|
35
|
+
if (self === void 0) {
|
|
36
|
+
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
|
|
37
|
+
}
|
|
38
|
+
return self;
|
|
39
|
+
}
|
|
40
|
+
function _class_call_check(instance, Constructor) {
|
|
41
|
+
if (!(instance instanceof Constructor)) {
|
|
42
|
+
throw new TypeError("Cannot call a class as a function");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function _defineProperties(target, props) {
|
|
46
|
+
for(var i = 0; i < props.length; i++){
|
|
47
|
+
var descriptor = props[i];
|
|
48
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
49
|
+
descriptor.configurable = true;
|
|
50
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
51
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
55
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
56
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
57
|
+
return Constructor;
|
|
58
|
+
}
|
|
59
|
+
function _get_prototype_of(o) {
|
|
60
|
+
_get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
|
|
61
|
+
return o.__proto__ || Object.getPrototypeOf(o);
|
|
62
|
+
};
|
|
63
|
+
return _get_prototype_of(o);
|
|
64
|
+
}
|
|
65
|
+
function _inherits(subClass, superClass) {
|
|
66
|
+
if (typeof superClass !== "function" && superClass !== null) {
|
|
67
|
+
throw new TypeError("Super expression must either be null or a function");
|
|
68
|
+
}
|
|
69
|
+
subClass.prototype = Object.create(superClass && superClass.prototype, {
|
|
70
|
+
constructor: {
|
|
71
|
+
value: subClass,
|
|
72
|
+
writable: true,
|
|
73
|
+
configurable: true
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
if (superClass) _set_prototype_of(subClass, superClass);
|
|
77
|
+
}
|
|
78
|
+
function _interop_require_default(obj) {
|
|
79
|
+
return obj && obj.__esModule ? obj : {
|
|
80
|
+
default: obj
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function _possible_constructor_return(self, call) {
|
|
84
|
+
if (call && (_type_of(call) === "object" || typeof call === "function")) {
|
|
85
|
+
return call;
|
|
86
|
+
}
|
|
87
|
+
return _assert_this_initialized(self);
|
|
88
|
+
}
|
|
89
|
+
function _set_prototype_of(o, p) {
|
|
90
|
+
_set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
|
|
91
|
+
o.__proto__ = p;
|
|
92
|
+
return o;
|
|
93
|
+
};
|
|
94
|
+
return _set_prototype_of(o, p);
|
|
95
|
+
}
|
|
96
|
+
function _type_of(obj) {
|
|
97
|
+
"@swc/helpers - typeof";
|
|
98
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
99
|
+
}
|
|
100
|
+
function _is_native_reflect_construct() {
|
|
101
|
+
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
|
|
102
|
+
if (Reflect.construct.sham) return false;
|
|
103
|
+
if (typeof Proxy === "function") return true;
|
|
104
|
+
try {
|
|
105
|
+
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
|
|
106
|
+
return true;
|
|
107
|
+
} catch (e) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
function _create_super(Derived) {
|
|
112
|
+
var hasNativeReflectConstruct = _is_native_reflect_construct();
|
|
113
|
+
return function _createSuperInternal() {
|
|
114
|
+
var Super = _get_prototype_of(Derived), result;
|
|
115
|
+
if (hasNativeReflectConstruct) {
|
|
116
|
+
var NewTarget = _get_prototype_of(this).constructor;
|
|
117
|
+
result = Reflect.construct(Super, arguments, NewTarget);
|
|
118
|
+
} else {
|
|
119
|
+
result = Super.apply(this, arguments);
|
|
120
|
+
}
|
|
121
|
+
return _possible_constructor_return(this, result);
|
|
122
|
+
};
|
|
123
|
+
}
|
|
27
124
|
var termNodeQuery = (0, _query.nodeQuery)("/argument/term!"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type!"), variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
|
|
125
|
+
var TermVerifier = /*#__PURE__*/ function(Verifier) {
|
|
126
|
+
_inherits(TermVerifier, Verifier);
|
|
127
|
+
var _super = _create_super(TermVerifier);
|
|
128
|
+
function TermVerifier() {
|
|
129
|
+
_class_call_check(this, TermVerifier);
|
|
130
|
+
return _super.apply(this, arguments);
|
|
131
|
+
}
|
|
132
|
+
_create_class(TermVerifier, [
|
|
133
|
+
{
|
|
134
|
+
key: "verifyTerminalNode",
|
|
135
|
+
value: function verifyTerminalNode(terminalNode, constructorTerminalNode, context) {
|
|
136
|
+
var terminalNodeVerified = false;
|
|
137
|
+
var matches = terminalNode.match(constructorTerminalNode);
|
|
138
|
+
if (matches) {
|
|
139
|
+
terminalNodeVerified = true;
|
|
140
|
+
}
|
|
141
|
+
return terminalNodeVerified;
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
key: "verifyNonTerminalNode",
|
|
146
|
+
value: function verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, context) {
|
|
147
|
+
var nonTerminalNodeVerified = false;
|
|
148
|
+
var ruleName = nonTerminalNode.getRuleName(), constructorRuleName = constructorNonTerminalNode.getRuleName(); ///
|
|
149
|
+
if (ruleName === constructorRuleName) {
|
|
150
|
+
switch(ruleName){
|
|
151
|
+
case _ruleNames.ARGUMENT_RULE_NAME:
|
|
152
|
+
{
|
|
153
|
+
var argumentNode = nonTerminalNode, constructorArgumentNode = constructorNonTerminalNode, argumentNodeVerified = this.verifyArgumentNode(argumentNode, constructorArgumentNode, context);
|
|
154
|
+
nonTerminalNodeVerified = argumentNodeVerified; ///
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
default:
|
|
158
|
+
{
|
|
159
|
+
var childNodes = nonTerminalNode.getChildNodes(), constructorChildNodes = constructorNonTerminalNode.getChildNodes(), nodes = childNodes, constructorNodes = constructorChildNodes, nodesVerified = this.verifyNodes(nodes, constructorNodes, context);
|
|
160
|
+
nonTerminalNodeVerified = nodesVerified; ///
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return nonTerminalNodeVerified;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
key: "verifyArgumentNode",
|
|
170
|
+
value: function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
|
|
171
|
+
var argumentNodeVerified = false;
|
|
172
|
+
var typeNode = typeNodeQuery(argumentNode);
|
|
173
|
+
if (typeNode !== null) {
|
|
174
|
+
var argumentString = context.nodeAsString(argumentNode);
|
|
175
|
+
context.error("The ".concat(argumentString, " argument should be a term, not a type"), argumentNode);
|
|
176
|
+
} else {
|
|
177
|
+
var termNode = termNodeQuery(argumentNode), constructorTermNode = termNodeQuery(constructorArgumentNode), constructorTypeNode = typeNodeQuery(constructorArgumentNode);
|
|
178
|
+
if (false) {
|
|
179
|
+
///
|
|
180
|
+
} else if (constructorTermNode !== null) {
|
|
181
|
+
var node = termNode, constructorNode = constructorTermNode, nodeVerified = this.verifyNode(node, constructorNode, context);
|
|
182
|
+
argumentNodeVerified = nodeVerified; ///
|
|
183
|
+
} else if (constructorTypeNode !== null) {
|
|
184
|
+
var types = [], termVerified = verifyTerm(termNode, types, context);
|
|
185
|
+
if (termVerified) {
|
|
186
|
+
var constructorTypeName = (0, _query.typeNameFromTypeNode)(constructorTypeNode), constructorType = constructorTypeName === _typeNames.OBJECT_TYPE_NAME ? _type.objectType : context.findTypeByTypeName(constructorTypeName), firstType = (0, _array.first)(types), termType = firstType, type = constructorType, termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
187
|
+
if (termTypeEqualToOrSubTypeOfType) {
|
|
188
|
+
argumentNodeVerified = true;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
return argumentNodeVerified;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
]);
|
|
197
|
+
return TermVerifier;
|
|
198
|
+
}(_verifier.default);
|
|
199
|
+
var termVerifier = new TermVerifier();
|
|
28
200
|
function verifyTerm(termNode, types, context) {
|
|
29
201
|
var termVerified = false;
|
|
30
202
|
var termString = context.nodeAsString(termNode);
|
|
@@ -48,19 +220,6 @@ function verifyTerm(termNode, types, context) {
|
|
|
48
220
|
}
|
|
49
221
|
return termVerified;
|
|
50
222
|
}
|
|
51
|
-
function verifyTermAsVariable(termNode, variables, context) {
|
|
52
|
-
var termVerifiedAsVariable = false;
|
|
53
|
-
var variableNode = variableNodeQuery(termNode);
|
|
54
|
-
if (variableNode !== null) {
|
|
55
|
-
var variableName = (0, _query.variableNameFromVariableNode)(variableNode), variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
56
|
-
if (variablePresent) {
|
|
57
|
-
var variable = context.findVariableByVariableName(variableName);
|
|
58
|
-
variables.push(variable);
|
|
59
|
-
termVerifiedAsVariable = true;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return termVerifiedAsVariable;
|
|
63
|
-
}
|
|
64
223
|
function verifyTermAgainstConstructors(termNode, types, context) {
|
|
65
224
|
var termVerifiedAgainstConstructors = false;
|
|
66
225
|
var constructors = context.getConstructors(), constructor = constructors.find(function(constructor) {
|
|
@@ -77,81 +236,21 @@ function verifyTermAgainstConstructors(termNode, types, context) {
|
|
|
77
236
|
return termVerifiedAgainstConstructors;
|
|
78
237
|
}
|
|
79
238
|
function verifyTermAgainstConstructor(termNode, constructor, context) {
|
|
80
|
-
var constructorTermNode = constructor.getTermNode(),
|
|
239
|
+
var constructorTermNode = constructor.getTermNode(), nonTerminalNNdeA = termNode, nonTerminalNodeB = constructorTermNode, nodeVerified = termVerifier.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, context), termVerifiedAgainstConstructor = nodeVerified; ///
|
|
81
240
|
return termVerifiedAgainstConstructor;
|
|
82
241
|
}
|
|
83
|
-
function
|
|
84
|
-
var
|
|
85
|
-
var
|
|
86
|
-
if (
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
nodeVerified = nonTerminalNodeVerified; ///
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return nodeVerified;
|
|
96
|
-
}
|
|
97
|
-
function verifyNodes(nodes, constructorNodes, context) {
|
|
98
|
-
var nodesVerified = false;
|
|
99
|
-
var nodesLength = nodes.length, constructorNodesLength = constructorNodes.length;
|
|
100
|
-
if (nodesLength === constructorNodesLength) {
|
|
101
|
-
nodesVerified = nodes.every(function(node, index) {
|
|
102
|
-
var constructorNode = constructorNodes[index], nodeVerified = verifyNode(node, constructorNode, context);
|
|
103
|
-
if (nodeVerified) {
|
|
104
|
-
return true;
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
return nodesVerified;
|
|
109
|
-
}
|
|
110
|
-
function verifyTerminalNode(terminalNode, constructorTerminalNode, context) {
|
|
111
|
-
var terminalNodeVerified = false;
|
|
112
|
-
var matches = terminalNode.match(constructorTerminalNode);
|
|
113
|
-
if (matches) {
|
|
114
|
-
terminalNodeVerified = true;
|
|
115
|
-
}
|
|
116
|
-
return terminalNodeVerified;
|
|
117
|
-
}
|
|
118
|
-
function verifyNonTerminalNode(nonTerminalNode, constructorNonTerminalNode, context) {
|
|
119
|
-
var nonTerminalNodeVerified = false;
|
|
120
|
-
var ruleName = nonTerminalNode.getRuleName(), constructorRuleName = constructorNonTerminalNode.getRuleName(); ///
|
|
121
|
-
if (ruleName === constructorRuleName) {
|
|
122
|
-
switch(ruleName){
|
|
123
|
-
case _ruleNames.ARGUMENT_RULE_NAME:
|
|
124
|
-
{
|
|
125
|
-
var argumentNode = nonTerminalNode, constructorArgumentNode = constructorNonTerminalNode, argumentNodeVerified = verifyArgumentNode(argumentNode, constructorArgumentNode, context);
|
|
126
|
-
nonTerminalNodeVerified = argumentNodeVerified; ///
|
|
127
|
-
break;
|
|
128
|
-
}
|
|
129
|
-
default:
|
|
130
|
-
{
|
|
131
|
-
var childNodes = nonTerminalNode.getChildNodes(), constructorChildNodes = constructorNonTerminalNode.getChildNodes(), nodes = childNodes, constructorNodes = constructorChildNodes, nodesVerified = verifyNodes(nodes, constructorNodes, context);
|
|
132
|
-
nonTerminalNodeVerified = nodesVerified; ///
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return nonTerminalNodeVerified;
|
|
138
|
-
}
|
|
139
|
-
function verifyArgumentNode(argumentNode, constructorArgumentNode, context) {
|
|
140
|
-
var argumentNodeVerified = false;
|
|
141
|
-
var termNode = termNodeQuery(argumentNode);
|
|
142
|
-
if (termNode === null) {
|
|
143
|
-
var argumentString = context.nodeAsString(argumentNode);
|
|
144
|
-
context.error("The ".concat(argumentString, " argument should be a term, not a type"), argumentNode);
|
|
145
|
-
} else {
|
|
146
|
-
var types = [], termVerified = verifyTerm(termNode, types, context);
|
|
147
|
-
if (termVerified) {
|
|
148
|
-
var firstType = (0, _array.first)(types), termType = firstType, typeNode = typeNodeQuery(constructorArgumentNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), type = typeName === _typeNames.OBJECT_TYPE_NAME ? _type.objectType : context.findTypeByTypeName(typeName), termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
149
|
-
if (termTypeEqualToOrSubTypeOfType) {
|
|
150
|
-
argumentNodeVerified = true;
|
|
151
|
-
}
|
|
242
|
+
function verifyTermAsVariable(termNode, variables, context) {
|
|
243
|
+
var termVerifiedAsVariable = false;
|
|
244
|
+
var variableNode = variableNodeQuery(termNode);
|
|
245
|
+
if (variableNode !== null) {
|
|
246
|
+
var variableName = (0, _query.variableNameFromVariableNode)(variableNode), variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
247
|
+
if (variablePresent) {
|
|
248
|
+
var variable = context.findVariableByVariableName(variableName);
|
|
249
|
+
variables.push(variable);
|
|
250
|
+
termVerifiedAsVariable = true;
|
|
152
251
|
}
|
|
153
252
|
}
|
|
154
|
-
return
|
|
253
|
+
return termVerifiedAsVariable;
|
|
155
254
|
}
|
|
156
255
|
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgZmlyc3QgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FycmF5XCI7XG5pbXBvcnQgeyBvYmplY3RUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcbmltcG9ydCB7IE9CSkVDVF9UWVBFX05BTUUgfSBmcm9tIFwiLi4vdHlwZU5hbWVzXCI7XG5pbXBvcnQgeyBBUkdVTUVOVF9SVUxFX05BTUUgfSBmcm9tIFwiLi4vcnVsZU5hbWVzXCI7XG5pbXBvcnQgeyBub2RlUXVlcnksIHR5cGVOYW1lRnJvbVR5cGVOb2RlLCB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3Rlcm0hXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9hcmd1bWVudC90eXBlIVwiKSxcbiAgICAgIHZhcmlhYmxlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3Rlcm0vdmFyaWFibGUhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCwgdGVybU5vZGUpO1xuXG4gIGlmICghdGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICAgIGNvbnN0IGZpcnN0VmFyaWFibGUgPSBmaXJzdCh2YXJpYWJsZXMpLFxuICAgICAgICAgICAgdmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlLCAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7XG5cbiAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgIHRlcm1WZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0ZXJtVmVyaWZpZWQpIHtcbiAgICBjb25zdCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzKSB7XG4gICAgICB0ZXJtVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGBWZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgIGlmICh2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgICB2YXJpYWJsZXMucHVzaCh2YXJpYWJsZSk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gZmFsc2U7XG5cbiAgY29uc3QgY29uc3RydWN0b3JzID0gY29udGV4dC5nZXRDb25zdHJ1Y3RvcnMoKSxcbiAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvcnMuZmluZCgoY29uc3RydWN0b3IpID0+IHtcbiAgICAgICAgICBjb25zdCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IgPSB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCBjb25zdHJ1Y3RvciwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgaWYgKGNvbnN0cnVjdG9yICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHlwZSA9IGNvbnN0cnVjdG9yLmdldFR5cGUoKTtcblxuICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yKHRlcm1Ob2RlLCBjb25zdHJ1Y3RvciwgY29udGV4dCkge1xuICBjb25zdCBjb25zdHJ1Y3RvclRlcm1Ob2RlID0gY29uc3RydWN0b3IuZ2V0VGVybU5vZGUoKSxcbiAgICAgICAgbm9kZSA9IHRlcm1Ob2RlLCAgLy8vXG4gICAgICAgIGNvbnN0cnVjdG9yTm9kZSA9IGNvbnN0cnVjdG9yVGVybU5vZGUsIC8vL1xuICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGNvbnN0cnVjdG9yTm9kZSwgY29udGV4dCksXG4gICAgICAgIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvciA9IG5vZGVWZXJpZmllZDsgIC8vL1xuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3I7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeU5vZGUobm9kZSwgY29uc3RydWN0b3JOb2RlLCBjb250ZXh0KSB7XG4gIGxldCBub2RlVmVyaWZpZWQ7XG5cbiAgY29uc3Qgbm9kZVRlcm1pbmFsTm9kZSA9IG5vZGUuaXNUZXJtaW5hbE5vZGUoKSxcbiAgICAgICAgY29uc3RydWN0b3JOb2RlVGVybWluYWxOb2RlID0gY29uc3RydWN0b3JOb2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUgPT09IGNvbnN0cnVjdG9yTm9kZVRlcm1pbmFsTm9kZSkge1xuICAgIGlmIChub2RlVGVybWluYWxOb2RlKSB7XG4gICAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgICBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSA9IGNvbnN0cnVjdG9yTm9kZSwgIC8vL1xuICAgICAgICAgICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGVWZXJpZmllZCA9IHRlcm1pbmFsTm9kZVZlcmlmaWVkOyAgLy8vXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgICAgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUgPSBjb25zdHJ1Y3Rvck5vZGUsICAvLy9cbiAgICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBub2RlVmVyaWZpZWQgPSBub25UZXJtaW5hbE5vZGVWZXJpZmllZDsgLy8vXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9kZXMobm9kZXMsIGNvbnN0cnVjdG9yTm9kZXMsIGNvbnRleHQpIHtcbiAgbGV0IG5vZGVzVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBub2Rlc0xlbmd0aCA9IG5vZGVzLmxlbmd0aCxcbiAgICAgICAgY29uc3RydWN0b3JOb2Rlc0xlbmd0aCA9IGNvbnN0cnVjdG9yTm9kZXMubGVuZ3RoO1xuXG4gIGlmIChub2Rlc0xlbmd0aCA9PT0gY29uc3RydWN0b3JOb2Rlc0xlbmd0aCkge1xuICAgIG5vZGVzVmVyaWZpZWQgPSBub2Rlcy5ldmVyeSgobm9kZSwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnN0cnVjdG9yTm9kZSA9IGNvbnN0cnVjdG9yTm9kZXNbaW5kZXhdLFxuICAgICAgICAgICAgbm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9kZShub2RlLCBjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICBpZiAobm9kZVZlcmlmaWVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG5vZGVzVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIGNvbnN0cnVjdG9yVGVybWluYWxOb2RlLCBjb250ZXh0KSB7XG4gIGxldCB0ZXJtaW5hbE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1hdGNoZXMgPSB0ZXJtaW5hbE5vZGUubWF0Y2goY29uc3RydWN0b3JUZXJtaW5hbE5vZGUpO1xuXG4gIGlmIChtYXRjaGVzKSB7XG4gICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBydWxlTmFtZSA9IG5vblRlcm1pbmFsTm9kZS5nZXRSdWxlTmFtZSgpLCAvLy9cbiAgICAgICAgY29uc3RydWN0b3JSdWxlTmFtZSA9IGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gIGlmIChydWxlTmFtZSA9PT0gY29uc3RydWN0b3JSdWxlTmFtZSkge1xuICAgIHN3aXRjaCAocnVsZU5hbWUpIHtcbiAgICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIGNvbnN0cnVjdG9yQXJndW1lbnROb2RlID0gY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHZlcmlmeUFyZ3VtZW50Tm9kZShhcmd1bWVudE5vZGUsIGNvbnN0cnVjdG9yQXJndW1lbnROb2RlLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGFyZ3VtZW50Tm9kZVZlcmlmaWVkOyAvLy9cblxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgY29uc3RydWN0b3JDaGlsZE5vZGVzID0gY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgICAgICBub2RlcyA9IGNoaWxkTm9kZXMsIC8vL1xuICAgICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGVzID0gY29uc3RydWN0b3JDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgbm9kZXNWZXJpZmllZCA9IHZlcmlmeU5vZGVzKG5vZGVzLCBjb25zdHJ1Y3Rvck5vZGVzLCBjb250ZXh0KTtcblxuICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29uc3RydWN0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgaWYgKHRlcm1Ob2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgYXJndW1lbnRTdHJpbmcgPSBjb250ZXh0Lm5vZGVBc1N0cmluZyhhcmd1bWVudE5vZGUpO1xuXG4gICAgY29udGV4dC5lcnJvcihgVGhlICR7YXJndW1lbnRTdHJpbmd9IGFyZ3VtZW50IHNob3VsZCBiZSBhIHRlcm0sIG5vdCBhIHR5cGVgLCBhcmd1bWVudE5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHR5cGVzID0gW10sXG4gICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZCkge1xuICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgdGVybVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgICAgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGNvbnN0cnVjdG9yQXJndW1lbnROb2RlKSxcbiAgICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgICAgdHlwZSA9ICh0eXBlTmFtZSA9PT0gT0JKRUNUX1RZUEVfTkFNRSkgP1xuICAgICAgICAgICAgICAgICAgICAgb2JqZWN0VHlwZSA6ICAvLy9cbiAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpLFxuICAgICAgICAgICAgdGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlID0gdGVybVR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodHlwZSk7XG5cbiAgICAgIGlmICh0ZXJtVHlwZUVxdWFsVG9PclN1YlR5cGVPZlR5cGUpIHtcbiAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudE5vZGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJ0ZXJtTm9kZSIsInR5cGVzIiwiY29udGV4dCIsInRlcm1WZXJpZmllZCIsInRlcm1TdHJpbmciLCJub2RlQXNTdHJpbmciLCJ0cmFjZSIsInZhcmlhYmxlcyIsInRlcm1WZXJpZmllZEFzVmFyaWFibGUiLCJmaXJzdFZhcmlhYmxlIiwiZmlyc3QiLCJ2YXJpYWJsZSIsInR5cGUiLCJnZXRUeXBlIiwicHVzaCIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJkZWJ1ZyIsInZhcmlhYmxlTm9kZSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZVByZXNlbnQiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lIiwiZmluZFZhcmlhYmxlQnlWYXJpYWJsZU5hbWUiLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsImZpbmQiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9yIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImdldFRlcm1Ob2RlIiwibm9kZSIsImNvbnN0cnVjdG9yTm9kZSIsIm5vZGVWZXJpZmllZCIsInZlcmlmeU5vZGUiLCJub2RlVGVybWluYWxOb2RlIiwiaXNUZXJtaW5hbE5vZGUiLCJjb25zdHJ1Y3Rvck5vZGVUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlIiwiY29uc3RydWN0b3JOb25UZXJtaW5hbE5vZGUiLCJub25UZXJtaW5hbE5vZGVWZXJpZmllZCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsInZlcmlmeU5vZGVzIiwibm9kZXMiLCJjb25zdHJ1Y3Rvck5vZGVzIiwibm9kZXNWZXJpZmllZCIsIm5vZGVzTGVuZ3RoIiwibGVuZ3RoIiwiY29uc3RydWN0b3JOb2Rlc0xlbmd0aCIsImV2ZXJ5IiwiaW5kZXgiLCJtYXRjaGVzIiwibWF0Y2giLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY29uc3RydWN0b3JSdWxlTmFtZSIsIkFSR1VNRU5UX1JVTEVfTkFNRSIsImFyZ3VtZW50Tm9kZSIsImNvbnN0cnVjdG9yQXJndW1lbnROb2RlIiwiYXJndW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbnN0cnVjdG9yQ2hpbGROb2RlcyIsImFyZ3VtZW50U3RyaW5nIiwiZXJyb3IiLCJmaXJzdFR5cGUiLCJ0ZXJtVHlwZSIsInR5cGVOb2RlIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsIk9CSkVDVF9UWVBFX05BTUUiLCJvYmplY3RUeXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwidGVybVR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUeXBlIiwiaXNFcXVhbFRvT3JTdWJUeXBlT2YiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVlBLE9BbUNDO2VBbkN1QkE7O0lBcUNSQyxvQkFBb0I7ZUFBcEJBOztJQXFCQUMsNkJBQTZCO2VBQTdCQTs7O3FCQXBFTTtvQkFDSzt5QkFDTTt5QkFDRTtxQkFDMkM7QUFFOUUsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLG9CQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDLG9CQUMxQkUsb0JBQW9CRixJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLFNBQVNKLFdBQVdPLFFBQVEsRUFBRUMsS0FBSyxFQUFFQyxPQUFPLEVBQUU7SUFDM0QsSUFBSUMsZUFBZSxLQUFLO0lBRXhCLElBQU1DLGFBQWFGLFFBQVFHLFlBQVksQ0FBQ0w7SUFFeENFLFFBQVFJLEtBQUssQ0FBQyxBQUFDLGtCQUE0QixPQUFYRixZQUFXLGNBQVlKO0lBRXZELElBQUksQ0FBQ0csY0FBYztRQUNqQixJQUFNSSxZQUFZLEVBQUUsRUFDZEMseUJBQXlCZCxx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
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG9iamVjdFR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgT0JKRUNUX1RZUEVfTkFNRSB9IGZyb20gXCIuLi90eXBlTmFtZXNcIjtcbmltcG9ydCB7IEFSR1VNRU5UX1JVTEVfTkFNRSB9IGZyb20gXCIuLi9ydWxlTmFtZXNcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUsIHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdGVybSFcIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGUhXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmNsYXNzIFRlcm1WZXJpZmllciBleHRlbmRzIFZlcmlmaWVyIHtcbiAgdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgY29uc3RydWN0b3JUZXJtaW5hbE5vZGUsIGNvbnRleHQpIHtcbiAgICBsZXQgdGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IG1hdGNoZXMgPSB0ZXJtaW5hbE5vZGUubWF0Y2goY29uc3RydWN0b3JUZXJtaW5hbE5vZGUpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlOb25UZXJtaW5hbE5vZGUobm9uVGVybWluYWxOb2RlLCBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZSwgY29udGV4dCkge1xuICAgIGxldCBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgcnVsZU5hbWUgPSBub25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSwgLy8vXG4gICAgICAgICAgY29uc3RydWN0b3JSdWxlTmFtZSA9IGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7IC8vL1xuXG4gICAgaWYgKHJ1bGVOYW1lID09PSBjb25zdHJ1Y3RvclJ1bGVOYW1lKSB7XG4gICAgICBzd2l0Y2ggKHJ1bGVOYW1lKSB7XG4gICAgICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICAgICAgY29uc3QgYXJndW1lbnROb2RlID0gbm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSA9IGNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlLCAvLy9cbiAgICAgICAgICAgICAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5QXJndW1lbnROb2RlKGFyZ3VtZW50Tm9kZSwgY29uc3RydWN0b3JBcmd1bWVudE5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBhcmd1bWVudE5vZGVWZXJpZmllZDsgLy8vXG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICBjb25zdCBjaGlsZE5vZGVzID0gbm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvckNoaWxkTm9kZXMgPSBjb25zdHJ1Y3Rvck5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgICAgbm9kZXMgPSBjaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGVzID0gY29uc3RydWN0b3JDaGlsZE5vZGVzLCAvLy9cbiAgICAgICAgICAgICAgICBub2Rlc1ZlcmlmaWVkID0gdGhpcy52ZXJpZnlOb2Rlcyhub2RlcywgY29uc3RydWN0b3JOb2RlcywgY29udGV4dCk7XG5cbiAgICAgICAgICBub25UZXJtaW5hbE5vZGVWZXJpZmllZCA9IG5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG4gIH1cblxuICB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBjb25zdHJ1Y3RvckFyZ3VtZW50Tm9kZSwgY29udGV4dCkge1xuICAgIGxldCBhcmd1bWVudE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBpZiAodHlwZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGFyZ3VtZW50U3RyaW5nID0gY29udGV4dC5ub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgICAgY29udGV4dC5lcnJvcihgVGhlICR7YXJndW1lbnRTdHJpbmd9IGFyZ3VtZW50IHNob3VsZCBiZSBhIHRlcm0sIG5vdCBhIHR5cGVgLCBhcmd1bWVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoYXJndW1lbnROb2RlKSxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yVGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KGNvbnN0cnVjdG9yQXJndW1lbnROb2RlKSxcbiAgICAgICAgICAgIGNvbnN0cnVjdG9yVHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGNvbnN0cnVjdG9yQXJndW1lbnROb2RlKTtcblxuICAgICAgaWYgKGZhbHNlKSB7XG4gICAgICAgIC8vL1xuICAgICAgfSBlbHNlIGlmIChjb25zdHJ1Y3RvclRlcm1Ob2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgICAgICBjb25zdHJ1Y3Rvck5vZGUgPSBjb25zdHJ1Y3RvclRlcm1Ob2RlLCAgLy8vXG4gICAgICAgICAgICAgIG5vZGVWZXJpZmllZCA9IHRoaXMudmVyaWZ5Tm9kZShub2RlLCBjb25zdHJ1Y3Rvck5vZGUsIGNvbnRleHQpO1xuXG4gICAgICAgIGFyZ3VtZW50Tm9kZVZlcmlmaWVkID0gbm9kZVZlcmlmaWVkOyAgLy8vXG4gICAgICB9IGVsc2UgaWYgKGNvbnN0cnVjdG9yVHlwZU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgICBjb25zdCBjb25zdHJ1Y3RvclR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUoY29uc3RydWN0b3JUeXBlTm9kZSksXG4gICAgICAgICAgICAgICAgY29uc3RydWN0b3JUeXBlID0gKGNvbnN0cnVjdG9yVHlwZU5hbWUgPT09IE9CSkVDVF9UWVBFX05BTUUpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdFR5cGUgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShjb25zdHJ1Y3RvclR5cGVOYW1lKSxcbiAgICAgICAgICAgICAgICBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgICAgdGVybVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuICAgICAgICAgICAgICAgIHR5cGUgPSBjb25zdHJ1Y3RvclR5cGUsIC8vL1xuICAgICAgICAgICAgICAgIHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSA9IHRlcm1UeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHR5cGUpO1xuXG4gICAgICAgICAgaWYgKHRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSkge1xuICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBhcmd1bWVudE5vZGVWZXJpZmllZDtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdGVybVZlcmlmaWVyID0gbmV3IFRlcm1WZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdGVybVN0cmluZyA9IGNvbnRleHQubm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICBjb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtLi4uYCwgdGVybU5vZGUpO1xuXG4gIGlmICghdGVybVZlcmlmaWVkKSB7XG4gICAgY29uc3QgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICAgIGNvbnN0IGZpcnN0VmFyaWFibGUgPSBmaXJzdCh2YXJpYWJsZXMpLFxuICAgICAgICAgICAgdmFyaWFibGUgPSBmaXJzdFZhcmlhYmxlLCAvLy9cbiAgICAgICAgICAgIHR5cGUgPSB2YXJpYWJsZS5nZXRUeXBlKCk7XG5cbiAgICAgIHR5cGVzLnB1c2godHlwZSk7XG5cbiAgICAgIHRlcm1WZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0ZXJtVmVyaWZpZWQpIHtcbiAgICBjb25zdCB0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnModGVybU5vZGUsIHR5cGVzLCBjb250ZXh0KTtcblxuICAgIGlmICh0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzKSB7XG4gICAgICB0ZXJtVmVyaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICBjb250ZXh0LmRlYnVnKGBWZXJpZmllZCB0aGUgJyR7dGVybVN0cmluZ30nIHRlcm0uYCwgdGVybU5vZGUpO1xuICB9XG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCkge1xuICBsZXQgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbnN0cnVjdG9ycyA9IGNvbnRleHQuZ2V0Q29uc3RydWN0b3JzKCksXG4gICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3JzLmZpbmQoKGNvbnN0cnVjdG9yKSA9PiB7XG4gICAgICAgICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3Rvcih0ZXJtTm9kZSwgY29uc3RydWN0b3IsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KSB8fCBudWxsO1xuXG4gIGlmIChjb25zdHJ1Y3RvciAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHR5cGUgPSBjb25zdHJ1Y3Rvci5nZXRUeXBlKCk7XG5cbiAgICB0eXBlcy5wdXNoKHR5cGUpO1xuXG4gICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IodGVybU5vZGUsIGNvbnN0cnVjdG9yLCBjb250ZXh0KSB7XG4gIGNvbnN0IGNvbnN0cnVjdG9yVGVybU5vZGUgPSBjb25zdHJ1Y3Rvci5nZXRUZXJtTm9kZSgpLFxuICAgICAgICBub25UZXJtaW5hbE5OZGVBID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgbm9uVGVybWluYWxOb2RlQiA9IGNvbnN0cnVjdG9yVGVybU5vZGUsICAvLy9cbiAgICAgICAgbm9kZVZlcmlmaWVkID0gdGVybVZlcmlmaWVyLnZlcmlmeU5vblRlcm1pbmFsTm9kZShub25UZXJtaW5hbE5OZGVBLCBub25UZXJtaW5hbE5vZGVCLCBjb250ZXh0KSxcbiAgICAgICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9yID0gbm9kZVZlcmlmaWVkOyAgLy8vXG5cbiAgcmV0dXJuIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3Rvcjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSBmYWxzZTtcblxuICBjb25zdCB2YXJpYWJsZU5vZGUgPSB2YXJpYWJsZU5vZGVRdWVyeSh0ZXJtTm9kZSk7XG5cbiAgaWYgKHZhcmlhYmxlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUodmFyaWFibGVOb2RlKSxcbiAgICAgICAgICB2YXJpYWJsZVByZXNlbnQgPSBjb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICAgIGlmICh2YXJpYWJsZVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlID0gY29udGV4dC5maW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSh2YXJpYWJsZU5hbWUpO1xuXG4gICAgICB2YXJpYWJsZXMucHVzaCh2YXJpYWJsZSk7XG5cbiAgICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlO1xufVxuIl0sIm5hbWVzIjpbInRlcm1WZXJpZmllciIsInZlcmlmeVRlcm0iLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsInZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3IiLCJ2ZXJpZnlUZXJtQXNWYXJpYWJsZSIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwidmFyaWFibGVOb2RlUXVlcnkiLCJUZXJtVmVyaWZpZXIiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJjb25zdHJ1Y3RvclRlcm1pbmFsTm9kZSIsImNvbnRleHQiLCJ0ZXJtaW5hbE5vZGVWZXJpZmllZCIsIm1hdGNoZXMiLCJtYXRjaCIsInZlcmlmeU5vblRlcm1pbmFsTm9kZSIsIm5vblRlcm1pbmFsTm9kZSIsImNvbnN0cnVjdG9yTm9uVGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJydWxlTmFtZSIsImdldFJ1bGVOYW1lIiwiY29uc3RydWN0b3JSdWxlTmFtZSIsIkFSR1VNRU5UX1JVTEVfTkFNRSIsImFyZ3VtZW50Tm9kZSIsImNvbnN0cnVjdG9yQXJndW1lbnROb2RlIiwiYXJndW1lbnROb2RlVmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNvbnN0cnVjdG9yQ2hpbGROb2RlcyIsIm5vZGVzIiwiY29uc3RydWN0b3JOb2RlcyIsIm5vZGVzVmVyaWZpZWQiLCJ2ZXJpZnlOb2RlcyIsInR5cGVOb2RlIiwiYXJndW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJlcnJvciIsInRlcm1Ob2RlIiwiY29uc3RydWN0b3JUZXJtTm9kZSIsImNvbnN0cnVjdG9yVHlwZU5vZGUiLCJub2RlIiwiY29uc3RydWN0b3JOb2RlIiwibm9kZVZlcmlmaWVkIiwidmVyaWZ5Tm9kZSIsInR5cGVzIiwidGVybVZlcmlmaWVkIiwiY29uc3RydWN0b3JUeXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwiY29uc3RydWN0b3JUeXBlIiwiT0JKRUNUX1RZUEVfTkFNRSIsIm9iamVjdFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJmaXJzdFR5cGUiLCJmaXJzdCIsInRlcm1UeXBlIiwidHlwZSIsInRlcm1UeXBlRXF1YWxUb09yU3ViVHlwZU9mVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwiVmVyaWZpZXIiLCJ0ZXJtU3RyaW5nIiwidHJhY2UiLCJ2YXJpYWJsZXMiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwiZmlyc3RWYXJpYWJsZSIsInZhcmlhYmxlIiwiZ2V0VHlwZSIsInB1c2giLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzIiwiZGVidWciLCJjb25zdHJ1Y3RvcnMiLCJnZXRDb25zdHJ1Y3RvcnMiLCJjb25zdHJ1Y3RvciIsImZpbmQiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3IiLCJnZXRUZXJtTm9kZSIsIm5vblRlcm1pbmFsTk5kZUEiLCJub25UZXJtaW5hbE5vZGVCIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGVOYW1lIiwidmFyaWFibGVOYW1lRnJvbVZhcmlhYmxlTm9kZSIsInZhcmlhYmxlUHJlc2VudCIsImlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUiLCJmaW5kVmFyaWFibGVCeVZhcmlhYmxlTmFtZSJd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
|
|
@@ -18,7 +18,7 @@ function _interop_require_default(obj) {
|
|
|
18
18
|
default: obj
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
|
-
var typeNodeQuery = (0, _query.nodeQuery)("/argument/type");
|
|
21
|
+
var typeNodeQuery = (0, _query.nodeQuery)("/argument/type"), termNodeQuery = (0, _query.nodeQuery)("/argument/term");
|
|
22
22
|
function verifyTermAsConstructor(termNode, typeNode, fileContext) {
|
|
23
23
|
var termVerifiedAsConstructor = false;
|
|
24
24
|
var type = null;
|
|
@@ -105,20 +105,21 @@ function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
|
105
105
|
return nonTerminalNodeVerified;
|
|
106
106
|
}
|
|
107
107
|
function verifyArgumentNode(argumentNode, fileContext) {
|
|
108
|
-
var
|
|
109
|
-
var typeNode = typeNodeQuery(argumentNode);
|
|
110
|
-
if (
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
} else {
|
|
108
|
+
var argumentNodeVerified = false;
|
|
109
|
+
var typeNode = typeNodeQuery(argumentNode), termNode = termNodeQuery(argumentNode);
|
|
110
|
+
if (false) {
|
|
111
|
+
///
|
|
112
|
+
} else if (typeNode !== null) {
|
|
114
113
|
var typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
115
114
|
if (!typePresent) {
|
|
116
115
|
fileContext.error("The type '".concat(typeName, "' is not present."), argumentNode);
|
|
117
|
-
} else {
|
|
118
|
-
typeNodeVerified = true;
|
|
119
116
|
}
|
|
117
|
+
argumentNodeVerified = typePresent; ///
|
|
118
|
+
} else if (termNode !== null) {
|
|
119
|
+
var node = termNode, nodeVerified = verifyNode(node, fileContext);
|
|
120
|
+
argumentNodeVerified = nodeVerified; ///
|
|
120
121
|
}
|
|
121
|
-
return
|
|
122
|
+
return argumentNodeVerified;
|
|
122
123
|
}
|
|
123
124
|
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSwgQVJHVU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGVcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVRlcm1Bc0NvbnN0cnVjdG9yKHRlcm1Ob2RlLCB0eXBlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBsZXQgdHlwZSA9IG51bGw7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgdGVybVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChjaGlsZE5vZGVzVmVyaWZpZWQpIHtcbiAgICBpZiAodHlwZU5vZGUgPT09IG51bGwpIHtcbiAgICAgIHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKTtcblxuICAgICAgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSAnJHt0ZXJtU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHt0eXBlTmFtZX0nIHR5cGUgaXMgbm90IHByZXNlbnQuYCwgdGVybU5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9kZShub2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBub2RlVmVyaWZpZWQgPSB0ZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgbm9kZVZlcmlmaWVkID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgcmV0dXJuIG5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCkge1xuICBjb25zdCBjaGlsZE5vZGVzVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIGlmIChub2RlVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXNWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgY29uc3QgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB0cnVlO1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRFUk1fUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgICB0eXBlID0gZmlyc3RUeXBlOyAvLy9cblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3RvcidzIGNvbXBvdW5kICcke3Rlcm1TdHJpbmd9JyB0ZXJtIG5vZGUgaXMgbm90IG51bGwuYCwgdGVybU5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICBjaGlsZE5vZGVzVmVyaWZpZWQgPSB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGZpbGVDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBjaGlsZE5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFyZ3VtZW50Tm9kZShhcmd1bWVudE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCB0eXBlTm9kZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgaWYgKHR5cGVOb2RlID09PSBudWxsKSB7XG4gICAgY29uc3QgYXJndW1lbnRTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcoYXJndW1lbnROb2RlKTtcblxuICAgIGZpbGVDb250ZXh0LmVycm9yKGBUaGUgJHthcmd1bWVudFN0cmluZ30gYXJndW1lbnQgc2hvdWxkIGJlIGEgdHlwZS5gLCBhcmd1bWVudE5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gZmlsZUNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB0eXBlICcke3R5cGVOYW1lfScgaXMgbm90IHByZXNlbnQuYCwgYXJndW1lbnROb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHlwZU5vZGVWZXJpZmllZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR5cGVOb2RlVmVyaWZpZWQ7XG59XG4iXSwibmFtZXMiOlsidmVyaWZ5VGVybUFzQ29uc3RydWN0b3IiLCJ0eXBlTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidGVybU5vZGUiLCJ0eXBlTm9kZSIsImZpbGVDb250ZXh0IiwidGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciIsInR5cGUiLCJub25UZXJtaW5hbE5vZGUiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZpZWQiLCJ2ZXJpZnlDaGlsZE5vZGVzIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsImVycm9yIiwiY29uc3RydWN0b3IiLCJDb25zdHJ1Y3RvciIsImZyb21UZXJtTm9kZUFuZFR5cGUiLCJhZGRDb25zdHJ1Y3RvciIsImluZm8iLCJ2ZXJpZnlOb2RlIiwibm9kZSIsIm5vZGVWZXJpZmllZCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJldmVyeSIsImNoaWxkTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJBUkdVTUVOVF9SVUxFX05BTUUiLCJhcmd1bWVudE5vZGUiLCJhcmd1bWVudE5vZGVWZXJpZmllZCIsInZlcmlmeUFyZ3VtZW50Tm9kZSIsIlRFUk1fUlVMRV9OQU1FIiwidHlwZXMiLCJjb250ZXh0IiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsImZpcnN0VHlwZSIsImZpcnN0IiwidHlwZU5vZGVWZXJpZmllZCIsImFy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
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdGVybUFzQ29uc3RydWN0b3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IENvbnN0cnVjdG9yIGZyb20gXCIuLi9jb25zdHJ1Y3RvclwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSwgQVJHVU1FTlRfUlVMRV9OQU1FIH0gZnJvbSBcIi4uL3J1bGVOYW1lc1wiO1xuXG5jb25zdCB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGVcIiksXG4gICAgICB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3Rlcm1cIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeVRlcm1Bc0NvbnN0cnVjdG9yKHRlcm1Ob2RlLCB0eXBlTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSBmYWxzZTtcblxuICBsZXQgdHlwZSA9IG51bGw7XG5cbiAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGVybU5vZGUsICAvLy9cbiAgICAgICAgdGVybVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyh0ZXJtTm9kZSk7XG5cbiAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgZmlsZUNvbnRleHQpO1xuXG4gIGlmIChjaGlsZE5vZGVzVmVyaWZpZWQpIHtcbiAgICBpZiAodHlwZU5vZGUgPT09IG51bGwpIHtcbiAgICAgIHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKTtcblxuICAgICAgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIHRlcm1WZXJpZmllZEFzQ29uc3RydWN0b3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSAnJHt0ZXJtU3RyaW5nfScgY29uc3RydWN0b3IncyAnJHt0eXBlTmFtZX0nIHR5cGUgaXMgbm90IHByZXNlbnQuYCwgdGVybU5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgY29uc3QgY29uc3RydWN0b3IgPSBDb25zdHJ1Y3Rvci5mcm9tVGVybU5vZGVBbmRUeXBlKHRlcm1Ob2RlLCB0eXBlKTtcblxuICAgIGZpbGVDb250ZXh0LmFkZENvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKTtcbiAgfVxuXG4gIGlmICh0ZXJtVmVyaWZpZWRBc0NvbnN0cnVjdG9yKSB7XG4gICAgZmlsZUNvbnRleHQuaW5mbyhgVmVyaWZpZWQgdGhlICcke3Rlcm1TdHJpbmd9JyBjb25zdHJ1Y3Rvci5gLCB0ZXJtTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdGVybVZlcmlmaWVkQXNDb25zdHJ1Y3Rvcjtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9kZShub2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IG5vZGVUZXJtaW5hbE5vZGUgPSBub2RlLmlzVGVybWluYWxOb2RlKCk7XG5cbiAgaWYgKG5vZGVUZXJtaW5hbE5vZGUpIHtcbiAgICBjb25zdCB0ZXJtaW5hbE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB2ZXJpZnlUZXJtaW5hbE5vZGUodGVybWluYWxOb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICBub2RlVmVyaWZpZWQgPSB0ZXJtaW5hbE5vZGVWZXJpZmllZDsgIC8vL1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IG5vblRlcm1pbmFsTm9kZSA9IG5vZGUsIC8vL1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgbm9kZVZlcmlmaWVkID0gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7IC8vL1xuICB9XG5cbiAgcmV0dXJuIG5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Q2hpbGROb2RlcyhjaGlsZE5vZGVzLCBmaWxlQ29udGV4dCkge1xuICBjb25zdCBjaGlsZE5vZGVzVmVyaWZpZWQgPSBjaGlsZE5vZGVzLmV2ZXJ5KChjaGlsZE5vZGUpID0+IHtcbiAgICBjb25zdCBub2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICBub2RlVmVyaWZpZWQgPSB2ZXJpZnlOb2RlKG5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIGlmIChub2RlVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNoaWxkTm9kZXNWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgY29uc3QgdGVybWluYWxOb2RlVmVyaWZpZWQgPSB0cnVlO1xuXG4gIHJldHVybiB0ZXJtaW5hbE5vZGVWZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5Tm9uVGVybWluYWxOb2RlKG5vblRlcm1pbmFsTm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkO1xuXG4gIGNvbnN0IHJ1bGVOYW1lID0gbm9uVGVybWluYWxOb2RlLmdldFJ1bGVOYW1lKCk7XG5cbiAgc3dpdGNoIChydWxlTmFtZSkge1xuICAgIGNhc2UgQVJHVU1FTlRfUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCBhcmd1bWVudE5vZGUgPSBub25UZXJtaW5hbE5vZGUsIC8vL1xuICAgICAgICAgICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudE5vZGUoYXJndW1lbnROb2RlLCBmaWxlQ29udGV4dCk7XG5cbiAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gYXJndW1lbnROb2RlVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRFUk1fUlVMRV9OQU1FOiB7XG4gICAgICBjb25zdCB0ZXJtTm9kZSA9IG5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICB0eXBlcyA9IFtdLFxuICAgICAgICAgICAgY29udGV4dCA9IGZpbGVDb250ZXh0LCAgLy8vXG4gICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgICAgIGlmICh0ZXJtVmVyaWZpZWQpIHtcbiAgICAgICAgY29uc3QgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgICAgICB0eXBlID0gZmlyc3RUeXBlOyAvLy9cblxuICAgICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB0eXBlIG9mIHRoZSBjb25zdHJ1Y3RvcidzIGNvbXBvdW5kICcke3Rlcm1TdHJpbmd9JyB0ZXJtIG5vZGUgaXMgbm90IG51bGwuYCwgdGVybU5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdHJ1ZTsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc3QgY2hpbGROb2RlcyA9IG5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICBjaGlsZE5vZGVzVmVyaWZpZWQgPSB2ZXJpZnlDaGlsZE5vZGVzKGNoaWxkTm9kZXMsIGZpbGVDb250ZXh0KTtcblxuICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBjaGlsZE5vZGVzVmVyaWZpZWQ7IC8vL1xuXG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbm9uVGVybWluYWxOb2RlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFyZ3VtZW50Tm9kZShhcmd1bWVudE5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBhcmd1bWVudE5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeShhcmd1bWVudE5vZGUpLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICBpZiAoZmFsc2UpIHtcbiAgICAvLy9cbiAgfSBlbHNlIGlmICh0eXBlTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIHR5cGVQcmVzZW50ID0gZmlsZUNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgaWYgKCF0eXBlUHJlc2VudCkge1xuICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB0eXBlICcke3R5cGVOYW1lfScgaXMgbm90IHByZXNlbnQuYCwgYXJndW1lbnROb2RlKTtcbiAgICB9XG5cbiAgICBhcmd1bWVudE5vZGVWZXJpZmllZCA9IHR5cGVQcmVzZW50OyAvLy9cbiAgfSBlbHNlIGlmICh0ZXJtTm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IG5vZGUgPSB0ZXJtTm9kZSwgIC8vL1xuICAgICAgICAgIG5vZGVWZXJpZmllZCA9IHZlcmlmeU5vZGUobm9kZSwgZmlsZUNvbnRleHQpO1xuXG4gICAgYXJndW1lbnROb2RlVmVyaWZpZWQgPSBub2RlVmVyaWZpZWQ7ICAvLy9cbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudE5vZGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUZXJtQXNDb25zdHJ1Y3RvciIsInR5cGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0ZXJtTm9kZVF1ZXJ5IiwidGVybU5vZGUiLCJ0eXBlTm9kZSIsImZpbGVDb250ZXh0IiwidGVybVZlcmlmaWVkQXNDb25zdHJ1Y3RvciIsInR5cGUiLCJub25UZXJtaW5hbE5vZGUiLCJ0ZXJtU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZpZWQiLCJ2ZXJpZnlDaGlsZE5vZGVzIiwidHlwZU5hbWUiLCJ0eXBlTmFtZUZyb21UeXBlTm9kZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsImVycm9yIiwiY29uc3RydWN0b3IiLCJDb25zdHJ1Y3RvciIsImZyb21UZXJtTm9kZUFuZFR5cGUiLCJhZGRDb25zdHJ1Y3RvciIsImluZm8iLCJ2ZXJpZnlOb2RlIiwibm9kZSIsIm5vZGVWZXJpZmllZCIsIm5vZGVUZXJtaW5hbE5vZGUiLCJpc1Rlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZVZlcmlmaWVkIiwidmVyaWZ5VGVybWluYWxOb2RlIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJldmVyeSIsImNoaWxkTm9kZSIsInJ1bGVOYW1lIiwiZ2V0UnVsZU5hbWUiLCJBUkdVTUVOVF9SVUxFX05BTUUiLCJhcmd1bWVudE5vZGUiLCJhcmd1bWVudE5vZGVWZXJpZmllZCIsInZlcmlmeUFyZ3VtZW50Tm9kZSIsIlRFUk1fUlVMRV9OQU1FIiwidHlwZXMiLCJjb250ZXh0IiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsImZpcnN0VHlwZSIsImZpcnN0IiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBWUE7OztlQUF3QkE7OzsyREFWRDtrRUFDQztxQkFFRjtxQkFDMEI7eUJBQ0c7Ozs7OztBQUVuRCxJQUFNQyxnQkFBZ0JDLElBQUFBLGdCQUFTLEVBQUMsbUJBQzFCQyxnQkFBZ0JELElBQUFBLGdCQUFTLEVBQUM7QUFFakIsU0FBU0Ysd0JBQXdCSSxRQUFRLEVBQUVDLFFBQVEsRUFBRUMsV0FBVyxFQUFFO0lBQy9FLElBQUlDLDRCQUE0QixLQUFLO0lBRXJDLElBQUlDLE9BQU8sSUFBSTtJQUVmLElBQU1DLGtCQUFrQkwsVUFDbEJNLGFBQWFKLFlBQVlLLFlBQVksQ0FBQ1A7SUFFNUMsSUFBTVEsYUFBYUgsZ0JBQWdCSSxhQUFhLElBQzFDQyxxQkFBcUJDLGlCQUFpQkgsWUFBWU47SUFFeEQsSUFBSVEsb0JBQW9CO1FBQ3RCLElBQUlULGFBQWEsSUFBSSxFQUFFO1lBQ3JCRSw0QkFBNEIsSUFBSTtRQUNsQyxPQUFPO1lBQ0wsSUFBTVMsV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNaO1lBRXRDRyxPQUFPRixZQUFZWSxrQkFBa0IsQ0FBQ0Y7WUFFdEMsSUFBSVIsU0FBUyxJQUFJLEVBQUU7Z0JBQ2pCRCw0QkFBNEIsSUFBSTtZQUNsQyxPQUFPO2dCQUNMRCxZQUFZYSxLQUFLLENBQUMsQUFBQyxRQUFxQ0gsT0FBOUJOLFlBQVcscUJBQTRCLE9BQVRNLFVBQVMsMkJBQXlCWjtZQUM1RixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJRywyQkFBMkI7UUFDN0IsSUFBTWEsY0FBY0Msb0JBQVcsQ0FBQ0MsbUJBQW1CLENBQUNsQixV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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "occam-verify-cli",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "0.0.
|
|
4
|
+
"version": "0.0.615",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/occam-verify-cli",
|
|
7
7
|
"description": "Occam's Verifier",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"necessary": "^11.2.1",
|
|
15
15
|
"occam-custom-grammars": "^5.0.468",
|
|
16
16
|
"occam-dom": "^3.1.31",
|
|
17
|
-
"occam-file-system": "^5.0.
|
|
17
|
+
"occam-file-system": "^5.0.209",
|
|
18
18
|
"occam-grammar-utilities": "^7.0.116"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
package/src/log.js
CHANGED
|
@@ -110,9 +110,9 @@ function formatMessage(level, message, node = null, tokens = null, filePath = nu
|
|
|
110
110
|
message = `${upperCaseLevel}: ${message}`;
|
|
111
111
|
} else {
|
|
112
112
|
const leastLineIndex = leastLineIndexFromNodeAndTokens(node, tokens),
|
|
113
|
-
leastLineNumber = leastLineIndex
|
|
113
|
+
leastLineNumber = leastLineIndex, ///
|
|
114
114
|
greatestLineIndex = greatestLineIndexFromNodeAndTokens(node, tokens),
|
|
115
|
-
greatestLineNumber = greatestLineIndex
|
|
115
|
+
greatestLineNumber = greatestLineIndex; ///
|
|
116
116
|
|
|
117
117
|
if (leastLineNumber === greatestLineNumber) {
|
|
118
118
|
const lineNumber = leastLineNumber; ///
|
|
@@ -55,7 +55,7 @@ class MetastatementVerifier extends Verifier {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
const metastatementVerifier = new MetastatementVerifier();
|
|
58
|
+
export const metastatementVerifier = new MetastatementVerifier();
|
|
59
59
|
|
|
60
60
|
export default function verifyMetastatement(metastatementNode, derived, metaproofContext) {
|
|
61
61
|
let metastatementVerified = false;
|
package/src/verify/statement.js
CHANGED
|
@@ -9,6 +9,7 @@ import verifyTypeInference from "../verify/typeInference";
|
|
|
9
9
|
import verifyTypeAssertion from "../verify/assertion/type";
|
|
10
10
|
|
|
11
11
|
import { objectType } from "../type";
|
|
12
|
+
import { termVerifier } from "../verify/term";
|
|
12
13
|
import { first, second } from "../utilities/array";
|
|
13
14
|
import { OBJECT_TYPE_NAME } from "../typeNames";
|
|
14
15
|
import { STATEMENT_META_TYPE } from "../metaTypes";
|
|
@@ -24,36 +25,6 @@ const termNodeQuery = nodeQuery("/argument/term!"),
|
|
|
24
25
|
typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
|
|
25
26
|
metaTypeTerminalNodeQuery = nodeQuery("/metaType/@meta-type");
|
|
26
27
|
|
|
27
|
-
export default function verifyStatement(statementNode, assignments, derived, context) {
|
|
28
|
-
let statementVerified = false;
|
|
29
|
-
|
|
30
|
-
if (!statementVerified) {
|
|
31
|
-
const statementVerifiedAgainstCombinators = verifyStatementAgainstCombinators(statementNode, context);
|
|
32
|
-
|
|
33
|
-
statementVerified = statementVerifiedAgainstCombinators; ///
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (!statementVerified) {
|
|
37
|
-
const statementVerifiedAsTypeInference = verifyStatementAsTypeInference(statementNode, derived, context);
|
|
38
|
-
|
|
39
|
-
statementVerified = statementVerifiedAsTypeInference; ///
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (!statementVerified) {
|
|
43
|
-
const statementVerifiedAsTypeAssertion = verifyStatementAsTypeAssertion(statementNode, assignments, derived, context);
|
|
44
|
-
|
|
45
|
-
statementVerified = statementVerifiedAsTypeAssertion; ///
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (!statementVerified) {
|
|
49
|
-
const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, derived, context);
|
|
50
|
-
|
|
51
|
-
statementVerified = statementVerifiedAsEquality; //
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return statementVerified;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
28
|
class StatementVerifier extends Verifier {
|
|
58
29
|
verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context) {
|
|
59
30
|
let nonTerminalNodeVerified = false;
|
|
@@ -62,14 +33,14 @@ class StatementVerifier extends Verifier {
|
|
|
62
33
|
combinatorNonTerminalNode = nonTerminalNodeB; ///
|
|
63
34
|
|
|
64
35
|
const ruleName = nonTerminalNode.getRuleName(), ///
|
|
65
|
-
|
|
36
|
+
combinatorRuleName = combinatorNonTerminalNode.getRuleName(); ///
|
|
66
37
|
|
|
67
38
|
if (ruleName === combinatorRuleName) {
|
|
68
39
|
switch (ruleName) {
|
|
69
40
|
case ARGUMENT_RULE_NAME: {
|
|
70
41
|
const argumentNode = nonTerminalNode, ///
|
|
71
|
-
|
|
72
|
-
argumentNodeVerified =
|
|
42
|
+
constructorArgumentNode = combinatorNonTerminalNode, ///
|
|
43
|
+
argumentNodeVerified = termVerifier.verifyArgumentNode(argumentNode, constructorArgumentNode, context);
|
|
73
44
|
|
|
74
45
|
nonTerminalNodeVerified = argumentNodeVerified; ///
|
|
75
46
|
|
|
@@ -167,7 +138,37 @@ class StatementVerifier extends Verifier {
|
|
|
167
138
|
}
|
|
168
139
|
}
|
|
169
140
|
|
|
170
|
-
const statementVerifier = new StatementVerifier();
|
|
141
|
+
export const statementVerifier = new StatementVerifier();
|
|
142
|
+
|
|
143
|
+
export default function verifyStatement(statementNode, assignments, derived, context) {
|
|
144
|
+
let statementVerified = false;
|
|
145
|
+
|
|
146
|
+
if (!statementVerified) {
|
|
147
|
+
const statementVerifiedAgainstCombinators = verifyStatementAgainstCombinators(statementNode, context);
|
|
148
|
+
|
|
149
|
+
statementVerified = statementVerifiedAgainstCombinators; ///
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (!statementVerified) {
|
|
153
|
+
const statementVerifiedAsTypeInference = verifyStatementAsTypeInference(statementNode, derived, context);
|
|
154
|
+
|
|
155
|
+
statementVerified = statementVerifiedAsTypeInference; ///
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (!statementVerified) {
|
|
159
|
+
const statementVerifiedAsTypeAssertion = verifyStatementAsTypeAssertion(statementNode, assignments, derived, context);
|
|
160
|
+
|
|
161
|
+
statementVerified = statementVerifiedAsTypeAssertion; ///
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (!statementVerified) {
|
|
165
|
+
const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, derived, context);
|
|
166
|
+
|
|
167
|
+
statementVerified = statementVerifiedAsEquality; //
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return statementVerified;
|
|
171
|
+
}
|
|
171
172
|
|
|
172
173
|
export function verifyStatementAgainstCombinators(statementNode, context) {
|
|
173
174
|
let statementVerifiedAgainstCombinators = false;
|
|
@@ -179,7 +180,7 @@ export function verifyStatementAgainstCombinators(statementNode, context) {
|
|
|
179
180
|
...combinators
|
|
180
181
|
];
|
|
181
182
|
|
|
182
|
-
const combinator = combinators.find((combinator) => {
|
|
183
|
+
const combinator = combinators.find((combinator, index) => {
|
|
183
184
|
const statementVerifiedAgainstCombinator = verifyStatementAgainstCombinator(statementNode, combinator, context);
|
|
184
185
|
|
|
185
186
|
if (statementVerifiedAgainstCombinator) {
|
|
@@ -238,9 +239,15 @@ function verifyStatementAsTypeAssertion(statementNode, assignments, derived, con
|
|
|
238
239
|
return statementVerifiedAsTypeAssertion;
|
|
239
240
|
}
|
|
240
241
|
|
|
242
|
+
let count = 0;
|
|
243
|
+
|
|
241
244
|
function verifyStatementAsEquality(statementNode, derived, context) {
|
|
242
245
|
let statementVerifiedAsEquality = false;
|
|
243
246
|
|
|
247
|
+
if (count++ === 8) {
|
|
248
|
+
debugger
|
|
249
|
+
}
|
|
250
|
+
|
|
244
251
|
const combinator = equalityCombinator, ///
|
|
245
252
|
statementVerifiedAgainstCombinator = verifyStatementAgainstCombinator(statementNode, combinator, context);
|
|
246
253
|
|