occam-verify-cli 0.0.871 → 0.0.873
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/lib/context/file.js +22 -3
- package/lib/metaType/context.js +124 -0
- package/lib/metaType/label.js +124 -0
- package/lib/metaType/statement.js +124 -0
- package/lib/metaType.js +1 -112
- package/lib/metaTypeNames.js +6 -2
- package/lib/metaTypes.js +12 -4
- package/lib/metavariable.js +49 -9
- package/lib/mixins/context.js +9 -1
- package/lib/releaseContext/create.js +2 -2
- package/lib/verify/metavariable.js +35 -9
- package/package.json +1 -1
- package/src/context/file.js +22 -2
- package/src/metaType/context.js +18 -0
- package/src/metaType/label.js +18 -0
- package/src/metaType/statement.js +18 -0
- package/src/metaType.js +0 -23
- package/src/metaTypeNames.js +2 -1
- package/src/metaTypes.js +4 -1
- package/src/metavariable.js +60 -10
- package/src/mixins/context.js +6 -0
- package/src/releaseContext/create.js +1 -1
- package/src/verify/metavariable.js +59 -11
|
@@ -18,24 +18,36 @@ _export(exports, {
|
|
|
18
18
|
});
|
|
19
19
|
var _metavariable = /*#__PURE__*/ _interop_require_default(require("../metavariable"));
|
|
20
20
|
var _metavariable1 = /*#__PURE__*/ _interop_require_default(require("../assignment/metavariable"));
|
|
21
|
+
var _array = require("../utilities/array");
|
|
21
22
|
var _query = require("../utilities/query");
|
|
23
|
+
var _name = require("../utilities/name");
|
|
22
24
|
function _interop_require_default(obj) {
|
|
23
25
|
return obj && obj.__esModule ? obj : {
|
|
24
26
|
default: obj
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
|
-
var typeNodeQuery = (0, _query.nodeQuery)("/argument/type"), argumentNodeQuery = (0, _query.nodeQuery)("/metavariable/argument!");
|
|
29
|
+
var termNodeQuery = (0, _query.nodeQuery)("/argument/term"), typeNodeQuery = (0, _query.nodeQuery)("/argument/type"), argumentNodeQuery = (0, _query.nodeQuery)("/metavariable/argument!");
|
|
28
30
|
function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
29
31
|
var metavariableVerified = false;
|
|
30
32
|
var metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
31
33
|
fileContext.trace("Verifying the '".concat(metavariableString, "' metavariable..."), metavariableNode);
|
|
32
|
-
var metavariablePresent = fileContext.
|
|
34
|
+
var name = (0, _name.nameFromMetavariableNode)(metavariableNode), metavariablePresent = fileContext.isMetavariablePresentByName(name);
|
|
33
35
|
if (metavariablePresent) {
|
|
34
36
|
fileContext.debug("The metavariable '".concat(metavariableString, "' is already present."), metavariableNode);
|
|
35
37
|
} else {
|
|
36
|
-
var argumentNode = argumentNodeQuery(metavariableNode), argumentVerified = verifyArgument(
|
|
37
|
-
if (argumentVerified) {
|
|
38
|
-
var
|
|
38
|
+
var termTypes = [], metaTypes = [], argumentNode = argumentNodeQuery(metavariableNode), argumentVerified = verifyArgument(argumentNode, termTypes, fileContext), metaTypeVerified = verifyMetaType(metaTypeNode, metaTypes, fileContext);
|
|
39
|
+
if (argumentVerified && metaTypeVerified) {
|
|
40
|
+
var termType, metaType;
|
|
41
|
+
var firstMetaType = (0, _array.first)(metaTypes);
|
|
42
|
+
metaType = firstMetaType; ///
|
|
43
|
+
var termTypesLength = termTypes.length;
|
|
44
|
+
if (termTypesLength === 0) {
|
|
45
|
+
termType = null;
|
|
46
|
+
} else {
|
|
47
|
+
var firstTermType = (0, _array.first)(termTypes);
|
|
48
|
+
termType = firstTermType; ///
|
|
49
|
+
}
|
|
50
|
+
var node = metavariableNode, metavariable = _metavariable.default.fromNodeNameTermTypeAndMetaType(node, name, termType, metaType), metavariableAssignment = _metavariable1.default.fromMetavariable(metavariable), metavariableAssigned = metavariableAssignment.assign(fileContext);
|
|
39
51
|
if (metavariableAssigned) {
|
|
40
52
|
metavariableVerified = true;
|
|
41
53
|
}
|
|
@@ -60,23 +72,37 @@ function verifyStandaloneMetavariable(metavariableNode, localMetaContext, verify
|
|
|
60
72
|
}
|
|
61
73
|
return standaloneMetavariableVerified;
|
|
62
74
|
}
|
|
63
|
-
function verifyArgument(
|
|
75
|
+
function verifyArgument(argumentNode, termTypes, fileContext) {
|
|
64
76
|
var argumentVerified = false;
|
|
65
77
|
if (argumentNode === null) {
|
|
66
78
|
argumentVerified = true;
|
|
67
79
|
} else {
|
|
80
|
+
var termNode = termNodeQuery(argumentNode);
|
|
81
|
+
if (termNode === null) {} else {
|
|
82
|
+
var termString = fileContext.nodeAsString(termNode);
|
|
83
|
+
fileContext.debug("The '".concat(termString, "' term was found when a type should have been present."), termNode);
|
|
84
|
+
}
|
|
68
85
|
var typeNode = typeNodeQuery(argumentNode);
|
|
69
86
|
if (typeNode !== null) {
|
|
70
87
|
var type = fileContext.findTypeByTypeNode(typeNode);
|
|
71
88
|
if (type !== null) {
|
|
89
|
+
var termType = type; ///
|
|
90
|
+
termTypes.push(termType);
|
|
72
91
|
argumentVerified = true;
|
|
73
92
|
} else {
|
|
74
|
-
var typeString = fileContext.nodeAsString(typeNode)
|
|
75
|
-
fileContext.debug("The '".concat(
|
|
93
|
+
var typeString = fileContext.nodeAsString(typeNode);
|
|
94
|
+
fileContext.debug("The '".concat(typeString, "' type is not present."), typeNode);
|
|
76
95
|
}
|
|
77
96
|
}
|
|
78
97
|
}
|
|
79
98
|
return argumentVerified;
|
|
80
99
|
}
|
|
100
|
+
function verifyMetaType(metaTypeNode, metaTypes, fileContext) {
|
|
101
|
+
var metaTypeVerified;
|
|
102
|
+
var metaType = fileContext.findMetaTypeByMetaTypeNode(metaTypeNode);
|
|
103
|
+
metaTypes.push(metaType);
|
|
104
|
+
metaTypeVerified = true;
|
|
105
|
+
return metaTypeVerified;
|
|
106
|
+
}
|
|
81
107
|
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBub2RlUXVlcnkgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3F1ZXJ5XCI7XG5cbmNvbnN0IHR5cGVOb2RlUXVlcnkgPSBub2RlUXVlcnkoXCIvYXJndW1lbnQvdHlwZVwiKSxcbiAgICAgIGFyZ3VtZW50Tm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL21ldGF2YXJpYWJsZS9hcmd1bWVudCFcIik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZlcmlmeU1ldGF2YXJpYWJsZShtZXRhdmFyaWFibGVOb2RlLCBtZXRhVHlwZU5vZGUsIGZpbGVDb250ZXh0KSB7XG4gIGxldCBtZXRhdmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IGZpbGVDb250ZXh0Lm5vZGVBc1N0cmluZyhtZXRhdmFyaWFibGVOb2RlKTtcblxuICBmaWxlQ29udGV4dC50cmFjZShgVmVyaWZ5aW5nIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUuLi5gLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gZmlsZUNvbnRleHQuaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGlmIChtZXRhdmFyaWFibGVQcmVzZW50KSB7XG4gICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSBtZXRhdmFyaWFibGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgaXMgYWxyZWFkeSBwcmVzZW50LmAsIG1ldGF2YXJpYWJsZU5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGFyZ3VtZW50Tm9kZSA9IGFyZ3VtZW50Tm9kZVF1ZXJ5KG1ldGF2YXJpYWJsZU5vZGUpLFxuICAgICAgICAgIGFyZ3VtZW50VmVyaWZpZWQgPSB2ZXJpZnlBcmd1bWVudChtZXRhdmFyaWFibGVOb2RlLCBhcmd1bWVudE5vZGUsIGZpbGVDb250ZXh0KTtcblxuICAgIGlmIChhcmd1bWVudFZlcmlmaWVkKSB7XG4gICAgICBjb25zdCBtZXRhVHlwZSA9IGZpbGVDb250ZXh0LmZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOb2RlKG1ldGFUeXBlTm9kZSksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBNZXRhdmFyaWFibGUuZnJvbU1ldGF2YXJpYWJsZU5vZGVBbmRNZXRhVHlwZShtZXRhdmFyaWFibGVOb2RlLCBtZXRhVHlwZSksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25tZW50ID0gTWV0YXZhcmlhYmxlQXNzaWdubWVudC5mcm9tTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25lZCA9IG1ldGF2YXJpYWJsZUFzc2lnbm1lbnQuYXNzaWduKGZpbGVDb250ZXh0KTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZUFzc2lnbmVkKSB7XG4gICAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVN0YW5kYWxvbmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsTWV0YUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGxvY2FsTWV0YUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgc3RhbmRhbG9uZSBtZXRhdmFyaWFibGUuLi5gLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gbG9jYWxNZXRhQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICB9XG5cbiAgaWYgKHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCkge1xuICAgIGxvY2FsTWV0YUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBzdGFuZGFsb25lIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFyZ3VtZW50KG1ldGF2YXJpYWJsZU5vZGUsIGFyZ3VtZW50Tm9kZSwgZmlsZUNvbnRleHQpIHtcbiAgbGV0IGFyZ3VtZW50VmVyaWZpZWQgPSBmYWxzZTtcblxuICBpZiAoYXJndW1lbnROb2RlID09PSBudWxsKSB7XG4gICAgYXJndW1lbnRWZXJpZmllZCA9IHRydWU7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdHlwZU5vZGUgPSB0eXBlTm9kZVF1ZXJ5KGFyZ3VtZW50Tm9kZSk7XG5cbiAgICBpZiAodHlwZU5vZGUgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHR5cGUgPSBmaWxlQ29udGV4dC5maW5kVHlwZUJ5VHlwZU5vZGUodHlwZU5vZGUpO1xuXG4gICAgICBpZiAodHlwZSAhPT0gbnVsbCkge1xuICAgICAgICBhcmd1bWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodHlwZU5vZGUpLFxuICAgICAgICAgICAgICBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgICAgICAgZmlsZUNvbnRleHQuZGVidWcoYFRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBtZXRhdmFyaWFibGUncyAnJHt0eXBlU3RyaW5nfScgdHlwZSBpcyBub3QgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJndW1lbnRWZXJpZmllZDtcbn0iXSwibmFtZXMiOlsidmVyaWZ5TWV0YXZhcmlhYmxlIiwidmVyaWZ5U3RhbmRhbG9uZU1ldGF2YXJpYWJsZSIsInR5cGVOb2RlUXVlcnkiLCJub2RlUXVlcnkiLCJhcmd1bWVudE5vZGVRdWVyeSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJtZXRhVHlwZU5vZGUiLCJmaWxlQ29udGV4dCIsIm1ldGF2YXJpYWJsZVZlcmlmaWVkIiwibWV0YXZhcmlhYmxlU3RyaW5nIiwibm9kZUFzU3RyaW5nIiwidHJhY2UiLCJtZXRhdmFyaWFibGVQcmVzZW50IiwiaXNNZXRhdmFyaWFibGVQcmVzZW50QnlNZXRhdmFyaWFibGVOb2RlIiwiZGVidWciLCJhcmd1bWVudE5vZGUiLCJhcmd1bWVudFZlcmlmaWVkIiwidmVyaWZ5QXJndW1lbnQiLCJtZXRhVHlwZSIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVOb2RlIiwibWV0YXZhcmlhYmxlIiwiTWV0YXZhcmlhYmxlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGVBbmRNZXRhVHlwZSIsIm1ldGF2YXJpYWJsZUFzc2lnbm1lbnQiLCJNZXRhdmFyaWFibGVBc3NpZ25tZW50IiwiZnJvbU1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZUFzc2lnbmVkIiwiYXNzaWduIiwibG9jYWxNZXRhQ29udGV4dCIsInZlcmlmeUFoZWFkIiwic3RhbmRhbG9uZU1ldGF2YXJpYWJsZVZlcmlmaWVkIiwidmVyaWZpZWRBaGVhZCIsInR5cGVOb2RlIiwidHlwZSIsImZpbmRUeXBlQnlUeXBlTm9kZSIsInR5cGVTdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztJQVVBLE9BZ0NDO2VBaEN1QkE7O0lBa0NSQyw0QkFBNEI7ZUFBNUJBOzs7bUVBMUNTO29FQUNVO3FCQUVUOzs7Ozs7QUFFMUIsSUFBTUMsZ0JBQWdCQyxJQUFBQSxnQkFBUyxFQUFDLG1CQUMxQkMsb0JBQW9CRCxJQUFBQSxnQkFBUyxFQUFDO0FBRXJCLFNBQVNILG1CQUFtQkssZ0JBQWdCLEVBQUVDLFlBQVksRUFBRUMsV0FBVztJQUNwRixJQUFJQyx1QkFBdUI7SUFFM0IsSUFBTUMscUJBQXFCRixZQUFZRyxZQUFZLENBQUNMO0lBRXBERSxZQUFZSSxLQUFLLENBQUMsQUFBQyxrQkFBb0MsT0FBbkJGLG9CQUFtQixzQkFBb0JKO0lBRTNFLElBQU1PLHNCQUFzQkwsWUFBWU0sdUNBQXVDLENBQUNSO0lBRWhGLElBQUlPLHFCQUFxQjtRQUN2QkwsWUFBWU8sS0FBSyxDQUFDLEFBQUMscUJBQXVDLE9BQW5CTCxvQkFBbUIsMEJBQXdCSjtJQUNwRixPQUFPO1FBQ0wsSUFBTVUsZUFBZVgsa0JBQWtCQyxtQkFDakNXLG1CQUFtQkMsZUFBZVosa0JBQWtCVSxjQUFjUjtRQUV4RSxJQUFJUyxrQkFBa0I7WUFDcEIsSUFBTUUsV0FBV1gsWUFBWVksMEJBQTBCLENBQUNiLGVBQ2xEYyxlQUFlQyxxQkFBWSxDQUFDQywrQkFBK0IsQ0FBQ2pCLGtCQUFrQmEsV0FDOUVLLHlCQUF5QkMsc0JBQXNCLENBQUNDLGdCQUFnQixDQUFDTCxlQUNqRU0sdUJBQXVCSCx1QkFBdUJJLE1BQU0sQ0FBQ3BCO1lBRTNELElBQUltQixzQkFBc0I7Z0JBQ3hCbEIsdUJBQXVCO1lBQ3pCO1FBQ0Y7SUFDRjtJQUVBLElBQUlBLHNCQUFzQjtRQUN4QkQsWUFBWU8sS0FBSyxDQUFDLEFBQUMsb0JBQXNDLE9BQW5CTCxvQkFBbUIsb0JBQWtCSjtJQUM3RTtJQUVBLE9BQU9HO0FBQ1Q7QUFFTyxTQUFTUCw2QkFBNkJJLGdCQUFnQixFQUFFdUIsZ0JBQWdCLEVBQUVDLFdBQVc7SUFDMUYsSUFBSUMsaUNBQWlDO0lBRXJDLElBQU1yQixxQkFBcUJtQixpQkFBaUJsQixZQUFZLENBQUNMO0lBRXpEdUIsaUJBQWlCakIsS0FBSyxDQUFDLEFBQUMsa0JBQW9DLE9BQW5CRixvQkFBbUIsaUNBQStCSjtJQUUzRixJQUFNTyxzQkFBc0JnQixpQkFBaUJmLHVDQUF1QyxDQUFDUjtJQUVyRixJQUFJTyxxQkFBcUI7UUFDdkIsSUFBTW1CLGdCQUFnQkY7UUFFdEJDLGlDQUFpQ0MsZUFBZSxHQUFHO0lBQ3JEO0lBRUEsSUFBSUQsZ0NBQWdDO1FBQ2xDRixpQkFBaUJkLEtBQUssQ0FBQyxBQUFDLG9CQUFzQyxPQUFuQkwsb0JBQW1CLCtCQUE2Qko7SUFDN0Y7SUFFQSxPQUFPeUI7QUFDVDtBQUVBLFNBQVNiLGVBQWVaLGdCQUFnQixFQUFFVSxZQUFZLEVBQUVSLFdBQVc7SUFDakUsSUFBSVMsbUJBQW1CO0lBRXZCLElBQUlELGlCQUFpQixNQUFNO1FBQ3pCQyxtQkFBbUI7SUFDckIsT0FBTztRQUNMLElBQU1nQixXQUFXOUIsY0FBY2E7UUFFL0IsSUFBSWlCLGFBQWEsTUFBTTtZQUNyQixJQUFNQyxPQUFPMUIsWUFBWTJCLGtCQUFrQixDQUFDRjtZQUU1QyxJQUFJQyxTQUFTLE1BQU07Z0JBQ2pCakIsbUJBQW1CO1lBQ3JCLE9BQU87Z0JBQ0wsSUFBTW1CLGFBQWE1QixZQUFZRyxZQUFZLENBQUNzQixXQUN0Q3ZCLHFCQUFxQkYsWUFBWUcsWUFBWSxDQUFDTDtnQkFFcERFLFlBQVlPLEtBQUssQ0FBQyxBQUFDLFFBQThDcUIsT0FBdkMxQixvQkFBbUIsc0JBQStCLE9BQVgwQixZQUFXLDJCQUF5QjlCO1lBQ3ZHO1FBQ0Y7SUFDRjtJQUVBLE9BQU9XO0FBQ1QifQ==
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy92ZXJpZnkvbWV0YXZhcmlhYmxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgTWV0YXZhcmlhYmxlIGZyb20gXCIuLi9tZXRhdmFyaWFibGVcIjtcbmltcG9ydCBNZXRhdmFyaWFibGVBc3NpZ25tZW50IGZyb20gXCIuLi9hc3NpZ25tZW50L21ldGF2YXJpYWJsZVwiO1xuXG5pbXBvcnQgeyBmaXJzdCB9IGZyb20gXCIuLi91dGlsaXRpZXMvYXJyYXlcIjtcbmltcG9ydCB7IG5vZGVRdWVyeSB9IGZyb20gXCIuLi91dGlsaXRpZXMvcXVlcnlcIjtcbmltcG9ydCB7IG5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSB9IGZyb20gXCIuLi91dGlsaXRpZXMvbmFtZVwiO1xuXG5jb25zdCB0ZXJtTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3Rlcm1cIiksXG4gICAgICB0eXBlTm9kZVF1ZXJ5ID0gbm9kZVF1ZXJ5KFwiL2FyZ3VtZW50L3R5cGVcIiksXG4gICAgICBhcmd1bWVudE5vZGVRdWVyeSA9IG5vZGVRdWVyeShcIi9tZXRhdmFyaWFibGUvYXJndW1lbnQhXCIpO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB2ZXJpZnlNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbWV0YVR5cGVOb2RlLCBmaWxlQ29udGV4dCkge1xuICBsZXQgbWV0YXZhcmlhYmxlVmVyaWZpZWQgPSBmYWxzZTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgZmlsZUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgbWV0YXZhcmlhYmxlLi4uYCwgbWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgY29uc3QgbmFtZSA9IG5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlUHJlc2VudCA9IGZpbGVDb250ZXh0LmlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TmFtZShuYW1lKTtcblxuICBpZiAobWV0YXZhcmlhYmxlUHJlc2VudCkge1xuICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgbWV0YXZhcmlhYmxlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIGlzIGFscmVhZHkgcHJlc2VudC5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0ZXJtVHlwZXMgPSBbXSxcbiAgICAgICAgICBtZXRhVHlwZXMgPSBbXSxcbiAgICAgICAgICBhcmd1bWVudE5vZGUgPSBhcmd1bWVudE5vZGVRdWVyeShtZXRhdmFyaWFibGVOb2RlKSxcbiAgICAgICAgICBhcmd1bWVudFZlcmlmaWVkID0gdmVyaWZ5QXJndW1lbnQoYXJndW1lbnROb2RlLCB0ZXJtVHlwZXMsIGZpbGVDb250ZXh0KSxcbiAgICAgICAgICBtZXRhVHlwZVZlcmlmaWVkID0gdmVyaWZ5TWV0YVR5cGUobWV0YVR5cGVOb2RlLCBtZXRhVHlwZXMsIGZpbGVDb250ZXh0KTtcblxuICAgIGlmIChhcmd1bWVudFZlcmlmaWVkICYmIG1ldGFUeXBlVmVyaWZpZWQpIHtcbiAgICAgIGxldCB0ZXJtVHlwZSxcbiAgICAgICAgICBtZXRhVHlwZTtcblxuICAgICAgY29uc3QgZmlyc3RNZXRhVHlwZSA9IGZpcnN0KG1ldGFUeXBlcyk7XG5cbiAgICAgIG1ldGFUeXBlID0gZmlyc3RNZXRhVHlwZTsgLy8vXG5cbiAgICAgIGNvbnN0IHRlcm1UeXBlc0xlbmd0aCA9IHRlcm1UeXBlcy5sZW5ndGg7XG5cbiAgICAgIGlmICh0ZXJtVHlwZXNMZW5ndGggPT09IDApIHtcbiAgICAgICAgdGVybVR5cGUgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgZmlyc3RUZXJtVHlwZSA9IGZpcnN0KHRlcm1UeXBlcyk7XG5cbiAgICAgICAgdGVybVR5cGUgPSBmaXJzdFRlcm1UeXBlOyAvLy9cbiAgICAgIH1cblxuICAgICAgY29uc3Qgbm9kZSA9IG1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTm9kZU5hbWVUZXJtVHlwZUFuZE1ldGFUeXBlKG5vZGUsIG5hbWUsIHRlcm1UeXBlLCBtZXRhVHlwZSksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25tZW50ID0gTWV0YXZhcmlhYmxlQXNzaWdubWVudC5mcm9tTWV0YXZhcmlhYmxlKG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGVBc3NpZ25lZCA9IG1ldGF2YXJpYWJsZUFzc2lnbm1lbnQuYXNzaWduKGZpbGVDb250ZXh0KTtcblxuICAgICAgaWYgKG1ldGF2YXJpYWJsZUFzc2lnbmVkKSB7XG4gICAgICAgIG1ldGF2YXJpYWJsZVZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAobWV0YXZhcmlhYmxlVmVyaWZpZWQpIHtcbiAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgLi4udmVyaWZpZWQgdGhlICcke21ldGF2YXJpYWJsZVN0cmluZ30nIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBtZXRhdmFyaWFibGVWZXJpZmllZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeVN0YW5kYWxvbmVNZXRhdmFyaWFibGUobWV0YXZhcmlhYmxlTm9kZSwgbG9jYWxNZXRhQ29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgbGV0IHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGNvbnN0IG1ldGF2YXJpYWJsZVN0cmluZyA9IGxvY2FsTWV0YUNvbnRleHQubm9kZUFzU3RyaW5nKG1ldGF2YXJpYWJsZU5vZGUpO1xuXG4gIGxvY2FsTWV0YUNvbnRleHQudHJhY2UoYFZlcmlmeWluZyB0aGUgJyR7bWV0YXZhcmlhYmxlU3RyaW5nfScgc3RhbmRhbG9uZSBtZXRhdmFyaWFibGUuLi5gLCBtZXRhdmFyaWFibGVOb2RlKTtcblxuICBjb25zdCBtZXRhdmFyaWFibGVQcmVzZW50ID0gbG9jYWxNZXRhQ29udGV4dC5pc01ldGF2YXJpYWJsZVByZXNlbnRCeU1ldGF2YXJpYWJsZU5vZGUobWV0YXZhcmlhYmxlTm9kZSk7XG5cbiAgaWYgKG1ldGF2YXJpYWJsZVByZXNlbnQpIHtcbiAgICBjb25zdCB2ZXJpZmllZEFoZWFkID0gdmVyaWZ5QWhlYWQoKTtcblxuICAgIHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCA9IHZlcmlmaWVkQWhlYWQ7IC8vL1xuICB9XG5cbiAgaWYgKHN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCkge1xuICAgIGxvY2FsTWV0YUNvbnRleHQuZGVidWcoYC4uLnZlcmlmaWVkIHRoZSAnJHttZXRhdmFyaWFibGVTdHJpbmd9JyBzdGFuZGFsb25lIG1ldGF2YXJpYWJsZS5gLCBtZXRhdmFyaWFibGVOb2RlKTtcbiAgfVxuXG4gIHJldHVybiBzdGFuZGFsb25lTWV0YXZhcmlhYmxlVmVyaWZpZWQ7XG59XG5cbmZ1bmN0aW9uIHZlcmlmeUFyZ3VtZW50KGFyZ3VtZW50Tm9kZSwgdGVybVR5cGVzLCBmaWxlQ29udGV4dCkge1xuICBsZXQgYXJndW1lbnRWZXJpZmllZCA9IGZhbHNlO1xuXG4gIGlmIChhcmd1bWVudE5vZGUgPT09IG51bGwpIHtcbiAgICBhcmd1bWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB0ZXJtTm9kZSA9IHRlcm1Ob2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICAgIGlmICh0ZXJtTm9kZSA9PT0gbnVsbCkge1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHRlcm1TdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodGVybU5vZGUpO1xuXG4gICAgICBmaWxlQ29udGV4dC5kZWJ1ZyhgVGhlICcke3Rlcm1TdHJpbmd9JyB0ZXJtIHdhcyBmb3VuZCB3aGVuIGEgdHlwZSBzaG91bGQgaGF2ZSBiZWVuIHByZXNlbnQuYCwgdGVybU5vZGUpO1xuICAgIH1cbiAgICBjb25zdCB0eXBlTm9kZSA9IHR5cGVOb2RlUXVlcnkoYXJndW1lbnROb2RlKTtcblxuICAgIGlmICh0eXBlTm9kZSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IGZpbGVDb250ZXh0LmZpbmRUeXBlQnlUeXBlTm9kZSh0eXBlTm9kZSk7XG5cbiAgICAgIGlmICh0eXBlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHRlcm1UeXBlID0gdHlwZTsgIC8vL1xuXG4gICAgICAgIHRlcm1UeXBlcy5wdXNoKHRlcm1UeXBlKTtcblxuICAgICAgICBhcmd1bWVudFZlcmlmaWVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHR5cGVTdHJpbmcgPSBmaWxlQ29udGV4dC5ub2RlQXNTdHJpbmcodHlwZU5vZGUpO1xuXG4gICAgICAgIGZpbGVDb250ZXh0LmRlYnVnKGBUaGUgJyR7dHlwZVN0cmluZ30nIHR5cGUgaXMgbm90IHByZXNlbnQuYCwgdHlwZU5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhcmd1bWVudFZlcmlmaWVkO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlNZXRhVHlwZShtZXRhVHlwZU5vZGUsIG1ldGFUeXBlcywgZmlsZUNvbnRleHQpIHtcbiAgbGV0IG1ldGFUeXBlVmVyaWZpZWQ7XG5cbiAgY29uc3QgbWV0YVR5cGUgPSBmaWxlQ29udGV4dC5maW5kTWV0YVR5cGVCeU1ldGFUeXBlTm9kZShtZXRhVHlwZU5vZGUpO1xuXG4gIG1ldGFUeXBlcy5wdXNoKG1ldGFUeXBlKTtcblxuICBtZXRhVHlwZVZlcmlmaWVkID0gdHJ1ZTtcblxuICByZXR1cm4gbWV0YVR5cGVWZXJpZmllZDtcbn0iXSwibmFtZXMiOlsidmVyaWZ5TWV0YXZhcmlhYmxlIiwidmVyaWZ5U3RhbmRhbG9uZU1ldGF2YXJpYWJsZSIsInRlcm1Ob2RlUXVlcnkiLCJub2RlUXVlcnkiLCJ0eXBlTm9kZVF1ZXJ5IiwiYXJndW1lbnROb2RlUXVlcnkiLCJtZXRhdmFyaWFibGVOb2RlIiwibWV0YVR5cGVOb2RlIiwiZmlsZUNvbnRleHQiLCJtZXRhdmFyaWFibGVWZXJpZmllZCIsIm1ldGF2YXJpYWJsZVN0cmluZyIsIm5vZGVBc1N0cmluZyIsInRyYWNlIiwibmFtZSIsIm5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZVByZXNlbnQiLCJpc01ldGF2YXJpYWJsZVByZXNlbnRCeU5hbWUiLCJkZWJ1ZyIsInRlcm1UeXBlcyIsIm1ldGFUeXBlcyIsImFyZ3VtZW50Tm9kZSIsImFyZ3VtZW50VmVyaWZpZWQiLCJ2ZXJpZnlBcmd1bWVudCIsIm1ldGFUeXBlVmVyaWZpZWQiLCJ2ZXJpZnlNZXRhVHlwZSIsInRlcm1UeXBlIiwibWV0YVR5cGUiLCJmaXJzdE1ldGFUeXBlIiwiZmlyc3QiLCJ0ZXJtVHlwZXNMZW5ndGgiLCJsZW5ndGgiLCJmaXJzdFRlcm1UeXBlIiwibm9kZSIsIm1ldGF2YXJpYWJsZSIsIk1ldGF2YXJpYWJsZSIsImZyb21Ob2RlTmFtZVRlcm1UeXBlQW5kTWV0YVR5cGUiLCJtZXRhdmFyaWFibGVBc3NpZ25tZW50IiwiTWV0YXZhcmlhYmxlQXNzaWdubWVudCIsImZyb21NZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVBc3NpZ25lZCIsImFzc2lnbiIsImxvY2FsTWV0YUNvbnRleHQiLCJ2ZXJpZnlBaGVhZCIsInN0YW5kYWxvbmVNZXRhdmFyaWFibGVWZXJpZmllZCIsImlzTWV0YXZhcmlhYmxlUHJlc2VudEJ5TWV0YXZhcmlhYmxlTm9kZSIsInZlcmlmaWVkQWhlYWQiLCJ0ZXJtTm9kZSIsInRlcm1TdHJpbmciLCJ0eXBlTm9kZSIsInR5cGUiLCJmaW5kVHlwZUJ5VHlwZU5vZGUiLCJwdXNoIiwidHlwZVN0cmluZyIsImZpbmRNZXRhVHlwZUJ5TWV0YVR5cGVO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
|
package/package.json
CHANGED
package/src/context/file.js
CHANGED
|
@@ -314,6 +314,19 @@ export default class FileContext {
|
|
|
314
314
|
return type;
|
|
315
315
|
}
|
|
316
316
|
|
|
317
|
+
findMetavariableByName(name) {
|
|
318
|
+
const metavariables = this.getMetavariables(),
|
|
319
|
+
metavariable = metavariables.find((metavariable) => {
|
|
320
|
+
const matches = metavariable.matchName(name);
|
|
321
|
+
|
|
322
|
+
if (matches) {
|
|
323
|
+
return true;
|
|
324
|
+
}
|
|
325
|
+
}) || null;
|
|
326
|
+
|
|
327
|
+
return metavariable;
|
|
328
|
+
}
|
|
329
|
+
|
|
317
330
|
findVariableByVariableNode(variableNode) {
|
|
318
331
|
const node = variableNode, ///
|
|
319
332
|
variables = this.getVariables(),
|
|
@@ -474,6 +487,13 @@ export default class FileContext {
|
|
|
474
487
|
return typePresent;
|
|
475
488
|
}
|
|
476
489
|
|
|
490
|
+
isMetavariablePresentByName(name) {
|
|
491
|
+
const metavariable = this.findMetavariableByName(name),
|
|
492
|
+
metavariablePresent = (metavariable !== null);
|
|
493
|
+
|
|
494
|
+
return metavariablePresent;
|
|
495
|
+
}
|
|
496
|
+
|
|
477
497
|
isVariablePresentByVariableNode(variableNode) {
|
|
478
498
|
const variable = this.findVariableByVariableNode(variableNode),
|
|
479
499
|
variablePresent = (variable !== null);
|
|
@@ -589,9 +609,9 @@ export default class FileContext {
|
|
|
589
609
|
addMetavariable(metavariable) {
|
|
590
610
|
let metavariableAdded = false;
|
|
591
611
|
|
|
592
|
-
const
|
|
612
|
+
const name = metavariable.getName(),
|
|
593
613
|
metavariablePresent = this.metavariables.some((metavariable) => {
|
|
594
|
-
const nodeMatches = metavariable.
|
|
614
|
+
const nodeMatches = metavariable.matchName(name);
|
|
595
615
|
|
|
596
616
|
if (nodeMatches) {
|
|
597
617
|
return true;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetaType from "../metaType";
|
|
4
|
+
|
|
5
|
+
import { CONTEXT_META_TYPE_NAME } from "../metaTypeNames";
|
|
6
|
+
|
|
7
|
+
class ContextMetaType extends MetaType {
|
|
8
|
+
static fromNothing() {
|
|
9
|
+
const name = CONTEXT_META_TYPE_NAME,
|
|
10
|
+
contextMetaType = new ContextMetaType(name);
|
|
11
|
+
|
|
12
|
+
return contextMetaType;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const contextMetaType = ContextMetaType.fromNothing();
|
|
17
|
+
|
|
18
|
+
export default contextMetaType;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetaType from "../metaType";
|
|
4
|
+
|
|
5
|
+
import { LABEL_META_TYPE_NAME } from "../metaTypeNames";
|
|
6
|
+
|
|
7
|
+
class LabelMetaType extends MetaType {
|
|
8
|
+
static fromNothing() {
|
|
9
|
+
const name = LABEL_META_TYPE_NAME,
|
|
10
|
+
labelMetaType = new LabelMetaType(name);
|
|
11
|
+
|
|
12
|
+
return labelMetaType;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const labelMetaType = LabelMetaType.fromNothing();
|
|
17
|
+
|
|
18
|
+
export default labelMetaType;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetaType from "../metaType";
|
|
4
|
+
|
|
5
|
+
import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
|
|
6
|
+
|
|
7
|
+
class StatementMetaType extends MetaType {
|
|
8
|
+
static fromNothing() {
|
|
9
|
+
const name = STATEMENT_META_TYPE_NAME,
|
|
10
|
+
statementMetaType = new StatementMetaType(name);
|
|
11
|
+
|
|
12
|
+
return statementMetaType;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const statementMetaType = StatementMetaType.fromNothing();
|
|
17
|
+
|
|
18
|
+
export default statementMetaType;
|
package/src/metaType.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { metaTypeNameFromMetaTypeNode } from "./utilities/name";
|
|
4
|
-
import { CONTEXT_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "./metaTypeNames";
|
|
5
4
|
|
|
6
5
|
export default class MetaType {
|
|
7
6
|
constructor(name) {
|
|
@@ -68,28 +67,6 @@ export default class MetaType {
|
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
69
|
|
|
71
|
-
class ContextMetaType extends MetaType {
|
|
72
|
-
static fromNothing() {
|
|
73
|
-
const name = CONTEXT_META_TYPE_NAME,
|
|
74
|
-
contextMetaType = new ContextMetaType(name);
|
|
75
|
-
|
|
76
|
-
return contextMetaType;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
class StatementMetaType extends MetaType {
|
|
81
|
-
static fromNothing() {
|
|
82
|
-
const name = STATEMENT_META_TYPE_NAME,
|
|
83
|
-
statementMetaType = new StatementMetaType(name);
|
|
84
|
-
|
|
85
|
-
return statementMetaType;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export const contextMetaType = ContextMetaType.fromNothing();
|
|
90
|
-
|
|
91
|
-
export const statementMetaType = StatementMetaType.fromNothing();
|
|
92
|
-
|
|
93
70
|
export function metaTypeFromJSONAndFileContext(json, fileContext) {
|
|
94
71
|
let metaType;
|
|
95
72
|
|
package/src/metaTypeNames.js
CHANGED
package/src/metaTypes.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import labelMetaType from "./metaType/label";
|
|
4
|
+
import contextMetaType from "./metaType/context";
|
|
5
|
+
import statementMetaType from "./metaType/statement";
|
|
4
6
|
|
|
5
7
|
const metaTypes = [
|
|
8
|
+
labelMetaType,
|
|
6
9
|
contextMetaType,
|
|
7
10
|
statementMetaType
|
|
8
11
|
];
|
package/src/metavariable.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { nodeQuery } from "./utilities/query";
|
|
3
4
|
import { nodeAsString } from "./utilities/string";
|
|
5
|
+
import { nameFromMetavariableNode } from "./utilities/name";
|
|
4
6
|
import { metaTypeFromJSONAndFileContext } from "./metaType";
|
|
7
|
+
import { metavariableNodeFromMetavariableString } from "./utilities/node";
|
|
8
|
+
|
|
9
|
+
const typeNodeQuery = nodeQuery("/metavariable/argument!/type!");
|
|
5
10
|
|
|
6
11
|
export default class Metavariable {
|
|
7
|
-
constructor(node, metaType) {
|
|
12
|
+
constructor(node, name, termType, metaType) {
|
|
8
13
|
this.node = node;
|
|
14
|
+
this.name = name;
|
|
15
|
+
this.termType = termType;
|
|
9
16
|
this.metaType = metaType;
|
|
10
17
|
}
|
|
11
18
|
|
|
@@ -13,21 +20,42 @@ export default class Metavariable {
|
|
|
13
20
|
return this.node;
|
|
14
21
|
}
|
|
15
22
|
|
|
23
|
+
getName() {
|
|
24
|
+
return this.name;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getTermType() {
|
|
28
|
+
return this.termType;
|
|
29
|
+
}
|
|
30
|
+
|
|
16
31
|
getMetaType() {
|
|
17
32
|
return this.metaType;
|
|
18
33
|
}
|
|
19
34
|
|
|
35
|
+
matchName(name) {
|
|
36
|
+
const nameMatches = (this.name === name);
|
|
37
|
+
|
|
38
|
+
return nameMatches;
|
|
39
|
+
}
|
|
40
|
+
|
|
20
41
|
matchNode(node) {
|
|
21
|
-
|
|
42
|
+
let nodeMatches;
|
|
43
|
+
|
|
44
|
+
const metavariableNode = node, ///
|
|
45
|
+
name = nameFromMetavariableNode(metavariableNode);
|
|
46
|
+
|
|
47
|
+
if (this.name === name) {
|
|
48
|
+
nodeMatches = true;
|
|
49
|
+
}
|
|
22
50
|
|
|
23
51
|
return nodeMatches;
|
|
24
52
|
}
|
|
25
53
|
|
|
26
54
|
toJSON(tokens) {
|
|
27
55
|
const metaTypeJSON = this.metaType.toJSON(tokens),
|
|
28
|
-
metaType = metaTypeJSON, ///
|
|
29
56
|
string = nodeAsString(this.node, tokens),
|
|
30
|
-
node = string,
|
|
57
|
+
node = string, //
|
|
58
|
+
metaType = metaTypeJSON, ///
|
|
31
59
|
json = {
|
|
32
60
|
node,
|
|
33
61
|
metaType
|
|
@@ -41,13 +69,20 @@ export default class Metavariable {
|
|
|
41
69
|
|
|
42
70
|
let string = nodeAsString(this.node, tokens);
|
|
43
71
|
|
|
44
|
-
string = `${string}:${metaTypeName}`;
|
|
72
|
+
string = `${string}:${metaTypeName}`; ///
|
|
45
73
|
|
|
46
74
|
return string;
|
|
47
75
|
}
|
|
48
76
|
|
|
49
77
|
static fromJSONAndFileContext(json, fileContext) {
|
|
50
|
-
|
|
78
|
+
let { node } = json;
|
|
79
|
+
|
|
80
|
+
const lexer = fileContext.getLexer(),
|
|
81
|
+
parser = fileContext.getParser(),
|
|
82
|
+
variableString = node, ///
|
|
83
|
+
metavariableNode = metavariableNodeFromMetavariableString(variableString, lexer, parser);
|
|
84
|
+
|
|
85
|
+
node = metavariableNode; ///
|
|
51
86
|
|
|
52
87
|
let { metaType } = json;
|
|
53
88
|
|
|
@@ -55,15 +90,30 @@ export default class Metavariable {
|
|
|
55
90
|
|
|
56
91
|
metaType = metaTypeFromJSONAndFileContext(json, fileContext);
|
|
57
92
|
|
|
58
|
-
const
|
|
93
|
+
const name = nameFromMetavariableNode(metavariableNode),
|
|
94
|
+
termType = termTypeFromMetavariableNode(metavariableNode, fileContext),
|
|
95
|
+
metavariable = new Metavariable(node, name, termType, metaType);
|
|
59
96
|
|
|
60
97
|
return metavariable;
|
|
61
98
|
}
|
|
62
99
|
|
|
63
|
-
static
|
|
64
|
-
const
|
|
65
|
-
metavariable = new Metavariable(node, metaType);
|
|
100
|
+
static fromNodeNameTermTypeAndMetaType(node, name, termType, metaType) {
|
|
101
|
+
const metavariable = new Metavariable(node, name, termType, metaType);
|
|
66
102
|
|
|
67
103
|
return metavariable;
|
|
68
104
|
}
|
|
69
105
|
}
|
|
106
|
+
|
|
107
|
+
function termTypeFromMetavariableNode(metavariableNode, fileContext) {
|
|
108
|
+
let termType = null;
|
|
109
|
+
|
|
110
|
+
const typeNode = typeNodeQuery(metavariableNode);
|
|
111
|
+
|
|
112
|
+
if (typeNode !== null) {
|
|
113
|
+
const type = fileContext.findTypeByTypeNode(typeNode);
|
|
114
|
+
|
|
115
|
+
termType = type; ///
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return termType;
|
|
119
|
+
}
|
package/src/mixins/context.js
CHANGED
|
@@ -28,10 +28,14 @@ function findTypeByTypeName(typeName) { return this.context.findTypeByTypeName(t
|
|
|
28
28
|
|
|
29
29
|
function findTypeByTypeNode(labelMetavariableNode) { return this.context.findTypeByTypeNode(labelMetavariableNode); }
|
|
30
30
|
|
|
31
|
+
function findMetavariableByName(name) { return this.context.findMetavariableByName(name); }
|
|
32
|
+
|
|
31
33
|
function isTypePresentByTypeName(typeName) { return this.context.isTypePresentByTypeName(typeName); }
|
|
32
34
|
|
|
33
35
|
function isTypePresentByTypeNode(typeNode) { return this.context.isTypePresentByTypeNode(typeNode); }
|
|
34
36
|
|
|
37
|
+
function isMetavariablePresentByName(name) { return this.context.isMetavariablePresentByName(name); }
|
|
38
|
+
|
|
35
39
|
function findLabelByLabelMetavariableNode(labelMetavariableNode) { return this.context.findLabelByLabelMetavariableNode(labelMetavariableNode); }
|
|
36
40
|
|
|
37
41
|
function findRuleByLabelMetavariableNode(labelMetavariableNode) { return this.context.findRuleByLabelMetavariableNode(labelMetavariableNode); }
|
|
@@ -65,8 +69,10 @@ const contextMixins = {
|
|
|
65
69
|
getConstructors,
|
|
66
70
|
findTypeByTypeName,
|
|
67
71
|
findTypeByTypeNode,
|
|
72
|
+
findMetavariableByName,
|
|
68
73
|
isTypePresentByTypeName,
|
|
69
74
|
isTypePresentByTypeNode,
|
|
75
|
+
isMetavariablePresentByName,
|
|
70
76
|
findLabelByLabelMetavariableNode,
|
|
71
77
|
findRuleByLabelMetavariableNode,
|
|
72
78
|
findAxiomByLabelMetavariableNode,
|
|
@@ -79,7 +79,7 @@ function checkReleaseContextCreated(releaseContext, dependency, context) {
|
|
|
79
79
|
dependencyName = dependency.getName(),
|
|
80
80
|
releaseName = dependencyName; ///
|
|
81
81
|
|
|
82
|
-
log.error(`The '${releaseName}' context could not be created.
|
|
82
|
+
log.error(`The '${releaseName}' context could not be created. Perhaps the 'meta.json' file is missing or invalid or most likely one of the dependencies is missing or mis-versioned.`);
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
return releaseContextCreated;
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
import Metavariable from "../metavariable";
|
|
4
4
|
import MetavariableAssignment from "../assignment/metavariable";
|
|
5
5
|
|
|
6
|
+
import { first } from "../utilities/array";
|
|
6
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
|
+
import { nameFromMetavariableNode } from "../utilities/name";
|
|
7
9
|
|
|
8
|
-
const
|
|
10
|
+
const termNodeQuery = nodeQuery("/argument/term"),
|
|
11
|
+
typeNodeQuery = nodeQuery("/argument/type"),
|
|
9
12
|
argumentNodeQuery = nodeQuery("/metavariable/argument!");
|
|
10
13
|
|
|
11
14
|
export default function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
@@ -15,17 +18,38 @@ export default function verifyMetavariable(metavariableNode, metaTypeNode, fileC
|
|
|
15
18
|
|
|
16
19
|
fileContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
17
20
|
|
|
18
|
-
const
|
|
21
|
+
const name = nameFromMetavariableNode(metavariableNode),
|
|
22
|
+
metavariablePresent = fileContext.isMetavariablePresentByName(name);
|
|
19
23
|
|
|
20
24
|
if (metavariablePresent) {
|
|
21
25
|
fileContext.debug(`The metavariable '${metavariableString}' is already present.`, metavariableNode);
|
|
22
26
|
} else {
|
|
23
|
-
const
|
|
24
|
-
|
|
27
|
+
const termTypes = [],
|
|
28
|
+
metaTypes = [],
|
|
29
|
+
argumentNode = argumentNodeQuery(metavariableNode),
|
|
30
|
+
argumentVerified = verifyArgument(argumentNode, termTypes, fileContext),
|
|
31
|
+
metaTypeVerified = verifyMetaType(metaTypeNode, metaTypes, fileContext);
|
|
25
32
|
|
|
26
|
-
if (argumentVerified) {
|
|
27
|
-
|
|
28
|
-
|
|
33
|
+
if (argumentVerified && metaTypeVerified) {
|
|
34
|
+
let termType,
|
|
35
|
+
metaType;
|
|
36
|
+
|
|
37
|
+
const firstMetaType = first(metaTypes);
|
|
38
|
+
|
|
39
|
+
metaType = firstMetaType; ///
|
|
40
|
+
|
|
41
|
+
const termTypesLength = termTypes.length;
|
|
42
|
+
|
|
43
|
+
if (termTypesLength === 0) {
|
|
44
|
+
termType = null;
|
|
45
|
+
} else {
|
|
46
|
+
const firstTermType = first(termTypes);
|
|
47
|
+
|
|
48
|
+
termType = firstTermType; ///
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const node = metavariableNode, ///
|
|
52
|
+
metavariable = Metavariable.fromNodeNameTermTypeAndMetaType(node, name, termType, metaType),
|
|
29
53
|
metavariableAssignment = MetavariableAssignment.fromMetavariable(metavariable),
|
|
30
54
|
metavariableAssigned = metavariableAssignment.assign(fileContext);
|
|
31
55
|
|
|
@@ -64,27 +88,51 @@ export function verifyStandaloneMetavariable(metavariableNode, localMetaContext,
|
|
|
64
88
|
return standaloneMetavariableVerified;
|
|
65
89
|
}
|
|
66
90
|
|
|
67
|
-
function verifyArgument(
|
|
91
|
+
function verifyArgument(argumentNode, termTypes, fileContext) {
|
|
68
92
|
let argumentVerified = false;
|
|
69
93
|
|
|
70
94
|
if (argumentNode === null) {
|
|
71
95
|
argumentVerified = true;
|
|
72
96
|
} else {
|
|
97
|
+
const termNode = termNodeQuery(argumentNode);
|
|
98
|
+
|
|
99
|
+
if (termNode === null) {
|
|
100
|
+
|
|
101
|
+
} else {
|
|
102
|
+
const termString = fileContext.nodeAsString(termNode);
|
|
103
|
+
|
|
104
|
+
fileContext.debug(`The '${termString}' term was found when a type should have been present.`, termNode);
|
|
105
|
+
}
|
|
73
106
|
const typeNode = typeNodeQuery(argumentNode);
|
|
74
107
|
|
|
75
108
|
if (typeNode !== null) {
|
|
76
109
|
const type = fileContext.findTypeByTypeNode(typeNode);
|
|
77
110
|
|
|
78
111
|
if (type !== null) {
|
|
112
|
+
const termType = type; ///
|
|
113
|
+
|
|
114
|
+
termTypes.push(termType);
|
|
115
|
+
|
|
79
116
|
argumentVerified = true;
|
|
80
117
|
} else {
|
|
81
|
-
const typeString = fileContext.nodeAsString(typeNode)
|
|
82
|
-
metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
118
|
+
const typeString = fileContext.nodeAsString(typeNode);
|
|
83
119
|
|
|
84
|
-
fileContext.debug(`The '${
|
|
120
|
+
fileContext.debug(`The '${typeString}' type is not present.`, typeNode);
|
|
85
121
|
}
|
|
86
122
|
}
|
|
87
123
|
}
|
|
88
124
|
|
|
89
125
|
return argumentVerified;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function verifyMetaType(metaTypeNode, metaTypes, fileContext) {
|
|
129
|
+
let metaTypeVerified;
|
|
130
|
+
|
|
131
|
+
const metaType = fileContext.findMetaTypeByMetaTypeNode(metaTypeNode);
|
|
132
|
+
|
|
133
|
+
metaTypes.push(metaType);
|
|
134
|
+
|
|
135
|
+
metaTypeVerified = true;
|
|
136
|
+
|
|
137
|
+
return metaTypeVerified;
|
|
90
138
|
}
|