Skip to main content

src/webql/compiler/resolver/resolve_document.gleam

import gleam/result
import webql/compiler/context
import webql/compiler/environment
import webql/compiler/parser/ast
import webql/compiler/reference
import webql/compiler/resolver/diagnostic
import webql/compiler/resolver/hir
import webql/compiler/resolver/resolve_graph

/// Resolves a top-level document.
pub fn resolve(
  environment: environment.Environment,
  context: context.Context,
  document: ast.Document,
  reference: reference.Document,
) -> Result(#(hir.Document, context.Context), diagnostic.Diagnostic) {
  use #(graph, context) <- result.try(resolve_graph.resolve(
    environment,
    context,
    document.graph,
  ))

  Ok(#(hir.Document(graph:, reference:, span: document.span), context))
}