Current section
Files
Jump to
Current section
Files
src/gleamgen@expression@block.erl
-module(gleamgen@expression@block).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([ending_block/1, ending_unchecked/1, new/2, new_unchecked/1, with_let_declaration/3, with_statements_unchecked/2, with_expression/2, build/1]).
-export_type([block_builder/1]).
-opaque block_builder(HXC) :: {block_builder,
list(gleamgen@expression:statement()),
gleamgen@types:generated_type(HXC)}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 42).
-spec ending_block(gleamgen@expression:expression(HXD)) -> block_builder(HXD).
ending_block(Expr) ->
{block_builder,
[begin
_pipe = Expr,
_pipe@1 = gleamgen_ffi:identity(_pipe),
{expression_statement, _pipe@1}
end],
gleamgen@expression:type_(Expr)}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 49).
-spec ending_unchecked(list(gleamgen@expression:statement())) -> block_builder(any()).
ending_unchecked(Statements) ->
{block_builder,
Statements,
begin
_pipe = gleam@list:last(Statements),
_pipe@2 = gleam@result:map(_pipe, fun(S) -> case S of
{expression_statement, Expr} ->
_pipe@1 = gleamgen@expression:type_(Expr),
gleamgen_ffi:identity(_pipe@1);
{let_declaration, _, _} ->
gleamgen@types:unchecked()
end end),
gleam@result:unwrap(_pipe@2, gleamgen@types:unchecked())
end}.
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 66).
-spec new(
list(gleamgen@expression:statement()),
gleamgen@types:generated_type(HXK)
) -> gleamgen@expression:expression(HXK).
new(Statements, Return) ->
gleamgen@expression:new_block(Statements, Return).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 73).
-spec new_unchecked(list(gleamgen@expression:statement())) -> gleamgen@expression:expression(any()).
new_unchecked(Statements) ->
gleamgen@expression:new_block(Statements, gleamgen@types:unchecked()).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 79).
-spec with_let_declaration(
binary(),
gleamgen@expression:expression(HXQ),
fun((gleamgen@expression:expression(HXQ)) -> block_builder(HXT))
) -> block_builder(HXT).
with_let_declaration(Variable, Value, Handler) ->
Rest = Handler(gleamgen@expression:unchecked_ident(Variable)),
erlang:setelement(
2,
Rest,
[{let_declaration,
Variable,
begin
_pipe = Value,
gleamgen_ffi:identity(_pipe)
end} |
erlang:element(2, Rest)]
).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 94).
-spec with_statements_unchecked(
list(gleamgen@expression:statement()),
fun(() -> block_builder(HXX))
) -> block_builder(HXX).
with_statements_unchecked(Statements, Handler) ->
Rest = Handler(),
erlang:setelement(
2,
Rest,
lists:append(Statements, erlang:element(2, Rest))
).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 102).
-spec with_expression(
gleamgen@expression:expression(any()),
fun(() -> block_builder(HYC))
) -> block_builder(HYC).
with_expression(Expression, Handler) ->
Rest = Handler(),
erlang:setelement(
2,
Rest,
[begin
_pipe = Expression,
_pipe@1 = gleamgen_ffi:identity(_pipe),
{expression_statement, _pipe@1}
end |
erlang:element(2, Rest)]
).
-file("/home/weasel/gleam/testing_gleamgen/gleamgen/src/gleamgen/expression/block.gleam", 116).
-spec build(block_builder(HYF)) -> gleamgen@expression:expression(HYF).
build(Builder) ->
gleamgen@expression:new_block(
erlang:element(2, Builder),
erlang:element(3, Builder)
).