Implement implicit object references and capability query foundations
This commit is contained in:
@@ -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))),
|
||||
|
||||
Reference in New Issue
Block a user