-module(oaspec@codegen@ir). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/oaspec/codegen/ir.gleam"). -export([module/3, module_header/1, module_imports/1, module_declarations/1, declaration/2, declaration_doc/1, declaration_type_def/1]). -export_type([module_/0, declaration/0, type_def/0, field/0, variant/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -opaque module_() :: {module, binary(), list(binary()), list(declaration())}. -opaque declaration() :: {declaration, gleam@option:option(binary()), type_def()}. -type type_def() :: {type_alias, binary(), binary()} | {record_type, binary(), list(field())} | {union_type, binary(), list(variant())} | {enum_type, binary(), list(binary())}. -type field() :: {field, binary(), binary()}. -type variant() :: {variant_with_type, binary(), binary()} | {variant_empty, binary()}. -file("src/oaspec/codegen/ir.gleam", 17). ?DOC(" Construct a `Module` from its three component pieces.\n"). -spec module(binary(), list(binary()), list(declaration())) -> module_(). module(Header, Imports, Declarations) -> {module, Header, Imports, Declarations}. -file("src/oaspec/codegen/ir.gleam", 26). ?DOC(" File header string (e.g. the \"Code generated by...\" banner).\n"). -spec module_header(module_()) -> binary(). module_header(M) -> erlang:element(2, M). -file("src/oaspec/codegen/ir.gleam", 31). ?DOC(" Module imports, in the order they should be rendered.\n"). -spec module_imports(module_()) -> list(binary()). module_imports(M) -> erlang:element(3, M). -file("src/oaspec/codegen/ir.gleam", 36). ?DOC(" Top-level declarations inside the module.\n"). -spec module_declarations(module_()) -> list(declaration()). module_declarations(M) -> erlang:element(4, M). -file("src/oaspec/codegen/ir.gleam", 49). ?DOC(" Construct a `Declaration` from its optional doc and type definition.\n"). -spec declaration(gleam@option:option(binary()), type_def()) -> declaration(). declaration(Doc, Type_def) -> {declaration, Doc, Type_def}. -file("src/oaspec/codegen/ir.gleam", 57). ?DOC(" Optional doc comment attached to this declaration.\n"). -spec declaration_doc(declaration()) -> gleam@option:option(binary()). declaration_doc(D) -> erlang:element(2, D). -file("src/oaspec/codegen/ir.gleam", 62). ?DOC(" The type definition carried by this declaration.\n"). -spec declaration_type_def(declaration()) -> type_def(). declaration_type_def(D) -> erlang:element(3, D).