occam-verify-cli 1.0.984 → 1.0.985
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/action/verify.js +22 -27
- package/lib/constants.js +1 -41
- package/lib/index.js +1 -2
- package/lib/utilities/fileContext.js +3 -8
- package/lib/utilities/releaseContext.js +2 -2
- package/package.json +5 -6
- package/src/action/verify.js +8 -18
- package/src/constants.js +0 -10
- package/src/index.js +0 -2
- package/src/utilities/fileContext.js +1 -2
- package/src/utilities/releaseContext.js +1 -1
- package/lib/context/aphasic.js +0 -27
- package/lib/context/bounded.js +0 -244
- package/lib/context/branching.js +0 -61
- package/lib/context/file/nominal.js +0 -586
- package/lib/context/illative.js +0 -28
- package/lib/context/liminal.js +0 -200
- package/lib/context/literal.js +0 -44
- package/lib/context/mnemic.js +0 -454
- package/lib/context/nested.js +0 -31
- package/lib/context/nominal.js +0 -57
- package/lib/context/phaneric.js +0 -44
- package/lib/context/thetic.js +0 -28
- package/lib/context.js +0 -445
- package/lib/element/assertion/contained.js +0 -218
- package/lib/element/assertion/defined.js +0 -213
- package/lib/element/assertion/property.js +0 -176
- package/lib/element/assertion/signature.js +0 -170
- package/lib/element/assertion/subproof.js +0 -220
- package/lib/element/assertion/type.js +0 -227
- package/lib/element/assertion.js +0 -49
- package/lib/element/assumption/metaLevel.js +0 -244
- package/lib/element/assumption.js +0 -252
- package/lib/element/combinator/bracketed.js +0 -36
- package/lib/element/combinator.js +0 -104
- package/lib/element/conclusion.js +0 -131
- package/lib/element/constructor/bracketed.js +0 -57
- package/lib/element/constructor.js +0 -129
- package/lib/element/declaration/combinator.js +0 -58
- package/lib/element/declaration/complexType.js +0 -180
- package/lib/element/declaration/constructor.js +0 -93
- package/lib/element/declaration/metavariable.js +0 -77
- package/lib/element/declaration/property.js +0 -88
- package/lib/element/declaration/simpleType.js +0 -148
- package/lib/element/declaration/typePrefix.js +0 -53
- package/lib/element/declaration/variable.js +0 -99
- package/lib/element/declaration.js +0 -15
- package/lib/element/deduction.js +0 -131
- package/lib/element/derivation.js +0 -46
- package/lib/element/equality.js +0 -211
- package/lib/element/equivalence.js +0 -200
- package/lib/element/error.js +0 -27
- package/lib/element/frame.js +0 -238
- package/lib/element/hypothesis.js +0 -135
- package/lib/element/judgement.js +0 -212
- package/lib/element/label.js +0 -135
- package/lib/element/metaType.js +0 -57
- package/lib/element/metavariable.js +0 -452
- package/lib/element/parameter.js +0 -69
- package/lib/element/procedureCall.js +0 -116
- package/lib/element/procedureReference.js +0 -56
- package/lib/element/proof.js +0 -52
- package/lib/element/proofAssertion/premise.js +0 -238
- package/lib/element/proofAssertion/step.js +0 -235
- package/lib/element/proofAssertion/supposition.js +0 -249
- package/lib/element/proofAssertion.js +0 -56
- package/lib/element/property.js +0 -176
- package/lib/element/propertyRelation.js +0 -132
- package/lib/element/reference.js +0 -227
- package/lib/element/rule.js +0 -242
- package/lib/element/section.js +0 -64
- package/lib/element/signature.js +0 -195
- package/lib/element/statement.js +0 -228
- package/lib/element/subDerivation.js +0 -46
- package/lib/element/subproof.js +0 -91
- package/lib/element/substitution/frame.js +0 -256
- package/lib/element/substitution/reference.js +0 -192
- package/lib/element/substitution/statement.js +0 -294
- package/lib/element/substitution/term.js +0 -266
- package/lib/element/substitution.js +0 -183
- package/lib/element/term.js +0 -217
- package/lib/element/topLevelAssertion/axiom.js +0 -158
- package/lib/element/topLevelAssertion/conjecture.js +0 -42
- package/lib/element/topLevelAssertion/lemma.js +0 -39
- package/lib/element/topLevelAssertion/theorem.js +0 -42
- package/lib/element/topLevelAssertion.js +0 -286
- package/lib/element/topLevelMetaAssertion/metaLemma.js +0 -42
- package/lib/element/topLevelMetaAssertion/metatheorem.js +0 -42
- package/lib/element/topLevelMetaAssertion.js +0 -179
- package/lib/element/type.js +0 -240
- package/lib/element/typePrefix.js +0 -85
- package/lib/element/variable.js +0 -206
- package/lib/elements.js +0 -27
- package/lib/metaTypeNames.js +0 -26
- package/lib/metaTypes.js +0 -66
- package/lib/node/argument.js +0 -31
- package/lib/node/assertion/contained.js +0 -51
- package/lib/node/assertion/defined.js +0 -47
- package/lib/node/assertion/property.js +0 -36
- package/lib/node/assertion/signature.js +0 -32
- package/lib/node/assertion/subproof.js +0 -28
- package/lib/node/assertion/type.js +0 -32
- package/lib/node/assertion.js +0 -18
- package/lib/node/assumption/metaLevel.js +0 -27
- package/lib/node/assumption.js +0 -27
- package/lib/node/body/axiom.js +0 -23
- package/lib/node/body/conjecture.js +0 -23
- package/lib/node/body/lemma.js +0 -23
- package/lib/node/body/metaLemma.js +0 -23
- package/lib/node/body/metatheorem.js +0 -23
- package/lib/node/body/rule.js +0 -44
- package/lib/node/body/theorem.js +0 -23
- package/lib/node/body.js +0 -31
- package/lib/node/combinator.js +0 -23
- package/lib/node/conclusion.js +0 -27
- package/lib/node/constructor.js +0 -23
- package/lib/node/declaration/combinator.js +0 -28
- package/lib/node/declaration/complexType.js +0 -72
- package/lib/node/declaration/constructor.js +0 -47
- package/lib/node/declaration/metavariable.js +0 -36
- package/lib/node/declaration/property.js +0 -44
- package/lib/node/declaration/simpleType.js +0 -72
- package/lib/node/declaration/typePrefix.js +0 -32
- package/lib/node/declaration/variable.js +0 -51
- package/lib/node/declaration.js +0 -18
- package/lib/node/deduction.js +0 -27
- package/lib/node/derivation.js +0 -26
- package/lib/node/document.js +0 -18
- package/lib/node/equality.js +0 -33
- package/lib/node/equivalence.js +0 -23
- package/lib/node/equivalences.js +0 -18
- package/lib/node/error.js +0 -18
- package/lib/node/frame.js +0 -38
- package/lib/node/header/axiom.js +0 -28
- package/lib/node/header/conjecture.js +0 -23
- package/lib/node/header/lemma.js +0 -23
- package/lib/node/header/metaLemma.js +0 -23
- package/lib/node/header/metatheorem.js +0 -23
- package/lib/node/header/rule.js +0 -23
- package/lib/node/header/theorem.js +0 -23
- package/lib/node/header.js +0 -47
- package/lib/node/hypothesis.js +0 -27
- package/lib/node/judgement.js +0 -31
- package/lib/node/label.js +0 -23
- package/lib/node/labels.js +0 -23
- package/lib/node/metaArgument.js +0 -23
- package/lib/node/metaType.js +0 -30
- package/lib/node/metavariable.js +0 -39
- package/lib/node/parameter.js +0 -47
- package/lib/node/parenthesisedLabel.js +0 -23
- package/lib/node/parenthesisedLabels.js +0 -27
- package/lib/node/placeholder.js +0 -18
- package/lib/node/procedureCall.js +0 -31
- package/lib/node/procedureReference.js +0 -30
- package/lib/node/proof.js +0 -23
- package/lib/node/proofAssertion/premise.js +0 -28
- package/lib/node/proofAssertion/step.js +0 -52
- package/lib/node/proofAssertion/supposition.js +0 -28
- package/lib/node/proofAssertion.js +0 -27
- package/lib/node/property.js +0 -30
- package/lib/node/propertyRelation.js +0 -31
- package/lib/node/qualification.js +0 -27
- package/lib/node/reference.js +0 -23
- package/lib/node/rule.js +0 -43
- package/lib/node/section.js +0 -39
- package/lib/node/signature.js +0 -23
- package/lib/node/statement.js +0 -103
- package/lib/node/subDerivation.js +0 -26
- package/lib/node/subproof.js +0 -35
- package/lib/node/substitution/frame.js +0 -40
- package/lib/node/substitution/reference.js +0 -40
- package/lib/node/substitution/statement.js +0 -60
- package/lib/node/substitution/term.js +0 -40
- package/lib/node/substitution.js +0 -18
- package/lib/node/term.js +0 -60
- package/lib/node/topLevelAssertion/axiom.js +0 -26
- package/lib/node/topLevelAssertion/conjecture.js +0 -26
- package/lib/node/topLevelAssertion/lemma.js +0 -26
- package/lib/node/topLevelAssertion/theorem.js +0 -26
- package/lib/node/topLevelAssertion.js +0 -46
- package/lib/node/topLevelMetaAssertion/metaLemma.js +0 -26
- package/lib/node/topLevelMetaAssertion/metatheorem.js +0 -26
- package/lib/node/topLevelMetaAssertion.js +0 -42
- package/lib/node/type.js +0 -60
- package/lib/node/typePrefix.js +0 -30
- package/lib/node/types.js +0 -23
- package/lib/node/variable.js +0 -30
- package/lib/nominal/lexer.js +0 -15
- package/lib/nominal/parser.js +0 -24
- package/lib/nonTerminalNodeMap.js +0 -189
- package/lib/pass/zip.js +0 -23
- package/lib/preamble.js +0 -73
- package/lib/process/assign.js +0 -62
- package/lib/process/discharge.js +0 -38
- package/lib/process/equate.js +0 -73
- package/lib/process/instantiate.js +0 -261
- package/lib/process/unification.js +0 -228
- package/lib/process/unify.js +0 -336
- package/lib/process/validate.js +0 -135
- package/lib/process/validation.js +0 -291
- package/lib/process/verify.js +0 -205
- package/lib/ruleNames.js +0 -350
- package/lib/tokenTypes.js +0 -22
- package/lib/utilities/assignment.js +0 -47
- package/lib/utilities/bnf.js +0 -21
- package/lib/utilities/brackets.js +0 -77
- package/lib/utilities/breakPoint.js +0 -38
- package/lib/utilities/context.js +0 -220
- package/lib/utilities/element.js +0 -1851
- package/lib/utilities/equivalence.js +0 -27
- package/lib/utilities/equivalences.js +0 -134
- package/lib/utilities/instance.js +0 -44
- package/lib/utilities/json.js +0 -1109
- package/lib/utilities/string.js +0 -231
- package/lib/utilities/substitutions.js +0 -86
- package/lib/utilities/synoptic.js +0 -159
- package/lib/utilities/type.js +0 -27
- package/src/context/aphasic.js +0 -15
- package/src/context/bounded.js +0 -362
- package/src/context/branching.js +0 -69
- package/src/context/file/nominal.js +0 -955
- package/src/context/illative.js +0 -17
- package/src/context/liminal.js +0 -280
- package/src/context/literal.js +0 -42
- package/src/context/mnemic.js +0 -778
- package/src/context/nested.js +0 -21
- package/src/context/nominal.js +0 -62
- package/src/context/phaneric.js +0 -43
- package/src/context/thetic.js +0 -17
- package/src/context.js +0 -722
- package/src/element/assertion/contained.js +0 -313
- package/src/element/assertion/defined.js +0 -310
- package/src/element/assertion/property.js +0 -252
- package/src/element/assertion/signature.js +0 -239
- package/src/element/assertion/subproof.js +0 -335
- package/src/element/assertion/type.js +0 -328
- package/src/element/assertion.js +0 -65
- package/src/element/assumption/metaLevel.js +0 -373
- package/src/element/assumption.js +0 -374
- package/src/element/combinator/bracketed.js +0 -32
- package/src/element/combinator.js +0 -145
- package/src/element/conclusion.js +0 -185
- package/src/element/constructor/bracketed.js +0 -68
- package/src/element/constructor.js +0 -188
- package/src/element/declaration/combinator.js +0 -66
- package/src/element/declaration/complexType.js +0 -257
- package/src/element/declaration/constructor.js +0 -122
- package/src/element/declaration/metavariable.js +0 -93
- package/src/element/declaration/property.js +0 -108
- package/src/element/declaration/simpleType.js +0 -208
- package/src/element/declaration/typePrefix.js +0 -58
- package/src/element/declaration/variable.js +0 -130
- package/src/element/declaration.js +0 -7
- package/src/element/deduction.js +0 -185
- package/src/element/derivation.js +0 -57
- package/src/element/equality.js +0 -325
- package/src/element/equivalence.js +0 -276
- package/src/element/error.js +0 -26
- package/src/element/frame.js +0 -356
- package/src/element/hypothesis.js +0 -186
- package/src/element/judgement.js +0 -303
- package/src/element/label.js +0 -186
- package/src/element/metaType.js +0 -75
- package/src/element/metavariable.js +0 -662
- package/src/element/parameter.js +0 -90
- package/src/element/procedureCall.js +0 -159
- package/src/element/procedureReference.js +0 -71
- package/src/element/proof.js +0 -61
- package/src/element/proofAssertion/premise.js +0 -354
- package/src/element/proofAssertion/step.js +0 -271
- package/src/element/proofAssertion/supposition.js +0 -377
- package/src/element/proofAssertion.js +0 -74
- package/src/element/property.js +0 -258
- package/src/element/propertyRelation.js +0 -193
- package/src/element/reference.js +0 -345
- package/src/element/rule.js +0 -358
- package/src/element/section.js +0 -78
- package/src/element/signature.js +0 -292
- package/src/element/statement.js +0 -358
- package/src/element/subDerivation.js +0 -56
- package/src/element/subproof.js +0 -116
- package/src/element/substitution/frame.js +0 -392
- package/src/element/substitution/reference.js +0 -274
- package/src/element/substitution/statement.js +0 -452
- package/src/element/substitution/term.js +0 -407
- package/src/element/substitution.js +0 -261
- package/src/element/term.js +0 -339
- package/src/element/topLevelAssertion/axiom.js +0 -244
- package/src/element/topLevelAssertion/conjecture.js +0 -40
- package/src/element/topLevelAssertion/lemma.js +0 -42
- package/src/element/topLevelAssertion/theorem.js +0 -40
- package/src/element/topLevelAssertion.js +0 -436
- package/src/element/topLevelMetaAssertion/metaLemma.js +0 -40
- package/src/element/topLevelMetaAssertion/metatheorem.js +0 -40
- package/src/element/topLevelMetaAssertion.js +0 -276
- package/src/element/type.js +0 -374
- package/src/element/typePrefix.js +0 -113
- package/src/element/variable.js +0 -259
- package/src/elements.js +0 -13
- package/src/metaTypeNames.js +0 -5
- package/src/metaTypes.js +0 -71
- package/src/node/argument.js +0 -30
- package/src/node/assertion/contained.js +0 -53
- package/src/node/assertion/defined.js +0 -46
- package/src/node/assertion/property.js +0 -30
- package/src/node/assertion/signature.js +0 -23
- package/src/node/assertion/subproof.js +0 -16
- package/src/node/assertion/type.js +0 -23
- package/src/node/assertion.js +0 -7
- package/src/node/assumption/metaLevel.js +0 -23
- package/src/node/assumption.js +0 -23
- package/src/node/body/axiom.js +0 -7
- package/src/node/body/conjecture.js +0 -7
- package/src/node/body/lemma.js +0 -7
- package/src/node/body/metaLemma.js +0 -7
- package/src/node/body/metatheorem.js +0 -7
- package/src/node/body/rule.js +0 -42
- package/src/node/body/theorem.js +0 -7
- package/src/node/body.js +0 -30
- package/src/node/combinator.js +0 -16
- package/src/node/conclusion.js +0 -23
- package/src/node/constructor.js +0 -16
- package/src/node/declaration/combinator.js +0 -16
- package/src/node/declaration/complexType.js +0 -88
- package/src/node/declaration/constructor.js +0 -46
- package/src/node/declaration/metavariable.js +0 -30
- package/src/node/declaration/property.js +0 -42
- package/src/node/declaration/simpleType.js +0 -87
- package/src/node/declaration/typePrefix.js +0 -24
- package/src/node/declaration/variable.js +0 -53
- package/src/node/declaration.js +0 -7
- package/src/node/deduction.js +0 -23
- package/src/node/derivation.js +0 -19
- package/src/node/document.js +0 -7
- package/src/node/equality.js +0 -35
- package/src/node/equivalence.js +0 -16
- package/src/node/equivalences.js +0 -7
- package/src/node/error.js +0 -7
- package/src/node/frame.js +0 -40
- package/src/node/header/axiom.js +0 -16
- package/src/node/header/conjecture.js +0 -7
- package/src/node/header/lemma.js +0 -7
- package/src/node/header/metaLemma.js +0 -7
- package/src/node/header/metatheorem.js +0 -7
- package/src/node/header/rule.js +0 -7
- package/src/node/header/theorem.js +0 -7
- package/src/node/header.js +0 -54
- package/src/node/hypothesis.js +0 -23
- package/src/node/judgement.js +0 -30
- package/src/node/label.js +0 -16
- package/src/node/labels.js +0 -16
- package/src/node/metaArgument.js +0 -16
- package/src/node/metaType.js +0 -26
- package/src/node/metavariable.js +0 -42
- package/src/node/parameter.js +0 -51
- package/src/node/parenthesisedLabel.js +0 -16
- package/src/node/parenthesisedLabels.js +0 -23
- package/src/node/placeholder.js +0 -7
- package/src/node/procedureCall.js +0 -30
- package/src/node/procedureReference.js +0 -26
- package/src/node/proof.js +0 -16
- package/src/node/proofAssertion/premise.js +0 -16
- package/src/node/proofAssertion/step.js +0 -52
- package/src/node/proofAssertion/supposition.js +0 -16
- package/src/node/proofAssertion.js +0 -23
- package/src/node/property.js +0 -28
- package/src/node/propertyRelation.js +0 -30
- package/src/node/qualification.js +0 -23
- package/src/node/reference.js +0 -16
- package/src/node/rule.js +0 -51
- package/src/node/section.js +0 -44
- package/src/node/signature.js +0 -16
- package/src/node/statement.js +0 -167
- package/src/node/subDerivation.js +0 -19
- package/src/node/subproof.js +0 -35
- package/src/node/substitution/frame.js +0 -37
- package/src/node/substitution/reference.js +0 -38
- package/src/node/substitution/statement.js +0 -70
- package/src/node/substitution/term.js +0 -38
- package/src/node/substitution.js +0 -7
- package/src/node/term.js +0 -75
- package/src/node/topLevelAssertion/axiom.js +0 -13
- package/src/node/topLevelAssertion/conjecture.js +0 -13
- package/src/node/topLevelAssertion/lemma.js +0 -13
- package/src/node/topLevelAssertion/theorem.js +0 -13
- package/src/node/topLevelAssertion.js +0 -58
- package/src/node/topLevelMetaAssertion/metaLemma.js +0 -13
- package/src/node/topLevelMetaAssertion/metatheorem.js +0 -13
- package/src/node/topLevelMetaAssertion.js +0 -51
- package/src/node/type.js +0 -74
- package/src/node/typePrefix.js +0 -26
- package/src/node/types.js +0 -16
- package/src/node/variable.js +0 -26
- package/src/nominal/lexer.js +0 -5
- package/src/nominal/parser.js +0 -12
- package/src/nonTerminalNodeMap.js +0 -261
- package/src/pass/zip.js +0 -19
- package/src/preamble.js +0 -64
- package/src/process/assign.js +0 -53
- package/src/process/discharge.js +0 -33
- package/src/process/equate.js +0 -94
- package/src/process/instantiate.js +0 -198
- package/src/process/unification.js +0 -332
- package/src/process/unify.js +0 -504
- package/src/process/validate.js +0 -174
- package/src/process/validation.js +0 -410
- package/src/process/verify.js +0 -299
- package/src/ruleNames.js +0 -86
- package/src/tokenTypes.js +0 -4
- package/src/utilities/assignment.js +0 -57
- package/src/utilities/bnf.js +0 -20
- package/src/utilities/brackets.js +0 -87
- package/src/utilities/breakPoint.js +0 -29
- package/src/utilities/context.js +0 -223
- package/src/utilities/element.js +0 -2293
- package/src/utilities/equivalence.js +0 -25
- package/src/utilities/equivalences.js +0 -158
- package/src/utilities/instance.js +0 -40
- package/src/utilities/json.js +0 -1273
- package/src/utilities/string.js +0 -282
- package/src/utilities/substitutions.js +0 -93
- package/src/utilities/synoptic.js +0 -135
- package/src/utilities/type.js +0 -19
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Declaration from "../declaration";
|
|
4
|
-
|
|
5
|
-
import { asynchronousUtilities } from "occam-languages";
|
|
6
|
-
|
|
7
|
-
import { define } from "../../elements";
|
|
8
|
-
import { baseTypeFromNothing } from "../../utilities/type";
|
|
9
|
-
|
|
10
|
-
const { asyncEvery } = asynchronousUtilities;
|
|
11
|
-
|
|
12
|
-
export default define(class ComplexTypeDeclaration extends Declaration {
|
|
13
|
-
constructor(context, string, node, breakPoint, type, superTypes, provisional, propertyDeclarations) {
|
|
14
|
-
super(context, string, node, breakPoint);
|
|
15
|
-
|
|
16
|
-
this.type = type;
|
|
17
|
-
this.superTypes = superTypes;
|
|
18
|
-
this.provisional = provisional;
|
|
19
|
-
this.propertyDeclarations = propertyDeclarations;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getType() {
|
|
23
|
-
return this.type;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
getSuperTypes() {
|
|
27
|
-
return this.superTypes;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
isProvisional() {
|
|
31
|
-
return this.provisional;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
getPropertyDeclarations() {
|
|
35
|
-
return this.propertyDeclarations;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getComplexTypeDeclarationNode() {
|
|
39
|
-
const node = this.getNode(),
|
|
40
|
-
complexTypeDeclarationNode = node; ///
|
|
41
|
-
|
|
42
|
-
return complexTypeDeclarationNode;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
getProperties() {
|
|
46
|
-
const properties = this.propertyDeclarations.reduce((properties, propertyDeclaration) => {
|
|
47
|
-
const property = propertyDeclaration.getProperty();
|
|
48
|
-
|
|
49
|
-
if (property !== null) {
|
|
50
|
-
properties.push(property);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return properties;
|
|
54
|
-
}, []);
|
|
55
|
-
|
|
56
|
-
return properties;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
async verify(context) {
|
|
60
|
-
let verifies = false;
|
|
61
|
-
|
|
62
|
-
await this.break(context);
|
|
63
|
-
|
|
64
|
-
const complexTypeDeclarationString = this.getString(); ///
|
|
65
|
-
|
|
66
|
-
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration...`);
|
|
67
|
-
|
|
68
|
-
const typeVerifies = this.verifyType(context);
|
|
69
|
-
|
|
70
|
-
if (typeVerifies) {
|
|
71
|
-
const superTypesVerify = this.verifySuperTypes(context);
|
|
72
|
-
|
|
73
|
-
if (superTypesVerify) {
|
|
74
|
-
const typePrefixVerifies = this.verifyTypePrefix(context);
|
|
75
|
-
|
|
76
|
-
if (typePrefixVerifies) {
|
|
77
|
-
const propertyDeclarationsVerify = await this.verifyPropertyDeclaratisons(context);
|
|
78
|
-
|
|
79
|
-
if (propertyDeclarationsVerify) {
|
|
80
|
-
const properties = this.getProperties(),
|
|
81
|
-
typePrefix = context.getTypePrefix(),
|
|
82
|
-
prefixName = (typePrefix !== null) ?
|
|
83
|
-
typePrefix.getPrefixName() :
|
|
84
|
-
null;
|
|
85
|
-
|
|
86
|
-
this.type.setProvisional(this.provisional);
|
|
87
|
-
|
|
88
|
-
this.type.setProperties(properties);
|
|
89
|
-
|
|
90
|
-
this.type.setPrefixName(prefixName);
|
|
91
|
-
|
|
92
|
-
context.addType(this.type);
|
|
93
|
-
|
|
94
|
-
verifies = true;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
if (verifies) {
|
|
101
|
-
context.debug(`...verified the '${complexTypeDeclarationString}' complex type declaration.`);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return verifies;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
verifyType(context) {
|
|
108
|
-
let typeVerifies = false;
|
|
109
|
-
|
|
110
|
-
const typeString = this.type.getString(),
|
|
111
|
-
complexTypeDeclarationString = this.getString(); ///
|
|
112
|
-
|
|
113
|
-
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type...`);
|
|
114
|
-
|
|
115
|
-
const typeName = this.type.getName(),
|
|
116
|
-
includeRelease = false,
|
|
117
|
-
typePresent = context.isTypePresentByTypeName(typeName, includeRelease);
|
|
118
|
-
|
|
119
|
-
if (!typePresent) {
|
|
120
|
-
const prefixedTypeName = typeName, ///
|
|
121
|
-
typePresent = context.isTypePresentByPrefixedTypeName(prefixedTypeName);
|
|
122
|
-
|
|
123
|
-
if (!typePresent) {
|
|
124
|
-
this.type.setProvisional(this.provisional);
|
|
125
|
-
|
|
126
|
-
typeVerifies = true;
|
|
127
|
-
} else {
|
|
128
|
-
context.debug(`The '${typeString}' type is already present.`);
|
|
129
|
-
}
|
|
130
|
-
} else {
|
|
131
|
-
context.debug(`The '${typeString}' type is already present.`);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (typeVerifies) {
|
|
135
|
-
context.debug(`...verified the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type`);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
return typeVerifies;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
verifySuperType(superType, superTypes, context) {
|
|
142
|
-
let superTypeVerifies = false;
|
|
143
|
-
|
|
144
|
-
const superTypeString = superType.getString(),
|
|
145
|
-
complexTypeDeclarationString = this.getString(); ///
|
|
146
|
-
|
|
147
|
-
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's '${superTypeString}' super-type...`);
|
|
148
|
-
|
|
149
|
-
const nominalTypeName = superType.getNominalTypeName(),
|
|
150
|
-
typeName = nominalTypeName, ///
|
|
151
|
-
typeComparesToTypeName = this.type.compareTypeName(typeName);
|
|
152
|
-
|
|
153
|
-
if (!typeComparesToTypeName) {
|
|
154
|
-
superType = context.findTypeByNominalTypeName(nominalTypeName);
|
|
155
|
-
|
|
156
|
-
if (superType !== null) {
|
|
157
|
-
superTypes.push(superType);
|
|
158
|
-
|
|
159
|
-
superTypeVerifies = true;
|
|
160
|
-
} else {
|
|
161
|
-
context.debug(`The '${superTypeString}' super-type is not present.`);
|
|
162
|
-
}
|
|
163
|
-
} else {
|
|
164
|
-
context.debug(`The '${superTypeString}' super-type's name compares to the ${typeName}' type's name.`);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
if (superTypeVerifies) {
|
|
168
|
-
context.debug(`...verified the '${complexTypeDeclarationString}' complex type declaration's '${superTypeString}' super-type.`);
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return superTypeVerifies;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
verifySuperTypes(context) {
|
|
175
|
-
let superTypesVerify;
|
|
176
|
-
|
|
177
|
-
const superTypes = [],
|
|
178
|
-
complexTypeDeclarationString = this.getString(); ///
|
|
179
|
-
|
|
180
|
-
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's super-types...`);
|
|
181
|
-
|
|
182
|
-
superTypesVerify = this.superTypes.every((superType) => {
|
|
183
|
-
const superTypeVerifies = this.verifySuperType(superType, superTypes, context);
|
|
184
|
-
|
|
185
|
-
if (superTypeVerifies) {
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
});
|
|
189
|
-
|
|
190
|
-
if (superTypesVerify) {
|
|
191
|
-
const superTypesLength = superTypes.length;
|
|
192
|
-
|
|
193
|
-
if (superTypesLength === 0) {
|
|
194
|
-
const baseType = baseTypeFromNothing(),
|
|
195
|
-
superTyupe = baseType; ///
|
|
196
|
-
|
|
197
|
-
superTypes.push(superTyupe);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
this.type.setSuperTypes(superTypes);
|
|
201
|
-
|
|
202
|
-
context.debug(`...verified the '${complexTypeDeclarationString}' complex type declaration's super-types.`);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return superTypesVerify;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
verifyTypePrefix(context) {
|
|
209
|
-
let typePrefixVerifies = false;
|
|
210
|
-
|
|
211
|
-
const typeString = this.type.getString(),
|
|
212
|
-
complexTypeDeclarationString = this.getString(); ///
|
|
213
|
-
|
|
214
|
-
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type's prefix...`);
|
|
215
|
-
|
|
216
|
-
const typePrefixed = this.type.isPrefixed();
|
|
217
|
-
|
|
218
|
-
if (!typePrefixed) {
|
|
219
|
-
typePrefixVerifies = true;
|
|
220
|
-
} else {
|
|
221
|
-
context.debug(`The '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type is prefixed.`);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
if (typePrefixVerifies) {
|
|
225
|
-
context.debug(`...verified the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type's prefix.`);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
return typePrefixVerifies;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
async verifyPropertyDeclaratisons(context) {
|
|
232
|
-
let propertyDeclarationsVerify;
|
|
233
|
-
|
|
234
|
-
const typeString = this.type.getString(),
|
|
235
|
-
complexTypeDeclarationString = this.getString(); ///
|
|
236
|
-
|
|
237
|
-
context.trace(`Verifying the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type's property declarations...`);
|
|
238
|
-
|
|
239
|
-
const properties = this.getProperties();
|
|
240
|
-
|
|
241
|
-
propertyDeclarationsVerify = await asyncEvery(this.propertyDeclarations, async (propertyDeclaration) => {
|
|
242
|
-
const propertyVerifes = await propertyDeclaration.verify(properties, this.type, context);
|
|
243
|
-
|
|
244
|
-
if (propertyVerifes) {
|
|
245
|
-
return true;
|
|
246
|
-
}
|
|
247
|
-
});
|
|
248
|
-
|
|
249
|
-
if (propertyDeclarationsVerify) {
|
|
250
|
-
context.debug(`...verified the '${complexTypeDeclarationString}' complex type declaration's '${typeString}' type's property declarations.`);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
return propertyDeclarationsVerify;
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
static name = "ComplexTypeDeclaration";
|
|
257
|
-
});
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Declaration from "../declaration";
|
|
4
|
-
|
|
5
|
-
import { define } from "../../elements";
|
|
6
|
-
|
|
7
|
-
export default define(class ConstructorDeclaration extends Declaration {
|
|
8
|
-
constructor(context, string, node, breakPoint, type, provisional, constructor) {
|
|
9
|
-
super(context, string, node, breakPoint);
|
|
10
|
-
|
|
11
|
-
this.type = type;
|
|
12
|
-
this.provisional = provisional;
|
|
13
|
-
this.constructor = constructor;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
getType() {
|
|
17
|
-
return this.type;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
isProvisional() {
|
|
21
|
-
return this.provisional;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
getConstructor() {
|
|
25
|
-
return this.constructor;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
getConstructorDeclarationNode() {
|
|
29
|
-
const node = this.getNode(),
|
|
30
|
-
constructorDeclarationNode = node; ///
|
|
31
|
-
|
|
32
|
-
return constructorDeclarationNode;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
async verify(context) {
|
|
36
|
-
let verifies = false;
|
|
37
|
-
|
|
38
|
-
await this.break(context);
|
|
39
|
-
|
|
40
|
-
const constructorDeclarationString = this.getString(); ///
|
|
41
|
-
|
|
42
|
-
context.trace(`Verifying the '${constructorDeclarationString}' constructor declaration...`);
|
|
43
|
-
|
|
44
|
-
const typeVerified = this.verifyType(context);
|
|
45
|
-
|
|
46
|
-
if (typeVerified) {
|
|
47
|
-
const constructorValidates = this.validateConstructor(context);
|
|
48
|
-
|
|
49
|
-
if (constructorValidates) {
|
|
50
|
-
this.constructor.setType(this.type);
|
|
51
|
-
|
|
52
|
-
context.addConstructor(this.constructor);
|
|
53
|
-
|
|
54
|
-
verifies = true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (verifies) {
|
|
59
|
-
context.debug(`...verified the '${constructorDeclarationString}' constructor declaration.`);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
return verifies;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
verifyType(context) {
|
|
66
|
-
let typeVerifies = false;
|
|
67
|
-
|
|
68
|
-
const constructorDeclarationString = this.getString(); ///
|
|
69
|
-
|
|
70
|
-
context.trace(`Verifying the '${constructorDeclarationString}' constructor declaration's type...`);
|
|
71
|
-
|
|
72
|
-
const nominalTypeName = this.type.getNominalTypeName(),
|
|
73
|
-
type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
74
|
-
|
|
75
|
-
if (type !== null) {
|
|
76
|
-
const provisional = this.isProvisional(),
|
|
77
|
-
typeComparesToProvisional = type.compareProvisional(provisional);
|
|
78
|
-
|
|
79
|
-
if (!typeComparesToProvisional) {
|
|
80
|
-
const typeString = this.type.getString();
|
|
81
|
-
|
|
82
|
-
provisional ?
|
|
83
|
-
context.debug(`The '${typeString}' type is present but not provisional.`) :
|
|
84
|
-
context.debug(`The '${typeString}' type is present but provisional.`);
|
|
85
|
-
} else {
|
|
86
|
-
this.type = type;
|
|
87
|
-
|
|
88
|
-
typeVerifies = true;
|
|
89
|
-
}
|
|
90
|
-
} else {
|
|
91
|
-
const typeString = this.type.getString();
|
|
92
|
-
|
|
93
|
-
context.debug(`The '${typeString}' type is not present.`);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
if (typeVerifies) {
|
|
97
|
-
context.debug(`...verified the '${constructorDeclarationString}' constructor declaration's type.`);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return typeVerifies;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
validateConstructor(context) {
|
|
104
|
-
let constructorValidates;
|
|
105
|
-
|
|
106
|
-
const includeType = false,
|
|
107
|
-
constructorString = this.constructor.getString(includeType),
|
|
108
|
-
constructorDeclarationString = this.getString(); ///
|
|
109
|
-
|
|
110
|
-
context.trace(`Validating the '${constructorDeclarationString}' constructor declaration's '${constructorString}' constructor...`);
|
|
111
|
-
|
|
112
|
-
constructorValidates = this.constructor.validate(context);
|
|
113
|
-
|
|
114
|
-
if (constructorValidates) {
|
|
115
|
-
context.debug(`...validated the '${constructorDeclarationString}' constructor declaration's '${constructorString}' constructor.`);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return constructorValidates;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
static name = "ConstructorDeclaration";
|
|
122
|
-
});
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Declaration from "../declaration";
|
|
4
|
-
|
|
5
|
-
import { define } from "../../elements";
|
|
6
|
-
|
|
7
|
-
export default define(class MetavariableDeclaration extends Declaration {
|
|
8
|
-
constructor(context, string, node, breakPoint, metaType, metavariable) {
|
|
9
|
-
super(context, string, node, breakPoint);
|
|
10
|
-
|
|
11
|
-
this.metaType = metaType;
|
|
12
|
-
this.metavariable = metavariable;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getMetaType() {
|
|
16
|
-
return this.metaType;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getMetavariable() {
|
|
20
|
-
return this.metavariable;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async verify(context) {
|
|
24
|
-
let verifies;
|
|
25
|
-
|
|
26
|
-
await this.break(context);
|
|
27
|
-
|
|
28
|
-
const metavariableDeclarationString = this.getString(); ///
|
|
29
|
-
|
|
30
|
-
context.trace(`Verifying the '${metavariableDeclarationString}' metavariable declaration...`);
|
|
31
|
-
|
|
32
|
-
const metavariableVerifies = this.verifyMetavariable(context);
|
|
33
|
-
|
|
34
|
-
if (metavariableVerifies) {
|
|
35
|
-
const metaTypeVerifies = this.verifyMetaType(context);
|
|
36
|
-
|
|
37
|
-
if (metaTypeVerifies) {
|
|
38
|
-
const declaredMetavariable = this.metavariable; ///
|
|
39
|
-
|
|
40
|
-
context.addDeclaredMetavariable(declaredMetavariable);
|
|
41
|
-
|
|
42
|
-
verifies = true;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (verifies) {
|
|
47
|
-
context.debug(`...verified the '${metavariableDeclarationString}' metavariable declaration.`);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return verifies;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
verifyMetaType(context) {
|
|
54
|
-
let metaTypeVerifies = true;
|
|
55
|
-
|
|
56
|
-
const metaTypeDeclarationString = this.getString(); ///
|
|
57
|
-
|
|
58
|
-
context.trace(`Verifying the '${metaTypeDeclarationString}' metavariable declaration's metaType...`);
|
|
59
|
-
|
|
60
|
-
this.metavariable.setMetaType(this.metaType);
|
|
61
|
-
|
|
62
|
-
if (metaTypeVerifies) {
|
|
63
|
-
context.debug(`...verified the '${metaTypeDeclarationString}' metavariable declaration's metaType.`);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return metaTypeVerifies;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
verifyMetavariable(context) {
|
|
70
|
-
let metavariableVerifies = false;
|
|
71
|
-
|
|
72
|
-
const metavariableDeclarationString = this.getString(); ///
|
|
73
|
-
|
|
74
|
-
context.trace(`Verifying the '${metavariableDeclarationString}' metavariable declaration's metavariable...`);
|
|
75
|
-
|
|
76
|
-
const metavariableName = this.metavariable.getName(),
|
|
77
|
-
declaredMetavariablePresent = context.isDeclaredMetavariablePresentByMetavariableName(metavariableName);
|
|
78
|
-
|
|
79
|
-
if (!declaredMetavariablePresent) {
|
|
80
|
-
metavariableVerifies = this.metavariable.verify(context);
|
|
81
|
-
} else {
|
|
82
|
-
context.debug(`The '${metavariableName}' declared metavariable is already present.`);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (metavariableVerifies) {
|
|
86
|
-
context.debug(`...verified the '${metavariableDeclarationString}' metavariable declaration's metavariable.`);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return metavariableVerifies;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
static name = "MetavariableDeclaration";
|
|
93
|
-
});
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import Declaration from "../declaration";
|
|
4
|
-
|
|
5
|
-
import { define } from "../../elements";
|
|
6
|
-
|
|
7
|
-
export default define(class PropertyDeclaration extends Declaration {
|
|
8
|
-
constructor(context, string, node, breakPoint, property, type) {
|
|
9
|
-
super(context, string, node, breakPoint);
|
|
10
|
-
|
|
11
|
-
this.property = property;
|
|
12
|
-
this.type = type;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getProperty() {
|
|
16
|
-
return this.property;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getType() {
|
|
20
|
-
return this.type;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
async verify(properties, type, context) {
|
|
24
|
-
let verifies = false;
|
|
25
|
-
|
|
26
|
-
await this.break(context);
|
|
27
|
-
|
|
28
|
-
const propertyDeclarationString = this.getString(); ///
|
|
29
|
-
|
|
30
|
-
context.trace(`Verifying the '${propertyDeclarationString}' property declaration...`);
|
|
31
|
-
|
|
32
|
-
if (this.property !== null) {
|
|
33
|
-
const typeVerifies = this.verifyType(type, context);
|
|
34
|
-
|
|
35
|
-
if (typeVerifies) {
|
|
36
|
-
const propertyVerifies = this.verifyProperty(properties, context);
|
|
37
|
-
|
|
38
|
-
if (propertyVerifies) {
|
|
39
|
-
this.property.setType(this.type);
|
|
40
|
-
|
|
41
|
-
verifies = true;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
} else {
|
|
45
|
-
context.debug(`Unable to verify the '${propertyDeclarationString}' property declaration because it is nonsense.`);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (verifies) {
|
|
49
|
-
context.debug(`...verified the '${propertyDeclarationString}' property declaration.`);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return verifies;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
verifyType(type, context) {
|
|
56
|
-
let typeVerifies = false;
|
|
57
|
-
|
|
58
|
-
const propertyDeclarationString = this.getString(); ///
|
|
59
|
-
|
|
60
|
-
context.trace(`Verifying the '${propertyDeclarationString}' property declaration's type...`);
|
|
61
|
-
|
|
62
|
-
const nominalTypeName = this.type.getNominalTypeName(),
|
|
63
|
-
comparesToNominalTypeName = type.compareNominalTypeName(nominalTypeName);
|
|
64
|
-
|
|
65
|
-
if (comparesToNominalTypeName) {
|
|
66
|
-
this.type = type;
|
|
67
|
-
|
|
68
|
-
typeVerifies = true;
|
|
69
|
-
} else {
|
|
70
|
-
const type = context.findTypeByTypeName(nominalTypeName);
|
|
71
|
-
|
|
72
|
-
if (type !== null) {
|
|
73
|
-
this.type = type;
|
|
74
|
-
|
|
75
|
-
typeVerifies = true;
|
|
76
|
-
} else {
|
|
77
|
-
const typeString = this.type.getString();
|
|
78
|
-
|
|
79
|
-
context.debug(`The '${typeString}' type is not present.`);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (typeVerifies) {
|
|
84
|
-
context.debug(`...verified the '${propertyDeclarationString}' property declaration's type`);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return typeVerifies;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
verifyProperty(properties, context) {
|
|
91
|
-
let propertyVerifies;
|
|
92
|
-
|
|
93
|
-
const propertyString = this.property.getString(),
|
|
94
|
-
propertyDeclarationString = this.getString(); ///
|
|
95
|
-
|
|
96
|
-
context.trace(`Verifying the '${propertyDeclarationString}' property declaration's '${propertyString}' property...`);
|
|
97
|
-
|
|
98
|
-
propertyVerifies = this.property.verify(properties, context);
|
|
99
|
-
|
|
100
|
-
if (propertyVerifies) {
|
|
101
|
-
context.debug(`...verified the '${propertyDeclarationString}' property declaration's '${propertyString}' type`);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return propertyVerifies;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
static name = "PropertyDeclaration";
|
|
108
|
-
});
|