Current section

Files

Jump to
caffeine_lang src caffeine_lang@linker@linker.erl
Raw

src/caffeine_lang@linker@linker.erl

-module(caffeine_lang@linker@linker).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/linker/linker.gleam").
-export([link/2]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-file("src/caffeine_lang/linker/linker.gleam", 38).
-spec parse_expectation_sources(
list(caffeine_lang@source_file:source_file()),
list(caffeine_lang@linker@blueprints:blueprint())
) -> {ok,
list({list({caffeine_lang@linker@expectations:expectation(),
caffeine_lang@linker@blueprints:blueprint()}),
binary()})} |
{error, caffeine_lang@errors:compilation_error()}.
parse_expectation_sources(Sources, Validated_blueprints) ->
_pipe = Sources,
_pipe@3 = gleam@list:map(
_pipe,
fun(Source) ->
_pipe@1 = caffeine_lang@frontend@pipeline:compile_expects(Source),
_pipe@2 = gleam@result:'try'(
_pipe@1,
fun(Raw_expectations) ->
caffeine_lang@linker@expectations:validate_expectations(
Raw_expectations,
Validated_blueprints,
erlang:element(2, Source)
)
end
),
gleam@result:map(
_pipe@2,
fun(Exps) -> {Exps, erlang:element(2, Source)} end
)
end
),
caffeine_lang@errors:from_results(_pipe@3).
-file("src/caffeine_lang/linker/linker.gleam", 16).
?DOC(false).
-spec link(
caffeine_lang@source_file:source_file(),
list(caffeine_lang@source_file:source_file())
) -> {ok, list(caffeine_lang@linker@ir:intermediate_representation())} |
{error, caffeine_lang@errors:compilation_error()}.
link(Blueprint, Expectation_sources) ->
Artifacts = caffeine_lang@standard_library@artifacts:standard_library(),
Reserved_labels = caffeine_lang@linker@ir_builder:reserved_labels_from_artifacts(
Artifacts
),
gleam@result:'try'(
caffeine_lang@frontend@pipeline:compile_blueprints(Blueprint),
fun(Raw_blueprints) ->
gleam@result:'try'(
caffeine_lang@linker@blueprints:validate_blueprints(
Raw_blueprints,
Artifacts
),
fun(Validated_blueprints) ->
gleam@result:'try'(
parse_expectation_sources(
Expectation_sources,
Validated_blueprints
),
fun(Expectations_with_paths) ->
caffeine_lang@linker@ir_builder:build_all(
Expectations_with_paths,
Reserved_labels
)
end
)
end
)
end
).