Restore the workspace canvas and atomic Studio creation workflow
This commit is contained in:
@@ -1458,6 +1458,21 @@ const validateBoundDependencies = (
|
||||
);
|
||||
break;
|
||||
}
|
||||
const selected = requirement.operations?.map(
|
||||
(id) => params.indexes.interfaces.get(requirement.interfaceRevisionId)?.operations.get(id)?.operation,
|
||||
);
|
||||
if (
|
||||
selected?.some((op) => op?.scope === "class") &&
|
||||
(interfaceBinding.via || interfaceBinding.receiver || selected.some((op) => op?.scope !== "class"))
|
||||
) {
|
||||
issue(
|
||||
issues,
|
||||
"invalid-dependency-binding",
|
||||
path,
|
||||
"Static interface dependencies require a receiverless selection of class operations on the bound atom",
|
||||
);
|
||||
break;
|
||||
}
|
||||
// The reference supplies its own checked witness at invocation time.
|
||||
// This is not a requirement that the current receiver implements the interface.
|
||||
if (interfaceBinding.receiver === "input") break;
|
||||
@@ -1921,8 +1936,20 @@ const validateConformances = (
|
||||
});
|
||||
if (
|
||||
operation.scope === "class" &&
|
||||
(binding.dependencies.some((entry) => !["constructor", "creation"].includes(entry.binding.kind)) ||
|
||||
packageExport.dependencyPorts.some((entry) => !["constructor", "creation"].includes(entry.requirement.kind)))
|
||||
packageExport.dependencyPorts.some(({ requirement }) => {
|
||||
if (["constructor", "creation", "reflection"].includes(requirement.kind)) return false;
|
||||
if (requirement.kind !== "interface") return true;
|
||||
if (requirement.receiver === "input") return false;
|
||||
const contract = indexes.interfaces.get(requirement.interfaceRevisionId);
|
||||
return (
|
||||
!requirement.operations?.length ||
|
||||
!requirement.operations.every((id) =>
|
||||
contract?.revision.members
|
||||
.flatMap((m) => m.operations)
|
||||
.some((op) => op.id === id && op.scope === "class"),
|
||||
)
|
||||
);
|
||||
})
|
||||
) {
|
||||
issue(
|
||||
issues,
|
||||
|
||||
Reference in New Issue
Block a user