-module(gleamgen@expression). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([int/1, float/1, string/1, bool/1, nil/0, unchecked_ident/1, unchecked_of_type/2, concat_string/2, todo_/1, panic_/1, math_operator/3, math_operator_float/3, call_unchecked/2, new_block/2, new_case/3, type_/1, to_unchecked/1, list/1, list_prepend/2, tuple1/1, equals/2, tuple2/2, tuple3/3, tuple4/4, tuple5/5, tuple6/6, tuple7/7, tuple8/8, tuple9/9, ok/1, error/1, call0/1, call1/2, call2/3, call3/4, call4/5, call5/6, call6/7, call7/8, call8/9, call9/10, construct0/1, new_use/3, unsafe_from_unchecked/1, render_attribute/2, render/2, render_statement/2]). -export_type([expression/1, internal_expression/1, math_operator/0, statement/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 expression(HFL) :: {expression, internal_expression(HFL), gleamgen@types:generated_type(HFL)}. -type internal_expression(HFM) :: {int_literal, integer()} | {float_literal, float()} | {str_literal, binary()} | {bool_literal, boolean()} | nil_literal | {list_literal, list(expression(gleamgen@types:unchecked())), gleam@option:option(expression(gleamgen@types:unchecked()))} | {equals, expression(gleamgen@types:unchecked()), expression(gleamgen@types:unchecked())} | {tuple_literal, list(expression(gleamgen@types:unchecked()))} | {ident, binary()} | {todo, gleam@option:option(binary())} | {panic, gleam@option:option(binary())} | {math_operator, expression(integer()), math_operator(), expression(integer())} | {concat_string, expression(binary()), expression(binary())} | {math_operator_float, expression(float()), math_operator(), expression(float())} | {call, expression(gleamgen@types:unchecked()), list(expression(gleamgen@types:unchecked()))} | {single_constructor, expression(gleamgen@types:unchecked())} | {block, list(statement())} | {'case', expression(gleamgen@types:unchecked()), list(fun((gleamgen@render:context()) -> gleamgen@render:rendered()))} | {use, expression(gleamgen@types:unchecked()), list(expression(gleamgen@types:unchecked())), list(binary())} | {gleam_phantom, HFM}. -type math_operator() :: add | sub | mul | 'div' | greater_than | greater_than_or_equal | less_than | less_than_or_equal. -type statement() :: {let_declaration, binary(), expression(gleamgen@types:unchecked())} | {expression_statement, expression(gleamgen@types:unchecked())}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 51). -spec int(integer()) -> expression(integer()). int(Value) -> {expression, {int_literal, Value}, generated_int}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 55). -spec float(float()) -> expression(float()). float(Value) -> {expression, {float_literal, Value}, generated_float}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 59). -spec string(binary()) -> expression(binary()). string(Value) -> {expression, {str_literal, Value}, generated_string}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 63). -spec bool(boolean()) -> expression(boolean()). bool(Value) -> {expression, {bool_literal, Value}, generated_bool}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 67). -spec nil() -> expression(nil). nil() -> {expression, nil_literal, generated_nil}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 312). ?DOC(" Provide an ident that could be of any type\n"). -spec unchecked_ident(binary()) -> expression(any()). unchecked_ident(Value) -> {expression, {ident, Value}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 317). ?DOC(" Provide a string to inject without any checking of the specified type\n"). -spec unchecked_of_type(binary(), gleamgen@types:generated_type(HKF)) -> expression(HKF). unchecked_of_type(Value, Type_) -> {expression, {ident, Value}, Type_}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 331). ?DOC( " Use the <> operator to concatenate two strings\n" " ```gleam\n" " expression.concat_string(expression.string(\"hello \"), expression.string(\"world\"))\n" " |> expression.render(render.default_context())\n" " |> render.to_string()\n" " // -> \"\\\"hello \\\" <> \\\"world\\\"\"\n" " ```\n" ). -spec concat_string(expression(binary()), expression(binary())) -> expression(binary()). concat_string(Expr1, Expr2) -> {expression, {concat_string, Expr1, Expr2}, generated_string}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 345). ?DOC( " Create a todo expression with an optional as clause\n" " ```gleam\n" " expression.todo_(option.Some(\"some unimplemented thing\"))\n" " |> expression.render(render.default_context())\n" " |> render.to_string()\n" " // -> \"todo as \\\"some unimplemented thing\\\"\"\n" " ```\n" ). -spec todo_(gleam@option:option(binary())) -> expression(any()). todo_(As_string) -> {expression, {todo, As_string}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 356). ?DOC( " Create a panic expression with an optional as clause\n" " ```gleam\n" " expression.todo_(option.Some(\"ahhhhhh!!!\"))\n" " |> expression.render(render.default_context())\n" " |> render.to_string()\n" " // -> \"panic as \\\"ahhhhhh!!!\\\"\"\n" " ```\n" ). -spec panic_(gleam@option:option(binary())) -> expression(any()). panic_(As_string) -> {expression, {panic, As_string}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 393). ?DOC( " Apply a math operator to two expressions with the type of Int\n" " ```gleam\n" " expression.math_operator(expression.int(3), expression.Add, expression.int(5))\n" " |> expression.render(render.default_context())\n" " |> render.to_string()\n" " // -> \"3 + 5\"\n" " ```\n" ). -spec math_operator( expression(integer()), math_operator(), expression(integer()) ) -> expression(integer()). math_operator(Expr1, Op, Expr2) -> {expression, {math_operator, Expr1, Op, Expr2}, generated_int}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 412). ?DOC( " Apply a math operator to two expressions with the type of Float\n" " ```gleam\n" " expression.math_operator_float(\n" " expression.float(3.3),\n" " expression.GreaterThan,\n" " expression.unchecked_ident(\"other_float\")\n" " )\n" " |> expression.render(render.default_context())\n" " |> render.to_string()\n" " // -> \"3 >. other_float\"\n" " ```\n" ). -spec math_operator_float( expression(float()), math_operator(), expression(float()) ) -> expression(integer()). math_operator_float(Expr1, Op, Expr2) -> {expression, {math_operator_float, Expr1, Op, Expr2}, generated_int}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 637). ?DOC(" Call a function or constructor without type checking\n"). -spec call_unchecked( expression(gleamgen@types:unchecked()), list(expression(gleamgen@types:unchecked())) ) -> expression(gleamgen@types:unchecked()). call_unchecked(Func, Args) -> {expression, {call, Func, Args}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 670). ?DOC(false). -spec new_block(list(statement()), gleamgen@types:generated_type(HQI)) -> expression(HQI). new_block(Expressions, Return) -> {expression, {block, Expressions}, Return}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 688). ?DOC(false). -spec new_case( expression(gleamgen@types:unchecked()), list(fun((gleamgen@render:context()) -> gleamgen@render:rendered())), gleamgen@types:generated_type(HQS) ) -> expression(HQS). new_case(To_match_on, Matchers, Return) -> {expression, {'case', To_match_on, Matchers}, Return}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 693). ?DOC(" Get the internal type of an expression\n"). -spec type_(expression(HQU)) -> gleamgen@types:generated_type(HQU). type_(Expr) -> erlang:element(3, Expr). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 703). -spec to_unchecked(expression(any())) -> expression(gleamgen@types:unchecked()). to_unchecked(Type_) -> gleamgen_ffi:identity(Type_). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 71). -spec list(list(expression(HFS))) -> expression(list(HFS)). list(Value) -> {expression, {list_literal, begin _pipe = Value, gleam@list:map(_pipe, fun gleamgen_ffi:identity/1) end, none}, begin _pipe@1 = Value, _pipe@2 = gleam@list:first(_pipe@1), _pipe@3 = gleam@result:map(_pipe@2, fun type_/1), _pipe@4 = gleam@result:lazy_unwrap( _pipe@3, fun() -> gleamgen@types:unchecked() end ), gleamgen@types:list(_pipe@4) end}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 82). -spec list_prepend(list(expression(HFX)), expression(list(HFX))) -> expression(list(HFX)). list_prepend(Prepending, Original) -> {expression, {list_literal, begin _pipe = Prepending, gleam@list:map(_pipe, fun gleamgen_ffi:identity/1) end, {some, begin _pipe@1 = Original, gleamgen_ffi:identity(_pipe@1) end}}, begin _pipe@2 = Prepending, _pipe@3 = gleam@list:first(_pipe@2), _pipe@4 = gleam@result:map(_pipe@3, fun type_/1), _pipe@5 = gleam@result:lazy_unwrap( _pipe@4, fun() -> gleamgen@types:unchecked() end ), gleamgen@types:list(_pipe@5) end}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 99). -spec tuple1(expression(HGE)) -> expression({HGE}). tuple1(Arg1) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end]}, gleamgen@types:tuple1(type_(Arg1))}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 103). -spec equals(expression(HGH), expression(HGH)) -> expression(boolean()). equals(First, Second) -> {expression, {equals, begin _pipe = First, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Second, gleamgen_ffi:identity(_pipe@1) end}, generated_bool}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 113). -spec tuple2(expression(HGL), expression(HGN)) -> expression({HGL, HGN}). tuple2(Arg1, Arg2) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end]}, gleamgen@types:tuple2(type_(Arg1), type_(Arg2))}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 120). -spec tuple3(expression(HGQ), expression(HGS), expression(HGU)) -> expression({HGQ, HGS, HGU}). tuple3(Arg1, Arg2, Arg3) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end]}, gleamgen@types:tuple3(type_(Arg1), type_(Arg2), type_(Arg3))}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 135). -spec tuple4(expression(HGX), expression(HGZ), expression(HHB), expression(HHD)) -> expression({HGX, HGZ, HHB, HHD}). tuple4(Arg1, Arg2, Arg3, Arg4) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg4, gleamgen_ffi:identity(_pipe@3) end]}, gleamgen@types:tuple4( type_(Arg1), type_(Arg2), type_(Arg3), type_(Arg4) )}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 152). -spec tuple5( expression(HHG), expression(HHI), expression(HHK), expression(HHM), expression(HHO) ) -> expression({HHG, HHI, HHK, HHM, HHO}). tuple5(Arg1, Arg2, Arg3, Arg4, Arg5) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg4, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg5, gleamgen_ffi:identity(_pipe@4) end]}, gleamgen@types:tuple5( type_(Arg1), type_(Arg2), type_(Arg3), type_(Arg4), type_(Arg5) )}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 177). -spec tuple6( expression(HHR), expression(HHT), expression(HHV), expression(HHX), expression(HHZ), expression(HIB) ) -> expression({HHR, HHT, HHV, HHX, HHZ, HIB}). tuple6(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg4, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg5, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg6, gleamgen_ffi:identity(_pipe@5) end]}, gleamgen@types:tuple6( type_(Arg1), type_(Arg2), type_(Arg3), type_(Arg4), type_(Arg5), type_(Arg6) )}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 205). -spec tuple7( expression(HIE), expression(HIG), expression(HII), expression(HIK), expression(HIM), expression(HIO), expression(HIQ) ) -> expression({HIE, HIG, HII, HIK, HIM, HIO, HIQ}). tuple7(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg4, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg5, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg6, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg7, gleamgen_ffi:identity(_pipe@6) end]}, gleamgen@types:tuple7( type_(Arg1), type_(Arg2), type_(Arg3), type_(Arg4), type_(Arg5), type_(Arg6), type_(Arg7) )}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 236). -spec tuple8( expression(HIT), expression(HIV), expression(HIX), expression(HIZ), expression(HJB), expression(HJD), expression(HJF), expression(HJH) ) -> expression({HIT, HIV, HIX, HIZ, HJB, HJD, HJF, HJH}). tuple8(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg4, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg5, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg6, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg7, gleamgen_ffi:identity(_pipe@6) end, begin _pipe@7 = Arg8, gleamgen_ffi:identity(_pipe@7) end]}, gleamgen@types:tuple8( type_(Arg1), type_(Arg2), type_(Arg3), type_(Arg4), type_(Arg5), type_(Arg6), type_(Arg7), type_(Arg8) )}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 270). -spec tuple9( expression(HJK), expression(HJM), expression(HJO), expression(HJQ), expression(HJS), expression(HJU), expression(HJW), expression(HJY), expression(HKA) ) -> expression({HJK, HJM, HJO, HJQ, HJS, HJU, HJW, HJY, HKA}). tuple9(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9) -> {expression, {tuple_literal, [begin _pipe = Arg1, gleamgen_ffi:identity(_pipe) end, begin _pipe@1 = Arg2, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg3, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg4, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg5, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg6, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg7, gleamgen_ffi:identity(_pipe@6) end, begin _pipe@7 = Arg8, gleamgen_ffi:identity(_pipe@7) end, begin _pipe@8 = Arg9, gleamgen_ffi:identity(_pipe@8) end]}, gleamgen@types:tuple9( type_(Arg1), type_(Arg2), type_(Arg3), type_(Arg4), type_(Arg5), type_(Arg6), type_(Arg7), type_(Arg8), type_(Arg9) )}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 360). -spec ok(expression(HKR)) -> expression({ok, HKR} | {error, any()}). ok(Ok_value) -> {expression, {call, unchecked_ident(<<"Ok"/utf8>>), [begin _pipe = Ok_value, gleamgen_ffi:identity(_pipe) end]}, gleamgen@types:result(type_(Ok_value), gleamgen@types:unchecked())}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 367). -spec error(expression(HKX)) -> expression({ok, any()} | {error, HKX}). error(Err_value) -> {expression, {call, unchecked_ident(<<"Error"/utf8>>), [begin _pipe = Err_value, gleamgen_ffi:identity(_pipe) end]}, gleamgen@types:result(gleamgen@types:unchecked(), type_(Err_value))}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 429). ?DOC( " Call a function or constructor with no arguments\n" " ```gleam\n" " expression.call0(\n" " import_.function0(dict_module, dict.new)\n" " )\n" " |> expression.render(render.default_context())\n" " |> render.to_string()\n" " // -> \"dict.new()\"\n" " ```\n" ). -spec call0(expression(fun(() -> HLJ))) -> expression(HLJ). call0(Func) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, []}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 435). ?DOC( " Call a function or constructor with one argument\n" " See `call0`\n" ). -spec call1(expression(fun((HLM) -> HLN)), expression(HLM)) -> expression(HLN). call1(Func, Arg1) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 450). ?DOC( " Call a function or constructor with two arguments\n" " See `call0`\n" ). -spec call2( expression(fun((HLR, HLS) -> HLT)), expression(HLR), expression(HLS) ) -> expression(HLT). call2(Func, Arg1, Arg2) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 466). ?DOC( " Call a function or constructor with three arguments\n" " See `call0`\n" ). -spec call3( expression(fun((HLY, HLZ, HMA) -> HMB)), expression(HLY), expression(HLZ), expression(HMA) ) -> expression(HMB). call3(Func, Arg1, Arg2, Arg3) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 484). ?DOC( " Call a function or constructor with four arguments\n" " See `call0`\n" ). -spec call4( expression(fun((HMH, HMI, HMJ, HMK) -> HML)), expression(HMH), expression(HMI), expression(HMJ), expression(HMK) ) -> expression(HML). call4(Func, Arg1, Arg2, Arg3, Arg4) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg4, gleamgen_ffi:identity(_pipe@4) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 504). ?DOC( " Call a function or constructor with five arguments\n" " See `call0`\n" ). -spec call5( expression(fun((HMS, HMT, HMU, HMV, HMW) -> HMX)), expression(HMS), expression(HMT), expression(HMU), expression(HMV), expression(HMW) ) -> expression(HMX). call5(Func, Arg1, Arg2, Arg3, Arg4, Arg5) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg4, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg5, gleamgen_ffi:identity(_pipe@5) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 526). ?DOC( " Call a function or constructor with six arguments\n" " See `call0`\n" ). -spec call6( expression(fun((HNF, HNG, HNH, HNI, HNJ, HNK) -> HNL)), expression(HNF), expression(HNG), expression(HNH), expression(HNI), expression(HNJ), expression(HNK) ) -> expression(HNL). call6(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg4, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg5, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg6, gleamgen_ffi:identity(_pipe@6) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 550). ?DOC( " Call a function or constructor with seven arguments\n" " See `call0`\n" ). -spec call7( expression(fun((HNU, HNV, HNW, HNX, HNY, HNZ, HOA) -> HOB)), expression(HNU), expression(HNV), expression(HNW), expression(HNX), expression(HNY), expression(HNZ), expression(HOA) ) -> expression(HOB). call7(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg4, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg5, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg6, gleamgen_ffi:identity(_pipe@6) end, begin _pipe@7 = Arg7, gleamgen_ffi:identity(_pipe@7) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 576). ?DOC( " Call a function or constructor with eight arguments\n" " See `call0`\n" ). -spec call8( expression(fun((HOL, HOM, HON, HOO, HOP, HOQ, HOR, HOS) -> HOT)), expression(HOL), expression(HOM), expression(HON), expression(HOO), expression(HOP), expression(HOQ), expression(HOR), expression(HOS) ) -> expression(HOT). call8(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg4, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg5, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg6, gleamgen_ffi:identity(_pipe@6) end, begin _pipe@7 = Arg7, gleamgen_ffi:identity(_pipe@7) end, begin _pipe@8 = Arg8, gleamgen_ffi:identity(_pipe@8) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 604). ?DOC( " Call a function or constructor with nine arguments\n" " See `call0`\n" ). -spec call9( expression(fun((HPE, HPF, HPG, HPH, HPI, HPJ, HPK, HPL, HPM) -> HPN)), expression(HPE), expression(HPF), expression(HPG), expression(HPH), expression(HPI), expression(HPJ), expression(HPK), expression(HPL), expression(HPM) ) -> expression(HPN). call9(Func, Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9) -> {expression, {call, begin _pipe = Func, gleamgen_ffi:identity(_pipe) end, [begin _pipe@1 = Arg1, gleamgen_ffi:identity(_pipe@1) end, begin _pipe@2 = Arg2, gleamgen_ffi:identity(_pipe@2) end, begin _pipe@3 = Arg3, gleamgen_ffi:identity(_pipe@3) end, begin _pipe@4 = Arg4, gleamgen_ffi:identity(_pipe@4) end, begin _pipe@5 = Arg5, gleamgen_ffi:identity(_pipe@5) end, begin _pipe@6 = Arg6, gleamgen_ffi:identity(_pipe@6) end, begin _pipe@7 = Arg7, gleamgen_ffi:identity(_pipe@7) end, begin _pipe@8 = Arg8, gleamgen_ffi:identity(_pipe@8) end, begin _pipe@9 = Arg9, gleamgen_ffi:identity(_pipe@9) end]}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 644). -spec construct0(expression(fun(() -> HQD))) -> expression(HQD). construct0(Constructor) -> {expression, {single_constructor, begin _pipe = Constructor, gleamgen_ffi:identity(_pipe) end}, gleamgen@types:unchecked()}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 675). ?DOC(false). -spec new_use( expression(any()), list(expression(gleamgen@types:unchecked())), list(binary()) ) -> expression(gleamgen@types:unchecked()). new_use(Function, Args, Callback_args) -> Return = gleamgen@types:get_return_type(erlang:element(3, Function)), {expression, {use, begin _pipe = Function, gleamgen_ffi:identity(_pipe) end, Args, Callback_args}, Return}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 708). ?DOC(" Convert an expression to any type without checking\n"). -spec unsafe_from_unchecked(expression(any())) -> expression(any()). unsafe_from_unchecked(Type_) -> gleamgen_ffi:identity(Type_). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 997). ?DOC(false). -spec render_attribute( {binary(), gleamgen@types:generated_type(any())}, gleamgen@render:context() ) -> glam@doc:document(). render_attribute(X, Context) -> case erlang:element(2, Context) of true -> glam@doc:concat( [glam@doc:from_string(erlang:element(1, X)), case gleamgen@types:render_type(erlang:element(2, X)) of {ok, Rendered} -> glam@doc:concat( [glam@doc:from_string(<<":"/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}, erlang:element(2, Rendered)] ); {error, nil} -> {concat, []} end] ); false -> glam@doc:from_string(erlang:element(1, X)) end. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 809). -spec render_panicking_expression(binary(), gleam@option:option(binary())) -> glam@doc:document(). render_panicking_expression(Name, As_string) -> case As_string of {some, Value} -> _pipe = glam@doc:concat( [glam@doc:from_string(<>), {break, <<" "/utf8>>, <<""/utf8>>}, gleamgen@render:escape_string(Value)] ), glam@doc:group(_pipe); none -> glam@doc:from_string(Name) end. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 723). -spec render(expression(any()), gleamgen@render:context()) -> gleamgen@render:rendered(). render(Expression, Context) -> case erlang:element(2, Expression) of {int_literal, Value} -> _pipe = Value, _pipe@1 = gleam@int:to_string(_pipe), _pipe@2 = glam@doc:from_string(_pipe@1), {render, _pipe@2, {rendered_details, []}}; {float_literal, Value@1} -> _pipe@3 = Value@1, _pipe@4 = gleam@float:to_string(_pipe@3), _pipe@5 = glam@doc:from_string(_pipe@4), {render, _pipe@5, {rendered_details, []}}; {str_literal, Value@2} -> _pipe@6 = gleamgen@render:escape_string(Value@2), {render, _pipe@6, {rendered_details, []}}; {bool_literal, true} -> _pipe@7 = glam@doc:from_string(<<"True"/utf8>>), {render, _pipe@7, {rendered_details, []}}; {bool_literal, false} -> _pipe@8 = glam@doc:from_string(<<"False"/utf8>>), {render, _pipe@8, {rendered_details, []}}; nil_literal -> _pipe@9 = glam@doc:from_string(<<"Nil"/utf8>>), {render, _pipe@9, {rendered_details, []}}; {list_literal, Values, Initial_list} -> render_list(Values, Initial_list, Context); {tuple_literal, Values@1} -> render_tuple(Values@1, Context); {ident, Value@3} -> Used_imports = case gleam@string:split_once(Value@3, <<"."/utf8>>) of {ok, {Module, _}} -> [Module]; {error, nil} -> [] end, _pipe@10 = glam@doc:from_string(Value@3), {render, _pipe@10, {rendered_details, Used_imports}}; {todo, As_string} -> _pipe@11 = render_panicking_expression(<<"todo"/utf8>>, As_string), {render, _pipe@11, {rendered_details, []}}; {panic, As_string@1} -> _pipe@12 = render_panicking_expression( <<"panic"/utf8>>, As_string@1 ), {render, _pipe@12, {rendered_details, []}}; {concat_string, Expr1, Expr2} -> render_operator( Expr1, Expr2, glam@doc:from_string(<<"<>"/utf8>>), Context ); {math_operator, Expr1@1, Op, Expr2@1} -> render_operator(Expr1@1, Expr2@1, case Op of add -> glam@doc:from_string(<<"+"/utf8>>); sub -> glam@doc:from_string(<<"-"/utf8>>); mul -> glam@doc:from_string(<<"*"/utf8>>); 'div' -> glam@doc:from_string(<<"/"/utf8>>); greater_than -> glam@doc:from_string(<<">"/utf8>>); greater_than_or_equal -> glam@doc:from_string(<<">="/utf8>>); less_than -> glam@doc:from_string(<<"<"/utf8>>); less_than_or_equal -> glam@doc:from_string(<<"<="/utf8>>) end, Context); {math_operator_float, Expr1@2, Op@1, Expr2@2} -> render_operator(Expr1@2, Expr2@2, case Op@1 of add -> glam@doc:from_string(<<"+."/utf8>>); sub -> glam@doc:from_string(<<"-."/utf8>>); mul -> glam@doc:from_string(<<"*."/utf8>>); 'div' -> glam@doc:from_string(<<"/."/utf8>>); greater_than -> glam@doc:from_string(<<">."/utf8>>); greater_than_or_equal -> glam@doc:from_string(<<">=."/utf8>>); less_than -> glam@doc:from_string(<<"<."/utf8>>); less_than_or_equal -> glam@doc:from_string(<<"<=."/utf8>>) end, Context); {call, Func, Args} -> render_call(Func, Args, Context); {single_constructor, Constructor} -> render_constructor(Constructor, Context); {block, Expressions} -> render_block(Expressions, Context); {equals, Expr1@3, Expr2@3} -> render_operator( Expr1@3, Expr2@3, glam@doc:from_string(<<"=="/utf8>>), Context ); {'case', To_match_on, Matchers} -> render_case(To_match_on, Matchers, Context); {use, Func@1, Args@1, Callback_args} -> render_use(Func@1, Args@1, Callback_args, Context) end. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 844). -spec render_case( expression(gleamgen@types:unchecked()), list(fun((gleamgen@render:context()) -> gleamgen@render:rendered())), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_case(To_match_on, Matchers, Context) -> Rendered_match_on = render(To_match_on, Context), Matchers@1 = gleam@list:map(Matchers, fun(M) -> M(Context) end), Matcher_details = gleam@list:fold( begin _pipe = Matchers@1, gleam@list:map(_pipe, fun(M@1) -> erlang:element(3, M@1) end) end, {rendered_details, []}, fun gleamgen@render:merge_details/2 ), _pipe@3 = glam@doc:concat( [glam@doc:from_string(<<"case "/utf8>>), erlang:element(2, Rendered_match_on), {break, <<" "/utf8>>, <<""/utf8>>}, gleamgen@render:body( begin _pipe@1 = Matchers@1, _pipe@2 = gleam@list:map( _pipe@1, fun(M@2) -> erlang:element(2, M@2) end ), glam@doc:join(_pipe@2, {line, 1}) end, true )] ), {render, _pipe@3, {rendered_details, lists:append( erlang:element(2, erlang:element(3, Rendered_match_on)), erlang:element(2, Matcher_details) )}}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 911). -spec render_statement(statement(), gleamgen@render:context()) -> gleamgen@render:rendered(). render_statement(Statement, Context) -> case Statement of {let_declaration, Variable, Value} -> Rendered_value = render(Value, Context), _pipe = glam@doc:concat( [glam@doc:from_string(<<"let "/utf8>>), glam@doc:from_string(Variable), {break, <<" "/utf8>>, <<""/utf8>>}, glam@doc:from_string(<<"="/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}, erlang:element(2, Rendered_value)] ), {render, _pipe, erlang:element(3, Rendered_value)}; {expression_statement, Expr} -> render(Expr, Context) end. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 929). -spec render_block(list(statement()), gleamgen@render:context()) -> gleamgen@render:rendered(). render_block(Statements, Context) -> {Inner_statements, Details} = gleam@list:fold( Statements, {[], {rendered_details, []}}, fun(Acc, Statement) -> Rendered = render_statement( Statement, begin _record = Context, {context, erlang:element(2, _record), true} end ), {[erlang:element(2, Rendered) | erlang:element(1, Acc)], gleamgen@render:merge_details( erlang:element(3, Rendered), erlang:element(2, Acc) )} end ), Inner = begin _pipe = Inner_statements, _pipe@1 = lists:reverse(_pipe), glam@doc:join(_pipe@1, {line, 1}) end, _pipe@2 = case erlang:element(3, Context) of true -> gleamgen@render:body(Inner, true); false -> Inner end, {render, _pipe@2, Details}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 952). -spec render_expressions(list(expression(any())), gleamgen@render:context()) -> {list(glam@doc:document()), gleamgen@render:rendered_details()}. render_expressions(Expressions, Context) -> {Rendered@1, Details} = gleam@list:fold( Expressions, {[], {rendered_details, []}}, fun(Acc, Expr) -> Rendered = render(Expr, Context), {[erlang:element(2, Rendered) | erlang:element(1, Acc)], gleamgen@render:merge_details( erlang:element(3, Rendered), erlang:element(2, Acc) )} end ), {begin _pipe = Rendered@1, lists:reverse(_pipe) end, Details}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 872). -spec render_tuple( list(expression(gleamgen@types:unchecked())), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_tuple(Values, Context) -> {Rendered_values, Details} = render_expressions(Values, Context), _pipe = Rendered_values, _pipe@1 = gleamgen@render:pretty_list(_pipe), _pipe@2 = glam@doc:prepend(_pipe@1, glam@doc:from_string(<<"#"/utf8>>)), {render, _pipe@2, Details}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 880). -spec render_list( list(expression(gleamgen@types:unchecked())), gleam@option:option(expression(gleamgen@types:unchecked())), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_list(Values, Initial_list, Context) -> Comma = glam@doc:concat( [glam@doc:from_string(<<","/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}] ), {Ending, Trailing_comma} = case Initial_list of {some, Initial} -> {glam@doc:concat( [glam@doc:from_string(<<","/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}, glam@doc:from_string(<<".."/utf8>>), erlang:element(2, render(Initial, Context))] ), {break, <<""/utf8>>, <<""/utf8>>}}; none -> {{concat, []}, glam@doc:break(<<""/utf8>>, <<","/utf8>>)} end, Open_bracket = glam@doc:concat( [glam@doc:from_string(<<"["/utf8>>), {break, <<""/utf8>>, <<""/utf8>>}] ), Close_bracket = glam@doc:concat( [Trailing_comma, glam@doc:from_string(<<"]"/utf8>>)] ), {Rendered_values, Details} = render_expressions(Values, Context), _pipe = Rendered_values, _pipe@1 = glam@doc:join(_pipe, Comma), _pipe@2 = glam@doc:prepend(_pipe@1, Open_bracket), _pipe@3 = glam@doc:append(_pipe@2, Ending), _pipe@4 = glam@doc:nest(_pipe@3, 2), _pipe@5 = glam@doc:append(_pipe@4, Close_bracket), _pipe@6 = glam@doc:group(_pipe@5), {render, _pipe@6, Details}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 964). -spec render_call( expression(gleamgen@types:unchecked()), list(expression(gleamgen@types:unchecked())), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_call(Func, Args, Context) -> {Rendered_args, Details} = render_expressions(Args, Context), Caller = render(Func, Context), _pipe = glam@doc:concat( [erlang:element(2, Caller), gleamgen@render:pretty_list(Rendered_args)] ), {render, _pipe, gleamgen@render:merge_details(Details, erlang:element(3, Caller))}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 822). -spec render_use( expression(gleamgen@types:unchecked()), list(expression(gleamgen@types:unchecked())), list(binary()), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_use(Func, Args, Callback_args, Context) -> Use_args = begin _pipe = Callback_args, _pipe@1 = gleam@list:map(_pipe, fun glam@doc:from_string/1), _pipe@2 = glam@doc:join( _pipe@1, glam@doc:concat( [glam@doc:from_string(<<","/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}] ) ), glam@doc:append(_pipe@2, case gleam@list:is_empty(Callback_args) of true -> {concat, []}; false -> {break, <<" "/utf8>>, <<""/utf8>>} end) end, Call = render_call(Func, Args, Context), _pipe@3 = glam@doc:concat( [glam@doc:from_string(<<"use"/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}, Use_args, glam@doc:from_string(<<"<-"/utf8>>), {break, <<" "/utf8>>, <<""/utf8>>}, erlang:element(2, Call)] ), {render, _pipe@3, erlang:element(3, Call)}. -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 971). -spec render_constructor( expression(gleamgen@types:unchecked()), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_constructor(Func, Context) -> render(Func, Context). -file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression.gleam", 975). -spec render_operator( expression(HSM), expression(HSM), glam@doc:document(), gleamgen@render:context() ) -> gleamgen@render:rendered(). render_operator(Expr1, Expr2, Rendered_op, Context) -> First_rendered = render(Expr1, Context), Second_rendered = render(Expr2, Context), _pipe = glam@doc:concat( [erlang:element(2, First_rendered), {break, <<" "/utf8>>, <<""/utf8>>}, Rendered_op, {break, <<" "/utf8>>, <<""/utf8>>}, erlang:element(2, Second_rendered)] ), {render, _pipe, gleamgen@render:merge_details( erlang:element(3, First_rendered), erlang:element(3, Second_rendered) )}.