Implement implicit object references and capability query foundations

This commit is contained in:
Timothy J. Aveni
2026-09-26 11:44:32 -07:00
parent 58a75da83f
commit 3728612e8c
13 changed files with 401 additions and 35 deletions
+12
View File
@@ -147,10 +147,22 @@ export function linkQueries(workspace: WorkspaceRevision): LinkedQuery[] {
(entry) => entry.interfaceRevisionId === declaration.root.interface,
);
const rootAtoms = [...new Set(rootConformances.map((entry) => entry.atomId))].sort();
const qualifiedInterfaces = new Set<string>();
const qualifications = (node: unknown): void => {
if (!node || typeof node !== "object") return;
if ("kind" in node && node.kind === "as" && "interfaceRevisionId" in node)
qualifiedInterfaces.add(String(node.interfaceRevisionId));
for (const child of Object.values(node)) qualifications(child);
};
qualifications(checked.selection);
const bindingDigest = createHash("sha256")
.update(
canonicalJson({
definition: checked.definitionDigest,
qualifiedConformances: workspace.conformances
.filter((entry) => qualifiedInterfaces.has(entry.interfaceRevisionId))
.map((entry) => ({ atomId: entry.atomId, id: entry.id, interfaceRevisionId: entry.interfaceRevisionId }))
.sort((a, b) => canonicalJson(a).localeCompare(canonicalJson(b))),
rootConformances: rootConformances
.map((entry) => ({ atomId: entry.atomId, id: entry.id, interfaceRevisionId: entry.interfaceRevisionId }))
.sort((a, b) => canonicalJson(a).localeCompare(canonicalJson(b))),