occam-verify-cli 0.0.309 → 0.0.311
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/abbreviations.js +2 -4
- package/bin/main.js +10 -10
- package/bin/options.js +1 -3
- package/bin/utilities/logging.js +42 -0
- package/bin/utilities/release.js +77 -0
- package/lib/context/file.js +33 -16
- package/lib/context/metaproof.js +13 -13
- package/lib/context/proof.js +13 -13
- package/lib/context/release.js +37 -68
- package/lib/mixins/log.js +41 -0
- package/lib/utilities/customGrammar.js +32 -0
- package/lib/utilities/tokens.js +63 -0
- package/lib/verify/assertion/type.js +4 -4
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/label.js +2 -2
- package/lib/verify/metastatement/qualified.js +2 -2
- package/lib/verify/metastatement/unqualified.js +2 -2
- package/lib/verify/release.js +8 -9
- package/lib/verify/rule.js +3 -3
- package/lib/verify/statement.js +3 -3
- package/lib/verify/statementAsCombinator.js +4 -4
- package/lib/verify/term.js +2 -2
- package/lib/verify/termAsConstructor.js +7 -7
- package/lib/verify/termAsVariable.js +2 -2
- package/lib/verify/type.js +5 -5
- package/lib/verify/variable.js +4 -4
- package/package.json +2 -2
- package/src/context/file.js +26 -10
- package/src/context/metaproof.js +6 -6
- package/src/context/proof.js +6 -6
- package/src/context/release.js +37 -58
- package/src/mixins/log.js +28 -0
- package/src/utilities/customGrammar.js +27 -0
- package/src/utilities/tokens.js +67 -0
- package/src/verify/assertion/type.js +3 -3
- package/src/verify/axiom.js +2 -2
- package/src/verify/label.js +1 -1
- package/src/verify/metastatement/qualified.js +1 -1
- package/src/verify/metastatement/unqualified.js +1 -1
- package/src/verify/release.js +8 -11
- package/src/verify/rule.js +2 -2
- package/src/verify/statement.js +2 -2
- package/src/verify/statementAsCombinator.js +3 -3
- package/src/verify/term.js +1 -1
- package/src/verify/termAsConstructor.js +6 -6
- package/src/verify/termAsVariable.js +1 -1
- package/src/verify/type.js +4 -4
- package/src/verify/variable.js +3 -3
- package/bin/loadReleaseContexts.js +0 -68
|
@@ -15,7 +15,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
|
15
15
|
|
|
16
16
|
const termString = nodeAsString(termNode);
|
|
17
17
|
|
|
18
|
-
context.debug(`Verifying the '${termString}' term as a constructor
|
|
18
|
+
context.debug(`Verifying the '${termString}' term as a constructor...`, termNode);
|
|
19
19
|
|
|
20
20
|
const nonTerminalNode = termNode, ///
|
|
21
21
|
childNodes = nonTerminalNode.getChildNodes(),
|
|
@@ -36,7 +36,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
|
36
36
|
} else {
|
|
37
37
|
const termString = nodeAsString(termNode);
|
|
38
38
|
|
|
39
|
-
context.error(`The '${termString}' constructor's '${typeName}' type is missing
|
|
39
|
+
context.error(`The '${termString}' constructor's '${typeName}' type is missing.`, termNode);
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -48,7 +48,7 @@ export default function verifyTermAsConstructor(termNode, typeNode, context) {
|
|
|
48
48
|
|
|
49
49
|
const termString = nodeAsString(termNode);
|
|
50
50
|
|
|
51
|
-
context.info(`Verified the '${termString}' constructor
|
|
51
|
+
context.info(`Verified the '${termString}' constructor.`, termNode);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
return termVerifiedAsConstructor;
|
|
@@ -121,7 +121,7 @@ function verifyNonTerminalNode(nonTerminalNode, context) {
|
|
|
121
121
|
if (type !== null) {
|
|
122
122
|
const termString = nodeAsString(termNode);
|
|
123
123
|
|
|
124
|
-
context.error(`The type of the constructor's compound '${termString}' term node is not null
|
|
124
|
+
context.error(`The type of the constructor's compound '${termString}' term node is not null.`, termNode);
|
|
125
125
|
} else {
|
|
126
126
|
nonTerminalNodeVerified = true; ///
|
|
127
127
|
}
|
|
@@ -151,13 +151,13 @@ function verifyArgumentNode(argumentNode, context) {
|
|
|
151
151
|
if (typeNode === null) {
|
|
152
152
|
const argumentString = nodeAsString(argumentNode);
|
|
153
153
|
|
|
154
|
-
context.error(`The ${argumentString} argument should be a type
|
|
154
|
+
context.error(`The ${argumentString} argument should be a type.`, argumentNode);
|
|
155
155
|
} else {
|
|
156
156
|
const typeName = typeNameFromTypeNode(typeNode),
|
|
157
157
|
typePresent = context.isTypePresentByTypeName(typeName);
|
|
158
158
|
|
|
159
159
|
if (!typePresent) {
|
|
160
|
-
context.error(`The type '${typeName}' is missing
|
|
160
|
+
context.error(`The type '${typeName}' is missing.`, typeNode);
|
|
161
161
|
} else {
|
|
162
162
|
typeNodeVerified = true;
|
|
163
163
|
}
|
|
@@ -14,7 +14,7 @@ export default function verifyTermAsVariable(termNode, types, names, values, con
|
|
|
14
14
|
variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
15
15
|
|
|
16
16
|
if (!variablePresent) {
|
|
17
|
-
context.error(`The ${variableName} variable is not present
|
|
17
|
+
context.error(`The ${variableName} variable is not present.`, variableNode)
|
|
18
18
|
} else {
|
|
19
19
|
const variable = context.findVariableByVariableName(variableName),
|
|
20
20
|
type = variable.getType(),
|
package/src/verify/type.js
CHANGED
|
@@ -11,7 +11,7 @@ export default function verifyType(typeNode, superTypeNode, context) {
|
|
|
11
11
|
typePresent = context.isTypePresentByTypeName(typeName);
|
|
12
12
|
|
|
13
13
|
if (typePresent) {
|
|
14
|
-
context.error(`The type '${typeName}' is already present
|
|
14
|
+
context.error(`The type '${typeName}' is already present.`, typeNode);
|
|
15
15
|
} else {
|
|
16
16
|
const superTypeName = typeNameFromTypeNode(superTypeNode);
|
|
17
17
|
|
|
@@ -23,12 +23,12 @@ export default function verifyType(typeNode, superTypeNode, context) {
|
|
|
23
23
|
|
|
24
24
|
typeVerified = true;
|
|
25
25
|
|
|
26
|
-
context.info(`Verified the '${typeString}' type
|
|
26
|
+
context.info(`Verified the '${typeString}' type.`, typeNode);
|
|
27
27
|
} else {
|
|
28
28
|
const superType = context.findTypeByTypeName(superTypeName);
|
|
29
29
|
|
|
30
30
|
if (superType === null) {
|
|
31
|
-
context.error(`The super-type '${superTypeName}' is missing
|
|
31
|
+
context.error(`The super-type '${superTypeName}' is missing.`, typeNode);
|
|
32
32
|
} else {
|
|
33
33
|
const type = Type.fromTypeNameAndSuperType(typeName, superType),
|
|
34
34
|
typeString = type.asString();
|
|
@@ -37,7 +37,7 @@ export default function verifyType(typeNode, superTypeNode, context) {
|
|
|
37
37
|
|
|
38
38
|
typeVerified = true;
|
|
39
39
|
|
|
40
|
-
context.info(`Verified the '${typeString}' type
|
|
40
|
+
context.info(`Verified the '${typeString}' type.`, typeNode);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
package/src/verify/variable.js
CHANGED
|
@@ -11,7 +11,7 @@ export default function verifyVariable(variableNode, typeNode, context) {
|
|
|
11
11
|
variablePresent = context.isVariablePresentByVariableName(variableName);
|
|
12
12
|
|
|
13
13
|
if (variablePresent) {
|
|
14
|
-
context.error(`The variable '${variableName}' is already present
|
|
14
|
+
context.error(`The variable '${variableName}' is already present.`, variableNode);
|
|
15
15
|
} else {
|
|
16
16
|
let variable = null;
|
|
17
17
|
|
|
@@ -26,7 +26,7 @@ export default function verifyVariable(variableNode, typeNode, context) {
|
|
|
26
26
|
const type = context.findTypeByTypeName(typeName);
|
|
27
27
|
|
|
28
28
|
if (type === null) {
|
|
29
|
-
context.error(`The '${variableName}' variable's '${typeName}' type is missing
|
|
29
|
+
context.error(`The '${variableName}' variable's '${typeName}' type is missing.`, variableNode);
|
|
30
30
|
} else {
|
|
31
31
|
const name = variableName; ///
|
|
32
32
|
|
|
@@ -41,7 +41,7 @@ export default function verifyVariable(variableNode, typeNode, context) {
|
|
|
41
41
|
|
|
42
42
|
variableVerified = true;
|
|
43
43
|
|
|
44
|
-
context.info(`Verified the '${variableString}' variable
|
|
44
|
+
context.info(`Verified the '${variableString}' variable.`, variableNode);
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const { ReleaseContext } = require("../lib/index"),
|
|
4
|
-
{ fileSystemUtilities } = require("occam-file-system"),
|
|
5
|
-
{ arrayUtilities, loggingUtilities } = require("necessary");
|
|
6
|
-
|
|
7
|
-
const { PERIOD } = require("./constants");
|
|
8
|
-
|
|
9
|
-
const { log } = loggingUtilities,
|
|
10
|
-
{ first } = arrayUtilities,
|
|
11
|
-
{ loadRelease } = fileSystemUtilities;
|
|
12
|
-
|
|
13
|
-
function loadReleaseContexts(releaseName, releaseContextMap = {}, dependentReleaseNames = []) {
|
|
14
|
-
const cyclicDependencyExists = checkCyclicDependencyExists(releaseName, dependentReleaseNames);
|
|
15
|
-
|
|
16
|
-
if (!cyclicDependencyExists) {
|
|
17
|
-
const releaseContext = releaseContextMap[releaseName] || null;
|
|
18
|
-
|
|
19
|
-
if (releaseContext === null) {
|
|
20
|
-
const topmostDirectoryName = releaseName, ///
|
|
21
|
-
projectsDirectoryPath = PERIOD,
|
|
22
|
-
release = loadRelease(topmostDirectoryName, projectsDirectoryPath);
|
|
23
|
-
|
|
24
|
-
if (release === null) {
|
|
25
|
-
log.error(`The '${releaseName}' package cannot be loaded.`);
|
|
26
|
-
} else {
|
|
27
|
-
const releaseContext = ReleaseContext.fromLogAndRelease(log, release);
|
|
28
|
-
|
|
29
|
-
releaseContextMap[releaseName] = releaseContext;
|
|
30
|
-
|
|
31
|
-
const dependencies = releaseContext.getDependencies(),
|
|
32
|
-
dependencyReleaseNames = dependencies.mapDependency((dependency) => {
|
|
33
|
-
const dependencyName = dependency.getName(),
|
|
34
|
-
dependencyReleaseName = dependencyName; ///
|
|
35
|
-
|
|
36
|
-
return dependencyReleaseName;
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
dependentReleaseNames = [ ...dependentReleaseNames, releaseName ]; ///
|
|
40
|
-
|
|
41
|
-
dependencyReleaseNames.forEach((dependencyReleaseName) => {
|
|
42
|
-
const releaseName = dependencyReleaseName; ///
|
|
43
|
-
|
|
44
|
-
loadReleaseContexts(releaseName, releaseContextMap, dependentReleaseNames);
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return releaseContextMap;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
module.exports = loadReleaseContexts;
|
|
54
|
-
|
|
55
|
-
function checkCyclicDependencyExists(releaseName, dependentReleaseNames) {
|
|
56
|
-
const dependentReleaseNamesIncludesReleaseName = dependentReleaseNames.includes(releaseName),
|
|
57
|
-
cyclicDependencyExists = dependentReleaseNamesIncludesReleaseName; ///
|
|
58
|
-
|
|
59
|
-
if (cyclicDependencyExists) {
|
|
60
|
-
const firstDependentReleaseName = first(dependentReleaseNames),
|
|
61
|
-
releaseNames = dependentReleaseNames.concat(firstDependentReleaseName),
|
|
62
|
-
releaseNamesString = releaseNames.join(`' -> '`);
|
|
63
|
-
|
|
64
|
-
log.error(`There is a cyclic dependency: '${releaseNamesString}'.`);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
return cyclicDependencyExists;
|
|
68
|
-
}
|