Support explicitly reference-selected read-only interface dependencies

This commit is contained in:
Timothy J. Aveni
2026-09-20 22:15:15 -07:00
parent 266d2d98d0
commit c0669d2ed8
12 changed files with 1081 additions and 893 deletions
+12
View File
@@ -1418,6 +1418,15 @@ const validateBoundDependencies = (
}
case "interface": {
const interfaceBinding = binding as Extract<DependencyBinding, { kind: "interface" }>;
if (interfaceBinding.receiver !== requirement.receiver || (interfaceBinding.receiver && interfaceBinding.via)) {
issue(
issues,
"invalid-dependency-binding",
path,
"Reference-selected interface ports require an explicit matching from input binding",
);
break;
}
if (interfaceBinding.interfaceRevisionId !== requirement.interfaceRevisionId) {
issue(
issues,
@@ -1427,6 +1436,9 @@ const validateBoundDependencies = (
);
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;
const traversal = interfaceBinding.via
? validateTraversal(
issues,