occam-verify-cli 0.0.462 → 0.0.463

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.
@@ -4,7 +4,7 @@ const { Dependency } = require("occam-file-system"),
4
4
  { loggingUtilities } = require("necessary"),
5
5
  { verifyRelease, releaseContextUtilities } = require("../../lib/index"); ///
6
6
 
7
- const { EMPTY_STRING } = require("../constants"),
7
+ const { trimTrailingSlash } = require("../utilities/string"),
8
8
  { releaseContextFromDependencyAndDependentNames } = require("../utilities/fileSystem");
9
9
 
10
10
  const { log } = loggingUtilities,
@@ -12,7 +12,7 @@ const { log } = loggingUtilities,
12
12
  { createReleaseContext, initialiseReleaseContext } = releaseContextUtilities;
13
13
 
14
14
  function verifyAction(argument, logLevel) {
15
- const name = argument.replace(/\/$/, EMPTY_STRING),
15
+ const name = trimTrailingSlash(argument), ///
16
16
  context = {},
17
17
  dependency = Dependency.fromName(name),
18
18
  dependentNames = [],
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ const { EMPTY_STRING } = require("../constants");
4
+
5
+ function trimTrailingSlash(string) {
6
+ string = string.replace(/\/$/, EMPTY_STRING); ///
7
+
8
+ return string;
9
+ }
10
+
11
+ module.exports = {
12
+ trimTrailingSlash
13
+ };
@@ -12,6 +12,12 @@ var _array = require("../../utilities/array");
12
12
  var _string = require("../../utilities/string");
13
13
  var _query = require("../../utilities/query");
14
14
  var _term = require("../../verify/term");
15
+ var _variable = /*#__PURE__*/ _interopRequireDefault(require("../../variable"));
16
+ function _interopRequireDefault(obj) {
17
+ return obj && obj.__esModule ? obj : {
18
+ default: obj
19
+ };
20
+ }
15
21
  var termNodeQuery = (0, _query.nodeQuery)("/typeAssertion/term"), typeNodeQuery = (0, _query.nodeQuery)("/typeAssertion/type");
16
22
  function verifyTypeAssertion(typeAssertionNode, proofContext) {
17
23
  var typeAssertionVerified = false;
@@ -22,27 +28,13 @@ function verifyTypeAssertion(typeAssertionNode, proofContext) {
22
28
  if (!typePresent) {
23
29
  proofContext.error("The ".concat(typeName, " type is not present."));
24
30
  } else {
25
- var assertedType = null;
26
- var type = proofContext.findTypeByTypeName(typeName), context = proofContext, termNode = termNodeQuery(typeAssertionNode);
27
- var variables = [], termVerifiedAsVariable = (0, _term.verifyTermAsVariable)(termNode, variables, context);
31
+ var context = proofContext, termNode = termNodeQuery(typeAssertionNode), variables = [], termVerifiedAsVariable = (0, _term.verifyTermAsVariable)(termNode, variables, context);
28
32
  if (termVerifiedAsVariable) {
29
- var firstVariable = (0, _array.first)(variables), variable = firstVariable, variableType = variable.getType();
30
- assertedType = variableType; ///
33
+ var variableTypeAssertionVerified = verifyVariableTypeAssertion(typeAssertionNode, proofContext);
34
+ typeAssertionVerified = variableTypeAssertionVerified; ///
31
35
  } else {
32
- var types = [], termVerifiedAgainstConstructors = (0, _term.verifyTermAgainstConstructors)(termNode, types, context);
33
- if (termVerifiedAgainstConstructors) {
34
- var firstType = (0, _array.first)(types), termType = firstType; ///
35
- assertedType = termType; ///
36
- }
37
- }
38
- if (assertedType !== null) {
39
- var typeEqualToOrSubTypeOfAssertedType = type.isEqualToOrSubTypeOf(assertedType);
40
- if (!typeEqualToOrSubTypeOfAssertedType) {
41
- var termString = (0, _string.nodeAsString)(termNode);
42
- proofContext.error("The type of the '".concat(termString, "' term or variable is not equal to or a sub-type of the asserted type."));
43
- } else {
44
- typeAssertionVerified = true;
45
- }
36
+ var termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, proofContext);
37
+ typeAssertionVerified = termTypeAssertionVerified; ///
46
38
  }
47
39
  }
48
40
  if (typeAssertionVerified) {
@@ -51,5 +43,36 @@ function verifyTypeAssertion(typeAssertionNode, proofContext) {
51
43
  typeAssertionVerified ? proofContext.complete(typeAssertionNode) : proofContext.halt(typeAssertionNode);
52
44
  return typeAssertionVerified;
53
45
  }
46
+ function verifyTermTypeAssertion(typeAssertionNode, proofContext) {
47
+ var termTypeAssertionVerified = false;
48
+ var types = [], context = proofContext, termNode = termNodeQuery(typeAssertionNode), termVerifiedAgainstConstructors = (0, _term.verifyTermAgainstConstructors)(termNode, types, context);
49
+ if (termVerifiedAgainstConstructors) {
50
+ var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), assertedTypeName = typeName, assertedType = proofContext.findTypeByTypeName(assertedTypeName), firstType = (0, _array.first)(types), termType = firstType, assertedTypeEqualToOrSubTypeOfTermType = assertedType.isEqualToOrSubTypeOf(termType);
51
+ if (!assertedTypeEqualToOrSubTypeOfTermType) {
52
+ var termString = (0, _string.nodeAsString)(termNode);
53
+ proofContext.error("The asserted type is not equal to or a sub-type of the '".concat(termString, "' term type."));
54
+ } else {
55
+ termTypeAssertionVerified = true;
56
+ }
57
+ }
58
+ return termTypeAssertionVerified;
59
+ }
60
+ function verifyVariableTypeAssertion(typeAssertionNode, proofContext) {
61
+ var variableTypeAssertionVerified = false;
62
+ var context = proofContext, variables = [], termNode = termNodeQuery(typeAssertionNode);
63
+ (0, _term.verifyTermAsVariable)(termNode, variables, context);
64
+ var typeNode = typeNodeQuery(typeAssertionNode), typeName = (0, _query.typeNameFromTypeNode)(typeNode), assertedTypeName = typeName, assertedType = proofContext.findTypeByTypeName(assertedTypeName), firstVariable = (0, _array.first)(variables), variable = firstVariable, variableName = variable.getName(), variableType = variable.getType(), assertedTypeEqualToOrSubTypeOfVariableType = assertedType.isEqualToOrSubTypeOf(variableType);
65
+ if (!assertedTypeEqualToOrSubTypeOfVariableType) {
66
+ proofContext.error("The asserted type is not equal to or a sub-type of the '".concat(variableName, "' variable type."));
67
+ } else {
68
+ var derived = proofContext.isDerived();
69
+ if (!derived) {
70
+ var type = assertedType, name = variableName, variable1 = _variable.default.fromTypeAndName(type, name);
71
+ proofContext.addVariable(variable1);
72
+ }
73
+ variableTypeAssertionVerified = true;
74
+ }
75
+ return variableTypeAssertionVerified;
76
+ }
54
77
 
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNWYXJpYWJsZSwgdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMgfSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1cIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4odHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHByb29mQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgdHlwZVByZXNlbnQgPSBwcm9vZkNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGxldCBhc3NlcnRlZFR5cGUgPSBudWxsO1xuXG4gICAgY29uc3QgdHlwZSA9IHByb29mQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpLFxuICAgICAgICAgIGNvbnRleHQgPSBwcm9vZkNvbnRleHQsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSk7XG5cbiAgICBjb25zdCB2YXJpYWJsZXMgPSBbXSxcbiAgICAgICAgICB0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlID0gdmVyaWZ5VGVybUFzVmFyaWFibGUodGVybU5vZGUsIHZhcmlhYmxlcywgY29udGV4dCk7XG5cbiAgICBpZiAodGVybVZlcmlmaWVkQXNWYXJpYWJsZSkge1xuICAgICAgY29uc3QgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgICAgICB2YXJpYWJsZSA9IGZpcnN0VmFyaWFibGUsIC8vL1xuICAgICAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpO1xuXG4gICAgICBhc3NlcnRlZFR5cGUgPSB2YXJpYWJsZVR5cGU7ICAvLy9cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHlwZXMgPSBbXSxcbiAgICAgICAgICAgIHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMgPSB2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyh0ZXJtTm9kZSwgdHlwZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAodGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycykge1xuICAgICAgICBjb25zdCBmaXJzdFR5cGUgPSBmaXJzdCh0eXBlcyksXG4gICAgICAgICAgICAgIHRlcm1UeXBlID0gZmlyc3RUeXBlOyAvLy9cblxuICAgICAgICBhc3NlcnRlZFR5cGUgPSB0ZXJtVHlwZTsgIC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChhc3NlcnRlZFR5cGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZBc3NlcnRlZFR5cGUgPSB0eXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKGFzc2VydGVkVHlwZSk7XG5cbiAgICAgIGlmICghdHlwZUVxdWFsVG9PclN1YlR5cGVPZkFzc2VydGVkVHlwZSkge1xuICAgICAgICBjb25zdCB0ZXJtU3RyaW5nID0gbm9kZUFzU3RyaW5nKHRlcm1Ob2RlKTtcblxuICAgICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSB0eXBlIG9mIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSBvciB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gb3IgYSBzdWItdHlwZSBvZiB0aGUgYXNzZXJ0ZWQgdHlwZS5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVBc3NlcnRpb25WZXJpZmllZCkge1xuICAgIHByb29mQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dHlwZUFzc2VydGlvblN0cmluZ30nIHR5cGUgYXNzZXJ0aW9uLmApO1xuICB9XG5cbiAgdHlwZUFzc2VydGlvblZlcmlmaWVkID9cbiAgICBwcm9vZkNvbnRleHQuY29tcGxldGUodHlwZUFzc2VydGlvbk5vZGUpIDpcbiAgICAgIHByb29mQ29udGV4dC5oYWx0KHR5cGVBc3NlcnRpb25Ob2RlKTtcblxuICByZXR1cm4gdHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGVBc3NlcnRpb24iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlIiwicHJvb2ZDb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwiYmVnaW4iLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwiZXJyb3IiLCJhc3NlcnRlZFR5cGUiLCJ0eXBlIiwiZmluZFR5cGVCeVR5cGVOYW1lIiwiY29udGV4dCIsInRlcm1Ob2RlIiwidmFyaWFibGVzIiwidGVybVZlcmlmaWVkQXNWYXJpYWJsZSIsInZlcmlmeVRlcm1Bc1ZhcmlhYmxlIiwiZmlyc3RWYXJpYWJsZSIsImZpcnN0IiwidmFyaWFibGUiLCJ2YXJpYWJsZVR5cGUiLCJnZXRUeXBlIiwidHlwZXMiLCJ0ZXJtVmVyaWZpZWRBZ2FpbnN0Q29uc3RydWN0b3JzIiwidmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMiLCJmaXJzdFR5cGUiLCJ0ZXJtVHlwZSIsInR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZBc3NlcnRlZFR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInRlcm1TdHJpbmciLCJpbmZvIiwiY29tcGxldGUiLCJoYWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXdCQTs7O3FCQVJGO3NCQUNPO3FCQUNtQjtvQkFDb0I7QUFFcEUsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLHdCQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRWpCLFNBQVNGLG9CQUFvQkksaUJBQWlCLEVBQUVDLFlBQVksRUFBRTtJQUMzRSxJQUFJQyx3QkFBd0IsS0FBSztJQUVqQ0QsYUFBYUUsS0FBSyxDQUFDSDtJQUVuQixJQUFNSSxzQkFBc0JDLElBQUFBLG9CQUFZLEVBQUNMO0lBRXpDQyxhQUFhSyxLQUFLLENBQUMsQUFBQyxrQkFBcUMsT0FBcEJGLHFCQUFvQjtJQUV6RCxJQUFNRyxXQUFXUixjQUFjQyxvQkFDekJRLFdBQVdDLElBQUFBLDJCQUFvQixFQUFDRixXQUNoQ0csY0FBY1QsYUFBYVUsdUJBQXVCLENBQUNIO0lBRXpELElBQUksQ0FBQ0UsYUFBYTtRQUNoQlQsYUFBYVcsS0FBSyxDQUFDLEFBQUMsT0FBZSxPQUFUSixVQUFTO0lBQ3JDLE9BQU87UUFDTCxJQUFJSyxlQUFlLElBQUk7UUFFdkIsSUFBTUMsT0FBT2IsYUFBYWMsa0JBQWtCLENBQUNQLFdBQ3ZDUSxVQUFVZixjQUNWZ0IsV0FBV3BCLGNBQWNHO1FBRS9CLElBQU1rQixZQUFZLEVBQUUsRUFDZEMseUJBQXlCQyxJQUFBQSwwQkFBb0IsRUFBQ0gsVUFBVUMsV0FBV0Y7UUFFekUsSUFBSUcsd0JBQXdCO1lBQzFCLElBQU1FLGdCQUFnQkMsSUFBQUEsWUFBSyxFQUFDSixZQUN0QkssV0FBV0YsZUFDWEcsZUFBZUQsU0FBU0UsT0FBTztZQUVyQ1osZUFBZVcsY0FBZSxHQUFHO1FBQ25DLE9BQU87WUFDTCxJQUFNRSxRQUFRLEVBQUUsRUFDVkMsa0NBQWtDQyxJQUFBQSxtQ0FBNkIsRUFBQ1gsVUFBVVMsT0FBT1Y7WUFFdkYsSUFBSVcsaUNBQWlDO2dCQUNuQyxJQUFNRSxZQUFZUCxJQUFBQSxZQUFLLEVBQUNJLFFBQ2xCSSxXQUFXRCxXQUFXLEdBQUc7Z0JBRS9CaEIsZUFBZWlCLFVBQVcsR0FBRztZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUlqQixpQkFBaUIsSUFBSSxFQUFFO1lBQ3pCLElBQU1rQixxQ0FBcUNqQixLQUFLa0Isb0JBQW9CLENBQUNuQjtZQUVyRSxJQUFJLENBQUNrQixvQ0FBb0M7Z0JBQ3ZDLElBQU1FLGFBQWE1QixJQUFBQSxvQkFBWSxFQUFDWTtnQkFFaENoQixhQUFhVyxLQUFLLENBQUMsQUFBQyxvQkFBOEIsT0FBWHFCLFlBQVc7WUFDcEQsT0FBTztnQkFDTC9CLHdCQUF3QixJQUFJO1lBQzlCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLHVCQUF1QjtRQUN6QkQsYUFBYWlDLElBQUksQ0FBQyxBQUFDLGlCQUFvQyxPQUFwQjlCLHFCQUFvQjtJQUN6RCxDQUFDO0lBRURGLHdCQUNFRCxhQUFha0MsUUFBUSxDQUFDbkMscUJBQ3BCQyxhQUFhbUMsSUFBSSxDQUFDcEMsa0JBQWtCO0lBRXhDLE9BQU9FO0FBQ1QifQ==
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvYXNzZXJ0aW9uL3R5cGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9hcnJheVwiO1xuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSwgdHlwZU5hbWVGcm9tVHlwZU5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyB2ZXJpZnlUZXJtQXNWYXJpYWJsZSwgdmVyaWZ5VGVybUFnYWluc3RDb25zdHJ1Y3RvcnMgfSBmcm9tIFwiLi4vLi4vdmVyaWZ5L3Rlcm1cIjtcbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vLi4vdmFyaWFibGVcIjtcblxuY29uc3QgdGVybU5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi90eXBlQXNzZXJ0aW9uL3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL3R5cGVBc3NlcnRpb24vdHlwZVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VHlwZUFzc2VydGlvbih0eXBlQXNzZXJ0aW9uTm9kZSwgcHJvb2ZDb250ZXh0KSB7XG4gIGxldCB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4odHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIGNvbnN0IHR5cGVBc3NlcnRpb25TdHJpbmcgPSBub2RlQXNTdHJpbmcodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHByb29mQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uLi5gKTtcblxuICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgdHlwZVByZXNlbnQgPSBwcm9vZkNvbnRleHQuaXNUeXBlUHJlc2VudEJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gIGlmICghdHlwZVByZXNlbnQpIHtcbiAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSAke3R5cGVOYW1lfSB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGNvbnRleHQgPSBwcm9vZkNvbnRleHQsIC8vL1xuICAgICAgICAgIHRlcm1Ob2RlID0gdGVybU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgICAgdmFyaWFibGVzID0gW10sXG4gICAgICAgICAgdGVybVZlcmlmaWVkQXNWYXJpYWJsZSA9IHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHRlcm1WZXJpZmllZEFzVmFyaWFibGUpIHtcbiAgICAgIGNvbnN0IHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpO1xuXG4gICAgICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZDsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdmVyaWZ5VGVybVR5cGVBc3NlcnRpb24odHlwZUFzc2VydGlvbk5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQ7ICAvLy9cbiAgICB9XG4gIH1cblxuICBpZiAodHlwZUFzc2VydGlvblZlcmlmaWVkKSB7XG4gICAgcHJvb2ZDb250ZXh0LmluZm8oYFZlcmlmaWVkIHRoZSAnJHt0eXBlQXNzZXJ0aW9uU3RyaW5nfScgdHlwZSBhc3NlcnRpb24uYCk7XG4gIH1cblxuICB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQgP1xuICAgIHByb29mQ29udGV4dC5jb21wbGV0ZSh0eXBlQXNzZXJ0aW9uTm9kZSkgOlxuICAgICAgcHJvb2ZDb250ZXh0LmhhbHQodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVRlcm1UeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCB0eXBlcyA9IFtdLFxuICAgICAgICBjb250ZXh0ID0gcHJvb2ZDb250ZXh0LCAvLy9cbiAgICAgICAgdGVybU5vZGUgPSB0ZXJtTm9kZVF1ZXJ5KHR5cGVBc3NlcnRpb25Ob2RlKSxcbiAgICAgICAgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgY29udGV4dCk7XG5cbiAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMpIHtcbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuICAgICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICAgIGFzc2VydGVkVHlwZU5hbWUgPSB0eXBlTmFtZSwgIC8vL1xuICAgICAgICAgIGFzc2VydGVkVHlwZSA9IHByb29mQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoYXNzZXJ0ZWRUeXBlTmFtZSksXG4gICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuICAgICAgICAgIHRlcm1UeXBlID0gZmlyc3RUeXBlLFxuICAgICAgICAgIGFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlID0gYXNzZXJ0ZWRUeXBlLmlzRXF1YWxUb09yU3ViVHlwZU9mKHRlcm1UeXBlKTtcblxuICAgIGlmICghYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUpIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSBhc3NlcnRlZCB0eXBlIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1Yi10eXBlIG9mIHRoZSAnJHt0ZXJtU3RyaW5nfScgdGVybSB0eXBlLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtVHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGVybVR5cGVBc3NlcnRpb25WZXJpZmllZDtcbn1cblxuZnVuY3Rpb24gdmVyaWZ5VmFyaWFibGVUeXBlQXNzZXJ0aW9uKHR5cGVBc3NlcnRpb25Ob2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkID0gZmFsc2U7XG5cbiAgY29uc3QgY29udGV4dCA9IHByb29mQ29udGV4dCwgLy8vXG4gICAgICAgIHZhcmlhYmxlcyA9IFtdLFxuICAgICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpO1xuXG4gIHZlcmlmeVRlcm1Bc1ZhcmlhYmxlKHRlcm1Ob2RlLCB2YXJpYWJsZXMsIGNvbnRleHQpO1xuXG4gIGNvbnN0IHR5cGVOb2RlID0gdHlwZU5vZGVRdWVyeSh0eXBlQXNzZXJ0aW9uTm9kZSksXG4gICAgICAgIHR5cGVOYW1lID0gdHlwZU5hbWVGcm9tVHlwZU5vZGUodHlwZU5vZGUpLFxuICAgICAgICBhc3NlcnRlZFR5cGVOYW1lID0gdHlwZU5hbWUsICAvLy9cbiAgICAgICAgYXNzZXJ0ZWRUeXBlID0gcHJvb2ZDb250ZXh0LmZpbmRUeXBlQnlUeXBlTmFtZShhc3NlcnRlZFR5cGVOYW1lKSxcbiAgICAgICAgZmlyc3RWYXJpYWJsZSA9IGZpcnN0KHZhcmlhYmxlcyksXG4gICAgICAgIHZhcmlhYmxlID0gZmlyc3RWYXJpYWJsZSwgLy8vXG4gICAgICAgIHZhcmlhYmxlTmFtZSA9IHZhcmlhYmxlLmdldE5hbWUoKSxcbiAgICAgICAgdmFyaWFibGVUeXBlID0gdmFyaWFibGUuZ2V0VHlwZSgpLFxuICAgICAgICBhc3NlcnRlZFR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZWYXJpYWJsZVR5cGUgPSBhc3NlcnRlZFR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodmFyaWFibGVUeXBlKTtcblxuICBpZiAoIWFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuICAgIHByb29mQ29udGV4dC5lcnJvcihgVGhlIGFzc2VydGVkIHR5cGUgaXMgbm90IGVxdWFsIHRvIG9yIGEgc3ViLXR5cGUgb2YgdGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlIHR5cGUuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgZGVyaXZlZCA9IHByb29mQ29udGV4dC5pc0Rlcml2ZWQoKTtcblxuICAgIGlmICghZGVyaXZlZCkge1xuICAgICAgY29uc3QgdHlwZSA9IGFzc2VydGVkVHlwZSwgIC8vL1xuICAgICAgICAgICAgbmFtZSA9IHZhcmlhYmxlTmFtZSwgIC8vL1xuICAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG5cbiAgICAgIHByb29mQ29udGV4dC5hZGRWYXJpYWJsZSh2YXJpYWJsZSk7XG4gICAgfVxuXG4gICAgdmFyaWFibGVUeXBlQXNzZXJ0aW9uVmVyaWZpZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHZhcmlhYmxlVHlwZUFzc2VydGlvblZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVR5cGVBc3NlcnRpb24iLCJ0ZXJtTm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidHlwZU5vZGVRdWVyeSIsInR5cGVBc3NlcnRpb25Ob2RlIiwicHJvb2ZDb250ZXh0IiwidHlwZUFzc2VydGlvblZlcmlmaWVkIiwiYmVnaW4iLCJ0eXBlQXNzZXJ0aW9uU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiZGVidWciLCJ0eXBlTm9kZSIsInR5cGVOYW1lIiwidHlwZU5hbWVGcm9tVHlwZU5vZGUiLCJ0eXBlUHJlc2VudCIsImlzVHlwZVByZXNlbnRCeVR5cGVOYW1lIiwiZXJyb3IiLCJjb250ZXh0IiwidGVybU5vZGUiLCJ2YXJpYWJsZXMiLCJ0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlIiwidmVyaWZ5VGVybUFzVmFyaWFibGUiLCJ2YXJpYWJsZVR5cGVBc3NlcnRpb25WZXJpZmllZCIsInZlcmlmeVZhcmlhYmxlVHlwZUFzc2VydGlvbiIsInRlcm1UeXBlQXNzZXJ0aW9uVmVyaWZpZWQiLCJ2ZXJpZnlUZXJtVHlwZUFzc2VydGlvbiIsImluZm8iLCJjb21wbGV0ZSIsImhhbHQiLCJ0eXBlcyIsInRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMiLCJ2ZXJpZnlUZXJtQWdhaW5zdENvbnN0cnVjdG9ycyIsImFzc2VydGVkVHlwZU5hbWUiLCJhc3NlcnRlZFR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJmaXJzdFR5cGUiLCJmaXJzdCIsInRlcm1UeXBlIiwiYXNzZXJ0ZWRUeXBlRXF1YWxUb09yU3ViVHlwZU9mVGVybVR5cGUiLCJpc0VxdWFsVG9PclN1YlR5cGVPZiIsInRlcm1TdHJpbmciLCJmaXJzdFZhcmlhYmxlIiwidmFyaWFibGUiLCJ2YXJpYWJsZU5hbWUiLCJnZXROYW1lIiwidmFyaWFibGVUeXBlIiwiZ2V0VHlwZSIsImFzc2VydGVkVHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJ0eXBlIiwibmFtZSIsIlZhcmlhYmxlIiwiZnJvbVR5cGVBbmROYW1lIiwiYWRkVmFy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
@@ -2,59 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "default" // if (derived) {
6
- // debugger
7
- // } else {
8
- // const types = [],
9
- // context = proofContext, ///
10
- // termNode = termNodeQuery(typeAssertionNode),
11
- // variables = [],
12
- // termString = nodeAsString(termNode),
13
- // termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
14
- //
15
- // if (termVerifiedAsVariable) {
16
- // const firstValue = first(values),
17
- // variableName = termString, ///
18
- // value = firstValue; ///
19
- //
20
- // if (value !== undefined) {
21
- // proofContext.error(`The value of the ${variableName} variable is not undefined.`);
22
- // } else {
23
- // const type = proofContext.findTypeByTypeName(typeName),
24
- // firstType = first(types),
25
- // variableType = firstType, ///
26
- // typeEqualToOrSubTypeOfVariableType = type.isEqualToOrSubTypeOf(variableType);
27
- //
28
- // if (!typeEqualToOrSubTypeOfVariableType) {
29
- // proofContext.error(`The asserted type of the ${variableName} variable is not equal to or a sub-type of its declared type.`);
30
- // } else {
31
- // const name = variableName, ///
32
- // variable = Variable.fromTypeAndName(type, name);
33
- //
34
- // proofContext.addVariable(variable);
35
- //
36
- // typeAssertionVerified = true;
37
- // }
38
- // }
39
- // } else {
40
- // const termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, values, context);
41
- //
42
- // if (termVerifiedAgainstConstructors) {
43
- // const type = proofContext.findTypeByTypeName(typeName),
44
- // firstType = first(types),
45
- // termType = firstType, ///
46
- // typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
47
- //
48
- // if (!typeEqualToOrSubTypeOfTermType) {
49
- // proofContext.error(`The asserted type of the '${termString}' term is not equal to or a sub-type of its declared type.`);
50
- // } else {
51
- //
52
- // typeAssertionVerified = true;
53
- // }
54
- // }
55
- // }
56
- // }
57
- , {
5
+ Object.defineProperty(exports, "default", {
58
6
  enumerable: true,
59
7
  get: function() {
60
8
  return verifyUnqualifiedStatement;
@@ -95,4 +43,4 @@ function verifyUnqualifiedStatement(unqualifiedStatementNode, proofContext) {
95
43
  return unqualifiedStatementVerified;
96
44
  }
97
45
 
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uLy4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4odW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHByb29mQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHt1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHVucXVhbGlmaWVkIHN0YXRlbWVudC4uLmApO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBwcm9vZkNvbnRleHQuaXNEZXJpdmVkKCk7XG5cbiAgICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IEFzc2VydGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgYXNzZXJ0aW9uTWF0Y2hlcyA9IHByb29mQ29udGV4dC5tYXRjaEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBhc3NlcnRpb25NYXRjaGVzOyAgLy8vXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIHByb29mQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCk7XG4gIH1cblxuICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID9cbiAgICBwcm9vZkNvbnRleHQuY29tcGxldGUodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSA6XG4gICAgICBwcm9vZkNvbnRleHQuaGFsdCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuXG4vLyBpZiAoZGVyaXZlZCkge1xuLy8gICBkZWJ1Z2dlclxuLy8gfSBlbHNlIHtcbi8vICAgY29uc3QgdHlwZXMgPSBbXSxcbi8vICAgICBjb250ZXh0ID0gcHJvb2ZDb250ZXh0LCAvLy9cbi8vICAgICB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkodHlwZUFzc2VydGlvbk5vZGUpLFxuLy8gICAgIHZhcmlhYmxlcyA9IFtdLFxuLy8gICAgIHRlcm1TdHJpbmcgPSBub2RlQXNTdHJpbmcodGVybU5vZGUpLFxuLy8gICAgIHRlcm1WZXJpZmllZEFzVmFyaWFibGUgPSB2ZXJpZnlUZXJtQXNWYXJpYWJsZSh0ZXJtTm9kZSwgdmFyaWFibGVzLCBjb250ZXh0KTtcbi8vXG4vLyAgIGlmICh0ZXJtVmVyaWZpZWRBc1ZhcmlhYmxlKSB7XG4vLyAgICAgY29uc3QgZmlyc3RWYWx1ZSA9IGZpcnN0KHZhbHVlcyksXG4vLyAgICAgICB2YXJpYWJsZU5hbWUgPSB0ZXJtU3RyaW5nLCAvLy9cbi8vICAgICAgIHZhbHVlID0gZmlyc3RWYWx1ZTsgLy8vXG4vL1xuLy8gICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4vLyAgICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSB2YWx1ZSBvZiB0aGUgJHt2YXJpYWJsZU5hbWV9IHZhcmlhYmxlIGlzIG5vdCB1bmRlZmluZWQuYCk7XG4vLyAgICAgfSBlbHNlIHtcbi8vICAgICAgIGNvbnN0IHR5cGUgPSBwcm9vZkNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbi8vICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuLy8gICAgICAgICB2YXJpYWJsZVR5cGUgPSBmaXJzdFR5cGUsIC8vL1xuLy8gICAgICAgICB0eXBlRXF1YWxUb09yU3ViVHlwZU9mVmFyaWFibGVUeXBlID0gdHlwZS5pc0VxdWFsVG9PclN1YlR5cGVPZih2YXJpYWJsZVR5cGUpO1xuLy9cbi8vICAgICAgIGlmICghdHlwZUVxdWFsVG9PclN1YlR5cGVPZlZhcmlhYmxlVHlwZSkge1xuLy8gICAgICAgICBwcm9vZkNvbnRleHQuZXJyb3IoYFRoZSBhc3NlcnRlZCB0eXBlIG9mIHRoZSAke3ZhcmlhYmxlTmFtZX0gdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIG9yIGEgc3ViLXR5cGUgb2YgaXRzIGRlY2xhcmVkIHR5cGUuYCk7XG4vLyAgICAgICB9IGVsc2Uge1xuLy8gICAgICAgICBjb25zdCBuYW1lID0gdmFyaWFibGVOYW1lLCAgLy8vXG4vLyAgICAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG4vL1xuLy8gICAgICAgICBwcm9vZkNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuLy9cbi8vICAgICAgICAgdHlwZUFzc2VydGlvblZlcmlmaWVkID0gdHJ1ZTtcbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH0gZWxzZSB7XG4vLyAgICAgY29uc3QgdGVybVZlcmlmaWVkQWdhaW5zdENvbnN0cnVjdG9ycyA9IHZlcmlmeVRlcm1BZ2FpbnN0Q29uc3RydWN0b3JzKHRlcm1Ob2RlLCB0eXBlcywgdmFsdWVzLCBjb250ZXh0KTtcbi8vXG4vLyAgICAgaWYgKHRlcm1WZXJpZmllZEFnYWluc3RDb25zdHJ1Y3RvcnMpIHtcbi8vICAgICAgIGNvbnN0IHR5cGUgPSBwcm9vZkNvbnRleHQuZmluZFR5cGVCeVR5cGVOYW1lKHR5cGVOYW1lKSxcbi8vICAgICAgICAgZmlyc3RUeXBlID0gZmlyc3QodHlwZXMpLFxuLy8gICAgICAgICB0ZXJtVHlwZSA9IGZpcnN0VHlwZSwgLy8vXG4vLyAgICAgICAgIHR5cGVFcXVhbFRvT3JTdWJUeXBlT2ZUZXJtVHlwZSA9IHR5cGUuaXNFcXVhbFRvT3JTdWJUeXBlT2YodGVybVR5cGUpO1xuLy9cbi8vICAgICAgIGlmICghdHlwZUVxdWFsVG9PclN1YlR5cGVPZlRlcm1UeXBlKSB7XG4vLyAgICAgICAgIHByb29mQ29udGV4dC5lcnJvcihgVGhlIGFzc2VydGVkIHR5cGUgb2YgdGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIGlzIG5vdCBlcXVhbCB0byBvciBhIHN1Yi10eXBlIG9mIGl0cyBkZWNsYXJlZCB0eXBlLmApO1xuLy8gICAgICAgfSBlbHNlIHtcbi8vXG4vLyAgICAgICAgIHR5cGVBc3NlcnRpb25WZXJpZmllZCA9IHRydWU7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuLy8gICB9XG4vLyB9XG4iXSwibmFtZXMiOlsidmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQiLCJzdGF0ZW1lbnROb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUiLCJwcm9vZkNvbnRleHQiLCJ1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkIiwiYmVnaW4iLCJ1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyIsIm5vZGVBc1N0cmluZyIsImRlYnVnIiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5U3RhdGVtZW50IiwiZGVyaXZlZCIsImlzRGVyaXZlZCIsImFzc2VydGlvbiIsIkFzc2VydGlvbiIsImZyb21TdGF0ZW1lbnROb2RlIiwiYXNzZXJ0aW9uTWF0Y2hlcyIsIm1hdGNoQXNzZXJ0aW9uIiwiaW5mbyIsImNvbXBsZXRlIiwiaGFsdCJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV0EsVUF1Q0EsaUJBQWlCO0NBQ2pCLGFBQWE7Q0FDYixXQUFXO0NBQ1gsc0JBQXNCO0NBQ3RCLGtDQUFrQztDQUNsQyxtREFBbUQ7Q0FDbkQsc0JBQXNCO0NBQ3RCLDJDQUEyQztDQUMzQyxtRkFBbUY7Q0FDbkYsRUFBRTtDQUNGLGtDQUFrQztDQUNsQyx3Q0FBd0M7Q0FDeEMsdUNBQXVDO0NBQ3ZDLGdDQUFnQztDQUNoQyxFQUFFO0NBQ0YsaUNBQWlDO0NBQ2pDLDJGQUEyRjtDQUMzRixlQUFlO0NBQ2YsZ0VBQWdFO0NBQ2hFLG9DQUFvQztDQUNwQyx3Q0FBd0M7Q0FDeEMsd0ZBQXdGO0NBQ3hGLEVBQUU7Q0FDRixtREFBbUQ7Q0FDbkQsdUlBQXVJO0NBQ3ZJLGlCQUFpQjtDQUNqQiwwQ0FBMEM7Q0FDMUMsNkRBQTZEO0NBQzdELEVBQUU7Q0FDRiw4Q0FBOEM7Q0FDOUMsRUFBRTtDQUNGLHdDQUF3QztDQUN4QyxVQUFVO0NBQ1YsUUFBUTtDQUNSLGFBQWE7Q0FDYiwrR0FBK0c7Q0FDL0csRUFBRTtDQUNGLDZDQUE2QztDQUM3QyxnRUFBZ0U7Q0FDaEUsb0NBQW9DO0NBQ3BDLG9DQUFvQztDQUNwQyxnRkFBZ0Y7Q0FDaEYsRUFBRTtDQUNGLCtDQUErQztDQUMvQyxtSUFBbUk7Q0FDbkksaUJBQWlCO0NBQ2pCLEVBQUU7Q0FDRix3Q0FBd0M7Q0FDeEMsVUFBVTtDQUNWLFFBQVE7Q0FDUixNQUFNO0NBQ04sSUFBSTs7OztlQTFGb0JBOzs7OERBVEk7OERBRU47cUJBRUk7c0JBQ0c7Ozs7OztBQUU3QixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsU0FBU0YsMkJBQTJCRyx3QkFBd0IsRUFBRUMsWUFBWSxFQUFFO0lBQ3pGLElBQUlDLCtCQUErQixLQUFLO0lBRXhDRCxhQUFhRSxLQUFLLENBQUNIO0lBRW5CLElBQU1JLDZCQUE2QkMsSUFBQUEsb0JBQVksRUFBQ0w7SUFFaERDLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QyxPQUEzQkYsNEJBQTJCO0lBRWhFLElBQU1HLGdCQUFnQlQsbUJBQW1CRTtJQUV6QyxJQUFJTyxrQkFBa0IsSUFBSSxFQUFFO1FBQzFCLElBQU1DLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ0YsZUFBZU47UUFFekQsSUFBSU8sbUJBQW1CO1lBQ3JCLElBQU1FLFVBQVVULGFBQWFVLFNBQVM7WUFFdEMsSUFBSUQsU0FBUztnQkFDWCxJQUFNRSxZQUFZQyxrQkFBUyxDQUFDQyxpQkFBaUIsQ0FBQ1AsZ0JBQ3hDUSxtQkFBbUJkLGFBQWFlLGNBQWMsQ0FBQ0o7Z0JBRXJEViwrQkFBK0JhLGtCQUFtQixHQUFHO1lBQ3ZELE9BQU87Z0JBQ0xiLCtCQUErQixJQUFJO1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLDhCQUE4QjtRQUNoQ0QsYUFBYWdCLElBQUksQ0FBQyxBQUFDLGlCQUEyQyxPQUEzQmIsNEJBQTJCO0lBQ2hFLENBQUM7SUFFREYsK0JBQ0VELGFBQWFpQixRQUFRLENBQUNsQiw0QkFDcEJDLGFBQWFrQixJQUFJLENBQUNuQix5QkFBeUI7SUFFL0MsT0FBT0U7QUFDVCJ9
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZnkvc3RhdGVtZW50L3VucXVhbGlmaWVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgdmVyaWZ5U3RhdGVtZW50IGZyb20gXCIuLi8uLi92ZXJpZnkvc3RhdGVtZW50XCI7XG5cbmltcG9ydCBBc3NlcnRpb24gZnJvbSBcIi4uLy4uL2Fzc2VydGlvblwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBub2RlQXNTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3N0cmluZ1wiO1xuXG5jb25zdCBzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5xdWFsaWZpZWRTdGF0ZW1lbnQvc3RhdGVtZW50IVwiKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdmVyaWZ5VW5xdWFsaWZpZWRTdGF0ZW1lbnQodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlLCBwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBwcm9vZkNvbnRleHQuYmVnaW4odW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBjb25zdCB1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZyA9IG5vZGVBc1N0cmluZyh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHByb29mQ29udGV4dC5kZWJ1ZyhgVmVyaWZ5aW5nIHRoZSAnJHt1bnF1YWxpZmllZFN0YXRlbWVudFN0cmluZ30nIHVucXVhbGlmaWVkIHN0YXRlbWVudC4uLmApO1xuXG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlUXVlcnkodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKTtcblxuICBpZiAoc3RhdGVtZW50Tm9kZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudFZlcmlmaWVkID0gdmVyaWZ5U3RhdGVtZW50KHN0YXRlbWVudE5vZGUsIHByb29mQ29udGV4dCk7XG5cbiAgICBpZiAoc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGRlcml2ZWQgPSBwcm9vZkNvbnRleHQuaXNEZXJpdmVkKCk7XG5cbiAgICAgIGlmIChkZXJpdmVkKSB7XG4gICAgICAgIGNvbnN0IGFzc2VydGlvbiA9IEFzc2VydGlvbi5mcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlKSxcbiAgICAgICAgICAgICAgYXNzZXJ0aW9uTWF0Y2hlcyA9IHByb29mQ29udGV4dC5tYXRjaEFzc2VydGlvbihhc3NlcnRpb24pO1xuXG4gICAgICAgIHVucXVhbGlmaWVkU3RhdGVtZW50VmVyaWZpZWQgPSBhc3NlcnRpb25NYXRjaGVzOyAgLy8vXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAodW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCkge1xuICAgIHByb29mQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmd9JyB1bnF1YWxpZmllZCBzdGF0ZW1lbnQuYCk7XG4gIH1cblxuICB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkID9cbiAgICBwcm9vZkNvbnRleHQuY29tcGxldGUodW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlKSA6XG4gICAgICBwcm9vZkNvbnRleHQuaGFsdCh1bnF1YWxpZmllZFN0YXRlbWVudE5vZGUpO1xuXG4gIHJldHVybiB1bnF1YWxpZmllZFN0YXRlbWVudFZlcmlmaWVkO1xufVxuIl0sIm5hbWVzIjpbInZlcmlmeVVucXVhbGlmaWVkU3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZVF1ZXJ5Iiwibm9kZVF1ZXJ5IiwidW5xdWFsaWZpZWRTdGF0ZW1lbnROb2RlIiwicHJvb2ZDb250ZXh0IiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRWZXJpZmllZCIsImJlZ2luIiwidW5xdWFsaWZpZWRTdGF0ZW1lbnRTdHJpbmciLCJub2RlQXNTdHJpbmciLCJkZWJ1ZyIsInN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnRWZXJpZmllZCIsInZlcmlmeVN0YXRlbWVudCIsImRlcml2ZWQiLCJpc0Rlcml2ZWQiLCJhc3NlcnRpb24iLCJBc3NlcnRpb24iLCJmcm9tU3RhdGVtZW50Tm9kZSIsImFzc2VydGlvbk1hdGNoZXMiLCJtYXRjaEFzc2VydGlvbiIsImluZm8iLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVdBOzs7ZUFBd0JBOzs7OERBVEk7OERBRU47cUJBRUk7c0JBQ0c7Ozs7OztBQUU3QixJQUFNQyxxQkFBcUJDLElBQUFBLGdCQUFTLEVBQUM7QUFFdEIsU0FBU0YsMkJBQTJCRyx3QkFBd0IsRUFBRUMsWUFBWSxFQUFFO0lBQ3pGLElBQUlDLCtCQUErQixLQUFLO0lBRXhDRCxhQUFhRSxLQUFLLENBQUNIO0lBRW5CLElBQU1JLDZCQUE2QkMsSUFBQUEsb0JBQVksRUFBQ0w7SUFFaERDLGFBQWFLLEtBQUssQ0FBQyxBQUFDLGtCQUE0QyxPQUEzQkYsNEJBQTJCO0lBRWhFLElBQU1HLGdCQUFnQlQsbUJBQW1CRTtJQUV6QyxJQUFJTyxrQkFBa0IsSUFBSSxFQUFFO1FBQzFCLElBQU1DLG9CQUFvQkMsSUFBQUEsa0JBQWUsRUFBQ0YsZUFBZU47UUFFekQsSUFBSU8sbUJBQW1CO1lBQ3JCLElBQU1FLFVBQVVULGFBQWFVLFNBQVM7WUFFdEMsSUFBSUQsU0FBUztnQkFDWCxJQUFNRSxZQUFZQyxrQkFBUyxDQUFDQyxpQkFBaUIsQ0FBQ1AsZ0JBQ3hDUSxtQkFBbUJkLGFBQWFlLGNBQWMsQ0FBQ0o7Z0JBRXJEViwrQkFBK0JhLGtCQUFtQixHQUFHO1lBQ3ZELE9BQU87Z0JBQ0xiLCtCQUErQixJQUFJO1lBQ3JDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUlBLDhCQUE4QjtRQUNoQ0QsYUFBYWdCLElBQUksQ0FBQyxBQUFDLGlCQUEyQyxPQUEzQmIsNEJBQTJCO0lBQ2hFLENBQUM7SUFFREYsK0JBQ0VELGFBQWFpQixRQUFRLENBQUNsQiw0QkFDcEJDLGFBQWFrQixJQUFJLENBQUNuQix5QkFBeUI7SUFFL0MsT0FBT0U7QUFDVCJ9
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.462",
4
+ "version": "0.0.463",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -4,6 +4,7 @@ import { first } from "../../utilities/array";
4
4
  import { nodeAsString } from "../../utilities/string";
5
5
  import { nodeQuery, typeNameFromTypeNode } from "../../utilities/query";
6
6
  import { verifyTermAsVariable, verifyTermAgainstConstructors } from "../../verify/term";
7
+ import Variable from "../../variable";
7
8
 
8
9
  const termNodeQuery = nodeQuery("/typeAssertion/term"),
9
10
  typeNodeQuery = nodeQuery("/typeAssertion/type");
@@ -24,43 +25,19 @@ export default function verifyTypeAssertion(typeAssertionNode, proofContext) {
24
25
  if (!typePresent) {
25
26
  proofContext.error(`The ${typeName} type is not present.`);
26
27
  } else {
27
- let assertedType = null;
28
-
29
- const type = proofContext.findTypeByTypeName(typeName),
30
- context = proofContext, ///
31
- termNode = termNodeQuery(typeAssertionNode);
32
-
33
- const variables = [],
28
+ const context = proofContext, ///
29
+ termNode = termNodeQuery(typeAssertionNode),
30
+ variables = [],
34
31
  termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
35
32
 
36
33
  if (termVerifiedAsVariable) {
37
- const firstVariable = first(variables),
38
- variable = firstVariable, ///
39
- variableType = variable.getType();
34
+ const variableTypeAssertionVerified = verifyVariableTypeAssertion(typeAssertionNode, proofContext);
40
35
 
41
- assertedType = variableType; ///
36
+ typeAssertionVerified = variableTypeAssertionVerified; ///
42
37
  } else {
43
- const types = [],
44
- termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context);
45
-
46
- if (termVerifiedAgainstConstructors) {
47
- const firstType = first(types),
48
- termType = firstType; ///
49
-
50
- assertedType = termType; ///
51
- }
52
- }
53
-
54
- if (assertedType !== null) {
55
- const typeEqualToOrSubTypeOfAssertedType = type.isEqualToOrSubTypeOf(assertedType);
38
+ const termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, proofContext);
56
39
 
57
- if (!typeEqualToOrSubTypeOfAssertedType) {
58
- const termString = nodeAsString(termNode);
59
-
60
- proofContext.error(`The type of the '${termString}' term or variable is not equal to or a sub-type of the asserted type.`);
61
- } else {
62
- typeAssertionVerified = true;
63
- }
40
+ typeAssertionVerified = termTypeAssertionVerified; ///
64
41
  }
65
42
  }
66
43
 
@@ -74,3 +51,70 @@ export default function verifyTypeAssertion(typeAssertionNode, proofContext) {
74
51
 
75
52
  return typeAssertionVerified;
76
53
  }
54
+
55
+ function verifyTermTypeAssertion(typeAssertionNode, proofContext) {
56
+ let termTypeAssertionVerified = false;
57
+
58
+ const types = [],
59
+ context = proofContext, ///
60
+ termNode = termNodeQuery(typeAssertionNode),
61
+ termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, context);
62
+
63
+ if (termVerifiedAgainstConstructors) {
64
+ const typeNode = typeNodeQuery(typeAssertionNode),
65
+ typeName = typeNameFromTypeNode(typeNode),
66
+ assertedTypeName = typeName, ///
67
+ assertedType = proofContext.findTypeByTypeName(assertedTypeName),
68
+ firstType = first(types),
69
+ termType = firstType,
70
+ assertedTypeEqualToOrSubTypeOfTermType = assertedType.isEqualToOrSubTypeOf(termType);
71
+
72
+ if (!assertedTypeEqualToOrSubTypeOfTermType) {
73
+ const termString = nodeAsString(termNode);
74
+
75
+ proofContext.error(`The asserted type is not equal to or a sub-type of the '${termString}' term type.`);
76
+ } else {
77
+ termTypeAssertionVerified = true;
78
+ }
79
+ }
80
+
81
+ return termTypeAssertionVerified;
82
+ }
83
+
84
+ function verifyVariableTypeAssertion(typeAssertionNode, proofContext) {
85
+ let variableTypeAssertionVerified = false;
86
+
87
+ const context = proofContext, ///
88
+ variables = [],
89
+ termNode = termNodeQuery(typeAssertionNode);
90
+
91
+ verifyTermAsVariable(termNode, variables, context);
92
+
93
+ const typeNode = typeNodeQuery(typeAssertionNode),
94
+ typeName = typeNameFromTypeNode(typeNode),
95
+ assertedTypeName = typeName, ///
96
+ assertedType = proofContext.findTypeByTypeName(assertedTypeName),
97
+ firstVariable = first(variables),
98
+ variable = firstVariable, ///
99
+ variableName = variable.getName(),
100
+ variableType = variable.getType(),
101
+ assertedTypeEqualToOrSubTypeOfVariableType = assertedType.isEqualToOrSubTypeOf(variableType);
102
+
103
+ if (!assertedTypeEqualToOrSubTypeOfVariableType) {
104
+ proofContext.error(`The asserted type is not equal to or a sub-type of the '${variableName}' variable type.`);
105
+ } else {
106
+ const derived = proofContext.isDerived();
107
+
108
+ if (!derived) {
109
+ const type = assertedType, ///
110
+ name = variableName, ///
111
+ variable = Variable.fromTypeAndName(type, name);
112
+
113
+ proofContext.addVariable(variable);
114
+ }
115
+
116
+ variableTypeAssertionVerified = true;
117
+ }
118
+
119
+ return variableTypeAssertionVerified;
120
+ }
@@ -47,56 +47,3 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, pro
47
47
 
48
48
  return unqualifiedStatementVerified;
49
49
  }
50
-
51
- // if (derived) {
52
- // debugger
53
- // } else {
54
- // const types = [],
55
- // context = proofContext, ///
56
- // termNode = termNodeQuery(typeAssertionNode),
57
- // variables = [],
58
- // termString = nodeAsString(termNode),
59
- // termVerifiedAsVariable = verifyTermAsVariable(termNode, variables, context);
60
- //
61
- // if (termVerifiedAsVariable) {
62
- // const firstValue = first(values),
63
- // variableName = termString, ///
64
- // value = firstValue; ///
65
- //
66
- // if (value !== undefined) {
67
- // proofContext.error(`The value of the ${variableName} variable is not undefined.`);
68
- // } else {
69
- // const type = proofContext.findTypeByTypeName(typeName),
70
- // firstType = first(types),
71
- // variableType = firstType, ///
72
- // typeEqualToOrSubTypeOfVariableType = type.isEqualToOrSubTypeOf(variableType);
73
- //
74
- // if (!typeEqualToOrSubTypeOfVariableType) {
75
- // proofContext.error(`The asserted type of the ${variableName} variable is not equal to or a sub-type of its declared type.`);
76
- // } else {
77
- // const name = variableName, ///
78
- // variable = Variable.fromTypeAndName(type, name);
79
- //
80
- // proofContext.addVariable(variable);
81
- //
82
- // typeAssertionVerified = true;
83
- // }
84
- // }
85
- // } else {
86
- // const termVerifiedAgainstConstructors = verifyTermAgainstConstructors(termNode, types, values, context);
87
- //
88
- // if (termVerifiedAgainstConstructors) {
89
- // const type = proofContext.findTypeByTypeName(typeName),
90
- // firstType = first(types),
91
- // termType = firstType, ///
92
- // typeEqualToOrSubTypeOfTermType = type.isEqualToOrSubTypeOf(termType);
93
- //
94
- // if (!typeEqualToOrSubTypeOfTermType) {
95
- // proofContext.error(`The asserted type of the '${termString}' term is not equal to or a sub-type of its declared type.`);
96
- // } else {
97
- //
98
- // typeAssertionVerified = true;
99
- // }
100
- // }
101
- // }
102
- // }