occam-verify-cli 1.0.318 → 1.0.325

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.
Files changed (53) hide show
  1. package/lib/context/file.js +108 -126
  2. package/lib/context/local.js +21 -8
  3. package/lib/context/release.js +58 -7
  4. package/lib/dom/assertion/type.js +3 -3
  5. package/lib/dom/declaration/complexType.js +125 -101
  6. package/lib/dom/declaration/constructor.js +5 -5
  7. package/lib/dom/declaration/metavariable.js +3 -3
  8. package/lib/dom/declaration/simpleType.js +58 -52
  9. package/lib/dom/declaration/typePrefix.js +18 -7
  10. package/lib/dom/declaration/variable.js +5 -5
  11. package/lib/dom/metavariable.js +3 -3
  12. package/lib/dom/property.js +4 -4
  13. package/lib/dom/topLevelAssertion.js +1 -43
  14. package/lib/dom/type.js +107 -21
  15. package/lib/dom/variable.js +4 -4
  16. package/lib/node/declaration/complexType.js +22 -1
  17. package/lib/node/declaration/simpleType.js +22 -1
  18. package/lib/node/type.js +35 -9
  19. package/lib/unifier/metavariable.js +2 -2
  20. package/lib/unifier/statementWithCombinator.js +3 -3
  21. package/lib/unifier/termWithConstructor.js +2 -2
  22. package/lib/utilities/json.js +8 -6
  23. package/lib/utilities/node.js +4 -4
  24. package/lib/utilities/type.js +10 -5
  25. package/lib/verifier/combinator.js +2 -2
  26. package/lib/verifier/constructor.js +3 -3
  27. package/package.json +1 -1
  28. package/src/context/file.js +137 -171
  29. package/src/context/local.js +7 -3
  30. package/src/context/release.js +54 -8
  31. package/src/dom/assertion/type.js +3 -3
  32. package/src/dom/declaration/complexType.js +159 -132
  33. package/src/dom/declaration/constructor.js +6 -6
  34. package/src/dom/declaration/metavariable.js +3 -3
  35. package/src/dom/declaration/simpleType.js +74 -68
  36. package/src/dom/declaration/typePrefix.js +24 -6
  37. package/src/dom/declaration/variable.js +6 -6
  38. package/src/dom/metavariable.js +2 -2
  39. package/src/dom/property.js +1 -1
  40. package/src/dom/topLevelAssertion.js +3 -15
  41. package/src/dom/type.js +132 -22
  42. package/src/dom/variable.js +4 -4
  43. package/src/node/declaration/complexType.js +21 -0
  44. package/src/node/declaration/simpleType.js +21 -0
  45. package/src/node/type.js +42 -9
  46. package/src/unifier/metavariable.js +2 -2
  47. package/src/unifier/statementWithCombinator.js +2 -2
  48. package/src/unifier/termWithConstructor.js +2 -2
  49. package/src/utilities/json.js +18 -10
  50. package/src/utilities/node.js +6 -3
  51. package/src/utilities/type.js +12 -5
  52. package/src/verifier/combinator.js +2 -2
  53. package/src/verifier/constructor.js +3 -3
@@ -211,12 +211,12 @@ _define_property(ConstructorVerifier, "maps", [
211
211
  nodeQuery: typeNodeQuery,
212
212
  verify: function(typeNode, context, verifyAhead) {
213
213
  var typeVerifies;
214
- var typeName = typeNode.getTypeName(), typePresent = context.isTypePresentByTypeName(typeName);
214
+ var nominalTypeName = typeNode.getNominalTypeName(), typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
215
215
  if (typePresent) {
216
216
  var verifiesAhead = verifyAhead();
217
217
  typeVerifies = verifiesAhead; ///
218
218
  } else {
219
- var typeString = typeName; ///
219
+ var typeString = nominalTypeName; ///
220
220
  context.debug("The '".concat(typeString, "' type is not present."));
221
221
  typeVerifies = false;
222
222
  }
@@ -227,4 +227,4 @@ _define_property(ConstructorVerifier, "maps", [
227
227
  var constructorVerifier = new ConstructorVerifier();
228
228
  var _default = constructorVerifier;
229
229
 
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9jb25zdHJ1Y3Rvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBUWVBFX1RZUEUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgbGFzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZVwiKTtcblxuY2xhc3MgQ29uc3RydWN0b3JWZXJpZmllciBleHRlbmRzIFZlcmlmaWVyIHtcbiAgdmVyaWZ5VGVybSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGVybU5vZGUsIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZnkgPSB0aGlzLnZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmVyaWZpZXNBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHJldHVybiB2ZXJpZmllc0FoZWFkO1xuICAgICAgICAgIH0pO1xuXG4gICAgdGVybVZlcmlmaWVzQXNDb25zdHJ1Y3RvciA9IGNoaWxkTm9kZXNWZXJpZnk7ICAvLy9cblxuICAgIHJldHVybiB0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yO1xuICB9XG5cbiAgdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuXG4gICAgY29uc3QgdHlwZSA9IHRlcm1pbmFsTm9kZS5nZXRUeXBlKCk7XG5cbiAgICBpZiAodHlwZSA9PT0gVFlQRV9UWVBFKSB7XG4gICAgICBjb25zdCB2ZXJpZnlBaGVhZCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSwgLy8vXG4gICAgICAgICAgICBsYXN0UmVtYWluaW5nQXJndW1lbnQgPSBsYXN0KHJlbWFpbmluZ0FyZ3VtZW50cyksXG4gICAgICAgICAgICBjb250ZXh0ID0gbGFzdFJlbWFpbmluZ0FyZ3VtZW50LCAgLy8vXG4gICAgICAgICAgICBjb250ZW50ID0gdGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSBjb250ZW50OyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgaW4gdGhlIGNvbnN0cnVjdG9yIGJ1dCBoYXMgbm90IGJlZW4gZGVjbGFyZWQgYmVmb3JlaGFuZC5gKTtcblxuICAgICAgdGVybWluYWxOb2RlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgcmVtYWluaW5nQXJndW1lbnRzLnB1c2godmVyaWZ5QWhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllcyA9IHN1cGVyLnZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodGVybU5vZGUsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgVGVybSB9ID0gZG9tLFxuICAgICAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtVmVyaWZpZXMgPSB0ZXJtLnZlcmlmeShjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1WZXJpZmllcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKHR5cGVOb2RlLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkgPT4ge1xuICAgICAgICBsZXQgdHlwZVZlcmlmaWVzO1xuXG4gICAgICAgIGNvbnN0IHR5cGVOYW1lID0gdHlwZU5vZGUuZ2V0VHlwZU5hbWUoKSxcbiAgICAgICAgICAgICAgdHlwZVByZXNlbnQgPSBjb250ZXh0LmlzVHlwZVByZXNlbnRCeVR5cGVOYW1lKHR5cGVOYW1lKTtcblxuICAgICAgICBpZiAodHlwZVByZXNlbnQpIHtcbiAgICAgICAgICBjb25zdCB2ZXJpZmllc0FoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgICAgICAgIHR5cGVWZXJpZmllcyA9IHZlcmlmaWVzQWhlYWQ7IC8vL1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSB0eXBlTmFtZTsgIC8vL1xuXG4gICAgICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIG5vdCBwcmVzZW50LmApO1xuXG4gICAgICAgICAgdHlwZVZlcmlmaWVzID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHlwZVZlcmlmaWVzO1xuICAgICAgfVxuICAgIH1cbiAgXTtcbn1cblxuY29uc3QgY29uc3RydWN0b3JWZXJpZmllciA9IG5ldyBDb25zdHJ1Y3RvclZlcmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbnN0cnVjdG9yVmVyaWZpZXI7XG4iXSwibmFtZXMiOlsibGFzdCIsImFycmF5VXRpbGl0aWVzIiwidGVybU5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInR5cGVOb2RlUXVlcnkiLCJDb25zdHJ1Y3RvclZlcmlmaWVyIiwidmVyaWZ5VGVybSIsInRlcm1Ob2RlIiwiY29udGV4dCIsInRlcm1WZXJpZmllc0FzQ29uc3RydWN0b3IiLCJub25UZXJtaW5hbE5vZGUiLCJjaGlsZE5vZGVzIiwiZ2V0Q2hpbGROb2RlcyIsImNoaWxkTm9kZXNWZXJpZnkiLCJ2ZXJpZnlDaGlsZE5vZGVzIiwidmVyaWZpZXNBaGVhZCIsInZlcmlmeVRlcm1pbmFsTm9kZSIsInRlcm1pbmFsTm9kZSIsInJlbWFpbmluZ0FyZ3VtZW50cyIsInRlcm1pbmFsTm9kZVZlcmlmaWVzIiwidHlwZSIsImdldFR5cGUiLCJUWVBFX1RZUEUiLCJ2ZXJpZnlBaGVhZCIsInBvcCIsImxhc3RSZW1haW5pbmdBcmd1bWVudCIsImNvbnRlbnQiLCJnZXRDb250ZW50IiwidHlwZVN0cmluZyIsImRlYnVnIiwicHVzaCIsIlZlcmlmaWVyIiwibWFwcyIsInZlcmlmeSIsIlRlcm0iLCJkb20iLCJ0ZXJtIiwiZnJvbVRlcm1Ob2RlIiwidGVybVZlcmlmaWVzIiwidHlwZU5vZGUiLCJ0eXBlVmVyaWZpZXMiLCJ0eXBlTmFtZSIsImdldFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImNvbnN0cnVjdG9yVmVyaWZpZXIiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQStGQTs7O2VBQUE7Ozt5QkE3RitCOzBEQUVmOytEQUNLO3FCQUVLO3lCQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUxQixJQUFNLEFBQUVBLE9BQVNDLHlCQUFjLENBQXZCRDtBQUVSLElBQU1FLGdCQUFnQkMsSUFBQUEsZ0JBQVMsRUFBQyxVQUMxQkMsZ0JBQWdCRCxJQUFBQSxnQkFBUyxFQUFDO0FBRWhDLElBQUEsQUFBTUUsb0NBQU47Y0FBTUE7YUFBQUE7Z0NBQUFBO1FBQU4sT0FBQSxrQkFBTUE7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLFdBQVdDLFFBQVEsRUFBRUMsT0FBTztnQkFDMUIsSUFBSUM7Z0JBRUosSUFBTUMsa0JBQWtCSCxVQUNsQkksYUFBYUQsZ0JBQWdCRSxhQUFhLElBQzFDQyxtQkFBbUIsSUFBSSxDQUFDQyxnQkFBZ0IsQ0FBQ0gsWUFBWUgsU0FBUztvQkFDNUQsSUFBTU8sZ0JBQWdCO29CQUV0QixPQUFPQTtnQkFDVDtnQkFFTk4sNEJBQTRCSSxrQkFBbUIsR0FBRztnQkFFbEQsT0FBT0o7WUFDVDs7O1lBRUFPLEtBQUFBO21CQUFBQSxTQUFBQSxtQkFBbUJDLFlBQVk7Z0JBQUUsSUFBQSxJQUFBLE9BQUEsVUFBQSxRQUFBLEFBQUdDLHFCQUFILFVBQUEsT0FBQSxJQUFBLE9BQUEsUUFBQSxPQUFBLEdBQUEsT0FBQSxNQUFBO29CQUFHQSxtQkFBSCxPQUFBLEtBQUEsU0FBQSxDQUFBLEtBQXFCOztnQkFDcEQsSUFBSUM7Z0JBRUosSUFBTUMsT0FBT0gsYUFBYUksT0FBTztnQkFFakMsSUFBSUQsU0FBU0Usb0JBQVMsRUFBRTtvQkFDdEIsSUFBTUMsY0FBY0wsbUJBQW1CTSxHQUFHLElBQ3BDQyx3QkFBd0J6QixLQUFLa0IscUJBQzdCVixVQUFVaUIsdUJBQ1ZDLFVBQVVULGFBQWFVLFVBQVUsSUFDakNDLGFBQWFGLFNBQVMsR0FBRztvQkFFL0JsQixRQUFRcUIsS0FBSyxDQUFDLEFBQUMsUUFBa0IsT0FBWEQsWUFBVztvQkFFakNULHVCQUF1QjtvQkFFdkJELG1CQUFtQlksSUFBSSxDQUFDUDtnQkFDMUIsT0FBTzt3QkFDa0I7b0JBQXZCSix3QkFBdUIsU0FBQSx1QkFuQ3ZCZCxnQ0FtQzZCVyxzQkFBTixJQUFLLGNBQUw7O3dCQUF5QkM7NkJBQWMscUJBQUdDO2dCQUNuRTtnQkFFQSxPQUFPQztZQUNUOzs7V0F2Q0lkO0VBQTRCMEIsaUJBQVE7QUF5Q3hDLGlCQXpDSTFCLHFCQXlDRzJCLFFBQU87SUFDWjtRQUNFN0IsV0FBV0Q7UUFDWCtCLFFBQVEsU0FBQzFCLFVBQVVDLFNBQVNlO1lBQzFCLElBQU0sQUFBRVcsT0FBU0MsWUFBRyxDQUFaRCxNQUNGRSxPQUFPRixLQUFLRyxZQUFZLENBQUM5QixVQUFVQyxVQUNuQzhCLGVBQWVGLEtBQUtILE1BQU0sQ0FBQ3pCLFNBQVNlO1lBRTFDLE9BQU9lO1FBQ1Q7SUFDRjtJQUNBO1FBQ0VuQyxXQUFXQztRQUNYNkIsUUFBUSxTQUFDTSxVQUFVL0IsU0FBU2U7WUFDMUIsSUFBSWlCO1lBRUosSUFBTUMsV0FBV0YsU0FBU0csV0FBVyxJQUMvQkMsY0FBY25DLFFBQVFvQyx1QkFBdUIsQ0FBQ0g7WUFFcEQsSUFBSUUsYUFBYTtnQkFDZixJQUFNNUIsZ0JBQWdCUTtnQkFFdEJpQixlQUFlekIsZUFBZSxHQUFHO1lBQ25DLE9BQU87Z0JBQ0wsSUFBTWEsYUFBYWEsVUFBVyxHQUFHO2dCQUVqQ2pDLFFBQVFxQixLQUFLLENBQUMsQUFBQyxRQUFrQixPQUFYRCxZQUFXO2dCQUVqQ1ksZUFBZTtZQUNqQjtZQUVBLE9BQU9BO1FBQ1Q7SUFDRjtDQUNEO0FBR0gsSUFBTUssc0JBQXNCLElBQUl4QztJQUVoQyxXQUFld0MifQ==
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZmllci9jb25zdHJ1Y3Rvci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IFZlcmlmaWVyIGZyb20gXCIuLi92ZXJpZmllclwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5pbXBvcnQgeyBUWVBFX1RZUEUgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgbGFzdCB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmNvbnN0IHRlcm1Ob2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdGVybVwiKSxcbiAgICAgIHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdHlwZVwiKTtcblxuY2xhc3MgQ29uc3RydWN0b3JWZXJpZmllciBleHRlbmRzIFZlcmlmaWVyIHtcbiAgdmVyaWZ5VGVybSh0ZXJtTm9kZSwgY29udGV4dCkge1xuICAgIGxldCB0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yO1xuXG4gICAgY29uc3Qgbm9uVGVybWluYWxOb2RlID0gdGVybU5vZGUsIC8vL1xuICAgICAgICAgIGNoaWxkTm9kZXMgPSBub25UZXJtaW5hbE5vZGUuZ2V0Q2hpbGROb2RlcygpLFxuICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZnkgPSB0aGlzLnZlcmlmeUNoaWxkTm9kZXMoY2hpbGROb2RlcywgY29udGV4dCwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmVyaWZpZXNBaGVhZCA9IHRydWU7XG5cbiAgICAgICAgICAgIHJldHVybiB2ZXJpZmllc0FoZWFkO1xuICAgICAgICAgIH0pO1xuXG4gICAgdGVybVZlcmlmaWVzQXNDb25zdHJ1Y3RvciA9IGNoaWxkTm9kZXNWZXJpZnk7ICAvLy9cblxuICAgIHJldHVybiB0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yO1xuICB9XG5cbiAgdmVyaWZ5VGVybWluYWxOb2RlKHRlcm1pbmFsTm9kZSwgLi4ucmVtYWluaW5nQXJndW1lbnRzKSB7XG4gICAgbGV0IHRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuXG4gICAgY29uc3QgdHlwZSA9IHRlcm1pbmFsTm9kZS5nZXRUeXBlKCk7XG5cbiAgICBpZiAodHlwZSA9PT0gVFlQRV9UWVBFKSB7XG4gICAgICBjb25zdCB2ZXJpZnlBaGVhZCA9IHJlbWFpbmluZ0FyZ3VtZW50cy5wb3AoKSwgLy8vXG4gICAgICAgICAgICBsYXN0UmVtYWluaW5nQXJndW1lbnQgPSBsYXN0KHJlbWFpbmluZ0FyZ3VtZW50cyksXG4gICAgICAgICAgICBjb250ZXh0ID0gbGFzdFJlbWFpbmluZ0FyZ3VtZW50LCAgLy8vXG4gICAgICAgICAgICBjb250ZW50ID0gdGVybWluYWxOb2RlLmdldENvbnRlbnQoKSxcbiAgICAgICAgICAgIHR5cGVTdHJpbmcgPSBjb250ZW50OyAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgVGhlICcke3R5cGVTdHJpbmd9JyB0eXBlIGlzIHByZXNlbnQgaW4gdGhlIGNvbnN0cnVjdG9yIGJ1dCBoYXMgbm90IGJlZW4gZGVjbGFyZWQgYmVmb3JlaGFuZC5gKTtcblxuICAgICAgdGVybWluYWxOb2RlVmVyaWZpZXMgPSBmYWxzZTtcblxuICAgICAgcmVtYWluaW5nQXJndW1lbnRzLnB1c2godmVyaWZ5QWhlYWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXJtaW5hbE5vZGVWZXJpZmllcyA9IHN1cGVyLnZlcmlmeVRlcm1pbmFsTm9kZSh0ZXJtaW5hbE5vZGUsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlcm1pbmFsTm9kZVZlcmlmaWVzO1xuICB9XG5cbiAgc3RhdGljIG1hcHMgPSBbXG4gICAge1xuICAgICAgbm9kZVF1ZXJ5OiB0ZXJtTm9kZVF1ZXJ5LFxuICAgICAgdmVyaWZ5OiAodGVybU5vZGUsIGNvbnRleHQsIHZlcmlmeUFoZWFkKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgVGVybSB9ID0gZG9tLFxuICAgICAgICAgICAgICB0ZXJtID0gVGVybS5mcm9tVGVybU5vZGUodGVybU5vZGUsIGNvbnRleHQpLFxuICAgICAgICAgICAgICB0ZXJtVmVyaWZpZXMgPSB0ZXJtLnZlcmlmeShjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1WZXJpZmllcztcbiAgICAgIH1cbiAgICB9LFxuICAgIHtcbiAgICAgIG5vZGVRdWVyeTogdHlwZU5vZGVRdWVyeSxcbiAgICAgIHZlcmlmeTogKHR5cGVOb2RlLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCkgPT4ge1xuICAgICAgICBsZXQgdHlwZVZlcmlmaWVzO1xuXG4gICAgICAgIGNvbnN0IG5vbWluYWxUeXBlTmFtZSA9IHR5cGVOb2RlLmdldE5vbWluYWxUeXBlTmFtZSgpLFxuICAgICAgICAgICAgICB0eXBlUHJlc2VudCA9IGNvbnRleHQuaXNUeXBlUHJlc2VudEJ5Tm9taW5hbFR5cGVOYW1lKG5vbWluYWxUeXBlTmFtZSk7XG5cbiAgICAgICAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgICAgICAgY29uc3QgdmVyaWZpZXNBaGVhZCA9IHZlcmlmeUFoZWFkKCk7XG5cbiAgICAgICAgICB0eXBlVmVyaWZpZXMgPSB2ZXJpZmllc0FoZWFkOyAvLy9cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0eXBlU3RyaW5nID0gbm9taW5hbFR5cGVOYW1lOyAvLy9cblxuICAgICAgICAgIGNvbnRleHQuZGVidWcoYFRoZSAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gKTtcblxuICAgICAgICAgIHR5cGVWZXJpZmllcyA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR5cGVWZXJpZmllcztcbiAgICAgIH1cbiAgICB9XG4gIF07XG59XG5cbmNvbnN0IGNvbnN0cnVjdG9yVmVyaWZpZXIgPSBuZXcgQ29uc3RydWN0b3JWZXJpZmllcigpO1xuXG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RvclZlcmlmaWVyO1xuIl0sIm5hbWVzIjpbImxhc3QiLCJhcnJheVV0aWxpdGllcyIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwiQ29uc3RydWN0b3JWZXJpZmllciIsInZlcmlmeVRlcm0iLCJ0ZXJtTm9kZSIsImNvbnRleHQiLCJ0ZXJtVmVyaWZpZXNBc0NvbnN0cnVjdG9yIiwibm9uVGVybWluYWxOb2RlIiwiY2hpbGROb2RlcyIsImdldENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZ5IiwidmVyaWZ5Q2hpbGROb2RlcyIsInZlcmlmaWVzQWhlYWQiLCJ2ZXJpZnlUZXJtaW5hbE5vZGUiLCJ0ZXJtaW5hbE5vZGUiLCJyZW1haW5pbmdBcmd1bWVudHMiLCJ0ZXJtaW5hbE5vZGVWZXJpZmllcyIsInR5cGUiLCJnZXRUeXBlIiwiVFlQRV9UWVBFIiwidmVyaWZ5QWhlYWQiLCJwb3AiLCJsYXN0UmVtYWluaW5nQXJndW1lbnQiLCJjb250ZW50IiwiZ2V0Q29udGVudCIsInR5cGVTdHJpbmciLCJkZWJ1ZyIsInB1c2giLCJWZXJpZmllciIsIm1hcHMiLCJ2ZXJpZnkiLCJUZXJtIiwiZG9tIiwidGVybSIsImZyb21UZXJtTm9kZSIsInRlcm1WZXJpZmllcyIsInR5cGVOb2RlIiwidHlwZVZlcmlmaWVzIiwibm9taW5hbFR5cGVOYW1lIiwiZ2V0Tm9taW5hbFR5cGVOYW1lIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlOb21pbmFsVHlwZU5hbWUiLCJjb25zdHJ1Y3RvclZlcmlmaWVyIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkErRkE7OztlQUFBOzs7eUJBN0YrQjswREFFZjsrREFDSztxQkFFSzt5QkFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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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": "1.0.318",
4
+ "version": "1.0.325",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -33,7 +33,7 @@ import { typesFromJSON,
33
33
  metatheoremsToMetatheoremsJSON,
34
34
  metavariablesToMetavariablesJSON } from "../utilities/json";
35
35
 
36
- const { push, first, filter } = arrayUtilities;
36
+ const { push, filter } = arrayUtilities;
37
37
 
38
38
  export default class FileContext {
39
39
  constructor(releaseContext, filePath, lineIndex, tokens, node, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables) {
@@ -83,6 +83,8 @@ export default class FileContext {
83
83
 
84
84
  getMetaTypes() { return this.releaseContext.getMetaTypes(); }
85
85
 
86
+ getTypePrefix() { return this.releaseContext.getTypePrefix(); }
87
+
86
88
  getJudgements() {
87
89
  const judgements = [];
88
90
 
@@ -104,117 +106,87 @@ export default class FileContext {
104
106
  getLabels(includeRelease = true) {
105
107
  const labels = [];
106
108
 
107
- this.rules.forEach((rule) => {
108
- const ruleLabels = rule.getLabels();
109
+ if (includeRelease) {
110
+ const releaseContextLabels = this.releaseContext.getLabels();
109
111
 
110
- push(labels, ruleLabels);
111
- });
112
+ push(labels, releaseContextLabels);
113
+ } else {
114
+ this.rules.forEach((rule) => {
115
+ const ruleLabels = rule.getLabels();
112
116
 
113
- this.axioms.forEach((axiom) => {
114
- const axiomLabels = axiom.getLabels();
117
+ push(labels, ruleLabels);
118
+ });
115
119
 
116
- push(labels, axiomLabels);
117
- });
120
+ this.axioms.forEach((axiom) => {
121
+ const axiomLabels = axiom.getLabels();
118
122
 
119
- this.lemmas.forEach((lemma) => {
120
- const lemmaLabels = lemma.getLabels();
123
+ push(labels, axiomLabels);
124
+ });
121
125
 
122
- push(labels, lemmaLabels);
123
- });
126
+ this.lemmas.forEach((lemma) => {
127
+ const lemmaLabels = lemma.getLabels();
124
128
 
125
- this.theorems.forEach((theorem) => {
126
- const theoremLabels = theorem.getLabels();
129
+ push(labels, lemmaLabels);
130
+ });
127
131
 
128
- push(labels, theoremLabels);
129
- });
132
+ this.theorems.forEach((theorem) => {
133
+ const theoremLabels = theorem.getLabels();
130
134
 
131
- this.conjectures.forEach((conjecture) => {
132
- const conjectureLabels = conjecture.getLabels();
135
+ push(labels, theoremLabels);
136
+ });
133
137
 
134
- push(labels, conjectureLabels);
135
- });
138
+ this.conjectures.forEach((conjecture) => {
139
+ const conjectureLabels = conjecture.getLabels();
136
140
 
137
- this.metatheorems.forEach((metatheorem) => {
138
- const metatheoremLabel = metatheorem.getLabel();
141
+ push(labels, conjectureLabels);
142
+ });
139
143
 
140
- labels.push(metatheoremLabel);
141
- });
144
+ this.metatheorems.forEach((metatheorem) => {
145
+ const metatheoremLabel = metatheorem.getLabel();
142
146
 
143
- if (includeRelease) {
144
- const releaseContextLabels = this.releaseContext.getLabels();
145
-
146
- push(labels, releaseContextLabels);
147
+ labels.push(metatheoremLabel);
148
+ });
147
149
  }
148
150
 
149
151
  return labels;
150
152
  }
151
153
 
152
- getTypes(includeRelease = true) {
153
- const types = [];
154
-
155
- push(types, this.types);
156
-
157
- if (includeRelease) {
158
- const releaseContextTypes = this.releaseContext.getTypes();
159
-
160
- push(types, releaseContextTypes);
161
- }
154
+ getTypes(includeRelease = true, includeDependencies = true) {
155
+ const types = includeRelease ?
156
+ this.releaseContext.getTypes(includeDependencies) :
157
+ this.types;
162
158
 
163
159
  return types;
164
160
  }
165
161
 
166
162
  getRules(includeRelease = true) {
167
- const rules = []
168
-
169
- push(rules, this.rules);
170
-
171
- if (includeRelease) {
172
- const releaseContextRules = this.releaseContext.getRules();
173
-
174
- push(rules, releaseContextRules);
175
- }
163
+ const rules = includeRelease ?
164
+ this.releaseContext.getRules() :
165
+ this.rules;
176
166
 
177
167
  return rules;
178
168
  }
179
169
 
180
170
  getAxioms(includeRelease = true) {
181
- const axioms = [];
182
-
183
- push(axioms, this.axioms);
184
-
185
- if (includeRelease) {
186
- const releaseContextAxioms = this.releaseContext.getAxioms();
187
-
188
- push(axioms, releaseContextAxioms);
189
- }
171
+ const axioms = includeRelease ?
172
+ this.releaseContext.getAxioms() :
173
+ this.axioms;
190
174
 
191
175
  return axioms;
192
176
  }
193
177
 
194
178
  getLemmas(includeRelease = true) {
195
- const lemmas = [];
196
-
197
- push(lemmas, this.lemmas);
198
-
199
- if (includeRelease) {
200
- const releaseContextLemmas = this.releaseContext.getLemmas();
201
-
202
- push(lemmas, releaseContextLemmas);
203
- }
179
+ const lemmas = includeRelease ?
180
+ this.releaseContext.getLemmas() :
181
+ this.lemmas;
204
182
 
205
183
  return lemmas;
206
184
  }
207
185
 
208
186
  getTheorems(includeRelease = true) {
209
- const theorems = [];
210
-
211
- push(theorems, this.theorems);
212
-
213
- if (includeRelease) {
214
- const releaseContextTheorems = this.releaseContext.getTheorems();
215
-
216
- push(theorems, releaseContextTheorems);
217
- }
187
+ const theorems = includeRelease ?
188
+ this.releaseContext.getTheorems() :
189
+ this.theorems;
218
190
 
219
191
  return theorems;
220
192
  }
@@ -224,97 +196,57 @@ export default class FileContext {
224
196
  }
225
197
 
226
198
  getProcedures(includeRelease = true) {
227
- const procedures = [];
228
-
229
- if (includeRelease) {
230
- const releaseContextProcedures = this.releaseContext.getProcedures();
231
-
232
- push(procedures, releaseContextProcedures);
233
- }
199
+ const procedures = includeRelease ?
200
+ this.releaseContext.getProcedures() :
201
+ null; ///
234
202
 
235
203
  return procedures;
236
204
  }
237
205
 
238
206
  getMetaLemmas(includeRelease = true) {
239
- const metaLemmas = [];
240
-
241
- push(metaLemmas, this.metaLemmas);
242
-
243
- if (includeRelease) {
244
- const releaseContextMetaLemmas = this.releaseContext.getMetaLemmas();
245
-
246
- push(metaLemmas, releaseContextMetaLemmas);
247
- }
207
+ const metaLemmas = includeRelease ?
208
+ this.releaseContext.getMetaLemmas() :
209
+ this.metaLemmas;
248
210
 
249
211
  return metaLemmas;
250
212
  }
251
213
 
252
214
  getConjectures(includeRelease = true) {
253
- const conjectures = [];
254
-
255
- push(conjectures, this.conjectures);
256
-
257
- if (includeRelease) {
258
- const releaseContextConjectures = this.releaseContext.getConjectures();
259
-
260
- push(conjectures, releaseContextConjectures);
261
- }
215
+ const conjectures = includeRelease ?
216
+ this.releaseContext.getConjectures() :
217
+ this.conjectures;
262
218
 
263
219
  return conjectures;
264
220
  }
265
221
 
266
222
  getCombinators(includeRelease = true) {
267
- const combinators = [];
268
-
269
- push(combinators, this.combinators);
270
-
271
- if (includeRelease) {
272
- const releaseContextCombinators = this.releaseContext.getCombinators();
273
-
274
- push(combinators, releaseContextCombinators);
275
- }
223
+ const combinators = includeRelease ?
224
+ this.releaseContext.getCombinators() :
225
+ this.combinators;
276
226
 
277
227
  return combinators;
278
228
  }
279
229
 
280
230
  getTypePrefixes(includeRelease = true) {
281
- const typePrefixes = [];
282
-
283
- push(typePrefixes, this.typePrefixes);
284
-
285
- if (includeRelease) {
286
- const releaseContextTypePrefixes = this.releaseContext.getTypePrefixes();
287
-
288
- push(typePrefixes, releaseContextTypePrefixes);
289
- }
231
+ const typePrefixes = includeRelease ?
232
+ this.releaseContext.getTypePrefixes() :
233
+ this.typePrefixes;
290
234
 
291
235
  return typePrefixes;
292
236
  }
293
237
 
294
238
  getConstructors(includeRelease = true) {
295
- const constructors = [];
296
-
297
- push(constructors, this.constructors);
298
-
299
- if (includeRelease) {
300
- const releaseContextConstructors = this.releaseContext.getConstructors();
301
-
302
- push(constructors, releaseContextConstructors);
303
- }
239
+ const constructors = includeRelease ?
240
+ this.releaseContext.getConstructors() :
241
+ this.constructors;
304
242
 
305
243
  return constructors;
306
244
  }
307
245
 
308
246
  getMetatheorems(includeRelease = true) {
309
- const metatheorems = [];
310
-
311
- push(metatheorems, this.metatheorems);
312
-
313
- if (includeRelease) {
314
- const releaseContextMetatheorems = this.releaseContext.getMetatheorems();
315
-
316
- push(metatheorems, releaseContextMetatheorems);
317
- }
247
+ const metatheorems = includeRelease ?
248
+ this.releaseContext.getMetatheorems() :
249
+ this.metatheorems;
318
250
 
319
251
  return metatheorems;
320
252
  }
@@ -329,28 +261,6 @@ export default class FileContext {
329
261
  return fileContext;
330
262
  }
331
263
 
332
- getTypePrefix(includeRelease = true) {
333
- let typePrefix = null;
334
-
335
- if (typePrefix === null) {
336
- const typePrefixesLength = this.typePrefixes.length;
337
-
338
- if (typePrefixesLength === 1) {
339
- const firstTypePrefix = first(this.typePrefixes);
340
-
341
- typePrefix = firstTypePrefix; ///
342
- }
343
- }
344
-
345
- if (typePrefix === null) {
346
- if (includeRelease) {
347
- typePrefix = this.releaseContext.getTypePrefix();
348
- }
349
- }
350
-
351
- return typePrefix;
352
- }
353
-
354
264
  addType(type) {
355
265
  this.types.push(type);
356
266
  }
@@ -387,6 +297,10 @@ export default class FileContext {
387
297
  this.combinators.push(combinator);
388
298
  }
389
299
 
300
+ addTypePrefix(typePrefix) {
301
+ this.typePrefixes.push(typePrefix);
302
+ }
303
+
390
304
  addConstructor(constructor) {
391
305
  this.constructors.push(constructor);
392
306
  }
@@ -602,8 +516,8 @@ export default class FileContext {
602
516
  return metavariable;
603
517
  }
604
518
 
605
- findTypeByTypeName(typeName) {
606
- let types = this.getTypes();
519
+ findTypeByTypeName(typeName, includeRelease = true, includeDependencies = true) {
520
+ let types = this.getTypes(includeRelease, includeDependencies);
607
521
 
608
522
  types = [
609
523
  ...types,
@@ -621,17 +535,42 @@ export default class FileContext {
621
535
  return type;
622
536
  }
623
537
 
624
- findTypePrefixByTypePrefixName(typePrefixName) {
625
- const typePrefixes = this.getTypePrefixes(),
626
- typePrefix = typePrefixes.find((typePrefix) => {
627
- const typePrefixNameMatches = typePrefix.matchTypePrefixName(typePrefixName);
538
+ findTypeByNominalTypeName(nominalTypeName) {
539
+ let types = this.getTypes();
628
540
 
629
- if (typePrefixNameMatches) {
630
- return true;
631
- }
632
- }) || null;
541
+ types = [
542
+ ...types,
543
+ objectType
544
+ ];
633
545
 
634
- return typePrefix;
546
+ const type = types.find((type) => {
547
+ const typeNameMatches = type.matchNominalTypeName(nominalTypeName);
548
+
549
+ if (typeNameMatches) {
550
+ return true;
551
+ }
552
+ }) || null;
553
+
554
+ return type;
555
+ }
556
+
557
+ findTypeByPrefixedTypeName(prefixedTypeName) {
558
+ let types = this.getTypes();
559
+
560
+ types = [
561
+ ...types,
562
+ objectType
563
+ ];
564
+
565
+ const type = types.find((type) => {
566
+ const typeNameMatches = type.matchPrefixedTypeName(prefixedTypeName);
567
+
568
+ if (typeNameMatches) {
569
+ return true;
570
+ }
571
+ }) || null;
572
+
573
+ return type;
635
574
  }
636
575
 
637
576
  findMetaTypeByMetaTypeName(metaTypeName) {
@@ -647,6 +586,19 @@ export default class FileContext {
647
586
  return metaType;
648
587
  }
649
588
 
589
+ findTypePrefixByTypePrefixName(typePrefixName) {
590
+ const typePrefixes = this.getTypePrefixes(),
591
+ typePrefix = typePrefixes.find((typePrefix) => {
592
+ const typePrefixNameMatches = typePrefix.matchTypePrefixName(typePrefixName);
593
+
594
+ if (typePrefixNameMatches) {
595
+ return true;
596
+ }
597
+ }) || null;
598
+
599
+ return typePrefix;
600
+ }
601
+
650
602
  findVariableByVariableIdentifier(variableIdentifier) {
651
603
  const variables = this.getVariables(),
652
604
  variable = variables.find((variable) => {
@@ -725,8 +677,22 @@ export default class FileContext {
725
677
  return metavariablePresent;
726
678
  }
727
679
 
728
- isTypePresentByTypeName(typeName) {
729
- const type = this.findTypeByTypeName(typeName),
680
+ isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) {
681
+ const type = this.findTypeByTypeName(typeName, includeRelease, includeDependencies),
682
+ typePresent = (type !== null);
683
+
684
+ return typePresent;
685
+ }
686
+
687
+ isTypePresentByNominalTypeName(nominalTypeName) {
688
+ const type = this.findTypeByNominalTypeName(nominalTypeName),
689
+ typePresent = (type !== null);
690
+
691
+ return typePresent;
692
+ }
693
+
694
+ isTypePresentByPrefixedTypeName(prefixedTypeName) {
695
+ const type = this.findTypeByPrefixedTypeName(prefixedTypeName),
730
696
  typePresent = (type !== null);
731
697
 
732
698
  return typePresent;
@@ -231,10 +231,10 @@ class LocalContext {
231
231
 
232
232
  findMetavariable(metavariable, generalContext, specificContext) { return this.context.findMetavariable(metavariable, generalContext, specificContext); }
233
233
 
234
- findTypeByTypeName(typeName) { return this.context.findTypeByTypeName(typeName); }
235
-
236
234
  findLabelByMetavariable(metavariable) { return this.context.findLabelByMetavariable(metavariable); }
237
235
 
236
+ findTypeByNominalTypeName(nominalTypeName) { return this.context.findTypeByNominalTypeName(nominalTypeName); }
237
+
238
238
  findMetaTypeByMetaTypeName(metaTypeName) { return this.context.findMetaTypeByMetaTypeName(metaTypeName); }
239
239
 
240
240
  findMetavariableByMetavariableName(metavariableName) { return this.context.findMetavariableByMetavariableName(metavariableName); }
@@ -251,7 +251,11 @@ class LocalContext {
251
251
 
252
252
  isMetavariablePresent(metavariable, generalContext, specificContext) { return this.context.isMetavariablePresent(metavariable, generalContext, specificContext); }
253
253
 
254
- isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
254
+ isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) { return this.context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies); }
255
+
256
+ isTypePresentByNominalTypeName(nominalTypeName) { return this.context.isTypePresentByNominalTypeName(nominalTypeName); }
257
+
258
+ isTypePresentByPrefixedTypeName(prefixedTypeName) { return this.context.isTypePresentByPrefixedTypeName(prefixedTypeName); }
255
259
 
256
260
  isTypePrefixPresentByTypePrefixName(typePrefixName) { return this.context.isTypePrefixPresentByTypePrefixName(typePrefixName); }
257
261
 
@@ -13,9 +13,9 @@ import NominalParser from "../nominal/parser";
13
13
  import { frameMetaType, referenceMetaType, statementMetaType } from "../dom/metaType";
14
14
  import { customGrammarFromNameAndEntries, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
15
15
 
16
- const { tail, push, first, clear, resolve } = arrayUtilities,
17
- { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
16
+ const { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
18
17
  { nominalParserFromCombinedCustomGrammar } = parsersUtilities,
18
+ { tail, push, first, clear, filter, resolve, compress } = arrayUtilities,
19
19
  { isFilePathFurtleFilePath, isFilePathNominalFilePath } = filePathUtilities;
20
20
 
21
21
  export default class ReleaseContext {
@@ -469,15 +469,21 @@ export default class ReleaseContext {
469
469
  verify() {
470
470
  let verifies = false;
471
471
 
472
- const verifiedFileContexts = [],
473
- fileContextsVerify = verifyFileContexts(this.fileContexts, verifiedFileContexts);
472
+ const typePrefixes = this.getTypePrefixes(),
473
+ releaseContext = this, ///
474
+ typePrefixesVerify = verifyTypePrefixes(typePrefixes, releaseContext);
474
475
 
475
- if (fileContextsVerify) {
476
- this.fileContexts = verifiedFileContexts; ///
476
+ if (typePrefixesVerify) {
477
+ const verifiedFileContexts = [],
478
+ fileContextsVerify = verifyFileContexts(this.fileContexts, verifiedFileContexts, releaseContext);
477
479
 
478
- this.verified = true;
480
+ if (fileContextsVerify) {
481
+ this.fileContexts = verifiedFileContexts; ///
479
482
 
480
- verifies = true;
483
+ this.verified = true;
484
+
485
+ verifies = true;
486
+ }
481
487
  }
482
488
 
483
489
  return verifies;
@@ -508,6 +514,46 @@ export default class ReleaseContext {
508
514
  }
509
515
  }
510
516
 
517
+ function verifyTypePrefixes(typePrefixes, releaseContext) {
518
+ let typePrefixesVerify = true;
519
+
520
+ const typePrefixesLength = typePrefixes.length,
521
+ compressedTypePrefixes = [ ///
522
+ ...typePrefixes,
523
+ ];
524
+
525
+ compress(compressedTypePrefixes, (typePrefixA, typePrefixB) => {
526
+ const typePrefixAName = typePrefixA.getName(),
527
+ typePrefixBName = typePrefixB.getName();
528
+
529
+ if (typePrefixAName === typePrefixBName) {
530
+ return true;
531
+ }
532
+ });
533
+
534
+ const compressTypePrefixesLength = compressedTypePrefixes.length;
535
+
536
+ if (typePrefixesLength > compressTypePrefixesLength) {
537
+ filter(compressedTypePrefixes, (typePrefix) => {
538
+ const typePrefixesIncludesTypePrefix = typePrefixes.includes(typePrefix);
539
+
540
+ if (!typePrefixesIncludesTypePrefix) {
541
+ return true;
542
+ }
543
+ });
544
+
545
+ const firstTypePrefix = first(typePrefixes),
546
+ typePrefix = firstTypePrefix, ///
547
+ typePrefixString = typePrefix.getString();
548
+
549
+ releaseContext.info(`The '${typePrefixString}' type prefix is duplicated at least once, possibly among others.`)
550
+
551
+ typePrefixesVerify = false;
552
+ }
553
+
554
+ return typePrefixesVerify;
555
+ }
556
+
511
557
  function verifyFileContexts(fileContexts, verifiedFileContexts) {
512
558
  const resolved = resolve(fileContexts, verifiedFileContexts, (fileContext) => {
513
559
  const fileContextVerifies = fileContext.verify();
@@ -64,12 +64,12 @@ export default domAssigned(class TypeAssertion {
64
64
  verifyType(context) {
65
65
  let typeVerifies;
66
66
 
67
- const typeName = this.type.getName(),
68
- typeString = this.type.getString();
67
+ const typeString = this.type.getString();
69
68
 
70
69
  context.trace(`Verifying the '${typeString}' type...`);
71
70
 
72
- const type = context.findTypeByTypeName(typeName);
71
+ const nominalTypeName = this.type.getNominalTypeName(),
72
+ type = context.findTypeByNominalTypeName(nominalTypeName);
73
73
 
74
74
  if (type !== null) {
75
75
  this.type = type;