occam-verify-cli 0.0.1032 → 0.0.1033

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.
@@ -438,9 +438,9 @@ export default class ReleaseContext {
438
438
 
439
439
  this.parser = nominalParser; ///
440
440
 
441
- this.fileContexts = released ?
442
- fileContextsFromJSONEntriesAndReleaseContext(this.json, this.entries, releaseContext) :
443
- fileContextsFromEntriesAndReleaseContext(this.entries, releaseContext);
441
+ released ?
442
+ fileContextsFromJSONAndReleaseContext(this.json, this.fileContexts, releaseContext) :
443
+ fileContextsFromEntriesAndReleaseContext(this.entries, this.fileContexts, releaseContext);
444
444
 
445
445
  this.initialised = true;
446
446
  }
@@ -487,31 +487,20 @@ export default class ReleaseContext {
487
487
  }
488
488
  }
489
489
 
490
- function fileContextsFromJSONEntriesAndReleaseContext(json, entries, releaseContext) {
491
- const fileContexts = [];
490
+ function fileContextsFromJSONAndReleaseContext(json, fileContexts, releaseContext) {
491
+ const fileContextsJSON = json; ///
492
492
 
493
- entries.forEachFile((file) => {
494
- const filePath = file.getPath(),
495
- filePathNominalFilePath = isFilePathNominalFilePath(filePath);
496
-
497
- if (filePathNominalFilePath) {
498
- const fileContext = FileContext.fromFileAndReleaseContext(file, releaseContext),
499
- filePath = fileContext.getFilePath();
500
-
501
- fileContexts.push(fileContext);
493
+ fileContextsJSON.forEach((fileContextJSON) => {
494
+ const json = fileContextJSON,
495
+ fileContext = FileContext.fromJSONAndReleaseContext(json, releaseContext);
502
496
 
503
- const fileContextJSON = findFileContextJSON(json, filePath);
497
+ fileContext.initialise(fileContextJSON);
504
498
 
505
- fileContext.initialise(fileContextJSON);
506
- }
499
+ fileContexts.push(fileContext);
507
500
  });
508
-
509
- return fileContexts;
510
501
  }
511
502
 
512
- function fileContextsFromEntriesAndReleaseContext(entries, releaseContext) {
513
- const fileContexts = [];
514
-
503
+ function fileContextsFromEntriesAndReleaseContext(entries, fileContexts, releaseContext) {
515
504
  entries.forEachFile((file) => {
516
505
  const filePath = file.getPath(),
517
506
  filePathNominalFilePath = isFilePathNominalFilePath(filePath);
@@ -526,19 +515,6 @@ function fileContextsFromEntriesAndReleaseContext(entries, releaseContext) {
526
515
  return fileContexts;
527
516
  }
528
517
 
529
- function findFileContextJSON(json, filePath) {
530
- const fileContextsJSON = json, ///
531
- fileContextJSON = fileContextsJSON.find((fileContextJSON) => {
532
- const { filePath: fileContextFilePath } = fileContextJSON;
533
-
534
- if (fileContextFilePath === filePath) {
535
- return true;
536
- }
537
- });
538
-
539
- return fileContextJSON;
540
- }
541
-
542
518
  function verifyFileContexts(fileContexts, verifiedFileContexts) {
543
519
  let fileContextsVerified;
544
520
 
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
 
3
3
  import Equality from "../../equality";
4
+ import TypeAssertion from "../../assertion/type";
4
5
 
5
6
  import verifyFrame from "../../verify/frame";
6
7
  import verifyJudgement from "../../verify/judgement";
7
8
  import verifyDeclaration from "../../verify/declaration";
8
- import verifyTypeAssertion from "../../verify/assertion/type";
9
9
  import metavariableUnifier from "../../unifier/metavariable";
10
10
  import verifyDefinedAssertion from "../../verify/assertion/defined";
11
11
  import verifySubproofAssertion from "../../verify/assertion/subproof";
@@ -151,7 +151,8 @@ function verifyAsTypeAssertion(statement, assignments, stated, localContext) {
151
151
 
152
152
  localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`);
153
153
 
154
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, stated, localContext);
154
+ const typeAssertion = TypeAssertion.fromTypeAssertionNode(typeAssertionNode, localContext),
155
+ typeAssertionVerified = typeAssertion.verify(assignments, stated, localContext);
155
156
 
156
157
  verifiedAsTypeAssertion = typeAssertionVerified; ///
157
158
 
package/src/term.js CHANGED
@@ -8,6 +8,7 @@ import termAsConstructorVerifier from "./verifier/termAsConstructor";
8
8
  import { filter } from "./utilities/array";
9
9
  import { nodesQuery } from "./utilities/query"
10
10
  import { termNodeFromTermString } from "./utilities/node";
11
+ import {objectType} from "./type";
11
12
 
12
13
  const variableNodesQuery = nodesQuery("//variable");
13
14
 
@@ -136,22 +137,26 @@ class Term {
136
137
  verifyType(fileContext) {
137
138
  let typeVerified;
138
139
 
139
- const typeName = this.type.getName();
140
+ if (this.type === objectType) {
141
+ typeVerified = true;
142
+ } else {
143
+ const typeName = this.type.getName();
140
144
 
141
- fileContext.trace(`Verifying the '${typeName}' type...`);
145
+ fileContext.trace(`Verifying the '${typeName}' type...`);
142
146
 
143
- const type = fileContext.findTypeByTypeName(typeName);
147
+ const type = fileContext.findTypeByTypeName(typeName);
144
148
 
145
- if (type === null) {
146
- fileContext.debug(`The '${typeName}' type is missing.`);
147
- } else {
148
- this.type = type; ///
149
+ if (type === null) {
150
+ fileContext.debug(`The '${typeName}' type is missing.`);
151
+ } else {
152
+ this.type = type; ///
149
153
 
150
- typeVerified = true;
151
- }
154
+ typeVerified = true;
155
+ }
152
156
 
153
- if (typeVerified) {
154
- fileContext.debug(`...verified the '${typeName}' type.`);
157
+ if (typeVerified) {
158
+ fileContext.debug(`...verified the '${typeName}' type.`);
159
+ }
155
160
  }
156
161
 
157
162
  return typeVerified;
@@ -160,10 +165,10 @@ class Term {
160
165
  verifyGivenType(type, localContext) {
161
166
  let verifiedGivenType;
162
167
 
163
- const termString = this.getString(),
164
- typeString = type.getString();
168
+ const typeName = type.getName(),
169
+ termString = this.getString();
165
170
 
166
- localContext.trace(`Verifying the '${termString}' term given the '${typeString}' type...`);
171
+ localContext.trace(`Verifying the '${termString}' term given the '${typeName}' type...`);
167
172
 
168
173
  const verified = this.verify(localContext, () => {
169
174
  let verifiedAhead;
@@ -180,7 +185,7 @@ class Term {
180
185
  verifiedGivenType = verified; ///
181
186
 
182
187
  if (verifiedGivenType) {
183
- localContext.debug(`...verified the '${termString}' term given the '${typeString}' type.`);
188
+ localContext.debug(`...verified the '${termString}' term given the '${typeName}' type.`);
184
189
  }
185
190
 
186
191
  return verifiedGivenType;
@@ -55,7 +55,7 @@ class StatementWithCombinatorUnifier extends Unifier {
55
55
  metaTypeNode = metaTypeNodeB, ///
56
56
  frameNode = frameNodeA, ///
57
57
  metaType = MetaType.fromMetaTypeNode(metaTypeNode, localContext),
58
- frame = Frame.fromTermNode(frameNode, localContext),
58
+ frame = Frame.fromFrameNode(frameNode, localContext),
59
59
  frameVerifiedGivenType = frame.verifyGivenMetaType(metaType, localContext);
60
60
 
61
61
  unified = frameVerifiedGivenType;
package/src/variable.js CHANGED
@@ -4,9 +4,9 @@ import shim from "./shim";
4
4
  import LocalContext from "./context/local";
5
5
 
6
6
  import { nodeQuery } from "./utilities/query";
7
- import { objectType } from "./type";
8
7
  import { variableNameFromVariableNode} from "./utilities/name";
9
8
  import { variableNodeFromVariableString } from "./utilities/node";
9
+ import {objectType} from "./type";
10
10
 
11
11
  const typeNodeQuery = nodeQuery("/variableDeclaration/type"),
12
12
  variableNodeQuery = nodeQuery("/variableDeclaration/variable");
@@ -35,6 +35,10 @@ export default class Variable {
35
35
  return this.type;
36
36
  }
37
37
 
38
+ setType(type) {
39
+ this.type = type;
40
+ }
41
+
38
42
  matchNode(node) {
39
43
  const nodeMatches = this.node.match(node);
40
44
 
@@ -78,22 +82,26 @@ export default class Variable {
78
82
  verifyType(fileContext) {
79
83
  let typeVerified;
80
84
 
81
- const typeName = this.type.getName();
85
+ if (this.type === objectType) {
86
+ typeVerified = true;
87
+ } else {
88
+ const typeName = this.type.getName();
82
89
 
83
- fileContext.trace(`Verifying the '${typeName}' type...`);
90
+ fileContext.trace(`Verifying the '${typeName}' type...`);
84
91
 
85
- const type = fileContext.findTypeByTypeName(typeName);
92
+ const type = fileContext.findTypeByTypeName(typeName);
86
93
 
87
- if (type === null) {
88
- fileContext.debug(`The '${typeName}' type is missing.`);
89
- } else {
90
- this.type = type; ///
94
+ if (type === null) {
95
+ fileContext.debug(`The '${typeName}' type is missing.`);
96
+ } else {
97
+ this.type = type; ///
91
98
 
92
- typeVerified = true;
93
- }
99
+ typeVerified = true;
100
+ }
94
101
 
95
- if (typeVerified) {
96
- fileContext.debug(`...verified the '${typeName}' type.`);
102
+ if (typeVerified) {
103
+ fileContext.debug(`...verified the '${typeName}' type.`);
104
+ }
97
105
  }
98
106
 
99
107
  return typeVerified;
@@ -153,12 +161,17 @@ export default class Variable {
153
161
  }
154
162
 
155
163
  static fromVariableNode(variableNode, localContext) {
156
- const node = variableNode, ///
157
- variableName = variableNameFromVariableNode(variableNode),
158
- string = localContext.nodeAsString(node),
159
- name = variableName, ///
160
- type = null,
161
- variable = new Variable(string, node, name, type);
164
+ let variable = null;
165
+
166
+ if (variableNode !== null) {
167
+ const node = variableNode, ///
168
+ variableName = variableNameFromVariableNode(variableNode),
169
+ string = localContext.nodeAsString(node),
170
+ name = variableName, ///
171
+ type = null;
172
+
173
+ variable = new Variable(string, node, name, type);
174
+ }
162
175
 
163
176
  return variable;
164
177
  }
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return verifyTypeAssertion;
9
- }
10
- });
11
- var _variable = /*#__PURE__*/ _interop_require_default(require("../../variable"));
12
- var _variable1 = /*#__PURE__*/ _interop_require_default(require("../../assignment/variable"));
13
- var _array = require("../../utilities/array");
14
- var _query = require("../../utilities/query");
15
- function _interop_require_default(obj) {
16
- return obj && obj.__esModule ? obj : {
17
- default: obj
18
- };
19
- }
20
- var termNodeQuery = (0, _query.nodeQuery)("/typeAssertion/term!"), typeNodeQuery = (0, _query.nodeQuery)("/typeAssertion/type!"), variableNodeQuery = (0, _query.nodeQuery)("/term/variable!");
21
- var verifyTypeAssertionFunctions = [
22
- verifyDerivedTypeAssertion,
23
- verifyStatedTypeAssertion
24
- ];
25
- function verifyTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
26
- var typeAssertionVerified;
27
- var typeAssertionString = localContext.nodeAsString(typeAssertionNode);
28
- localContext.trace("Verifying the '".concat(typeAssertionString, "' type assertion..."), typeAssertionNode);
29
- typeAssertionVerified = verifyTypeAssertionFunctions.some(function(verifyTypeAssertionFunction) {
30
- var typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, stated, localContext);
31
- if (typeAssertionVerified) {
32
- return true;
33
- }
34
- });
35
- if (typeAssertionVerified) {
36
- localContext.debug("...verified the '".concat(typeAssertionString, "' type assertion."), typeAssertionNode);
37
- }
38
- return typeAssertionVerified;
39
- }
40
- function verifyDerivedTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
41
- var derivedTypeAssertionVerified = false;
42
- if (!stated) {
43
- var typeAssertionString = localContext.nodeAsString(typeAssertionNode);
44
- localContext.trace("Verifying the '".concat(typeAssertionString, "' derived type assertion..."), typeAssertionNode);
45
- var typeNode = typeNodeQuery(typeAssertionNode), type = localContext.findTypeByTypeNode(typeNode);
46
- if (type === null) {
47
- var typeString = localContext.nodeAsString(typeNode);
48
- localContext.debug("The '".concat(typeString, "' type is not present."), typeNode);
49
- }
50
- var terms = [], termNode = termNodeQuery(typeAssertionNode), termVerified = verifyTerm(termNode, terms, localContext, function() {
51
- var verifiedAhead = false;
52
- var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = localContext.getTermType(term), typeEqualToOrSuperTypeOfTermType = type.isEqualToOrSuperTypeOf(termType);
53
- if (typeEqualToOrSuperTypeOfTermType) {
54
- verifiedAhead = true;
55
- }
56
- return verifiedAhead;
57
- });
58
- derivedTypeAssertionVerified = termVerified; ///
59
- if (derivedTypeAssertionVerified) {
60
- localContext.debug("...verified the '".concat(typeAssertionString, "' derived type assertion."), typeAssertionNode);
61
- }
62
- }
63
- return derivedTypeAssertionVerified;
64
- }
65
- function verifyStatedTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
66
- var statedTypeAssertionVerified = false;
67
- if (stated) {
68
- var typeAssertionString = localContext.nodeAsString(typeAssertionNode);
69
- localContext.trace("Verifying the '".concat(typeAssertionString, "' stated type assertion..."), typeAssertionNode);
70
- var typeNode = typeNodeQuery(typeAssertionNode), type = localContext.findTypeByTypeNode(typeNode);
71
- if (type === null) {
72
- var typeString = localContext.nodeAsString(typeNode);
73
- localContext.debug("The '".concat(typeString, "' type is not present."), typeNode);
74
- } else {
75
- var terms = [], termNode = termNodeQuery(typeAssertionNode), termVerified = verifyTerm(termNode, terms, localContext, function() {
76
- var verifiedAhead = false;
77
- var firstTerm = (0, _array.first)(terms), term = firstTerm, termType = term.getType(), typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
78
- if (typeEqualToOrSubTypeOfTermType) {
79
- var variableNode = variableNodeQuery(termNode);
80
- if (variableNode !== null) {
81
- if (assignments !== null) {
82
- var variable = _variable.default.fromVariableNodeAndType(variableNode, type), variableAssignment = _variable1.default.fromVariable(variable), assignment = variableAssignment; ///
83
- assignments.push(assignment);
84
- }
85
- }
86
- verifiedAhead = true;
87
- }
88
- return verifiedAhead;
89
- });
90
- statedTypeAssertionVerified = termVerified; ///
91
- }
92
- if (statedTypeAssertionVerified) {
93
- localContext.debug("...verified the '".concat(typeAssertionString, "' stated type assertion."), typeAssertionNode);
94
- }
95
- }
96
- return statedTypeAssertionVerified;
97
- }
98
-
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcbi8vIGltcG9ydCB2ZXJpZnlUZXJtIGZyb20gXCIuLi8uLi92ZXJpZnkvdGVybVwiO1xuaW1wb3J0IFZhcmlhYmxlQXNzaWdubWVudCBmcm9tIFwiLi4vLi4vYXNzaWdubWVudC92YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm0hXCIpLFxuICAgICAgdHlwZU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3R5cGUhXCIpLFxuICAgICAgdmFyaWFibGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybS92YXJpYWJsZSFcIik7XG5cbmNvbnN0IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMgPSBbXG4gIHZlcmlmeURlcml2ZWRUeXBlQXNzZXJ0aW9uLFxuICB2ZXJpZnlTdGF0ZWRUeXBlQXNzZXJ0aW9uXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBhc3NpZ25tZW50cywgc3RhdGVkLCBsb2NhbENvbnRleHQpIHtcbiAgbGV0IHR5cGVBc3NlcnRpb25WZXJpZmllZDtcblxuICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi4uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2ZXJpZnlUeXBlQXNzZXJ0aW9uRnVuY3Rpb25zLnNvbWUoKHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbikgPT4ge1xuICAgIGNvbnN0IHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KTtcblxuICAgIGlmICh0eXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gIH1cblxuICByZXR1cm4gdHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlEZXJpdmVkVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBkZXJpdmVkVHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgaWYgKCFzdGF0ZWQpIHtcbiAgICBjb25zdCB0eXBlQXNzZXJ0aW9uU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBsb2NhbENvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIGRlcml2ZWQgdHlwZSBhc3NlcnRpb24uLi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGUgPSBsb2NhbENvbnRleHQuZmluZFR5cGVCeVR5cGVOb2RlKHR5cGVOb2RlKTtcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVOb2RlKTtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXJtcyA9IFtdLFxuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgdGVybVZlcmlmaWVkID0gdmVyaWZ5VGVybSh0ZXJtTm9kZSwgdGVybXMsIGxvY2FsQ29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHZlcmlmaWVkQWhlYWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgZmlyc3RUZXJtID0gZmlyc3QodGVybXMpLFxuICAgICAgICAgICAgICAgICAgdGVybSA9IGZpcnN0VGVybSwgLy8vXG4gICAgICAgICAgICAgICAgICB0ZXJtVHlwZSA9IGxvY2FsQ29udGV4dC5nZXRUZXJtVHlwZSh0ZXJtKSxcbiAgICAgICAgICAgICAgICAgIHR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlRlcm1UeXBlID0gdHlwZS5pc0VxdWFsVG9PclN1cGVyVHlwZU9mKHRlcm1UeXBlKTtcblxuICAgICAgICAgICAgaWYgKHR5cGVFcXVhbFRvT3JTdXBlclR5cGVPZlRlcm1UeXBlKSB7XG4gICAgICAgICAgICAgIHZlcmlmaWVkQWhlYWQgPSB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmVyaWZpZWRBaGVhZDtcbiAgICAgICAgICB9KTtcblxuICAgIGRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0ZXJtVmVyaWZpZWQ7IC8vL1xuXG4gICAgaWYgKGRlcml2ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQpIHtcbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBkZXJpdmVkIHR5cGUgYXNzZXJ0aW9uLmAsIHR5cGVBc3NlcnRpb25Ob2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5U3RhdGVkVHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgYXNzaWdubWVudHMsIHN0YXRlZCwgbG9jYWxDb250ZXh0KSB7XG4gIGxldCBzdGF0ZWRUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoc3RhdGVkKSB7XG4gICAgY29uc3QgdHlwZUFzc2VydGlvblN0cmluZyA9IGxvY2FsQ29udGV4dC5ub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gICAgbG9jYWxDb250ZXh0LnRyYWNlKGBWZXJpZnlpbmcgdGhlICcke3R5cGVBc3NlcnRpb25TdHJpbmd9JyBzdGF0ZWQgdHlwZSBhc3NlcnRpb24uLi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGUgPSBsb2NhbENvbnRleHQuZmluZFR5cGVCeVR5cGVOb2RlKHR5cGVOb2RlKTtcblxuICAgIGlmICh0eXBlID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlU3RyaW5nID0gbG9jYWxDb250ZXh0Lm5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgICAgIGxvY2FsQ29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmAsIHR5cGVOb2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdGVybXMgPSBbXSxcbiAgICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgICB0ZXJtVmVyaWZpZWQgPSB2ZXJpZnlUZXJtKHRlcm1Ob2RlLCB0ZXJtcywgbG9jYWxDb250ZXh0LCAoKSA9PiB7XG4gICAgICAgICAgICAgIGxldCB2ZXJpZmllZEFoZWFkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlyc3RUZXJtID0gZmlyc3QodGVybXMpLFxuICAgICAgICAgICAgICAgICAgICB0ZXJtID0gZmlyc3RUZXJtLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgdGVybVR5cGUgPSB0ZXJtLmdldFR5cGUoKSxcbiAgICAgICAgICAgICAgICAgICAgdHlwZUVxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlID0gdHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih0ZXJtVHlwZSk7XG5cbiAgICAgICAgICAgICAgaWYgKHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlTm9kZSA9IHZhcmlhYmxlTm9kZVF1ZXJ5KHRlcm1Ob2RlKTtcblxuICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZU5vZGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChhc3NpZ25tZW50cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YXJpYWJsZSA9IFZhcmlhYmxlLmZyb21WYXJpYWJsZU5vZGVBbmRUeXBlKHZhcmlhYmxlTm9kZSwgdHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlQXNzaWdubWVudCA9IFZhcmlhYmxlQXNzaWdubWVudC5mcm9tVmFyaWFibGUodmFyaWFibGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NpZ25tZW50ID0gdmFyaWFibGVBc3NpZ25tZW50OyAgLy8vXG5cbiAgICAgICAgICAgICAgICAgICAgYXNzaWdubWVudHMucHVzaChhc3NpZ25tZW50KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB2ZXJpZmllZEFoZWFkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZEFoZWFkO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgIHN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1WZXJpZmllZDsgLy8vXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgICAgbG9jYWxDb250ZXh0LmRlYnVnKGAuLi52ZXJpZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHN0YXRlZCB0eXBlIGFzc2VydGlvbi5gLCB0eXBlQXNzZXJ0aW9uTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN0YXRlZFR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUeXBlQXNzZXJ0aW9uIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJ2YXJpYWJsZU5vZGVRdWVyeSIsInZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbnMiLCJ2ZXJpZnlEZXJpdmVkVHlwZUFzc2VydGlvbiIsInZlcmlmeVN0YXRlZFR5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uTm9kZSIsImFzc2lnbm1lbnRzIiwic3RhdGVkIiwibG9jYWxDb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwidHlwZUFzc2VydGlvblN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwic29tZSIsInZlcmlmeVR5cGVBc3NlcnRpb25GdW5jdGlvbiIsImRlYnVnIiwiZGVyaXZlZFR5cGVBc3NlcnRpb25WZXJpZmllZCIsInR5cGVOb2RlIiwidHlwZSIsImZpbmRUeXBlQnlUeXBlTm9kZSIsInR5cGVTdHJpbmciLCJ0ZXJtcyIsInRlcm1Ob2RlIiwidGVybVZlcmlmaWVkIiwidmVyaWZ5VGVybSIsInZlcmlmaWVkQWhlYWQiLCJmaXJzdFRlcm0iLCJmaXJzdCIsInRlcm0iLCJ0ZXJtVHlwZSIsImdldFRlcm1UeXBlIiwidHlwZUVxdWFsVG9PclN1cGVyVHlwZU9mVGVybVR5cGUiLCJpc0VxdWFsVG9PclN1cGVyVHlwZU9mIiwic3RhdGVkVHlwZUFzc2VydGlvblZlcmlmaWVkIiwiZ2V0VHlwZSIsInR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSIsImlzRXF1YWxUb09yU3ViVHlwZU9mIiwidmFyaWFibGVOb2RlIiwidmFyaWFibGUiLCJWYXJpYWJsZSIsImZyb21WYXJpYWJsZU5vZGVBbmRUeXBlIiwidmFyaWFibGVBc3NpZ25tZW50IiwiVmFyaWFibGVBc3NpZ25tZW50IiwiZnJvbVZhcmlhYmxlIiwiYXNzaWdubWVudCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQWtCQTs7O2VBQXdCQTs7OytEQWhCSDtnRUFFVTtxQkFFVDtxQkFDSTs7Ozs7O0FBRTFCLElBQU1DLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDMUJDLGdCQUFnQkQsSUFBQUEsZ0JBQVMsRUFBQyx5QkFDMUJFLG9CQUFvQkYsSUFBQUEsZ0JBQVMsRUFBQztBQUVwQyxJQUFNRywrQkFBK0I7SUFDbkNDO0lBQ0FDO0NBQ0Q7QUFFYyxTQUFTUCxvQkFBb0JRLGlCQUFpQixFQUFFQyxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsWUFBWTtJQUM5RixJQUFJQztJQUVKLElBQU1DLHNCQUFzQkYsYUFBYUcsWUFBWSxDQUFDTjtJQUV0REcsYUFBYUksS0FBSyxDQUFDLEFBQUMsa0JBQXFDLE9BQXBCRixxQkFBb0Isd0JBQXNCTDtJQUUvRUksd0JBQXdCUCw2QkFBNkJXLElBQUksQ0FBQyxTQUFDQztRQUN6RCxJQUFNTCx3QkFBd0JLLDRCQUE0QlQsbUJBQW1CQyxhQUFhQyxR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
@@ -1,139 +0,0 @@
1
- "use strict";
2
-
3
- import Variable from "../../variable";
4
- // import verifyTerm from "../../verify/term";
5
- import VariableAssignment from "../../assignment/variable";
6
-
7
- import { first } from "../../utilities/array";
8
- import { nodeQuery } from "../../utilities/query";
9
-
10
- const termNodeQuery = nodeQuery("/typeAssertion/term!"),
11
- typeNodeQuery = nodeQuery("/typeAssertion/type!"),
12
- variableNodeQuery = nodeQuery("/term/variable!");
13
-
14
- const verifyTypeAssertionFunctions = [
15
- verifyDerivedTypeAssertion,
16
- verifyStatedTypeAssertion
17
- ];
18
-
19
- export default function verifyTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
20
- let typeAssertionVerified;
21
-
22
- const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
23
-
24
- localContext.trace(`Verifying the '${typeAssertionString}' type assertion...`, typeAssertionNode);
25
-
26
- typeAssertionVerified = verifyTypeAssertionFunctions.some((verifyTypeAssertionFunction) => {
27
- const typeAssertionVerified = verifyTypeAssertionFunction(typeAssertionNode, assignments, stated, localContext);
28
-
29
- if (typeAssertionVerified) {
30
- return true;
31
- }
32
- });
33
-
34
- if (typeAssertionVerified) {
35
- localContext.debug(`...verified the '${typeAssertionString}' type assertion.`, typeAssertionNode);
36
- }
37
-
38
- return typeAssertionVerified;
39
- }
40
-
41
- function verifyDerivedTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
42
- let derivedTypeAssertionVerified = false;
43
-
44
- if (!stated) {
45
- const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
46
-
47
- localContext.trace(`Verifying the '${typeAssertionString}' derived type assertion...`, typeAssertionNode);
48
-
49
- const typeNode = typeNodeQuery(typeAssertionNode),
50
- type = localContext.findTypeByTypeNode(typeNode);
51
-
52
- if (type === null) {
53
- const typeString = localContext.nodeAsString(typeNode);
54
-
55
- localContext.debug(`The '${typeString}' type is not present.`, typeNode);
56
- }
57
-
58
- const terms = [],
59
- termNode = termNodeQuery(typeAssertionNode),
60
- termVerified = verifyTerm(termNode, terms, localContext, () => {
61
- let verifiedAhead = false;
62
-
63
- const firstTerm = first(terms),
64
- term = firstTerm, ///
65
- termType = localContext.getTermType(term),
66
- typeEqualToOrSuperTypeOfTermType = type.isEqualToOrSuperTypeOf(termType);
67
-
68
- if (typeEqualToOrSuperTypeOfTermType) {
69
- verifiedAhead = true;
70
- }
71
-
72
- return verifiedAhead;
73
- });
74
-
75
- derivedTypeAssertionVerified = termVerified; ///
76
-
77
- if (derivedTypeAssertionVerified) {
78
- localContext.debug(`...verified the '${typeAssertionString}' derived type assertion.`, typeAssertionNode);
79
- }
80
- }
81
-
82
- return derivedTypeAssertionVerified;
83
- }
84
-
85
- function verifyStatedTypeAssertion(typeAssertionNode, assignments, stated, localContext) {
86
- let statedTypeAssertionVerified = false;
87
-
88
- if (stated) {
89
- const typeAssertionString = localContext.nodeAsString(typeAssertionNode);
90
-
91
- localContext.trace(`Verifying the '${typeAssertionString}' stated type assertion...`, typeAssertionNode);
92
-
93
- const typeNode = typeNodeQuery(typeAssertionNode),
94
- type = localContext.findTypeByTypeNode(typeNode);
95
-
96
- if (type === null) {
97
- const typeString = localContext.nodeAsString(typeNode);
98
-
99
- localContext.debug(`The '${typeString}' type is not present.`, typeNode);
100
- } else {
101
- const terms = [],
102
- termNode = termNodeQuery(typeAssertionNode),
103
- termVerified = verifyTerm(termNode, terms, localContext, () => {
104
- let verifiedAhead = false;
105
-
106
- const firstTerm = first(terms),
107
- term = firstTerm, ///
108
- termType = term.getType(),
109
- typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
110
-
111
- if (typeEqualToOrSubTypeOfTermType) {
112
- const variableNode = variableNodeQuery(termNode);
113
-
114
- if (variableNode !== null) {
115
- if (assignments !== null) {
116
- const variable = Variable.fromVariableNodeAndType(variableNode, type),
117
- variableAssignment = VariableAssignment.fromVariable(variable),
118
- assignment = variableAssignment; ///
119
-
120
- assignments.push(assignment);
121
- }
122
- }
123
-
124
- verifiedAhead = true;
125
- }
126
-
127
- return verifiedAhead;
128
- });
129
-
130
- statedTypeAssertionVerified = termVerified; ///
131
- }
132
-
133
- if (statedTypeAssertionVerified) {
134
- localContext.debug(`...verified the '${typeAssertionString}' stated type assertion.`, typeAssertionNode);
135
- }
136
- }
137
-
138
- return statedTypeAssertionVerified;
139
- }