occam-verify-cli 1.0.318 → 1.0.325
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/context/file.js +108 -126
- package/lib/context/local.js +21 -8
- package/lib/context/release.js +58 -7
- package/lib/dom/assertion/type.js +3 -3
- package/lib/dom/declaration/complexType.js +125 -101
- package/lib/dom/declaration/constructor.js +5 -5
- package/lib/dom/declaration/metavariable.js +3 -3
- package/lib/dom/declaration/simpleType.js +58 -52
- package/lib/dom/declaration/typePrefix.js +18 -7
- package/lib/dom/declaration/variable.js +5 -5
- package/lib/dom/metavariable.js +3 -3
- package/lib/dom/property.js +4 -4
- package/lib/dom/topLevelAssertion.js +1 -43
- package/lib/dom/type.js +107 -21
- package/lib/dom/variable.js +4 -4
- package/lib/node/declaration/complexType.js +22 -1
- package/lib/node/declaration/simpleType.js +22 -1
- package/lib/node/type.js +35 -9
- package/lib/unifier/metavariable.js +2 -2
- package/lib/unifier/statementWithCombinator.js +3 -3
- package/lib/unifier/termWithConstructor.js +2 -2
- package/lib/utilities/json.js +8 -6
- package/lib/utilities/node.js +4 -4
- package/lib/utilities/type.js +10 -5
- package/lib/verifier/combinator.js +2 -2
- package/lib/verifier/constructor.js +3 -3
- package/package.json +1 -1
- package/src/context/file.js +137 -171
- package/src/context/local.js +7 -3
- package/src/context/release.js +54 -8
- package/src/dom/assertion/type.js +3 -3
- package/src/dom/declaration/complexType.js +159 -132
- package/src/dom/declaration/constructor.js +6 -6
- package/src/dom/declaration/metavariable.js +3 -3
- package/src/dom/declaration/simpleType.js +74 -68
- package/src/dom/declaration/typePrefix.js +24 -6
- package/src/dom/declaration/variable.js +6 -6
- package/src/dom/metavariable.js +2 -2
- package/src/dom/property.js +1 -1
- package/src/dom/topLevelAssertion.js +3 -15
- package/src/dom/type.js +132 -22
- package/src/dom/variable.js +4 -4
- package/src/node/declaration/complexType.js +21 -0
- package/src/node/declaration/simpleType.js +21 -0
- package/src/node/type.js +42 -9
- package/src/unifier/metavariable.js +2 -2
- package/src/unifier/statementWithCombinator.js +2 -2
- package/src/unifier/termWithConstructor.js +2 -2
- package/src/utilities/json.js +18 -10
- package/src/utilities/node.js +6 -3
- package/src/utilities/type.js +12 -5
- package/src/verifier/combinator.js +2 -2
- package/src/verifier/constructor.js +3 -3
|
@@ -28,6 +28,13 @@ export default class ComplexTypeDeclarationNode extends NonTerminalNode {
|
|
|
28
28
|
return provisional;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
isPrefixed() {
|
|
32
|
+
const typeNode = this.getTypeNode(),
|
|
33
|
+
prefixed = typeNode.isPrefixed();
|
|
34
|
+
|
|
35
|
+
return prefixed;
|
|
36
|
+
}
|
|
37
|
+
|
|
31
38
|
getTypeName() {
|
|
32
39
|
const typeNode = this.getTypeNode(),
|
|
33
40
|
typeName = typeNode.getTypeName();
|
|
@@ -63,6 +70,20 @@ export default class ComplexTypeDeclarationNode extends NonTerminalNode {
|
|
|
63
70
|
return superTypeNodes;
|
|
64
71
|
}
|
|
65
72
|
|
|
73
|
+
getTypePrefixName() {
|
|
74
|
+
const typeNode = this.getTypeNode(),
|
|
75
|
+
typePrefixName = typeNode.getTypePrefixName();
|
|
76
|
+
|
|
77
|
+
return typePrefixName;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
getNominalTypeName() {
|
|
81
|
+
const typeNode = this.getTypeNode(),
|
|
82
|
+
nominalTypeName = typeNode.getNominalTypeName();
|
|
83
|
+
|
|
84
|
+
return nominalTypeName;
|
|
85
|
+
}
|
|
86
|
+
|
|
66
87
|
getPropertyDeclarationNodes() {
|
|
67
88
|
const ruleName = PROPERTY_DECLARATION_RULE_NAME,
|
|
68
89
|
propertyDeclarationNodes = this.getNodesByRuleName(ruleName);
|
|
@@ -28,6 +28,13 @@ export default class SimpleTypeDeclarationNode extends NonTerminalNode {
|
|
|
28
28
|
return provisional;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
+
isPrefixed() {
|
|
32
|
+
const typeNode = this.getTypeNode(),
|
|
33
|
+
prefixed = typeNode.isPrefixed();
|
|
34
|
+
|
|
35
|
+
return prefixed;
|
|
36
|
+
}
|
|
37
|
+
|
|
31
38
|
getTypeName() {
|
|
32
39
|
let typeName = null;
|
|
33
40
|
|
|
@@ -54,6 +61,13 @@ export default class SimpleTypeDeclarationNode extends NonTerminalNode {
|
|
|
54
61
|
return typesNode;
|
|
55
62
|
}
|
|
56
63
|
|
|
64
|
+
getTypePrefixName() {
|
|
65
|
+
const typeNode = this.getTypeNode(),
|
|
66
|
+
typePrefixName = typeNode.getTypePrefixName();
|
|
67
|
+
|
|
68
|
+
return typePrefixName;
|
|
69
|
+
}
|
|
70
|
+
|
|
57
71
|
getSuperTypeNodes() {
|
|
58
72
|
let superTypeNodes = [];
|
|
59
73
|
|
|
@@ -68,6 +82,13 @@ export default class SimpleTypeDeclarationNode extends NonTerminalNode {
|
|
|
68
82
|
return superTypeNodes;
|
|
69
83
|
}
|
|
70
84
|
|
|
85
|
+
getNominalTypeName() {
|
|
86
|
+
const typeNode = this.getTypeNode(),
|
|
87
|
+
nominalTypeName = typeNode.getNominalTypeName();
|
|
88
|
+
|
|
89
|
+
return nominalTypeName;
|
|
90
|
+
}
|
|
91
|
+
|
|
71
92
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SimpleTypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
72
93
|
}
|
|
73
94
|
|
package/src/node/type.js
CHANGED
|
@@ -3,11 +3,21 @@
|
|
|
3
3
|
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
5
|
export default class TypeNode extends NonTerminalNode {
|
|
6
|
+
isPrefixed() {
|
|
7
|
+
const multiplicity = this.getMultiplicity(),
|
|
8
|
+
prefixed = (multiplicity > 1);
|
|
9
|
+
|
|
10
|
+
return prefixed;
|
|
11
|
+
}
|
|
12
|
+
|
|
6
13
|
getTypeName() {
|
|
7
14
|
let typeName;
|
|
8
15
|
|
|
16
|
+
const prefixed = this.isPrefixed(),
|
|
17
|
+
nameIndex = prefixed ? 2 : 0;
|
|
18
|
+
|
|
9
19
|
this.someChildNode((childNode, index) => {
|
|
10
|
-
if (index ===
|
|
20
|
+
if (index === nameIndex) {
|
|
11
21
|
const typeTerminalNode = childNode, ///
|
|
12
22
|
content = typeTerminalNode.getContent();
|
|
13
23
|
|
|
@@ -23,19 +33,42 @@ export default class TypeNode extends NonTerminalNode {
|
|
|
23
33
|
getTypePrefixName() {
|
|
24
34
|
let typePrefixName = null;
|
|
25
35
|
|
|
26
|
-
this.
|
|
27
|
-
if (index === 2) {
|
|
28
|
-
const typeTerminalNode = childNode, ///
|
|
29
|
-
content = typeTerminalNode.getContent();
|
|
36
|
+
const prefixed = this.isPrefixed();
|
|
30
37
|
|
|
31
|
-
|
|
38
|
+
if (prefixed) {
|
|
39
|
+
const prefixIndex = 0;
|
|
32
40
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
41
|
+
this.someChildNode((childNode, index) => {
|
|
42
|
+
if (index === prefixIndex) {
|
|
43
|
+
const typeTerminalNode = childNode, ///
|
|
44
|
+
content = typeTerminalNode.getContent();
|
|
45
|
+
|
|
46
|
+
typePrefixName = content; ///
|
|
47
|
+
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
36
52
|
|
|
37
53
|
return typePrefixName;
|
|
38
54
|
}
|
|
39
55
|
|
|
56
|
+
getNominalTypeName() {
|
|
57
|
+
let nominalTypeName;
|
|
58
|
+
|
|
59
|
+
const prefixed = this.isPrefixed(),
|
|
60
|
+
typeName = this.getTypeName();
|
|
61
|
+
|
|
62
|
+
if (prefixed) {
|
|
63
|
+
const typePrefixName = this.getTypePrefixName();
|
|
64
|
+
|
|
65
|
+
nominalTypeName = `${typePrefixName}${typeName}`;
|
|
66
|
+
} else {
|
|
67
|
+
nominalTypeName = typeName; ///
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return nominalTypeName;
|
|
71
|
+
}
|
|
72
|
+
|
|
40
73
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeNode, ruleName, childNodes, opacity, precedence); }
|
|
41
74
|
}
|
|
@@ -31,8 +31,8 @@ class MetavariableUnifier extends Unifier {
|
|
|
31
31
|
const { Term } = dom,
|
|
32
32
|
typeNode = generalTypeNode, ///
|
|
33
33
|
termNode = specificTermNode, ///
|
|
34
|
-
|
|
35
|
-
type = generalContext.
|
|
34
|
+
nominalTypeName = typeNode.getNominalTypeName(),
|
|
35
|
+
type = generalContext.findTypeByNominalTypeName(nominalTypeName),
|
|
36
36
|
context = specificContext, ///
|
|
37
37
|
term = Term.fromTermNode(termNode, context),
|
|
38
38
|
termVerifiesGivenType = term.verifyGivenType(type, generalContext, specificContext);
|
|
@@ -86,13 +86,13 @@ class StatementWithCombinatorUnifier extends Unifier {
|
|
|
86
86
|
const { Term } = dom,
|
|
87
87
|
typeNode = generalTypeNode, ///
|
|
88
88
|
termNode = specificTermNode, ///
|
|
89
|
-
|
|
89
|
+
nominalTypeName = typeNode.getNominalTypeName();
|
|
90
90
|
|
|
91
91
|
let context;
|
|
92
92
|
|
|
93
93
|
context = generalContext; ///
|
|
94
94
|
|
|
95
|
-
const type = context.
|
|
95
|
+
const type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
96
96
|
|
|
97
97
|
context = specificContext; ///
|
|
98
98
|
|
|
@@ -30,8 +30,8 @@ class TermWithConstructorUnifier extends Unifier {
|
|
|
30
30
|
|
|
31
31
|
const { Term } = dom,
|
|
32
32
|
typeNode = generalTypeNode, ///
|
|
33
|
-
|
|
34
|
-
type = context.
|
|
33
|
+
nominalTypeName = typeNode.getNominalTypeName(),
|
|
34
|
+
type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
35
35
|
|
|
36
36
|
if (type !== null) {
|
|
37
37
|
const termNode = specificTermNode, ///
|
package/src/utilities/json.js
CHANGED
|
@@ -20,10 +20,14 @@ export function typeFromJSON(json, context) {
|
|
|
20
20
|
let { type } = json;
|
|
21
21
|
|
|
22
22
|
if (type !== null) {
|
|
23
|
-
|
|
24
|
-
typeName = name; ///
|
|
23
|
+
json = type; ///
|
|
25
24
|
|
|
26
|
-
|
|
25
|
+
const { name, prefixName } = json,
|
|
26
|
+
nominalTypeName = (prefixName !== null) ?
|
|
27
|
+
`${prefixName}:${name}` :
|
|
28
|
+
name; ///
|
|
29
|
+
|
|
30
|
+
type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
27
31
|
}
|
|
28
32
|
|
|
29
33
|
return type;
|
|
@@ -33,7 +37,9 @@ export function metaTypeFromJSON(json, context) {
|
|
|
33
37
|
let { metaType } = json;
|
|
34
38
|
|
|
35
39
|
if (metaType !== null) {
|
|
36
|
-
|
|
40
|
+
json = metaType; ///
|
|
41
|
+
|
|
42
|
+
const { name } = json,
|
|
37
43
|
metaTypeName = name; ///
|
|
38
44
|
|
|
39
45
|
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
@@ -172,11 +178,11 @@ export function rulesFromJSON(json, context) {
|
|
|
172
178
|
let { rules } = json;
|
|
173
179
|
|
|
174
180
|
const { Rule } = dom,
|
|
175
|
-
|
|
181
|
+
rulesJSON = rules; ///
|
|
176
182
|
|
|
177
183
|
rules = rulesJSON.map((ruleJSON) => {
|
|
178
184
|
const json = ruleJSON, ///
|
|
179
|
-
|
|
185
|
+
rule = Rule.fromJSON(json, context);
|
|
180
186
|
|
|
181
187
|
return rule;
|
|
182
188
|
});
|
|
@@ -298,9 +304,11 @@ export function superTypesFromJSON(json, context) {
|
|
|
298
304
|
|
|
299
305
|
const superTypes = superTypesJSON.map((superTypeJSON) => {
|
|
300
306
|
const json = superTypeJSON, ///
|
|
301
|
-
{ name } = json,
|
|
302
|
-
|
|
303
|
-
|
|
307
|
+
{ name, prefixName } = json,
|
|
308
|
+
nominalSuperTypeName = (prefixName !== null) ?
|
|
309
|
+
`${prefixName}:${name}` :
|
|
310
|
+
name, ///
|
|
311
|
+
superType = context.findTypeByNominalTypeName(nominalSuperTypeName);
|
|
304
312
|
|
|
305
313
|
return superType;
|
|
306
314
|
});
|
|
@@ -373,7 +381,7 @@ export function combinatorsFromJSON(json, context) {
|
|
|
373
381
|
}
|
|
374
382
|
|
|
375
383
|
export function typePrefixesFromJSON(json, context) {
|
|
376
|
-
let { typePrefixes
|
|
384
|
+
let { typePrefixes } = json;
|
|
377
385
|
|
|
378
386
|
const { TypePrefix } = dom,
|
|
379
387
|
typePrefixesJSON = typePrefixes; ///
|
package/src/utilities/node.js
CHANGED
|
@@ -4,7 +4,7 @@ import dom from "../dom";
|
|
|
4
4
|
|
|
5
5
|
import { objectType } from "../dom/type";
|
|
6
6
|
|
|
7
|
-
export function typeFromTypeNode(typeNode) {
|
|
7
|
+
export function typeFromTypeNode(typeNode, context) {
|
|
8
8
|
let type;
|
|
9
9
|
|
|
10
10
|
if (typeNode === null) {
|
|
@@ -12,13 +12,16 @@ export function typeFromTypeNode(typeNode) {
|
|
|
12
12
|
} else {
|
|
13
13
|
const { Type } = dom,
|
|
14
14
|
typeName = typeNode.getTypeName(),
|
|
15
|
+
typePrefixName = typeNode.getTypePrefixName(),
|
|
16
|
+
nominalTypeName = typeNode.getNominalTypeName(),
|
|
17
|
+
string = nominalTypeName, ///
|
|
15
18
|
name = typeName, ///
|
|
16
|
-
|
|
19
|
+
prefixName = typePrefixName, ///
|
|
17
20
|
superTypes = null,
|
|
18
21
|
properties = null,
|
|
19
22
|
provisional = null;
|
|
20
23
|
|
|
21
|
-
type = new Type(string, name, superTypes, properties, provisional);
|
|
24
|
+
type = new Type(string, name, prefixName, superTypes, properties, provisional);
|
|
22
25
|
}
|
|
23
26
|
|
|
24
27
|
return type;
|
package/src/utilities/type.js
CHANGED
|
@@ -2,11 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import { objectType } from "../dom/type";
|
|
4
4
|
|
|
5
|
-
export function
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
export function stringFromTypeNameTypePrefixNameAndSuperTypes(typeName, typePrefixName, superTypes) {
|
|
6
|
+
let string;
|
|
7
|
+
|
|
8
|
+
string = (typePrefixName !== null) ?
|
|
9
|
+
`${typePrefixName}${typeName}`:
|
|
10
|
+
typeName;
|
|
11
|
+
|
|
12
|
+
const superTypesString = superTypesStringFromSuperTypes(superTypes);
|
|
13
|
+
|
|
14
|
+
if (superTypesString !== null) {
|
|
15
|
+
string = `${string}:${superTypesString}`;
|
|
16
|
+
}
|
|
10
17
|
|
|
11
18
|
return string;
|
|
12
19
|
}
|
|
@@ -54,8 +54,8 @@ class CombinatorVerifier extends Verifier {
|
|
|
54
54
|
verify: (typeNode, context) => {
|
|
55
55
|
let typeVerifies = false;
|
|
56
56
|
|
|
57
|
-
const
|
|
58
|
-
typePresent = context.
|
|
57
|
+
const nominalTypeName = typeNode.getNominalTypeName(),
|
|
58
|
+
typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
|
|
59
59
|
|
|
60
60
|
if (typePresent) {
|
|
61
61
|
typeVerifies = true;
|
|
@@ -70,15 +70,15 @@ class ConstructorVerifier extends Verifier {
|
|
|
70
70
|
verify: (typeNode, context, verifyAhead) => {
|
|
71
71
|
let typeVerifies;
|
|
72
72
|
|
|
73
|
-
const
|
|
74
|
-
typePresent = context.
|
|
73
|
+
const nominalTypeName = typeNode.getNominalTypeName(),
|
|
74
|
+
typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
|
|
75
75
|
|
|
76
76
|
if (typePresent) {
|
|
77
77
|
const verifiesAhead = verifyAhead();
|
|
78
78
|
|
|
79
79
|
typeVerifies = verifiesAhead; ///
|
|
80
80
|
} else {
|
|
81
|
-
const typeString =
|
|
81
|
+
const typeString = nominalTypeName; ///
|
|
82
82
|
|
|
83
83
|
context.debug(`The '${typeString}' type is not present.`);
|
|
84
84
|
|