Skip to main content

src/webql/compiler/lowerer/lower_node.gleam

import webql/graph

/// Lowers a resolved node reference into an IR node.
pub fn lower(
  name: String,
  node: String,
  supernodes: List(#(String, graph.Graph)),
) -> graph.Node {
  case supernodes {
    [#(supernode, graph), ..] if supernode == node ->
      graph.Supernode(name:, graph:)

    [_supernode, ..supernodes] -> lower(name, node, supernodes)
    [] -> graph.Node(name:, node:)
  }
}