occam-verify-cli 0.0.317 → 0.0.319
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/callbacks.js +27 -0
- package/bin/main.js +2 -5
- package/bin/messages.js +11 -0
- package/bin/utilities/logging.js +2 -10
- package/bin/utilities/release.js +47 -46
- package/lib/callbacks.js +68 -0
- package/lib/context/file.js +58 -81
- package/lib/context/metaproof.js +30 -118
- package/lib/context/proof.js +73 -137
- package/lib/context/release.js +81 -15
- package/lib/index.js +9 -1
- package/lib/mixins/callbacks.js +27 -0
- package/lib/mixins/file.js +23 -0
- package/lib/mixins/logging.js +39 -0
- package/lib/rule.js +3 -3
- package/lib/utilities/verification.js +45 -0
- package/lib/verify/IndicativeConditional.js +9 -5
- package/lib/verify/assertion/type.js +12 -10
- package/lib/verify/axiom.js +10 -14
- package/lib/verify/conclusion.js +5 -3
- package/lib/verify/conditinalInference.js +7 -5
- package/lib/verify/declaration/combinator.js +7 -3
- package/lib/verify/declaration/constructor.js +7 -3
- package/lib/verify/declaration/topLevel.js +11 -9
- package/lib/verify/declaration/type.js +8 -3
- package/lib/verify/declaration/variable.js +7 -3
- package/lib/verify/equality.js +8 -6
- package/lib/verify/file.js +7 -9
- package/lib/verify/label.js +6 -4
- package/lib/verify/labels.js +5 -4
- package/lib/verify/metaDerivation.js +21 -18
- package/lib/verify/metaproof.js +6 -4
- package/lib/verify/metastatement/qualified.js +7 -5
- package/lib/verify/metastatement/unqualified.js +7 -5
- package/lib/verify/premiseOrPremises.js +11 -12
- package/lib/verify/release.js +28 -18
- package/lib/verify/rule.js +11 -14
- package/lib/verify/statement/qualified.js +7 -3
- package/lib/verify/statement/unqualified.js +6 -4
- package/lib/verify/statement.js +8 -10
- package/lib/verify/statementAsCombinator.js +33 -36
- package/lib/verify/term.js +4 -2
- package/lib/verify/termAsConstructor.js +38 -39
- package/lib/verify/termAsVariable.js +4 -2
- package/lib/verify/type.js +18 -14
- package/lib/verify/unconditionalInference.js +5 -3
- package/lib/verify/variable.js +13 -10
- package/package.json +1 -1
- package/src/callbacks.js +27 -0
- package/src/context/file.js +62 -61
- package/src/context/metaproof.js +29 -44
- package/src/context/proof.js +51 -64
- package/src/context/release.js +33 -11
- package/src/index.js +3 -0
- package/src/mixins/callbacks.js +15 -0
- package/src/mixins/file.js +12 -0
- package/src/mixins/logging.js +24 -0
- package/src/rule.js +2 -2
- package/src/utilities/verification.js +41 -0
- package/src/verify/IndicativeConditional.js +18 -9
- package/src/verify/assertion/type.js +15 -8
- package/src/verify/axiom.js +15 -17
- package/src/verify/conclusion.js +8 -2
- package/src/verify/conditinalInference.js +10 -4
- package/src/verify/declaration/combinator.js +12 -3
- package/src/verify/declaration/constructor.js +12 -3
- package/src/verify/declaration/topLevel.js +15 -9
- package/src/verify/declaration/type.js +14 -4
- package/src/verify/declaration/variable.js +12 -3
- package/src/verify/equality.js +11 -4
- package/src/verify/file.js +6 -8
- package/src/verify/label.js +9 -3
- package/src/verify/labels.js +5 -3
- package/src/verify/metaDerivation.js +26 -19
- package/src/verify/metaproof.js +9 -3
- package/src/verify/metastatement/qualified.js +10 -4
- package/src/verify/metastatement/unqualified.js +10 -4
- package/src/verify/premiseOrPremises.js +18 -14
- package/src/verify/release.js +45 -27
- package/src/verify/rule.js +15 -16
- package/src/verify/statement/qualified.js +12 -3
- package/src/verify/statement/unqualified.js +9 -3
- package/src/verify/statement.js +10 -9
- package/src/verify/statementAsCombinator.js +45 -46
- package/src/verify/term.js +7 -1
- package/src/verify/termAsConstructor.js +48 -45
- package/src/verify/termAsVariable.js +7 -1
- package/src/verify/type.js +25 -21
- package/src/verify/unconditionalInference.js +8 -2
- package/src/verify/variable.js +18 -11
- package/lib/mixins/log.js +0 -41
- package/lib/verify/supposition.js +0 -29
- package/src/mixins/log.js +0 -28
- package/src/verify/supposition.js +0 -22
package/lib/verify/type.js
CHANGED
|
@@ -9,37 +9,41 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _type = /*#__PURE__*/ _interopRequireDefault(require("../type"));
|
|
12
|
+
var _string = require("../utilities/string");
|
|
12
13
|
var _query = require("../utilities/query");
|
|
13
14
|
function _interopRequireDefault(obj) {
|
|
14
15
|
return obj && obj.__esModule ? obj : {
|
|
15
16
|
default: obj
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
function verifyType(typeNode, superTypeNode,
|
|
19
|
+
function verifyType(typeNode, superTypeNode, fileContext) {
|
|
19
20
|
var typeVerified = false;
|
|
20
|
-
|
|
21
|
+
fileContext.begin(typeNode);
|
|
22
|
+
var type = null;
|
|
23
|
+
var typeName = (0, _query.typeNameFromTypeNode)(typeNode), typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
21
24
|
if (typePresent) {
|
|
22
|
-
|
|
25
|
+
fileContext.error("The type '".concat(typeName, "' is already present."));
|
|
23
26
|
} else {
|
|
24
27
|
var superTypeName = (0, _query.typeNameFromTypeNode)(superTypeNode);
|
|
25
28
|
if (superTypeName === null) {
|
|
26
|
-
|
|
27
|
-
context.addType(type);
|
|
28
|
-
typeVerified = true;
|
|
29
|
-
context.info("Verified the '".concat(typeString, "' type."), typeNode);
|
|
29
|
+
type = _type.default.fromTypeName(typeName);
|
|
30
30
|
} else {
|
|
31
|
-
var superType =
|
|
31
|
+
var superType = fileContext.findTypeByTypeName(superTypeName);
|
|
32
32
|
if (superType === null) {
|
|
33
|
-
|
|
33
|
+
fileContext.error("The super-type '".concat(superTypeName, "' is missing."));
|
|
34
34
|
} else {
|
|
35
|
-
|
|
36
|
-
context.addType(type1);
|
|
37
|
-
typeVerified = true;
|
|
38
|
-
context.info("Verified the '".concat(typeString1, "' type."), typeNode);
|
|
35
|
+
type = _type.default.fromTypeNameAndSuperType(typeName, superType);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
38
|
}
|
|
39
|
+
if (type !== null) {
|
|
40
|
+
var typeString = (0, _string.nodeAsString)(typeNode);
|
|
41
|
+
fileContext.info("Verified the '".concat(typeString, "' type."));
|
|
42
|
+
fileContext.addType(type);
|
|
43
|
+
typeVerified = true;
|
|
44
|
+
}
|
|
45
|
+
typeVerified ? fileContext.complete(typeNode) : fileContext.halt(typeNode);
|
|
42
46
|
return typeVerified;
|
|
43
47
|
}
|
|
44
48
|
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdHlwZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IFR5cGUgZnJvbSBcIi4uL3R5cGVcIjtcblxuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IHR5cGVOYW1lRnJvbVR5cGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlUeXBlKHR5cGVOb2RlLCBzdXBlclR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdHlwZVZlcmlmaWVkID0gZmFsc2U7XG5cbiAgZmlsZUNvbnRleHQuYmVnaW4odHlwZU5vZGUpO1xuXG4gIGxldCB0eXBlID0gbnVsbDtcblxuICBjb25zdCB0eXBlTmFtZSA9IHR5cGVOYW1lRnJvbVR5cGVOb2RlKHR5cGVOb2RlKSxcbiAgICAgICAgdHlwZVByZXNlbnQgPSBmaWxlQ29udGV4dC5pc1R5cGVQcmVzZW50QnlUeXBlTmFtZSh0eXBlTmFtZSk7XG5cbiAgaWYgKHR5cGVQcmVzZW50KSB7XG4gICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB0eXBlICcke3R5cGVOYW1lfScgaXMgYWxyZWFkeSBwcmVzZW50LmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHN1cGVyVHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZShzdXBlclR5cGVOb2RlKTtcblxuICAgIGlmIChzdXBlclR5cGVOYW1lID09PSBudWxsKSB7XG4gICAgICB0eXBlID0gVHlwZS5mcm9tVHlwZU5hbWUodHlwZU5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdXBlclR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUoc3VwZXJUeXBlTmFtZSk7XG5cbiAgICAgIGlmIChzdXBlclR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSBzdXBlci10eXBlICcke3N1cGVyVHlwZU5hbWV9JyBpcyBtaXNzaW5nLmApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHlwZSA9IFR5cGUuZnJvbVR5cGVOYW1lQW5kU3VwZXJUeXBlKHR5cGVOYW1lLCBzdXBlclR5cGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgY29uc3QgdHlwZVN0cmluZyA9IG5vZGVBc1N0cmluZyh0eXBlTm9kZSk7XG5cbiAgICBmaWxlQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dHlwZVN0cmluZ30nIHR5cGUuYCk7XG5cbiAgICBmaWxlQ29udGV4dC5hZGRUeXBlKHR5cGUpO1xuXG4gICAgdHlwZVZlcmlmaWVkID0gdHJ1ZTtcbiAgfVxuXG4gIHR5cGVWZXJpZmllZCA/XG4gICAgZmlsZUNvbnRleHQuY29tcGxldGUodHlwZU5vZGUpOlxuICAgICAgZmlsZUNvbnRleHQuaGFsdCh0eXBlTm9kZSk7XG5cbiAgcmV0dXJuIHR5cGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlUeXBlIiwidHlwZU5vZGUiLCJzdXBlclR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ0eXBlVmVyaWZpZWQiLCJiZWdpbiIsInR5cGUiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZVByZXNlbnQiLCJpc1R5cGVQcmVzZW50QnlUeXBlTmFtZSIsImVycm9yIiwic3VwZXJUeXBlTmFtZSIsIlR5cGUiLCJmcm9tVHlwZU5hbWUiLCJzdXBlclR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5hbWUiLCJmcm9tVHlwZU5hbWVBbmRTdXBlclR5cGUiLCJ0eXBlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiaW5mbyIsImFkZFR5cGUiLCJjb21wbGV0ZSIsImhhbHQiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU9BOzs7ZUFBd0JBOzs7eURBTFA7c0JBRVk7cUJBQ1E7Ozs7OztBQUV0QixTQUFTQSxXQUFXQyxRQUFRLEVBQUVDLGFBQWEsRUFBRUMsV0FBVyxFQUFFO0lBQ3ZFLElBQUlDLGVBQWUsS0FBSztJQUV4QkQsWUFBWUUsS0FBSyxDQUFDSjtJQUVsQixJQUFJSyxPQUFPLElBQUk7SUFFZixJQUFNQyxXQUFXQyxJQUFBQSwyQkFBb0IsRUFBQ1AsV0FDaENRLGNBQWNOLFlBQVlPLHVCQUF1QixDQUFDSDtJQUV4RCxJQUFJRSxhQUFhO1FBQ2ZOLFlBQVlRLEtBQUssQ0FBQyxBQUFDLGFBQXFCLE9BQVRKLFVBQVM7SUFDMUMsT0FBTztRQUNMLElBQU1LLGdCQUFnQkosSUFBQUEsMkJBQW9CLEVBQUNOO1FBRTNDLElBQUlVLGtCQUFrQixJQUFJLEVBQUU7WUFDMUJOLE9BQU9PLGFBQUksQ0FBQ0MsWUFBWSxDQUFDUDtRQUMzQixPQUFPO1lBQ0wsSUFBTVEsWUFBWVosWUFBWWEsa0JBQWtCLENBQUNKO1lBRWpELElBQUlHLGNBQWMsSUFBSSxFQUFFO2dCQUN0QlosWUFBWVEsS0FBSyxDQUFDLEFBQUMsbUJBQWdDLE9BQWRDLGVBQWM7WUFDckQsT0FBTztnQkFDTE4sT0FBT08sYUFBSSxDQUFDSSx3QkFBd0IsQ0FBQ1YsVUFBVVE7WUFDakQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSVQsU0FBUyxJQUFJLEVBQUU7UUFDakIsSUFBTVksYUFBYUMsSUFBQUEsb0JBQVksRUFBQ2xCO1FBRWhDRSxZQUFZaUIsSUFBSSxDQUFDLEFBQUMsaUJBQTJCLE9BQVhGLFlBQVc7UUFFN0NmLFlBQVlrQixPQUFPLENBQUNmO1FBRXBCRixlQUFlLElBQUk7SUFDckIsQ0FBQztJQUVEQSxlQUNFRCxZQUFZbUIsUUFBUSxDQUFDckIsWUFDbkJFLFlBQVlvQixJQUFJLENBQUN0QixTQUFTO0lBRTlCLE9BQU9HO0FBQ1QifQ==
|
|
@@ -17,15 +17,17 @@ function _interopRequireDefault(obj) {
|
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
19
|
var metastatementNodeQuery = (0, _query.nodeQuery)("/unconditionalInference/unqualifiedMetastatement!/metastatement!"), unqualifiedMetastatementNodeQuery = (0, _query.nodeQuery)("/unconditionalInference/unqualifiedMetastatement!");
|
|
20
|
-
function verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions,
|
|
20
|
+
function verifyUnconditionalInference(unconditionalInferenceNode, premises, conclusions, metaproofContext) {
|
|
21
21
|
var unconditionalInferenceVerified = false;
|
|
22
|
-
|
|
22
|
+
metaproofContext.begin(unconditionalInferenceNode);
|
|
23
|
+
var metastatementNode = metastatementNodeQuery(unconditionalInferenceNode), unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(unconditionalInferenceNode), unqualifiedMetastatementVerified = (0, _unqualified.default)(unqualifiedMetastatementNode, metaproofContext);
|
|
23
24
|
if (unqualifiedMetastatementVerified) {
|
|
24
25
|
var conclusion = _conclusion.default.fromMetastatementNode(metastatementNode);
|
|
25
26
|
conclusions.push(conclusion);
|
|
26
27
|
unconditionalInferenceVerified = true;
|
|
27
28
|
}
|
|
29
|
+
unconditionalInferenceVerified ? metaproofContext.complete(unconditionalInferenceNode) : metaproofContext.halt(unconditionalInferenceNode);
|
|
28
30
|
return unconditionalInferenceVerified;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdW5jb25kaXRpb25hbEluZmVyZW5jZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IENvbmNsdXNpb24gZnJvbSBcIi4uL2NvbmNsdXNpb25cIjtcbmltcG9ydCB2ZXJpZnlVbnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQgZnJvbSBcIi4uL3ZlcmlmeS9tZXRhc3RhdGVtZW50L3VucXVhbGlmaWVkXCI7XG5cbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcblxuY29uc3QgbWV0YXN0YXRlbWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi91bmNvbmRpdGlvbmFsSW5mZXJlbmNlL3VucXVhbGlmaWVkTWV0YXN0YXRlbWVudCEvbWV0YXN0YXRlbWVudCFcIiksXG4gICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvdW5jb25kaXRpb25hbEluZmVyZW5jZS91bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlVbmNvbmRpdGlvbmFsSW5mZXJlbmNlKHVuY29uZGl0aW9uYWxJbmZlcmVuY2VOb2RlLCBwcmVtaXNlcywgY29uY2x1c2lvbnMsIG1ldGFwcm9vZkNvbnRleHQpIHtcbiAgbGV0IHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IGZhbHNlO1xuXG4gIG1ldGFwcm9vZkNvbnRleHQuYmVnaW4odW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUpO1xuXG4gIGNvbnN0IG1ldGFzdGF0ZW1lbnROb2RlID0gbWV0YXN0YXRlbWVudE5vZGVRdWVyeSh1bmNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZSksXG4gICAgICAgIHVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGUgPSB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlUXVlcnkodW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUpLFxuICAgICAgICB1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnRWZXJpZmllZCA9IHZlcmlmeVVucXVhbGlmaWVkTWV0YXN0YXRlbWVudCh1bnF1YWxpZmllZE1ldGFzdGF0ZW1lbnROb2RlLCBtZXRhcHJvb2ZDb250ZXh0KTtcblxuICBpZiAodW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50VmVyaWZpZWQpIHtcbiAgICBjb25zdCBjb25jbHVzaW9uID0gQ29uY2x1c2lvbi5mcm9tTWV0YXN0YXRlbWVudE5vZGUobWV0YXN0YXRlbWVudE5vZGUpO1xuXG4gICAgY29uY2x1c2lvbnMucHVzaChjb25jbHVzaW9uKTtcblxuICAgIHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZCA9IHRydWU7XG4gIH1cblxuICB1bmNvbmRpdGlvbmFsSW5mZXJlbmNlVmVyaWZpZWQgP1xuICAgIG1ldGFwcm9vZkNvbnRleHQuY29tcGxldGUodW5jb25kaXRpb25hbEluZmVyZW5jZU5vZGUpIDpcbiAgICAgIG1ldGFwcm9vZkNvbnRleHQuaGFsdCh1bmNvbmRpdGlvbmFsSW5mZXJlbmNlTm9kZSk7XG5cbiAgcmV0dXJuIHVuY29uZGl0aW9uYWxJbmZlcmVuY2VWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlVbmNvbmRpdGlvbmFsSW5mZXJlbmNlIiwibWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsIm5vZGVRdWVyeSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudE5vZGVRdWVyeSIsInVuY29uZGl0aW9uYWxJbmZlcmVuY2VOb2RlIiwicHJlbWlzZXMiLCJjb25jbHVzaW9ucyIsIm1ldGFwcm9vZkNvbnRleHQiLCJ1bmNvbmRpdGlvbmFsSW5mZXJlbmNlVmVyaWZpZWQiLCJiZWdpbiIsIm1ldGFzdGF0ZW1lbnROb2RlIiwidW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50Tm9kZSIsInVucXVhbGlmaWVkTWV0YXN0YXRlbWVudFZlcmlmaWVkIiwidmVyaWZ5VW5xdWFsaWZpZWRNZXRhc3RhdGVtZW50IiwiY29uY2x1c2lvbiIsIkNvbmNsdXNpb24iLCJmcm9tTWV0YXN0YXRlbWVudE5vZGUiLCJwdXNoIiwiY29tcGxldGUiLCJoYWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFVQTs7O2VBQXdCQTs7OytEQVJEO2dFQUNvQjtxQkFFakI7Ozs7OztBQUUxQixJQUFNQyx5QkFBeUJDLElBQUFBLGdCQUFTLEVBQUMscUVBQ25DQyxvQ0FBb0NELElBQUFBLGdCQUFTLEVBQUM7QUFFckMsU0FBU0YsNkJBQTZCSSwwQkFBMEIsRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLGdCQUFnQixFQUFFO0lBQ3hILElBQUlDLGlDQUFpQyxLQUFLO0lBRTFDRCxpQkFBaUJFLEtBQUssQ0FBQ0w7SUFFdkIsSUFBTU0sb0JBQW9CVCx1QkFBdUJHLDZCQUMzQ08sK0JBQStCUixrQ0FBa0NDLDZCQUNqRVEsbUNBQW1DQyxJQUFBQSxvQkFBOEIsRUFBQ0YsOEJBQThCSjtJQUV0RyxJQUFJSyxrQ0FBa0M7UUFDcEMsSUFBTUUsYUFBYUMsbUJBQVUsQ0FBQ0MscUJBQXFCLENBQUNOO1FBRXBESixZQUFZVyxJQUFJLENBQUNIO1FBRWpCTixpQ0FBaUMsSUFBSTtJQUN2QyxDQUFDO0lBRURBLGlDQUNFRCxpQkFBaUJXLFFBQVEsQ0FBQ2QsOEJBQ3hCRyxpQkFBaUJZLElBQUksQ0FBQ2YsMkJBQTJCO0lBRXJELE9BQU9JO0FBQ1QifQ==
|
package/lib/verify/variable.js
CHANGED
|
@@ -9,40 +9,43 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _variable = /*#__PURE__*/ _interopRequireDefault(require("../variable"));
|
|
12
|
+
var _string = require("../utilities/string");
|
|
12
13
|
var _query = require("../utilities/query");
|
|
13
14
|
function _interopRequireDefault(obj) {
|
|
14
15
|
return obj && obj.__esModule ? obj : {
|
|
15
16
|
default: obj
|
|
16
17
|
};
|
|
17
18
|
}
|
|
18
|
-
function verifyVariable(variableNode, typeNode,
|
|
19
|
+
function verifyVariable(variableNode, typeNode, fileContext) {
|
|
19
20
|
var variableVerified = false;
|
|
20
|
-
|
|
21
|
+
fileContext.begin(variableNode);
|
|
22
|
+
var variable = null;
|
|
23
|
+
var variableName = (0, _query.variableNameFromVariableNode)(variableNode), variablePresent = fileContext.isVariablePresentByVariableName(variableName);
|
|
21
24
|
if (variablePresent) {
|
|
22
|
-
|
|
25
|
+
fileContext.error("The variable '".concat(variableName, "' is already present."));
|
|
23
26
|
} else {
|
|
24
|
-
var variable = null;
|
|
25
27
|
var typeName = (0, _query.typeNameFromTypeNode)(typeNode);
|
|
26
28
|
if (typeName === null) {
|
|
27
29
|
var type = null, name = variableName; ///
|
|
28
30
|
variable = _variable.default.fromTypeAndName(type, name);
|
|
29
31
|
} else {
|
|
30
|
-
var type1 =
|
|
32
|
+
var type1 = fileContext.findTypeByTypeName(typeName);
|
|
31
33
|
if (type1 === null) {
|
|
32
|
-
|
|
34
|
+
fileContext.error("The '".concat(variableName, "' variable's '").concat(typeName, "' type is missing."));
|
|
33
35
|
} else {
|
|
34
36
|
var name1 = variableName; ///
|
|
35
37
|
variable = _variable.default.fromTypeAndName(type1, name1);
|
|
36
38
|
}
|
|
37
39
|
}
|
|
38
40
|
if (variable !== null) {
|
|
39
|
-
var variableString =
|
|
40
|
-
|
|
41
|
+
var variableString = (0, _string.nodeAsString)(variableName);
|
|
42
|
+
fileContext.info("Verified the '".concat(variableString, "' variable."));
|
|
43
|
+
fileContext.addVariable(variable);
|
|
41
44
|
variableVerified = true;
|
|
42
|
-
context.info("Verified the '".concat(variableString, "' variable."), variableNode);
|
|
43
45
|
}
|
|
44
46
|
}
|
|
47
|
+
variableVerified ? fileContext.complete(variableNode) : fileContext.halt(variableNode);
|
|
45
48
|
return variableVerified;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvdmFyaWFibGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBWYXJpYWJsZSBmcm9tIFwiLi4vdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbm9kZUFzU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IHR5cGVOYW1lRnJvbVR5cGVOb2RlLCB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9xdWVyeVwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlWYXJpYWJsZSh2YXJpYWJsZU5vZGUsIHR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgdmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGZpbGVDb250ZXh0LmJlZ2luKHZhcmlhYmxlTm9kZSk7XG5cbiAgbGV0IHZhcmlhYmxlID0gbnVsbDtcblxuICBjb25zdCB2YXJpYWJsZU5hbWUgPSB2YXJpYWJsZU5hbWVGcm9tVmFyaWFibGVOb2RlKHZhcmlhYmxlTm9kZSksXG4gICAgICAgIHZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzVmFyaWFibGVQcmVzZW50QnlWYXJpYWJsZU5hbWUodmFyaWFibGVOYW1lKTtcblxuICBpZiAodmFyaWFibGVQcmVzZW50KSB7XG4gICAgZmlsZUNvbnRleHQuZXJyb3IoYFRoZSB2YXJpYWJsZSAnJHt2YXJpYWJsZU5hbWV9JyBpcyBhbHJlYWR5IHByZXNlbnQuYCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZU5hbWUgPSB0eXBlTmFtZUZyb21UeXBlTm9kZSh0eXBlTm9kZSk7XG4gICAgXG4gICAgaWYgKHR5cGVOYW1lID09PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gbnVsbCxcbiAgICAgICAgICAgIG5hbWUgPSB2YXJpYWJsZU5hbWU7ICAvLy9cblxuICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5hbWUodHlwZU5hbWUpO1xuXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xuICAgICAgICBmaWxlQ29udGV4dC5lcnJvcihgVGhlICcke3ZhcmlhYmxlTmFtZX0nIHZhcmlhYmxlJ3MgJyR7dHlwZU5hbWV9JyB0eXBlIGlzIG1pc3NpbmcuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBuYW1lID0gdmFyaWFibGVOYW1lOyAgLy8vXG5cbiAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mcm9tVHlwZUFuZE5hbWUodHlwZSwgbmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZVN0cmluZyA9IG5vZGVBc1N0cmluZyh2YXJpYWJsZU5hbWUpO1xuXG4gICAgICBmaWxlQ29udGV4dC5pbmZvKGBWZXJpZmllZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZS5gKTtcblxuICAgICAgZmlsZUNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUpO1xuXG4gICAgICB2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB2YXJpYWJsZVZlcmlmaWVkID9cbiAgICBmaWxlQ29udGV4dC5jb21wbGV0ZSh2YXJpYWJsZU5vZGUpIDpcbiAgICAgIGZpbGVDb250ZXh0LmhhbHQodmFyaWFibGVOb2RlKTtcblxuICByZXR1cm4gdmFyaWFibGVWZXJpZmllZDtcbn1cbiJdLCJuYW1lcyI6WyJ2ZXJpZnlWYXJpYWJsZSIsInZhcmlhYmxlTm9kZSIsInR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJ2YXJpYWJsZVZlcmlmaWVkIiwiYmVnaW4iLCJ2YXJpYWJsZSIsInZhcmlhYmxlTmFtZSIsInZhcmlhYmxlTmFtZUZyb21WYXJpYWJsZU5vZGUiLCJ2YXJpYWJsZVByZXNlbnQiLCJpc1ZhcmlhYmxlUHJlc2VudEJ5VmFyaWFibGVOYW1lIiwiZXJyb3IiLCJ0eXBlTmFtZSIsInR5cGVOYW1lRnJvbVR5cGVOb2RlIiwidHlwZSIsIm5hbWUiLCJWYXJpYWJsZSIsImZyb21UeXBlQW5kTmFtZSIsImZpbmRUeXBlQnlUeXBlTmFtZSIsInZhcmlhYmxlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwiaW5mbyIsImFkZFZhcmlhYmxlIiwiY29tcGxldGUiLCJoYWx0Il0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFPQTs7O2VBQXdCQTs7OzZEQUxIO3NCQUVRO3FCQUNzQzs7Ozs7O0FBRXBELFNBQVNBLGVBQWVDLFlBQVksRUFBRUMsUUFBUSxFQUFFQyxXQUFXLEVBQUU7SUFDMUUsSUFBSUMsbUJBQW1CLEtBQUs7SUFFNUJELFlBQVlFLEtBQUssQ0FBQ0o7SUFFbEIsSUFBSUssV0FBVyxJQUFJO0lBRW5CLElBQU1DLGVBQWVDLElBQUFBLG1DQUE0QixFQUFDUCxlQUM1Q1Esa0JBQWtCTixZQUFZTywrQkFBK0IsQ0FBQ0g7SUFFcEUsSUFBSUUsaUJBQWlCO1FBQ25CTixZQUFZUSxLQUFLLENBQUMsQUFBQyxpQkFBNkIsT0FBYkosY0FBYTtJQUNsRCxPQUFPO1FBQ0wsSUFBTUssV0FBV0MsSUFBQUEsMkJBQW9CLEVBQUNYO1FBRXRDLElBQUlVLGFBQWEsSUFBSSxFQUFFO1lBQ3JCLElBQU1FLE9BQU8sSUFBSSxFQUNYQyxPQUFPUixjQUFlLEdBQUc7WUFFL0JELFdBQVdVLGlCQUFRLENBQUNDLGVBQWUsQ0FBQ0gsTUFBTUM7UUFDNUMsT0FBTztZQUNMLElBQU1ELFFBQU9YLFlBQVllLGtCQUFrQixDQUFDTjtZQUU1QyxJQUFJRSxVQUFTLElBQUksRUFBRTtnQkFDakJYLFlBQVlRLEtBQUssQ0FBQyxBQUFDLFFBQW9DQyxPQUE3QkwsY0FBYSxrQkFBeUIsT0FBVEssVUFBUztZQUNsRSxPQUFPO2dCQUNMLElBQU1HLFFBQU9SLGNBQWUsR0FBRztnQkFFL0JELFdBQVdVLGlCQUFRLENBQUNDLGVBQWUsQ0FBQ0gsT0FBTUM7WUFDNUMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJVCxhQUFhLElBQUksRUFBRTtZQUNyQixJQUFNYSxpQkFBaUJDLElBQUFBLG9CQUFZLEVBQUNiO1lBRXBDSixZQUFZa0IsSUFBSSxDQUFDLEFBQUMsaUJBQStCLE9BQWZGLGdCQUFlO1lBRWpEaEIsWUFBWW1CLFdBQVcsQ0FBQ2hCO1lBRXhCRixtQkFBbUIsSUFBSTtRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVEQSxtQkFDRUQsWUFBWW9CLFFBQVEsQ0FBQ3RCLGdCQUNuQkUsWUFBWXFCLElBQUksQ0FBQ3ZCLGFBQWE7SUFFbEMsT0FBT0c7QUFDVCJ9
|
package/package.json
CHANGED
package/src/callbacks.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export default class Callbacks {
|
|
4
|
+
constructor(halt, begin, complete) {
|
|
5
|
+
this.halt = halt;
|
|
6
|
+
this.begin = begin;
|
|
7
|
+
this.complete = complete;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
getHalt() {
|
|
11
|
+
return this.halt;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
getBegin() {
|
|
15
|
+
return this.begin;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getComplete() {
|
|
19
|
+
return this.complete;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromHaltBeginAndComplete(halt, begin, complete) {
|
|
23
|
+
const callbacks = new Callbacks(halt, begin, complete);
|
|
24
|
+
|
|
25
|
+
return callbacks;
|
|
26
|
+
}
|
|
27
|
+
}
|
package/src/context/file.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { levels } from "necessary";
|
|
4
3
|
import { rewriteNodes } from "occam-grammar-utilities";
|
|
5
4
|
|
|
5
|
+
import loggingMixins from "../mixins/logging";
|
|
6
|
+
|
|
6
7
|
import { push } from "../utilities/array";
|
|
7
8
|
import { leastLineIndexFromNodeAndTokens, greatestLineIndexFromNodeAndTokens } from "../utilities/tokens";
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export default class FileContext {
|
|
12
|
-
constructor(filePath, tokens, node, rules, types, axioms, variables, combinators, constructors, releaseContext) {
|
|
10
|
+
class FileContext {
|
|
11
|
+
constructor(filePath, context, tokens, node, rules, types, axioms, variables, combinators, constructors) {
|
|
13
12
|
this.filePath = filePath;
|
|
13
|
+
this.context = context;
|
|
14
14
|
this.tokens = tokens;
|
|
15
15
|
this.node = node;
|
|
16
16
|
this.rules = rules;
|
|
@@ -19,13 +19,16 @@ export default class FileContext {
|
|
|
19
19
|
this.variables = variables;
|
|
20
20
|
this.combinators = combinators;
|
|
21
21
|
this.constructors = constructors;
|
|
22
|
-
this.releaseContext = releaseContext;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
getFilePath() {
|
|
26
25
|
return this.filePath;
|
|
27
26
|
}
|
|
28
27
|
|
|
28
|
+
getContext() {
|
|
29
|
+
return this.context;
|
|
30
|
+
}
|
|
31
|
+
|
|
29
32
|
getTokens() {
|
|
30
33
|
return this.tokens;
|
|
31
34
|
}
|
|
@@ -34,13 +37,17 @@ export default class FileContext {
|
|
|
34
37
|
return this.node;
|
|
35
38
|
}
|
|
36
39
|
|
|
40
|
+
getVariables() {
|
|
41
|
+
return this.variables;
|
|
42
|
+
}
|
|
43
|
+
|
|
37
44
|
getRules(bubble = true) {
|
|
38
45
|
const rules = [
|
|
39
46
|
...this.rules
|
|
40
47
|
];
|
|
41
48
|
|
|
42
49
|
if (bubble) {
|
|
43
|
-
const releaseContextRules = this.
|
|
50
|
+
const releaseContextRules = this.context.getRules();
|
|
44
51
|
|
|
45
52
|
push(rules, releaseContextRules);
|
|
46
53
|
}
|
|
@@ -54,7 +61,7 @@ export default class FileContext {
|
|
|
54
61
|
];
|
|
55
62
|
|
|
56
63
|
if (bubble) {
|
|
57
|
-
const releaseContextTypes = this.
|
|
64
|
+
const releaseContextTypes = this.context.getTypes();
|
|
58
65
|
|
|
59
66
|
push(types, releaseContextTypes);
|
|
60
67
|
}
|
|
@@ -68,7 +75,7 @@ export default class FileContext {
|
|
|
68
75
|
];
|
|
69
76
|
|
|
70
77
|
if (bubble) {
|
|
71
|
-
const releaseContextAxioms = this.
|
|
78
|
+
const releaseContextAxioms = this.context.getAxioms();
|
|
72
79
|
|
|
73
80
|
push(axioms, releaseContextAxioms);
|
|
74
81
|
}
|
|
@@ -76,30 +83,13 @@ export default class FileContext {
|
|
|
76
83
|
return axioms;
|
|
77
84
|
}
|
|
78
85
|
|
|
79
|
-
getLabels() {
|
|
80
|
-
const axioms = this.getAxioms(),
|
|
81
|
-
labels = axioms.reduce((labels, axiom) => {
|
|
82
|
-
const axiomLabels = axiom.getLabels();
|
|
83
|
-
|
|
84
|
-
push(labels, axiomLabels);
|
|
85
|
-
|
|
86
|
-
return labels;
|
|
87
|
-
}, []);
|
|
88
|
-
|
|
89
|
-
return labels;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
getVariables() {
|
|
93
|
-
return this.variables;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
86
|
getCombinators(bubble = true) {
|
|
97
87
|
const combinators = [
|
|
98
88
|
...this.combinators
|
|
99
89
|
];
|
|
100
90
|
|
|
101
91
|
if (bubble) {
|
|
102
|
-
const releaseContextCombinators = this.
|
|
92
|
+
const releaseContextCombinators = this.context.getCombinators();
|
|
103
93
|
|
|
104
94
|
push(combinators, releaseContextCombinators);
|
|
105
95
|
}
|
|
@@ -113,7 +103,7 @@ export default class FileContext {
|
|
|
113
103
|
];
|
|
114
104
|
|
|
115
105
|
if (bubble) {
|
|
116
|
-
const releaseContextConstructors = this.
|
|
106
|
+
const releaseContextConstructors = this.context.getConstructors();
|
|
117
107
|
|
|
118
108
|
push(constructors, releaseContextConstructors);
|
|
119
109
|
}
|
|
@@ -121,12 +111,14 @@ export default class FileContext {
|
|
|
121
111
|
return constructors;
|
|
122
112
|
}
|
|
123
113
|
|
|
124
|
-
|
|
125
|
-
|
|
114
|
+
getAssertions() {
|
|
115
|
+
const assertions = []; ///
|
|
116
|
+
|
|
117
|
+
return assertions;
|
|
126
118
|
}
|
|
127
119
|
|
|
128
120
|
getMetaAssertions() {
|
|
129
|
-
const metaAssertions = [];
|
|
121
|
+
const metaAssertions = []; ///
|
|
130
122
|
|
|
131
123
|
return metaAssertions;
|
|
132
124
|
}
|
|
@@ -164,7 +156,7 @@ export default class FileContext {
|
|
|
164
156
|
axioms = this.getAxioms(),
|
|
165
157
|
axiom = axioms.find((axiom) => {
|
|
166
158
|
const axiomLabels = axiom.getLabels(),
|
|
167
|
-
|
|
159
|
+
axiomLabelsIncludesLabel = axiomLabels.includes(label);
|
|
168
160
|
|
|
169
161
|
if (axiomLabelsIncludesLabel) {
|
|
170
162
|
return true;
|
|
@@ -176,7 +168,8 @@ export default class FileContext {
|
|
|
176
168
|
|
|
177
169
|
findVariableByVariableName(variableName) {
|
|
178
170
|
const name = variableName, ///
|
|
179
|
-
|
|
171
|
+
variables = this.getVariables(),
|
|
172
|
+
variable = variables.find((variable) => {
|
|
180
173
|
const matches = variable.matchName(name);
|
|
181
174
|
|
|
182
175
|
if (matches) {
|
|
@@ -187,40 +180,41 @@ export default class FileContext {
|
|
|
187
180
|
return variable;
|
|
188
181
|
}
|
|
189
182
|
|
|
190
|
-
isDerived() {
|
|
191
|
-
const derived = false;
|
|
192
|
-
|
|
193
|
-
return derived;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
183
|
isLabelPresent(label) {
|
|
197
184
|
const labels = this.getLabels(),
|
|
198
|
-
|
|
199
|
-
|
|
185
|
+
labelsIncludesLabel = labels.includes(label),
|
|
186
|
+
labelPresent = labelsIncludesLabel; ///
|
|
200
187
|
|
|
201
188
|
return labelPresent;
|
|
202
189
|
}
|
|
203
190
|
|
|
204
|
-
matchMetaAssertion(metaAssertion) {
|
|
205
|
-
const metaAssertionMatches = false;
|
|
206
|
-
|
|
207
|
-
return metaAssertionMatches;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
191
|
isTypePresentByTypeName(typeName) {
|
|
211
192
|
const type = this.findTypeByTypeName(typeName),
|
|
212
|
-
|
|
193
|
+
typePresent = (type !== null);
|
|
213
194
|
|
|
214
195
|
return typePresent;
|
|
215
196
|
}
|
|
216
197
|
|
|
217
198
|
isVariablePresentByVariableName(variableName) {
|
|
218
199
|
const variable = this.findVariableByVariableName(variableName),
|
|
219
|
-
|
|
200
|
+
variablePresent = (variable !== null);
|
|
220
201
|
|
|
221
202
|
return variablePresent;
|
|
222
203
|
}
|
|
223
204
|
|
|
205
|
+
getLabels() {
|
|
206
|
+
const axioms = this.getAxioms(),
|
|
207
|
+
labels = axioms.reduce((labels, axiom) => {
|
|
208
|
+
const axiomLabels = axiom.getLabels();
|
|
209
|
+
|
|
210
|
+
push(labels, axiomLabels);
|
|
211
|
+
|
|
212
|
+
return labels;
|
|
213
|
+
}, []);
|
|
214
|
+
|
|
215
|
+
return labels;
|
|
216
|
+
}
|
|
217
|
+
|
|
224
218
|
addType(type) {
|
|
225
219
|
this.types.push(type);
|
|
226
220
|
}
|
|
@@ -245,23 +239,25 @@ export default class FileContext {
|
|
|
245
239
|
this.constructors.push(constructor);
|
|
246
240
|
}
|
|
247
241
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
info(message, node) { this.log(node, INFO_LEVEL, message); }
|
|
242
|
+
halt(node) {
|
|
243
|
+
const leastLineIndex = leastLineIndexFromNodeAndTokens(node, this.tokens),
|
|
244
|
+
greatestLineIndex = greatestLineIndexFromNodeAndTokens(node, this.tokens);
|
|
253
245
|
|
|
254
|
-
|
|
246
|
+
this.context.halt(this.filePath, leastLineIndex, greatestLineIndex);
|
|
247
|
+
}
|
|
255
248
|
|
|
256
|
-
|
|
249
|
+
begin(node) {
|
|
250
|
+
const leastLineIndex = leastLineIndexFromNodeAndTokens(node, this.tokens),
|
|
251
|
+
greatestLineIndex = greatestLineIndexFromNodeAndTokens(node, this.tokens);
|
|
257
252
|
|
|
258
|
-
|
|
253
|
+
this.context.begin(this.filePath, leastLineIndex, greatestLineIndex);
|
|
254
|
+
}
|
|
259
255
|
|
|
260
|
-
|
|
256
|
+
complete(node) {
|
|
261
257
|
const leastLineIndex = leastLineIndexFromNodeAndTokens(node, this.tokens),
|
|
262
258
|
greatestLineIndex = greatestLineIndexFromNodeAndTokens(node, this.tokens);
|
|
263
259
|
|
|
264
|
-
this.
|
|
260
|
+
this.context.complete(this.filePath, leastLineIndex, greatestLineIndex);
|
|
265
261
|
}
|
|
266
262
|
|
|
267
263
|
static fromReleaseContextAndFilePath(releaseContext, filePath) {
|
|
@@ -272,14 +268,19 @@ export default class FileContext {
|
|
|
272
268
|
|
|
273
269
|
rewriteNodes(node);
|
|
274
270
|
|
|
275
|
-
const
|
|
271
|
+
const context = releaseContext, ///
|
|
272
|
+
rules = [],
|
|
276
273
|
types = [],
|
|
277
274
|
axioms = [],
|
|
278
275
|
variables = [],
|
|
279
276
|
combinators = [],
|
|
280
277
|
constructors = [],
|
|
281
|
-
fileContext = new FileContext(filePath, tokens, node, rules, types, axioms, variables, combinators, constructors
|
|
278
|
+
fileContext = new FileContext(filePath, context, tokens, node, rules, types, axioms, variables, combinators, constructors);
|
|
282
279
|
|
|
283
280
|
return fileContext;
|
|
284
281
|
}
|
|
285
282
|
}
|
|
283
|
+
|
|
284
|
+
Object.assign(FileContext.prototype, loggingMixins);
|
|
285
|
+
|
|
286
|
+
export default FileContext;
|
package/src/context/metaproof.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
import fileMixins from "../mixins/file";
|
|
4
|
+
import loggingMixins from "../mixins/logging";
|
|
5
|
+
import callbacksMixins from "../mixins/callbacks";
|
|
6
|
+
|
|
7
|
+
class MetaproofContext {
|
|
4
8
|
constructor(context, derived, metaAssertions) {
|
|
5
9
|
this.context = context;
|
|
6
10
|
this.derived = derived;
|
|
@@ -18,7 +22,7 @@ export default class MetaproofContext {
|
|
|
18
22
|
getMetaAssertions() {
|
|
19
23
|
let metaAssertions = this.context.getMetaAssertions();
|
|
20
24
|
|
|
21
|
-
metaAssertions = [
|
|
25
|
+
metaAssertions = [ ///
|
|
22
26
|
...metaAssertions,
|
|
23
27
|
...this.metaAssertions
|
|
24
28
|
];
|
|
@@ -26,25 +30,13 @@ export default class MetaproofContext {
|
|
|
26
30
|
return metaAssertions;
|
|
27
31
|
}
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
getAxioms() { return this.context.getAxioms(); }
|
|
34
|
-
|
|
35
|
-
getCombinators() { return this.context.getCombinators(); }
|
|
36
|
-
|
|
37
|
-
getConstructors() { return this.context.getConstructors(); }
|
|
38
|
-
|
|
39
|
-
findTypeByTypeName(typeName) { return this.context.findTypeByTypeName(typeName); }
|
|
40
|
-
|
|
41
|
-
findRuleByReferenceName(referenceName) { return this.context.findRuleByReferenceName(referenceName); }
|
|
42
|
-
|
|
43
|
-
findVariableByVariableName(variableName) { return this.context.findVariableByVariableName(variableName); }
|
|
44
|
-
|
|
45
|
-
isLabelPresent(label) { return this.context.isLabelPresent(label); }
|
|
33
|
+
setDerived(derived) {
|
|
34
|
+
this.derived = derived;
|
|
35
|
+
}
|
|
46
36
|
|
|
47
|
-
|
|
37
|
+
addMetaAssertion(metaAssertion) {
|
|
38
|
+
this.metaAssertions.push(metaAssertion);
|
|
39
|
+
}
|
|
48
40
|
|
|
49
41
|
matchMetaAssertion(metaAssertion) {
|
|
50
42
|
let metaAssertionMatches;
|
|
@@ -67,35 +59,28 @@ export default class MetaproofContext {
|
|
|
67
59
|
return metaAssertionMatches;
|
|
68
60
|
}
|
|
69
61
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
addRule(rule) { this.context.addRule(rule); }
|
|
62
|
+
static fromFileContext(fileContext) {
|
|
63
|
+
const context = fileContext, ///
|
|
64
|
+
derived = false,
|
|
65
|
+
metaAssertions = [],
|
|
66
|
+
metaproofContext = new MetaproofContext(context, derived, metaAssertions);
|
|
77
67
|
|
|
78
|
-
|
|
79
|
-
this.metaAssertions.push(metaAssertion);
|
|
68
|
+
return metaproofContext;
|
|
80
69
|
}
|
|
81
70
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
71
|
+
static fromMetaproofContext(metaproofContext) {
|
|
72
|
+
const context = metaproofContext, ///
|
|
73
|
+
derived = false,
|
|
74
|
+
metaAssertions = [];
|
|
85
75
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
warning(message, node) { this.context.warning(message, node); }
|
|
89
|
-
|
|
90
|
-
error(message, node) { this.context.error(message, node); }
|
|
91
|
-
|
|
92
|
-
fatal(message, node) { this.context.fatal(message, node); }
|
|
93
|
-
|
|
94
|
-
static fromContext(context) {
|
|
95
|
-
const derived = false,
|
|
96
|
-
metaAssertions = [],
|
|
97
|
-
metaproofContext = new MetaproofContext(context, derived, metaAssertions);
|
|
76
|
+
metaproofContext = new MetaproofContext(context, derived, metaAssertions); ///
|
|
98
77
|
|
|
99
78
|
return metaproofContext;
|
|
100
79
|
}
|
|
101
80
|
}
|
|
81
|
+
|
|
82
|
+
Object.assign(MetaproofContext.prototype, fileMixins);
|
|
83
|
+
Object.assign(MetaproofContext.prototype, loggingMixins);
|
|
84
|
+
Object.assign(MetaproofContext.prototype, callbacksMixins);
|
|
85
|
+
|
|
86
|
+
export default MetaproofContext;
|