occam-verify-cli 0.0.845 → 0.0.847

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.
Files changed (73) hide show
  1. package/lib/assignment/equality.js +4 -4
  2. package/lib/assignment/variable.js +4 -4
  3. package/lib/conclusion.js +5 -5
  4. package/lib/context/local.js +14 -1
  5. package/lib/equality.js +5 -3
  6. package/lib/equivalence.js +17 -17
  7. package/lib/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  8. package/lib/mixins/nodesVerifier/metaLevel.js +2 -2
  9. package/lib/premise.js +6 -5
  10. package/lib/term.js +9 -9
  11. package/lib/utilities/equivalences.js +14 -14
  12. package/lib/verifier/node/metastatement.js +5 -4
  13. package/lib/verifier/node/statementAsCombinator.js +6 -6
  14. package/lib/verifier/node/termAsConstructor.js +5 -5
  15. package/lib/verifier/nodes/metaLevel.js +7 -7
  16. package/lib/verifier/nodes/metaLevelToIntrinsicLevel.js +18 -19
  17. package/lib/verifier/nodes/statementAgainstCombinator.js +11 -11
  18. package/lib/verifier/nodes/substitution.js +13 -11
  19. package/lib/verifier/nodes/termAgainstConstructor.js +10 -10
  20. package/lib/verify/containment.js +2 -2
  21. package/lib/verify/defining.js +6 -6
  22. package/lib/verify/equality.js +17 -17
  23. package/lib/verify/givenType.js +6 -6
  24. package/lib/verify/givenVariable.js +6 -6
  25. package/lib/verify/metavariable.js +6 -6
  26. package/lib/verify/statement/qualified.js +13 -13
  27. package/lib/verify/statement/unqualified.js +2 -2
  28. package/lib/verify/statement.js +40 -40
  29. package/lib/verify/statementAsCombinator.js +2 -1
  30. package/lib/verify/term.js +30 -30
  31. package/lib/verify/termAndGivenType.js +7 -7
  32. package/lib/verify/termAsConstructor.js +3 -2
  33. package/lib/verify/terms.js +7 -7
  34. package/lib/verify/type.js +7 -7
  35. package/lib/verify/typeAssertion.js +19 -19
  36. package/lib/verify/variable.js +6 -6
  37. package/package.json +2 -2
  38. package/src/assignment/equality.js +5 -5
  39. package/src/assignment/variable.js +5 -5
  40. package/src/conclusion.js +6 -6
  41. package/src/context/local.js +12 -0
  42. package/src/equality.js +6 -4
  43. package/src/equivalence.js +16 -16
  44. package/src/mixins/nodesVerifier/intrinsiclevel.js +2 -2
  45. package/src/mixins/nodesVerifier/metaLevel.js +1 -1
  46. package/src/premise.js +9 -4
  47. package/src/term.js +8 -8
  48. package/src/utilities/equivalences.js +13 -13
  49. package/src/verifier/node/metastatement.js +8 -9
  50. package/src/verifier/node/statementAsCombinator.js +8 -11
  51. package/src/verifier/node/termAsConstructor.js +6 -8
  52. package/src/verifier/nodes/metaLevel.js +6 -6
  53. package/src/verifier/nodes/metaLevelToIntrinsicLevel.js +15 -19
  54. package/src/verifier/nodes/statementAgainstCombinator.js +10 -10
  55. package/src/verifier/nodes/substitution.js +18 -15
  56. package/src/verifier/nodes/termAgainstConstructor.js +9 -9
  57. package/src/verify/containment.js +1 -1
  58. package/src/verify/defining.js +5 -5
  59. package/src/verify/equality.js +16 -16
  60. package/src/verify/givenType.js +5 -5
  61. package/src/verify/givenVariable.js +5 -5
  62. package/src/verify/metavariable.js +5 -5
  63. package/src/verify/statement/qualified.js +12 -13
  64. package/src/verify/statement/unqualified.js +1 -2
  65. package/src/verify/statement.js +39 -39
  66. package/src/verify/statementAsCombinator.js +1 -0
  67. package/src/verify/term.js +29 -29
  68. package/src/verify/termAndGivenType.js +7 -7
  69. package/src/verify/termAsConstructor.js +3 -1
  70. package/src/verify/terms.js +7 -7
  71. package/src/verify/type.js +6 -6
  72. package/src/verify/typeAssertion.js +18 -18
  73. package/src/verify/variable.js +5 -5
@@ -41,14 +41,13 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
41
41
  if (qualifiedStatementVerified) {
42
42
  derived = false; ///
43
43
 
44
- const context = localContext, ///
45
- verifyQualifiedStatementFunctions = [
44
+ const verifyQualifiedStatementFunctions = [
46
45
  verifyQualifiedStatementAsEquality,
47
46
  verifyQualifiedStatementAsTypeAssertion
48
47
  ];
49
48
 
50
49
  qualifiedStatementVerified = verifyQualifiedStatementFunctions.every((verifyQualifiedStatementFunction) => { ///
51
- const qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, assignments, derived, context, () => {
50
+ const qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, assignments, derived, localContext, () => {
52
51
  const verifiedAhead = true;
53
52
 
54
53
  return verifiedAhead;
@@ -188,44 +187,44 @@ function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, refe
188
187
  return qualifiedStatementVerifiedAgainstConjecture;
189
188
  }
190
189
 
191
- function verifyQualifiedStatementAsEquality(qualifiedStatementNode, assignments, derived, context, verifyAhead) {
190
+ function verifyQualifiedStatementAsEquality(qualifiedStatementNode, assignments, derived, localContext, verifyAhead) {
192
191
  let statementVerifiedAsEquality = true; ///
193
192
 
194
193
  const equalityNode = equalityNodeQuery(qualifiedStatementNode);
195
194
 
196
195
  if (equalityNode !== null) {
197
- const qualifiedStatementString = context.nodeAsString(qualifiedStatementNode);
196
+ const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
198
197
 
199
- context.trace(`Verifying the '${qualifiedStatementString}' qualified statement as an equality...`, qualifiedStatementNode);
198
+ localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement as an equality...`, qualifiedStatementNode);
200
199
 
201
- const equalityVerified = verifyEquality(equalityNode, assignments, derived, context, verifyAhead);
200
+ const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext, verifyAhead);
202
201
 
203
202
  statementVerifiedAsEquality = equalityVerified; ///
204
203
 
205
204
  if (statementVerifiedAsEquality) {
206
- context.debug(`...verified the '${qualifiedStatementString}' qualified statement as an equality.`, qualifiedStatementNode);
205
+ localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement as an equality.`, qualifiedStatementNode);
207
206
  }
208
207
  }
209
208
 
210
209
  return statementVerifiedAsEquality;
211
210
  }
212
211
 
213
- function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignments, derived, context, verifyAhead) {
212
+ function verifyQualifiedStatementAsTypeAssertion(qualifiedStatementNode, assignments, derived, localContext, verifyAhead) {
214
213
  let statementVerifiedAsTypeAssertion = true; ///
215
214
 
216
215
  const typeAssertionNode = typeAssertionNodeQuery(qualifiedStatementNode);
217
216
 
218
217
  if (typeAssertionNode !== null) {
219
- const qualifiedStatementString = context.nodeAsString(qualifiedStatementNode);
218
+ const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
220
219
 
221
- context.trace(`Verifying the '${qualifiedStatementString}' qualified statement as a type assertion...`, qualifiedStatementNode);
220
+ localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement as a type assertion...`, qualifiedStatementNode);
222
221
 
223
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead);
222
+ const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext, verifyAhead);
224
223
 
225
224
  statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
226
225
 
227
226
  if (statementVerifiedAsTypeAssertion) {
228
- context.debug(`...verified the '${qualifiedStatementString}' qualified statement as a type assertion.`, qualifiedStatementNode);
227
+ localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement as a type assertion.`, qualifiedStatementNode);
229
228
  }
230
229
  }
231
230
 
@@ -23,8 +23,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
23
23
  }
24
24
 
25
25
  if (!unqualifiedStatementVerified) {
26
- const context = localContext, ///
27
- statementVerified = verifyStatement(statementNode, assignments, derived, context, () => {
26
+ const statementVerified = verifyStatement(statementNode, assignments, derived, localContext, () => {
28
27
  const verifiedAhead = true;
29
28
 
30
29
  return verifiedAhead;
@@ -17,12 +17,12 @@ const equalityNodeQuery = nodeQuery("/statement/equality!"),
17
17
  metaArgumentNodeQuery = nodeQuery("/statement/metaArgument!"),
18
18
  typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!");
19
19
 
20
- function verifyStatement(statementNode, assignments, derived, context, verifyAhead) {
20
+ function verifyStatement(statementNode, assignments, derived, localContext, verifyAhead) {
21
21
  let statementVerified;
22
22
 
23
- const statementString = context.nodeAsString(statementNode);
23
+ const statementString = localContext.nodeAsString(statementNode);
24
24
 
25
- context.trace(`Verifying the '${statementString}' statement...`, statementNode);
25
+ localContext.trace(`Verifying the '${statementString}' statement...`, statementNode);
26
26
 
27
27
  const verifyStatementFunctions = [
28
28
  verifyStatementAsEquality,
@@ -33,7 +33,7 @@ function verifyStatement(statementNode, assignments, derived, context, verifyAhe
33
33
  ];
34
34
 
35
35
  statementVerified = verifyStatementFunctions.some((verifyStatementFunction) => {
36
- const statementVerified = verifyStatementFunction(statementNode, assignments, derived, context, verifyAhead);
36
+ const statementVerified = verifyStatementFunction(statementNode, assignments, derived, localContext, verifyAhead);
37
37
 
38
38
  if (statementVerified) {
39
39
  return true;
@@ -41,27 +41,27 @@ function verifyStatement(statementNode, assignments, derived, context, verifyAhe
41
41
  });
42
42
 
43
43
  if (statementVerified) {
44
- context.debug(`...verified the '${statementString}' statement.`, statementNode);
44
+ localContext.debug(`...verified the '${statementString}' statement.`, statementNode);
45
45
  }
46
46
 
47
47
  return statementVerified;
48
48
  }
49
49
 
50
- export function verifyStandaloneStatement(statementNode, context, verifyAhead) {
50
+ export function verifyStandaloneStatement(statementNode, localContext, verifyAhead) {
51
51
  let standaloneStatementVerified;
52
52
 
53
- const statementString = context.nodeAsString(statementNode);
53
+ const statementString = localContext.nodeAsString(statementNode);
54
54
 
55
- context.trace(`Verifying the '${statementString}' standalone statement...`, statementNode);
55
+ localContext.trace(`Verifying the '${statementString}' standalone statement...`, statementNode);
56
56
 
57
57
  const derived = false,
58
58
  assignments = [],
59
- statementVerified = verifyStatement(statementNode, assignments, derived, context, verifyAhead);
59
+ statementVerified = verifyStatement(statementNode, assignments, derived, localContext, verifyAhead);
60
60
 
61
61
  standaloneStatementVerified = statementVerified; ///
62
62
 
63
63
  if (standaloneStatementVerified) {
64
- context.debug(`...verified the '${statementString}' standalone statement.`, statementNode);
64
+ localContext.debug(`...verified the '${statementString}' standalone statement.`, statementNode);
65
65
  }
66
66
 
67
67
  return standaloneStatementVerified;
@@ -73,86 +73,86 @@ Object.assign(statementAgainstCombinatorNodesVerifier, {
73
73
 
74
74
  export default verifyStatement;
75
75
 
76
- function verifyStatementAsEquality(statementNode, assignments, derived, context, verifyAhead) {
76
+ function verifyStatementAsEquality(statementNode, assignments, derived, localContext, verifyAhead) {
77
77
  let statementVerifiedAsEquality = false;
78
78
 
79
79
  const equalityNode = equalityNodeQuery(statementNode);
80
80
 
81
81
  if (equalityNode !== null) {
82
- const statementString = context.nodeAsString(statementNode);
82
+ const statementString = localContext.nodeAsString(statementNode);
83
83
 
84
- context.trace(`Verifying the '${statementString}' statement as an equality...`, statementNode);
84
+ localContext.trace(`Verifying the '${statementString}' statement as an equality...`, statementNode);
85
85
 
86
- const equalityVerified = verifyEquality(equalityNode, assignments, derived, context, verifyAhead);
86
+ const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext, verifyAhead);
87
87
 
88
88
  statementVerifiedAsEquality = equalityVerified; ///
89
89
 
90
90
  if (statementVerifiedAsEquality) {
91
- context.debug(`...verified the '${statementString}' statement as an equality.`, statementNode);
91
+ localContext.debug(`...verified the '${statementString}' statement as an equality.`, statementNode);
92
92
  }
93
93
  }
94
94
 
95
95
  return statementVerifiedAsEquality;
96
96
  }
97
97
 
98
- function verifyStatementAboutDefining(statementNode, assignments, derived, context, verifyAhead) {
98
+ function verifyStatementAboutDefining(statementNode, assignments, derived, localContext, verifyAhead) {
99
99
  let statementVerifiedAboutDefining = false;
100
100
 
101
101
  const definingNode = definingNodeQuery(statementNode);
102
102
 
103
103
  if (definingNode !== null) {
104
- const statementString = context.nodeAsString(statementNode);
104
+ const statementString = localContext.nodeAsString(statementNode);
105
105
 
106
- context.trace(`Verifying the '${statementString}' statement about defining...`, statementNode);
106
+ localContext.trace(`Verifying the '${statementString}' statement about defining...`, statementNode);
107
107
 
108
108
  const argumentNode = argumentNodeQuery(statementNode),
109
- definingVerified = verifyDefining(argumentNode, definingNode, context);
109
+ definingVerified = verifyDefining(argumentNode, definingNode, localContext);
110
110
 
111
111
  statementVerifiedAboutDefining = definingVerified; ///
112
112
 
113
113
  if (statementVerifiedAboutDefining) {
114
- context.debug(`...verified the '${statementString}' statement about defining.`, statementNode);
114
+ localContext.debug(`...verified the '${statementString}' statement about defining.`, statementNode);
115
115
  }
116
116
  }
117
117
 
118
118
  return statementVerifiedAboutDefining;
119
119
  }
120
120
 
121
- function verifyStatementAsTypeAssertion(statementNode, assignments, derived, context, verifyAhead) {
121
+ function verifyStatementAsTypeAssertion(statementNode, assignments, derived, localContext, verifyAhead) {
122
122
  let statementVerifiedAsTypeAssertion = false;
123
123
 
124
124
  const typeAssertionNode = typeAssertionNodeQuery(statementNode);
125
125
 
126
126
  if (typeAssertionNode !== null) {
127
- const statementString = context.nodeAsString(statementNode);
127
+ const statementString = localContext.nodeAsString(statementNode);
128
128
 
129
- context.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
129
+ localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
130
130
 
131
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, context, verifyAhead);
131
+ const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext, verifyAhead);
132
132
 
133
133
  statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
134
134
 
135
135
  if (statementVerifiedAsTypeAssertion) {
136
- context.debug(`...verified the '${statementString}' statement as a type assertion.`, statementNode);
136
+ localContext.debug(`...verified the '${statementString}' statement as a type assertion.`, statementNode);
137
137
  }
138
138
  }
139
139
 
140
140
  return statementVerifiedAsTypeAssertion;
141
141
  }
142
142
 
143
- function verifyStatementAboutContainment(statementNode, assignments, derived, context, verifyAhead) {
143
+ function verifyStatementAboutContainment(statementNode, assignments, derived, localContext, verifyAhead) {
144
144
  let statementVerifiedAboutContainment = false;
145
145
 
146
146
  const containmentNode = containmentNodeQuery(statementNode);
147
147
 
148
148
  if (containmentNode !== null) {
149
- const statementString = context.nodeAsString(statementNode);
149
+ const statementString = localContext.nodeAsString(statementNode);
150
150
 
151
- context.trace(`Verifying the '${statementString}' statement about containment...`, statementNode);
151
+ localContext.trace(`Verifying the '${statementString}' statement about containment...`, statementNode);
152
152
 
153
153
  const argumentNode = argumentNodeQuery(statementNode),
154
154
  metaArgumentNode = metaArgumentNodeQuery(statementNode),
155
- containmentVerified = verifyContainment(argumentNode, containmentNode, metaArgumentNode, context);
155
+ containmentVerified = verifyContainment(argumentNode, containmentNode, metaArgumentNode, localContext);
156
156
 
157
157
  if (containmentVerified) {
158
158
  statementNode = statementNodeQuery(metaArgumentNode); ///
@@ -165,7 +165,7 @@ function verifyStatementAboutContainment(statementNode, assignments, derived, co
165
165
  const statementVerified = verifyStatementFunctions.some((verifyStatementFunction) => {
166
166
  const derived = false,
167
167
  assignments = [],
168
- statementVerified = verifyStatementFunction(statementNode, assignments, derived, context, verifyAhead);
168
+ statementVerified = verifyStatementFunction(statementNode, assignments, derived, localContext, verifyAhead);
169
169
 
170
170
  if (statementVerified) {
171
171
  return true;
@@ -176,36 +176,36 @@ function verifyStatementAboutContainment(statementNode, assignments, derived, co
176
176
  }
177
177
 
178
178
  if (statementVerifiedAboutContainment) {
179
- context.debug(`...verified the '${statementString}' statement about containment.`, statementNode);
179
+ localContext.debug(`...verified the '${statementString}' statement about containment.`, statementNode);
180
180
  }
181
181
  }
182
182
 
183
183
  return statementVerifiedAboutContainment;
184
184
  }
185
185
 
186
- function verifyStatementAgainstCombinator(statementNode, combinator, context, verifyAhead) {
186
+ function verifyStatementAgainstCombinator(statementNode, combinator, localContext, verifyAhead) {
187
187
  let statementVerifiedAgainstCombinator;
188
188
 
189
- const statementString = context.nodeAsString(statementNode),
189
+ const statementString = localContext.nodeAsString(statementNode),
190
190
  combinatorString = combinator.getString();
191
191
 
192
- context.trace(`Verifying the '${statementString}' statement against the '${combinatorString}' combinator...`, statementNode);
192
+ localContext.trace(`Verifying the '${statementString}' statement against the '${combinatorString}' combinator...`, statementNode);
193
193
 
194
194
  const combinatorStatementNode = combinator.getStatementNode(),
195
195
  nonTerminalNodeA = statementNode, ///
196
196
  nonTerminalNodeB = combinatorStatementNode, ///
197
- nonTerminalNodeVerified = statementAgainstCombinatorNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, context, verifyAhead);
197
+ nonTerminalNodeVerified = statementAgainstCombinatorNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext, verifyAhead);
198
198
 
199
199
  statementVerifiedAgainstCombinator = nonTerminalNodeVerified; ///
200
200
 
201
201
  if (statementVerifiedAgainstCombinator) {
202
- context.debug(`...verified the '${statementString}' statement against the '${combinatorString}' combinator.`, statementNode);
202
+ localContext.debug(`...verified the '${statementString}' statement against the '${combinatorString}' combinator.`, statementNode);
203
203
  }
204
204
 
205
205
  return statementVerifiedAgainstCombinator;
206
206
  }
207
207
 
208
- function verifyStatementAgainstCombinators(statementNode, assignments, derived, context, verifyAhead) {
208
+ function verifyStatementAgainstCombinators(statementNode, assignments, derived, localContext, verifyAhead) {
209
209
  let statementVerifiedAgainstCombinators = false;
210
210
 
211
211
  const equalityNode = equalityNodeQuery(statementNode),
@@ -214,7 +214,7 @@ function verifyStatementAgainstCombinators(statementNode, assignments, derived,
214
214
  typeAssertionNode = typeAssertionNodeQuery(statementNode);
215
215
 
216
216
  if ((equalityNode === null) && (definingNode === null) && (containmentNode === null) && (typeAssertionNode === null)) {
217
- let combinators = context.getCombinators();
217
+ let combinators = localContext.getCombinators();
218
218
 
219
219
  combinators = [ ///
220
220
  bracketedCombinator,
@@ -222,7 +222,7 @@ function verifyStatementAgainstCombinators(statementNode, assignments, derived,
222
222
  ];
223
223
 
224
224
  statementVerifiedAgainstCombinators = combinators.some((combinator) => {
225
- const statementVerifiedAgainstCombinator = verifyStatementAgainstCombinator(statementNode, combinator, context, verifyAhead);
225
+ const statementVerifiedAgainstCombinator = verifyStatementAgainstCombinator(statementNode, combinator, localContext, verifyAhead);
226
226
 
227
227
  if (statementVerifiedAgainstCombinator) {
228
228
  return true;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Combinator from "../combinator";
4
+ import LocalContext from "../context/local";
4
5
  import statementAsCombinatorNodeVerifier from "../verifier/node/statementAsCombinator";
5
6
 
6
7
  export default function verifyStatementAsCombinator(statementNode, fileContext) {
@@ -11,12 +11,12 @@ import { nodeQuery } from "../utilities/query";
11
11
  const termNodeQuery = nodeQuery("/term/argument/term"),
12
12
  variableNodeQuery = nodeQuery("/term/variable!");
13
13
 
14
- function verifyTerm(termNode, terms, context, verifyAhead) {
14
+ function verifyTerm(termNode, terms, localContext, verifyAhead) {
15
15
  let termVerified;
16
16
 
17
- const termString = context.nodeAsString(termNode);
17
+ const termString = localContext.nodeAsString(termNode);
18
18
 
19
- context.trace(`Verifying the '${termString}' term...`, termNode);
19
+ localContext.trace(`Verifying the '${termString}' term...`, termNode);
20
20
 
21
21
  const verifyTermFunctions = [
22
22
  verifyTermAsVariable,
@@ -25,7 +25,7 @@ function verifyTerm(termNode, terms, context, verifyAhead) {
25
25
  ];
26
26
 
27
27
  termVerified = verifyTermFunctions.some((verifyTermFunction) => {
28
- const termVerified = verifyTermFunction(termNode, terms, context, verifyAhead);
28
+ const termVerified = verifyTermFunction(termNode, terms, localContext, verifyAhead);
29
29
 
30
30
  if (termVerified) {
31
31
  return true;
@@ -33,26 +33,26 @@ function verifyTerm(termNode, terms, context, verifyAhead) {
33
33
  });
34
34
 
35
35
  if (termVerified) {
36
- context.debug(`...verified the '${termString}' term.`, termNode);
36
+ localContext.debug(`...verified the '${termString}' term.`, termNode);
37
37
  }
38
38
 
39
39
  return termVerified;
40
40
  }
41
41
 
42
- export function verifyStandaloneTerm(termNode, context, verifyAhead) {
42
+ export function verifyStandaloneTerm(termNode, localContext, verifyAhead) {
43
43
  let standaloneTermVerified;
44
44
 
45
- const termString = context.nodeAsString(termNode);
45
+ const termString = localContext.nodeAsString(termNode);
46
46
 
47
- context.trace(`Verifying the '${termString}' standalone term...`, termNode);
47
+ localContext.trace(`Verifying the '${termString}' standalone term...`, termNode);
48
48
 
49
49
  const terms = [],
50
- termVerified = verifyTerm(termNode, terms, context, verifyAhead);
50
+ termVerified = verifyTerm(termNode, terms, localContext, verifyAhead);
51
51
 
52
52
  standaloneTermVerified = termVerified; ///
53
53
 
54
54
  if (standaloneTermVerified) {
55
- context.debug(`...verified the '${termString}' standalone term.`, termNode);
55
+ localContext.debug(`...verified the '${termString}' standalone term.`, termNode);
56
56
  }
57
57
 
58
58
  return standaloneTermVerified;
@@ -64,18 +64,18 @@ Object.assign(termAgainstConstructorNodesVerifier, {
64
64
 
65
65
  export default verifyTerm;
66
66
 
67
- function verifyTermAsVariable(termNode, terms, context, verifyAhead) {
67
+ function verifyTermAsVariable(termNode, terms, localContext, verifyAhead) {
68
68
  let termVerifiedAsVariable = false;
69
69
 
70
70
  const variableNode = variableNodeQuery(termNode);
71
71
 
72
72
  if (variableNode !== null) {
73
- const termString = context.nodeAsString(termNode);
73
+ const termString = localContext.nodeAsString(termNode);
74
74
 
75
- context.trace(`Verifying the '${termString}' term as a variable...`, termNode);
75
+ localContext.trace(`Verifying the '${termString}' term as a variable...`, termNode);
76
76
 
77
77
  const variables = [],
78
- givenVariableVerified = verifyGivenVariable(variableNode, variables, context, () => {
78
+ givenVariableVerified = verifyGivenVariable(variableNode, variables, localContext, () => {
79
79
  let verifiedAhead;
80
80
 
81
81
  const firstVariable = first(variables),
@@ -97,25 +97,25 @@ function verifyTermAsVariable(termNode, terms, context, verifyAhead) {
97
97
  termVerifiedAsVariable = givenVariableVerified; ///
98
98
 
99
99
  if (termVerifiedAsVariable) {
100
- context.debug(`...verified the '${termString}' term as a variable.`, termNode);
100
+ localContext.debug(`...verified the '${termString}' term as a variable.`, termNode);
101
101
  }
102
102
  }
103
103
 
104
104
  return termVerifiedAsVariable;
105
105
  }
106
106
 
107
- function verifyTermAgainstConstructor(termNode, terms, constructor, context, verifyAhead) {
107
+ function verifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead) {
108
108
  let termVerifiedAgainstConstructor;
109
109
 
110
- const termString = context.nodeAsString(termNode),
110
+ const termString = localContext.nodeAsString(termNode),
111
111
  constructorString = constructor.getString();
112
112
 
113
- context.trace(`Verifying the '${termString}' term against the '${constructorString}' constructor...`, termNode);
113
+ localContext.trace(`Verifying the '${termString}' term against the '${constructorString}' constructor...`, termNode);
114
114
 
115
115
  const constructorTermNode = constructor.getTermNode(),
116
116
  nonTerminalNNdeA = termNode, ///
117
117
  nonTerminalNodeB = constructorTermNode, ///
118
- nodeVerified = termAgainstConstructorNodesVerifier.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, context, () => {
118
+ nodeVerified = termAgainstConstructorNodesVerifier.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, localContext, () => {
119
119
  let verifiedAhead;
120
120
 
121
121
  const type = constructor.getType(),
@@ -135,22 +135,22 @@ function verifyTermAgainstConstructor(termNode, terms, constructor, context, ver
135
135
  termVerifiedAgainstConstructor = nodeVerified; ///
136
136
 
137
137
  if (termVerifiedAgainstConstructor) {
138
- context.debug(`...verified the '${termString}' term against the '${constructorString}' constructor.`, termNode);
138
+ localContext.debug(`...verified the '${termString}' term against the '${constructorString}' constructor.`, termNode);
139
139
  }
140
140
 
141
141
  return termVerifiedAgainstConstructor;
142
142
  }
143
143
 
144
- function verifyTermAgainstConstructors(termNode, terms, context, verifyAhead) {
144
+ function verifyTermAgainstConstructors(termNode, terms, localContext, verifyAhead) {
145
145
  let termVerifiedAgainstConstructors = false;
146
146
 
147
147
  const variableNode = variableNodeQuery(termNode);
148
148
 
149
149
  if (variableNode === null) {
150
- const constructors = context.getConstructors();
150
+ const constructors = localContext.getConstructors();
151
151
 
152
152
  termVerifiedAgainstConstructors = constructors.some((constructor) => {
153
- const termVerifiedAgainstConstructor = verifyTermAgainstConstructor(termNode, terms, constructor, context, verifyAhead);
153
+ const termVerifiedAgainstConstructor = verifyTermAgainstConstructor(termNode, terms, constructor, localContext, verifyAhead);
154
154
 
155
155
  if (termVerifiedAgainstConstructor) {
156
156
  return true;
@@ -161,18 +161,18 @@ function verifyTermAgainstConstructors(termNode, terms, context, verifyAhead) {
161
161
  return termVerifiedAgainstConstructors;
162
162
  }
163
163
 
164
- function verifyTermAgainstBracketedConstructor(termNode, terms, context, verifyAhead) {
164
+ function verifyTermAgainstBracketedConstructor(termNode, terms, localContext, verifyAhead) {
165
165
  let termVerifiedAgainstBracketedConstructor;
166
166
 
167
- const termString = context.nodeAsString(termNode),
167
+ const termString = localContext.nodeAsString(termNode),
168
168
  bracketedConstructorString = bracketedConstructor.getString();
169
169
 
170
- context.trace(`Verifying the '${termString}' term against the '${bracketedConstructorString}' bracketed constructor...`, termNode);
170
+ localContext.trace(`Verifying the '${termString}' term against the '${bracketedConstructorString}' bracketed constructor...`, termNode);
171
171
 
172
172
  const bracketedConstructorTermNode = bracketedConstructor.getTermNode(),
173
173
  nonTerminalNNdeA = termNode, ///
174
174
  nonTerminalNodeB = bracketedConstructorTermNode, ///
175
- nodeVerified = termAgainstConstructorNodesVerifier.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, context, () => {
175
+ nodeVerified = termAgainstConstructorNodesVerifier.verifyNonTerminalNode(nonTerminalNNdeA, nonTerminalNodeB, localContext, () => {
176
176
  let verifiedAhead;
177
177
 
178
178
  const bracketedTermNode = termNode; ///
@@ -184,7 +184,7 @@ function verifyTermAgainstBracketedConstructor(termNode, terms, context, verifyA
184
184
  } else {
185
185
  let type;
186
186
 
187
- verifyTerm(termNode, terms, context, () => {
187
+ verifyTerm(termNode, terms, localContext, () => {
188
188
  let verifiedAhead;
189
189
 
190
190
  const firstTerm = first(terms),
@@ -218,7 +218,7 @@ function verifyTermAgainstBracketedConstructor(termNode, terms, context, verifyA
218
218
  termVerifiedAgainstBracketedConstructor = nodeVerified; ///
219
219
 
220
220
  if (termVerifiedAgainstBracketedConstructor) {
221
- context.debug(`...verified the '${termString}' term against the '${bracketedConstructorString}' constructor.`, termNode);
221
+ localContext.debug(`...verified the '${termString}' term against the '${bracketedConstructorString}' constructor.`, termNode);
222
222
  }
223
223
 
224
224
  return termVerifiedAgainstBracketedConstructor;
@@ -3,18 +3,18 @@
3
3
  import verifyTerm from "../verify/term";
4
4
  import verifyGivenType from "../verify/givenType";
5
5
 
6
- export default function verifyTermAndGivenType(termNode, typeNode, terms, types, context, verifyAhead) {
6
+ export default function verifyTermAndGivenType(termNode, typeNode, terms, types, localContext, verifyAhead) {
7
7
  let termAndGivenTypeVerified;
8
8
 
9
- const termString = context.nodeAsString(termNode),
10
- typeString = context.nodeAsString(typeNode);
9
+ const termString = localContext.nodeAsString(termNode),
10
+ typeString = localContext.nodeAsString(typeNode);
11
11
 
12
- context.trace(`Verifying the '${termString}' term and the given '${typeString}' type...`, termNode);
12
+ localContext.trace(`Verifying the '${termString}' term and the given '${typeString}' type...`, termNode);
13
13
 
14
- const termVerified = verifyTerm(termNode, terms, context, () => {
14
+ const termVerified = verifyTerm(termNode, terms, localContext, () => {
15
15
  let verifiedAhead;
16
16
 
17
- const givenTypeVerified = verifyGivenType(typeNode, types, context, () => {
17
+ const givenTypeVerified = verifyGivenType(typeNode, types, localContext, () => {
18
18
  let verifiedAhead;
19
19
 
20
20
  verifiedAhead = verifyAhead();
@@ -30,7 +30,7 @@ export default function verifyTermAndGivenType(termNode, typeNode, terms, types,
30
30
  termAndGivenTypeVerified = termVerified; ///
31
31
 
32
32
  if (termAndGivenTypeVerified) {
33
- context.debug(`...verified the '${termString}' term and the given '${typeString}' type.`, termNode);
33
+ localContext.debug(`...verified the '${termString}' term and the given '${typeString}' type.`, termNode);
34
34
  }
35
35
 
36
36
  return termAndGivenTypeVerified
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Constructor from "../constructor";
4
+ import LocalContext from "../context/local";
4
5
  import termAsConstructorNodeVerifier from "../verifier/node/termAsConstructor";
5
6
 
6
7
  import { typeNameFromTypeNode } from "../utilities/query";
@@ -14,7 +15,8 @@ export default function verifyTermAsConstructor(termNode, typeNode, fileContext)
14
15
 
15
16
  const nonTerminalNode = termNode, ///
16
17
  childNodes = nonTerminalNode.getChildNodes(),
17
- childNodesVerified = termAsConstructorNodeVerifier.verifyChildNodes(childNodes, fileContext, () => {
18
+ localContext = LocalContext.fromFileContext(fileContext),
19
+ childNodesVerified = termAsConstructorNodeVerifier.verifyChildNodes(childNodes, localContext, () => {
18
20
  const verifiedAhead = true;
19
21
 
20
22
  return verifiedAhead;
@@ -4,20 +4,20 @@ import verifyTerm from "../verify/term";
4
4
 
5
5
  import { first, second } from "../utilities/array";
6
6
 
7
- export default function verifyTerms(termNodes, terms, context, verifyAhead) {
7
+ export default function verifyTerms(termNodes, terms, localContext, verifyAhead) {
8
8
  let termsVerified;
9
9
 
10
10
  const firstTermNode = first(termNodes),
11
11
  secondTermNode = second(termNodes),
12
- firstTermString = context.nodeAsString(firstTermNode),
13
- secondTermString = context.nodeAsString(secondTermNode);
12
+ firstTermString = localContext.nodeAsString(firstTermNode),
13
+ secondTermString = localContext.nodeAsString(secondTermNode);
14
14
 
15
- context.trace(`Verifying the '${firstTermString}' and '${secondTermString}' terms...`, firstTermNode);
15
+ localContext.trace(`Verifying the '${firstTermString}' and '${secondTermString}' terms...`, firstTermNode);
16
16
 
17
- const firstTermVerified = verifyTerm(firstTermNode, terms, context, () => {
17
+ const firstTermVerified = verifyTerm(firstTermNode, terms, localContext, () => {
18
18
  let verifiedAhead;
19
19
 
20
- const secondTermVerified = verifyTerm(secondTermNode, terms, context, () => {
20
+ const secondTermVerified = verifyTerm(secondTermNode, terms, localContext, () => {
21
21
  let verifiedAhead;
22
22
 
23
23
  verifiedAhead = verifyAhead();
@@ -33,7 +33,7 @@ export default function verifyTerms(termNodes, terms, context, verifyAhead) {
33
33
  termsVerified = firstTermVerified; ///
34
34
 
35
35
  if (termsVerified) {
36
- context.debug(`...verified the '${firstTermString}' and '${secondTermString}' terms.`, firstTermNode);
36
+ localContext.debug(`...verified the '${firstTermString}' and '${secondTermString}' terms.`, firstTermNode);
37
37
  }
38
38
 
39
39
  return termsVerified
@@ -47,18 +47,18 @@ export default function verifyType(typeNode, superTypeNode, fileContext) {
47
47
  return typeVerified;
48
48
  }
49
49
 
50
- export function verifyStandaloneType(typeNode, context, verifyAhead) {
50
+ export function verifyStandaloneType(typeNode, fileContext, verifyAhead) {
51
51
  let standaloneTypeVerified = false;
52
52
 
53
- const typeString = context.nodeAsString(typeNode);
53
+ const typeString = fileContext.nodeAsString(typeNode);
54
54
 
55
- context.trace(`Verifying the '${typeString}' standalone type...`, typeNode);
55
+ fileContext.trace(`Verifying the '${typeString}' standalone type...`, typeNode);
56
56
 
57
57
  const typeName = typeNameFromTypeNode(typeNode),
58
- typePresent = context.isTypePresentByTypeName(typeName);
58
+ typePresent = fileContext.isTypePresentByTypeName(typeName);
59
59
 
60
60
  if (!typePresent) {
61
- context.debug(`The type '${typeName}' is not present.`, typeNode);
61
+ fileContext.debug(`The type '${typeName}' is not present.`, typeNode);
62
62
  } else {
63
63
  const verifiedAhead = verifyAhead();
64
64
 
@@ -66,7 +66,7 @@ export function verifyStandaloneType(typeNode, context, verifyAhead) {
66
66
  }
67
67
 
68
68
  if (standaloneTypeVerified) {
69
- context.debug(`...verified the '${typeString}' standalone type.`, typeNode);
69
+ fileContext.debug(`...verified the '${typeString}' standalone type.`, typeNode);
70
70
  }
71
71
 
72
72
  return standaloneTypeVerified;