occam-verify-cli 0.0.524 → 0.0.525
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/equality.js +130 -7
- package/lib/verify/derivation.js +3 -3
- package/lib/verify/metastatement/qualified.js +6 -7
- package/lib/verify/metastatement/unqualified.js +2 -2
- package/lib/verify/metastatement.js +2 -2
- package/lib/verify/ruleDerivation.js +3 -3
- package/lib/verify/statement/qualified.js +3 -3
- package/lib/verify/statement/unqualified.js +2 -2
- package/lib/verify/statement.js +53 -35
- package/lib/verify/statementAsCombinator.js +27 -16
- package/lib/verify/termAsConstructor.js +17 -17
- package/package.json +1 -1
- package/src/equality.js +202 -5
- package/src/verify/derivation.js +4 -2
- package/src/verify/metastatement/qualified.js +5 -8
- package/src/verify/metastatement/unqualified.js +1 -1
- package/src/verify/metastatement.js +1 -1
- package/src/verify/ruleDerivation.js +4 -2
- package/src/verify/statement/qualified.js +3 -3
- package/src/verify/statement/unqualified.js +2 -1
- package/src/verify/statement.js +64 -35
- package/src/verify/statementAsCombinator.js +47 -24
- package/src/verify/termAsConstructor.js +22 -23
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Combinator from "../combinator";
|
|
4
|
+
import verifyTerm from "../verify/term";
|
|
5
|
+
import verifyStatement from "../verify/statement";
|
|
4
6
|
|
|
5
7
|
import { nodeAsString } from "../utilities/string";
|
|
6
8
|
import { typeNameFromTypeNode } from "../utilities/query";
|
|
7
|
-
import { TERM_RULE_NAME,
|
|
9
|
+
import { TYPE_RULE_NAME, TERM_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
|
|
8
10
|
|
|
9
11
|
export default function verifyStatementAsCombinator(statementNode, fileContext) {
|
|
10
12
|
let statementVerifiedAsCombinator = false;
|
|
@@ -58,29 +60,6 @@ function verifyNode(node, fileContext) {
|
|
|
58
60
|
return nodeVerified;
|
|
59
61
|
}
|
|
60
62
|
|
|
61
|
-
function verifyTypeNode(typeNode, fileContext) {
|
|
62
|
-
let typeNodeVerified = false;
|
|
63
|
-
|
|
64
|
-
const typeName = typeNameFromTypeNode(typeNode),
|
|
65
|
-
typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
66
|
-
|
|
67
|
-
if (!typePresent) {
|
|
68
|
-
fileContext.error(`The type '${typeName}' is missing.`);
|
|
69
|
-
} else {
|
|
70
|
-
typeNodeVerified = true;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return typeNodeVerified;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
function verifyTermNode(termNode, fileContext) {
|
|
77
|
-
let termNodeVerified = false;
|
|
78
|
-
|
|
79
|
-
debugger
|
|
80
|
-
|
|
81
|
-
return termNodeVerified;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
63
|
function verifyChildNodes(childNodes, fileContext) {
|
|
85
64
|
const childNodesVerified = childNodes.every((childNode) => {
|
|
86
65
|
const node = childNode, ///
|
|
@@ -124,6 +103,15 @@ function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
|
124
103
|
break;
|
|
125
104
|
}
|
|
126
105
|
|
|
106
|
+
case STATEMENT_RULE_NAME: {
|
|
107
|
+
const statmentNode = nonTerminalNode, ///
|
|
108
|
+
statmentNodeVerified = verifyStatementNode(statmentNode, fileContext);
|
|
109
|
+
|
|
110
|
+
nonTerminalNodeVerified = statmentNodeVerified; ///
|
|
111
|
+
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
|
|
127
115
|
default: {
|
|
128
116
|
const childNodes = nonTerminalNode.getChildNodes(),
|
|
129
117
|
childNodesVerified = verifyChildNodes(childNodes, fileContext);
|
|
@@ -136,3 +124,38 @@ function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
|
136
124
|
|
|
137
125
|
return nonTerminalNodeVerified;
|
|
138
126
|
}
|
|
127
|
+
|
|
128
|
+
function verifyTypeNode(typeNode, fileContext) {
|
|
129
|
+
let typeNodeVerified = false;
|
|
130
|
+
|
|
131
|
+
const typeName = typeNameFromTypeNode(typeNode),
|
|
132
|
+
typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
133
|
+
|
|
134
|
+
if (!typePresent) {
|
|
135
|
+
fileContext.error(`The type '${typeName}' is missing.`);
|
|
136
|
+
} else {
|
|
137
|
+
typeNodeVerified = true;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return typeNodeVerified;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
function verifyTermNode(termNode, fileContext) {
|
|
144
|
+
const types = [],
|
|
145
|
+
context = fileContext, ///
|
|
146
|
+
termVerified = verifyTerm(termNode, types, context),
|
|
147
|
+
termNodeVerified = termVerified; ///
|
|
148
|
+
|
|
149
|
+
return termNodeVerified;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function verifyStatementNode(statementNode, fileContext) {
|
|
153
|
+
const context = fileContext, ///
|
|
154
|
+
derived = false,
|
|
155
|
+
assertions = [],
|
|
156
|
+
statementVerified = verifyStatement(statementNode, assertions, derived, context),
|
|
157
|
+
statementNodeVerified = statementVerified; ///
|
|
158
|
+
|
|
159
|
+
return statementNodeVerified;
|
|
160
|
+
}
|
|
161
|
+
|
|
@@ -97,29 +97,6 @@ function verifyTerminalNode(terminalNode, fileContext) {
|
|
|
97
97
|
return terminalNodeVerified;
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
-
function verifyArgumentNode(argumentNode, fileContext) {
|
|
101
|
-
let typeNodeVerified = false;
|
|
102
|
-
|
|
103
|
-
const typeNode = typeNodeQuery(argumentNode);
|
|
104
|
-
|
|
105
|
-
if (typeNode === null) {
|
|
106
|
-
const argumentString = nodeAsString(argumentNode);
|
|
107
|
-
|
|
108
|
-
fileContext.error(`The ${argumentString} argument should be a type.`);
|
|
109
|
-
} else {
|
|
110
|
-
const typeName = typeNameFromTypeNode(typeNode),
|
|
111
|
-
typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
112
|
-
|
|
113
|
-
if (!typePresent) {
|
|
114
|
-
fileContext.error(`The type '${typeName}' is missing.`);
|
|
115
|
-
} else {
|
|
116
|
-
typeNodeVerified = true;
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return typeNodeVerified;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
100
|
function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
124
101
|
let nonTerminalNodeVerified;
|
|
125
102
|
|
|
@@ -170,3 +147,25 @@ function verifyNonTerminalNode(nonTerminalNode, fileContext) {
|
|
|
170
147
|
return nonTerminalNodeVerified;
|
|
171
148
|
}
|
|
172
149
|
|
|
150
|
+
function verifyArgumentNode(argumentNode, fileContext) {
|
|
151
|
+
let typeNodeVerified = false;
|
|
152
|
+
|
|
153
|
+
const typeNode = typeNodeQuery(argumentNode);
|
|
154
|
+
|
|
155
|
+
if (typeNode === null) {
|
|
156
|
+
const argumentString = nodeAsString(argumentNode);
|
|
157
|
+
|
|
158
|
+
fileContext.error(`The ${argumentString} argument should be a type.`);
|
|
159
|
+
} else {
|
|
160
|
+
const typeName = typeNameFromTypeNode(typeNode),
|
|
161
|
+
typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
162
|
+
|
|
163
|
+
if (!typePresent) {
|
|
164
|
+
fileContext.error(`The type '${typeName}' is missing.`);
|
|
165
|
+
} else {
|
|
166
|
+
typeNodeVerified = true;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
return typeNodeVerified;
|
|
171
|
+
}
|