occam-verify-cli 0.0.536 → 0.0.538

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.
@@ -3,6 +3,7 @@
3
3
  import Verifier from "../verifier";
4
4
  import Variable from "../variable";
5
5
  import Equality from "../equality";
6
+ import Assignment from "../assignment";
6
7
  import verifyTerm from "../verify/term";
7
8
  import equalityCombinator from "../ocmbinator/equality";
8
9
  import bracketedCombinator from "../ocmbinator/bracketed";
@@ -39,7 +40,7 @@ export default function verifyStatement(statementNode, assignments, derived, con
39
40
  }
40
41
 
41
42
  if (!statementVerified) {
42
- const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, derived, context);
43
+ const statementVerifiedAsEquality = verifyStatementAsEquality(statementNode, assignments, derived, context);
43
44
 
44
45
  statementVerified = statementVerifiedAsEquality; //
45
46
  }
@@ -211,7 +212,7 @@ function verifyStatementAsTypeAssertion(statementNode, assignments, derived, con
211
212
  return statementVerifiedAsTypeAssertion;
212
213
  }
213
214
 
214
- function verifyStatementAsEquality(statementNode, derived, context) {
215
+ function verifyStatementAsEquality(statementNode, assignments, derived, context) {
215
216
  let statementVerifiedAsEquality = false;
216
217
 
217
218
  const combinator = equalityCombinator, ///
@@ -255,17 +256,19 @@ function verifyStatementAsEquality(statementNode, derived, context) {
255
256
  if (leftVariableTypeSuperTypeOfRightVariableType) {
256
257
  const type = rightVariableType, ///
257
258
  name = leftVariableName, ///
258
- variable = Variable.fromTypeAndName(type, name);
259
+ variable = Variable.fromTypeAndName(type, name),
260
+ assignment = Assignment.fromVariable(variable);
259
261
 
260
- context.addVariable(variable);
262
+ assignments.push(assignment);
261
263
  }
262
264
 
263
265
  if (rightVariableTypeSuperTypeOfLeftVariableType) {
264
266
  const type = leftVariableType, ///
265
267
  name = rightVariableName, ///
266
- variable = Variable.fromTypeAndName(type, name);
268
+ variable = Variable.fromTypeAndName(type, name),
269
+ assignment = Assignment.fromVariable(variable);
267
270
 
268
- context.addVariable(variable);
271
+ assignments.push(assignment);
269
272
  }
270
273
 
271
274
  statementVerifiedAsEquality = true;
@@ -279,17 +282,24 @@ function verifyStatementAsEquality(statementNode, derived, context) {
279
282
  firstVariable = first(variables),
280
283
  leftVariable = firstVariable, ///
281
284
  rightTermType = firstType, ///
285
+ leftVariableName = leftVariable.getName(),
282
286
  leftVariableType = leftVariable.getType(),
283
287
  leftVariableTypeEqualToOrSuperTypeOfRightTermType = leftVariableType.isEqualToOrSuperTypeOf(rightTermType);
284
288
 
285
289
  if (!leftVariableTypeEqualToOrSuperTypeOfRightTermType) {
286
290
  const rightTermString = context.nodeAsString(rightTermNode),
287
- leftVariableName = leftVariable.getName(),
288
291
  rightTermTypeName = rightTermType.getName(),
289
292
  leftVariableTypeName = leftVariableType.getName();
290
293
 
291
294
  context.error(`The left '${leftVariableName}' variable's '${leftVariableTypeName}' type is not equal to or a super-type of the right '${rightTermString}' term's '${rightTermTypeName}' type.`, statementNode);
292
295
  } else {
296
+ const type = rightTermType, ///
297
+ name = leftVariableName, ///
298
+ variable = Variable.fromTypeAndName(type, name),
299
+ assignment = Assignment.fromVariable(variable);
300
+
301
+ assignments.push(assignment);
302
+
293
303
  statementVerifiedAsEquality = true;
294
304
  }
295
305
  } else if (rightTermVerifiedAsVariable) {
@@ -301,17 +311,24 @@ function verifyStatementAsEquality(statementNode, derived, context) {
301
311
  firstVariable = first(variables),
302
312
  leftTermType = firstType, ///
303
313
  rightVariable = firstVariable, ///
314
+ rightVariableName = rightVariable.getName(),
304
315
  rightVariableType = rightVariable.getType(),
305
316
  rightVariableTypeEqualToOrSuperTypeOfRightTermType = rightVariableType.isEqualToOrSuperTypeOf(leftTermType);
306
317
 
307
318
  if (!rightVariableTypeEqualToOrSuperTypeOfRightTermType) {
308
319
  const leftTermString = context.nodeAsString(leftTermNode),
309
- rightVariableName = rightVariable.getName(),
310
320
  leftTermTypeName = leftTermType.getName(),
311
321
  rightVariableTypeName = rightVariableType.getName();
312
322
 
313
323
  context.error(`The right '${rightVariableName}' variable's '${rightVariableTypeName}' type is not equal to or a super-type of the left '${leftTermString}' term's '${leftTermTypeName}' type.`, statementNode);
314
324
  } else {
325
+ const type = leftTermType, ///
326
+ name = rightVariableName, ///
327
+ variable = Variable.fromTypeAndName(type, name),
328
+ assignment = Assignment.fromVariable(variable);
329
+
330
+ assignments.push(assignment);
331
+
315
332
  statementVerifiedAsEquality = true;
316
333
  }
317
334
  } else {