@fairfox/polly 0.15.4 → 0.15.5
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/dist/tools/analysis/src/types/core.d.ts +2 -0
- package/dist/tools/teach/src/cli.js +9 -5
- package/dist/tools/teach/src/cli.js.map +3 -3
- package/dist/tools/teach/src/index.js +9 -5
- package/dist/tools/teach/src/index.js.map +3 -3
- package/dist/tools/verify/src/cli.js +55 -8
- package/dist/tools/verify/src/cli.js.map +4 -4
- package/dist/tools/visualize/src/cli.js +9 -5
- package/dist/tools/visualize/src/cli.js.map +3 -3
- package/package.json +1 -1
|
@@ -370,6 +370,7 @@ class TLAGenerator {
|
|
|
370
370
|
extractedInvariants = [];
|
|
371
371
|
temporalProperties = [];
|
|
372
372
|
symmetrySets = [];
|
|
373
|
+
resolvedActionNames = new Map;
|
|
373
374
|
constructor(options) {
|
|
374
375
|
this.options = options;
|
|
375
376
|
}
|
|
@@ -1024,8 +1025,9 @@ class TLAGenerator {
|
|
|
1024
1025
|
this.generateNoValidHandlersStub();
|
|
1025
1026
|
return;
|
|
1026
1027
|
}
|
|
1028
|
+
this.resolveActionNamesForHandlers(validHandlers);
|
|
1027
1029
|
const handlersByType = this.groupHandlersByType(validHandlers);
|
|
1028
|
-
this.generateHandlerActions(handlersByType, config, analysis.stateConstraints);
|
|
1030
|
+
this.generateHandlerActions(handlersByType, config, analysis.stateConstraints ?? []);
|
|
1029
1031
|
this.generateStateTransitionDispatcher(handlersByType);
|
|
1030
1032
|
}
|
|
1031
1033
|
generateNoHandlersStub() {
|
|
@@ -1093,7 +1095,7 @@ class TLAGenerator {
|
|
|
1093
1095
|
const msgType = messageTypes[i];
|
|
1094
1096
|
if (!msgType)
|
|
1095
1097
|
continue;
|
|
1096
|
-
const actionName = this.
|
|
1098
|
+
const actionName = this.getResolvedActionName(msgType);
|
|
1097
1099
|
if (i === 0) {
|
|
1098
1100
|
this.line(`IF msgType = "${msgType}" THEN ${actionName}(ctx)`);
|
|
1099
1101
|
if (messageTypes.length === 1) {
|
|
@@ -1110,7 +1112,7 @@ class TLAGenerator {
|
|
|
1110
1112
|
this.line("");
|
|
1111
1113
|
}
|
|
1112
1114
|
generateHandlerAction(messageType, handlers, config, stateConstraints) {
|
|
1113
|
-
const actionName = this.
|
|
1115
|
+
const actionName = this.getResolvedActionName(messageType);
|
|
1114
1116
|
this.line(`\\* Handler for ${messageType}`);
|
|
1115
1117
|
this.line(`${actionName}(ctx) ==`);
|
|
1116
1118
|
this.indent++;
|
|
@@ -1551,6 +1553,47 @@ class TLAGenerator {
|
|
|
1551
1553
|
}
|
|
1552
1554
|
return `Handle${messageType.split("_").map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()).join("")}`;
|
|
1553
1555
|
}
|
|
1556
|
+
resolveActionNamesForHandlers(handlers) {
|
|
1557
|
+
this.resolvedActionNames.clear();
|
|
1558
|
+
const actionNameToMessageTypes = this.groupHandlersByActionName(handlers);
|
|
1559
|
+
this.resolveCollisions(actionNameToMessageTypes);
|
|
1560
|
+
}
|
|
1561
|
+
groupHandlersByActionName(handlers) {
|
|
1562
|
+
const actionNameToMessageTypes = new Map;
|
|
1563
|
+
for (const handler of handlers) {
|
|
1564
|
+
const baseActionName = this.messageTypeToActionName(handler.messageType);
|
|
1565
|
+
if (!actionNameToMessageTypes.has(baseActionName)) {
|
|
1566
|
+
actionNameToMessageTypes.set(baseActionName, []);
|
|
1567
|
+
}
|
|
1568
|
+
const existing = actionNameToMessageTypes.get(baseActionName);
|
|
1569
|
+
if (existing && !existing.some((e) => e.messageType === handler.messageType)) {
|
|
1570
|
+
existing.push({ messageType: handler.messageType, origin: handler.origin });
|
|
1571
|
+
}
|
|
1572
|
+
}
|
|
1573
|
+
return actionNameToMessageTypes;
|
|
1574
|
+
}
|
|
1575
|
+
resolveCollisions(actionNameToMessageTypes) {
|
|
1576
|
+
for (const [baseActionName, messageTypes] of actionNameToMessageTypes.entries()) {
|
|
1577
|
+
if (messageTypes.length === 1) {
|
|
1578
|
+
const entry = messageTypes[0];
|
|
1579
|
+
if (entry) {
|
|
1580
|
+
this.resolvedActionNames.set(entry.messageType, baseActionName);
|
|
1581
|
+
}
|
|
1582
|
+
continue;
|
|
1583
|
+
}
|
|
1584
|
+
for (const entry of messageTypes) {
|
|
1585
|
+
const resolvedName = entry.origin === "stateHandler" ? baseActionName.replace(/^Handle/, "HandleFn") : baseActionName;
|
|
1586
|
+
this.resolvedActionNames.set(entry.messageType, resolvedName);
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
getResolvedActionName(messageType) {
|
|
1591
|
+
const resolved = this.resolvedActionNames.get(messageType);
|
|
1592
|
+
if (resolved) {
|
|
1593
|
+
return resolved;
|
|
1594
|
+
}
|
|
1595
|
+
return this.messageTypeToActionName(messageType);
|
|
1596
|
+
}
|
|
1554
1597
|
assignmentValueToTLA(value) {
|
|
1555
1598
|
if (typeof value === "boolean") {
|
|
1556
1599
|
return value ? "TRUE" : "FALSE";
|
|
@@ -3777,7 +3820,8 @@ class HandlerExtractor {
|
|
|
3777
3820
|
file: filePath,
|
|
3778
3821
|
line
|
|
3779
3822
|
},
|
|
3780
|
-
relationships
|
|
3823
|
+
relationships,
|
|
3824
|
+
origin: "event"
|
|
3781
3825
|
};
|
|
3782
3826
|
}
|
|
3783
3827
|
extractAssignments(funcNode, assignments) {
|
|
@@ -4444,7 +4488,8 @@ class HandlerExtractor {
|
|
|
4444
4488
|
assignments: [],
|
|
4445
4489
|
preconditions: [],
|
|
4446
4490
|
postconditions: [],
|
|
4447
|
-
location: { file: filePath, line }
|
|
4491
|
+
location: { file: filePath, line },
|
|
4492
|
+
origin: "event"
|
|
4448
4493
|
});
|
|
4449
4494
|
}
|
|
4450
4495
|
}
|
|
@@ -5132,7 +5177,8 @@ class HandlerExtractor {
|
|
|
5132
5177
|
location: {
|
|
5133
5178
|
file: filePath,
|
|
5134
5179
|
line: func.getStartLineNumber()
|
|
5135
|
-
}
|
|
5180
|
+
},
|
|
5181
|
+
origin: "stateHandler"
|
|
5136
5182
|
});
|
|
5137
5183
|
}
|
|
5138
5184
|
for (const varStmt of sourceFile.getVariableStatements()) {
|
|
@@ -5166,7 +5212,8 @@ class HandlerExtractor {
|
|
|
5166
5212
|
location: {
|
|
5167
5213
|
file: filePath,
|
|
5168
5214
|
line: decl.getStartLineNumber()
|
|
5169
|
-
}
|
|
5215
|
+
},
|
|
5216
|
+
origin: "stateHandler"
|
|
5170
5217
|
});
|
|
5171
5218
|
}
|
|
5172
5219
|
}
|
|
@@ -6111,4 +6158,4 @@ main().catch((error) => {
|
|
|
6111
6158
|
process.exit(1);
|
|
6112
6159
|
});
|
|
6113
6160
|
|
|
6114
|
-
//# debugId=
|
|
6161
|
+
//# debugId=940EA504112DF08B64756E2164756E21
|