occam-verify-cli 0.0.535 → 0.0.536

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.
@@ -12,7 +12,7 @@ const metavariableNodeQuery = nodeQuery('/metastatement/metavariable!'),
12
12
 
13
13
  export default class StatementForMetavariableVerifier extends Verifier {
14
14
  verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
15
- let nonTerminalNodeVerifies = false;
15
+ let nonTerminalNodeVerified = false;
16
16
 
17
17
  const nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
18
18
  nonTerminalNodeBRuleNameMetaArgumentRuleName = (nonTerminalNodeBRuleName === META_ARGUMENT_RULE_NAME);
@@ -23,7 +23,7 @@ export default class StatementForMetavariableVerifier extends Verifier {
23
23
 
24
24
  nonTerminalNodeB = metaArgumentChildNodeB; ///
25
25
 
26
- nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
26
+ nonTerminalNodeVerified = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
27
27
  } else {
28
28
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
29
29
  nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(),
@@ -33,10 +33,10 @@ export default class StatementForMetavariableVerifier extends Verifier {
33
33
  if (nonTerminalNodeARuleNameMetastatementRuleName && nonTerminalNodeBRuleNameStatementRuleName) {
34
34
  const metastatementNodeA = nonTerminalNodeA, ///
35
35
  statementNodeB = nonTerminalNodeB, ///
36
- statementNodeVerifies = this.verifyStatementNode(metastatementNodeA, statementNodeB, substitutions);
36
+ statementNodeVerified = this.verifyStatementNode(metastatementNodeA, statementNodeB, substitutions);
37
37
 
38
- if (statementNodeVerifies) {
39
- nonTerminalNodeVerifies = true; ///
38
+ if (statementNodeVerified) {
39
+ nonTerminalNodeVerified = true; ///
40
40
  } else {
41
41
  const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
42
42
  nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
@@ -44,32 +44,32 @@ export default class StatementForMetavariableVerifier extends Verifier {
44
44
  nodesB = nonTerminalNodeBChildNodes, ///
45
45
  nodesMatch = this.verifyNodes(nodesA, nodesB, substitutions);
46
46
 
47
- nonTerminalNodeVerifies = nodesMatch; ///
47
+ nonTerminalNodeVerified = nodesMatch; ///
48
48
  }
49
49
  } else if (nonTerminalNodeBRuleName === nonTerminalNodeARuleName) {
50
- nonTerminalNodeVerifies = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
50
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
51
51
  }
52
52
  }
53
53
 
54
- return nonTerminalNodeVerifies;
54
+ return nonTerminalNodeVerified;
55
55
  }
56
56
 
57
57
  verifyStatementNode(metastatementNodeA, statementNodeB, substitutions) {
58
- let statementNodeVerifies = false;
58
+ let statementNodeVerified = false;
59
59
 
60
60
  const metavariableNodeA = metavariableNodeQuery(metastatementNodeA);
61
61
 
62
62
  if (metavariableNodeA !== null) {
63
- const metavariableNodeVerifies = this.verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions);
63
+ const metavariableNodeVerified = this.verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions);
64
64
 
65
- statementNodeVerifies = metavariableNodeVerifies; ///
65
+ statementNodeVerified = metavariableNodeVerified; ///
66
66
  }
67
67
 
68
- return statementNodeVerifies;
68
+ return statementNodeVerified;
69
69
  }
70
70
 
71
71
  verifyMetavariableNode(metavariableNodeA, statementNodeB, substitutions) {
72
- let metavariableNodeVerifies;
72
+ let metavariableNodeVerified;
73
73
 
74
74
  const metavariableNameA = metavariableNameFromMetavariableNode(metavariableNodeA),
75
75
  substitution = substitutions.find((substitution) => {
@@ -84,7 +84,7 @@ export default class StatementForMetavariableVerifier extends Verifier {
84
84
  const statementNode = statementNodeB, ///
85
85
  statementNodeMatches = substitution.matchStatementNode(statementNode);
86
86
 
87
- metavariableNodeVerifies = statementNodeMatches; ///
87
+ metavariableNodeVerified = statementNodeMatches; ///
88
88
  } else {
89
89
  const { createSubstitutions } = this.constructor;
90
90
 
@@ -97,9 +97,9 @@ export default class StatementForMetavariableVerifier extends Verifier {
97
97
  substitutions.push(substitution);
98
98
  }
99
99
 
100
- metavariableNodeVerifies = true;
100
+ metavariableNodeVerified = true;
101
101
  }
102
102
 
103
- return metavariableNodeVerifies;
103
+ return metavariableNodeVerified;
104
104
  }
105
105
  }
@@ -11,7 +11,7 @@ const variableNodeQuery = nodeQuery('/term/variable!');
11
11
 
12
12
  export default class TermForVariableVerifier extends Verifier {
13
13
  verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions) {
14
- let nonTerminalNodeVerifies = false;
14
+ let nonTerminalNodeVerified = false;
15
15
 
16
16
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(),
17
17
  nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName();
@@ -23,37 +23,37 @@ export default class TermForVariableVerifier extends Verifier {
23
23
  if (nonTerminalNodeARuleNameTermRuleName && nonTerminalNodeBRuleNameTermRuleName) {
24
24
  const termNodeA = nonTerminalNodeA, ///
25
25
  termNodeB = nonTerminalNodeB, ///
26
- termNodeVerifies = this.verifyTermNode(termNodeA, termNodeB, substitutions);
26
+ termNodeVerified = this.verifyTermNode(termNodeA, termNodeB, substitutions);
27
27
 
28
- if (termNodeVerifies) {
29
- nonTerminalNodeVerifies = true; ///
28
+ if (termNodeVerified) {
29
+ nonTerminalNodeVerified = true; ///
30
30
  } else {
31
- nonTerminalNodeVerifies = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
31
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
32
32
  }
33
33
  } else {
34
- nonTerminalNodeVerifies = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
34
+ nonTerminalNodeVerified = super.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions);
35
35
  }
36
36
  }
37
37
 
38
- return nonTerminalNodeVerifies;
38
+ return nonTerminalNodeVerified;
39
39
  }
40
40
 
41
41
  verifyTermNode(termNodeA, termNodeB, substitutions) {
42
- let termNodeVerifies = false;
42
+ let termNodeVerified = false;
43
43
 
44
44
  const variableNodeA = variableNodeQuery(termNodeA);
45
45
 
46
46
  if (variableNodeA !== null) {
47
- const variableVerifies = this.verifyVariableNode(variableNodeA, termNodeB, substitutions);
47
+ const variableVerified = this.verifyVariableNode(variableNodeA, termNodeB, substitutions);
48
48
 
49
- termNodeVerifies = variableVerifies; ///
49
+ termNodeVerified = variableVerified; ///
50
50
  }
51
51
 
52
- return termNodeVerifies;
52
+ return termNodeVerified;
53
53
  }
54
54
 
55
55
  verifyVariableNode(variableNodeB, termNodeB, substitutions) {
56
- let variableVerifies;
56
+ let variableVerified;
57
57
 
58
58
  const variableNameA = variableNameFromVariableNode(variableNodeB),
59
59
  substitution = substitutions.find((substitution) => {
@@ -66,9 +66,9 @@ export default class TermForVariableVerifier extends Verifier {
66
66
 
67
67
  if (substitution !== null) {
68
68
  const termNode = termNodeB, ///
69
- substitutionNodesVerifies = substitution.matchTermNode(termNode);
69
+ substitutionNodesVerified = substitution.matchTermNode(termNode);
70
70
 
71
- variableVerifies = substitutionNodesVerifies; ///
71
+ variableVerified = substitutionNodesVerified; ///
72
72
  } else {
73
73
  const { createSubstitutions } = this.constructor;
74
74
 
@@ -81,9 +81,9 @@ export default class TermForVariableVerifier extends Verifier {
81
81
  substitutions.push(substitution);
82
82
  }
83
83
 
84
- variableVerifies = true;
84
+ variableVerified = true;
85
85
  }
86
86
 
87
- return variableVerifies;
87
+ return variableVerified;
88
88
  }
89
89
  }
package/src/verifier.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
3
  export default class Verifier {
4
- verifyNode(nodeA, nodeB, substitutions, context) {
5
- let nodeVerifies = false;
4
+ verifyNode(nodeA, nodeB, ...remainingArguments) {
5
+ let nodeVerified = false;
6
6
 
7
7
  const nodeATerminalNode = nodeA.isTerminalNode(),
8
8
  nodeBTerminalNode = nodeB.isTerminalNode();
@@ -11,22 +11,22 @@ export default class Verifier {
11
11
  if (nodeATerminalNode) {
12
12
  const terminalNodeA = nodeA, ///
13
13
  terminalNodeB = nodeB, ///
14
- terminalNodeVerifies = this.verifyTerminalNode(terminalNodeA, terminalNodeB);
14
+ terminalNodeVerified = this.verifyTerminalNode(terminalNodeA, terminalNodeB);
15
15
 
16
- nodeVerifies = terminalNodeVerifies; ///
16
+ nodeVerified = terminalNodeVerified; ///
17
17
  } else {
18
18
  const nonTerminalNodeA = nodeA, ///
19
19
  nonTerminalNodeB = nodeB, ///
20
- nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context);
20
+ nonTerminalNodeVerified = this.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments);
21
21
 
22
- nodeVerifies = nonTerminalNodeVerifies; ///
22
+ nodeVerified = nonTerminalNodeVerified; ///
23
23
  }
24
24
  }
25
25
 
26
- return nodeVerifies;
26
+ return nodeVerified;
27
27
  }
28
28
 
29
- verifyNodes(nodesA, nodesB, substitutions, context) {
29
+ verifyNodes(nodesA, nodesB, ...remainingArguments) {
30
30
  let nodesVerify = false;
31
31
 
32
32
  const nodesALength = nodesA.length,
@@ -35,9 +35,9 @@ export default class Verifier {
35
35
  if (nodesALength === nodesBLength) {
36
36
  nodesVerify = nodesA.every((nodeA, index) => {
37
37
  const nodeB = nodesB[index],
38
- nodeVerifies = this.verifyNode(nodeA, nodeB, substitutions, context);
38
+ nodeVerified = this.verifyNode(nodeA, nodeB, ...remainingArguments);
39
39
 
40
- if (nodeVerifies) {
40
+ if (nodeVerified) {
41
41
  return true;
42
42
  }
43
43
  })
@@ -46,15 +46,15 @@ export default class Verifier {
46
46
  return nodesVerify;
47
47
  }
48
48
 
49
- verifyTerminalNode(terminalNodeA, terminalNodeB, substitutions, context) {
49
+ verifyTerminalNode(terminalNodeA, terminalNodeB, ...remainingArguments) {
50
50
  const matches = terminalNodeA.match(terminalNodeB),
51
- terminalNodeVerifies = matches; ///
51
+ terminalNodeVerified = matches; ///
52
52
 
53
- return terminalNodeVerifies;
53
+ return terminalNodeVerified;
54
54
  }
55
55
 
56
- verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, context = null) {
57
- let nonTerminalNodeVerifies = false;
56
+ verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, ...remainingArguments) {
57
+ let nonTerminalNodeVerified = false;
58
58
 
59
59
  const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
60
60
  nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
@@ -64,11 +64,11 @@ export default class Verifier {
64
64
  nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
65
65
  nodesA = nonTerminalNodeAChildNodes, ///
66
66
  nodesB = nonTerminalNodeBChildNodes, ///
67
- nodesVerify = this.verifyNodes(nodesA, nodesB, substitutions, context);
67
+ nodesVerify = this.verifyNodes(nodesA, nodesB, ...remainingArguments);
68
68
 
69
- nonTerminalNodeVerifies = nodesVerify; ///
69
+ nonTerminalNodeVerified = nodesVerify; ///
70
70
  }
71
71
 
72
- return nonTerminalNodeVerifies;
72
+ return nonTerminalNodeVerified;
73
73
  }
74
74
  }
@@ -31,7 +31,7 @@ export default function verifyTypeAssertion(typeAssertionNode, assignments, deri
31
31
  }
32
32
 
33
33
  if (!typeAssertionVerified) {
34
- const termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, context);
34
+ const termTypeAssertionVerified = verifyTermTypeAssertion(typeAssertionNode, derived, context);
35
35
 
36
36
  typeAssertionVerified = termTypeAssertionVerified; ///
37
37
  }
@@ -66,13 +66,13 @@ function verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, co
66
66
  variableType = variable.getType();
67
67
 
68
68
  if (derived) {
69
- const variableTypeEqualToOrSubTypeOfAssertedType = variableType.isEqualToOrSubTypeOf(assertedType);
69
+ const assertedTypeEqualToOrSuperTypeOfVariableType = assertedType.isEqualToOrSuperTypeOf(variableType);
70
70
 
71
- if (!variableTypeEqualToOrSubTypeOfAssertedType) {
71
+ if (!assertedTypeEqualToOrSuperTypeOfVariableType) {
72
72
  const assertedTypeName = assertedType.getName(),
73
73
  variableTypeName = variableType.getName();
74
74
 
75
- context.error(`The '${variableName}' variable's '${variableTypeName}' type is not equal to or a sub-type of the '${assertedTypeName}' asserted type.`, typeAssertionNode);
75
+ context.error(`The '${assertedTypeName}' asserted type is not equal to or a super-type of the '${variableName}' variable's '${variableTypeName}' type.`, typeAssertionNode);
76
76
  } else {
77
77
  variableTypeAssertionVerified = true;
78
78
  }
@@ -101,7 +101,7 @@ function verifyVariableTypeAssertion(typeAssertionNode, assignments, derived, co
101
101
  return variableTypeAssertionVerified;
102
102
  }
103
103
 
104
- function verifyTermTypeAssertion(typeAssertionNode, context) {
104
+ function verifyTermTypeAssertion(typeAssertionNode, derived, context) {
105
105
  let termTypeAssertionVerified = false;
106
106
 
107
107
  const types = [],
@@ -118,17 +118,32 @@ function verifyTermTypeAssertion(typeAssertionNode, context) {
118
118
  context.error(`The '${assertedTypeName}' asserted type is not present.`, typeAssertionNode);
119
119
  } else {
120
120
  const firstType = first(types),
121
- termType = firstType, ///
122
- termTypeIsEqualToAssertedType = termType.isEqualTo(assertedType);
121
+ termType = firstType; ///
123
122
 
124
- if (!termTypeIsEqualToAssertedType) {
125
- const termString = context.nodeAsString(termNode),
126
- termTypeName = termType.getName(),
127
- assertedTypeName = assertedType.getName();
123
+ if (derived) {
124
+ const assertedTypeIsEqualToOrSuperTypeOfTermType = assertedType.isEqualToOrSuperTypeOf(termType);
125
+
126
+ if (!assertedTypeIsEqualToOrSuperTypeOfTermType) {
127
+ const termString = context.nodeAsString(termNode),
128
+ termTypeName = termType.getName(),
129
+ assertedTypeName = assertedType.getName();
128
130
 
129
- context.error(`The '${assertedTypeName}' asserted type is not equal to the '${termString}' term's '${termTypeName}' type.`, typeAssertionNode);
131
+ context.error(`The '${assertedTypeName}' asserted type is not equal to or a super-type of the '${termString}' term's '${termTypeName}' type.`, typeAssertionNode);
132
+ } else {
133
+ termTypeAssertionVerified = true;
134
+ }
130
135
  } else {
131
- termTypeAssertionVerified = true;
136
+ const assertedTypeIsEqualToOrSubTypeOfTermType = assertedType.isEqualToOrSubTypeOf(termType);
137
+
138
+ if (!assertedTypeIsEqualToOrSubTypeOfTermType) {
139
+ const termString = context.nodeAsString(termNode),
140
+ termTypeName = termType.getName(),
141
+ assertedTypeName = assertedType.getName();
142
+
143
+ context.error(`The '${assertedTypeName}' asserted type is not equal to or a sub-type of the '${termString}' term's '${termTypeName}' type.`, typeAssertionNode);
144
+ } else {
145
+ termTypeAssertionVerified = true;
146
+ }
132
147
  }
133
148
  }
134
149
  }