Current section

Files

Jump to
caffeine_lang src caffeine_lang@analysis@semantic_analyzer.erl
Raw

src/caffeine_lang@analysis@semantic_analyzer.erl

-module(caffeine_lang@analysis@semantic_analyzer).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/analysis/semantic_analyzer.gleam").
-export([resolve_indicators/1, resolve_intermediate_representations/1]).
-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/analysis/semantic_analyzer.gleam", 33).
?DOC(false).
-spec resolve_indicators(
caffeine_lang@linker@ir:intermediate_representation(caffeine_lang@linker@ir:deps_validated())
) -> {ok,
caffeine_lang@linker@ir:intermediate_representation(caffeine_lang@linker@ir:resolved())} |
{error, caffeine_lang@errors:compilation_error()}.
resolve_indicators(Ir) ->
case erlang:element(7, Ir) of
{some, datadog} ->
caffeine_lang@codegen@datadog:resolve_indicators(Ir);
{some, honeycomb} ->
{ok, caffeine_lang@linker@ir:promote(Ir)};
{some, dynatrace} ->
{ok, caffeine_lang@linker@ir:promote(Ir)};
{some, new_relic} ->
{ok, caffeine_lang@linker@ir:promote(Ir)};
none ->
{error,
caffeine_lang@errors:semantic_analysis_template_resolution_error(
<<<<"expectation '"/utf8,
(caffeine_lang@linker@ir:ir_to_identifier(Ir))/binary>>/binary,
"' - no vendor resolved"/utf8>>
)}
end.
-file("src/caffeine_lang/analysis/semantic_analyzer.gleam", 16).
?DOC(false).
-spec resolve_intermediate_representations(
list(caffeine_lang@linker@ir:intermediate_representation(caffeine_lang@linker@ir:deps_validated()))
) -> {ok,
list(caffeine_lang@linker@ir:intermediate_representation(caffeine_lang@linker@ir:resolved()))} |
{error, caffeine_lang@errors:compilation_error()}.
resolve_intermediate_representations(Irs) ->
_pipe = Irs,
_pipe@1 = gleam@list:map(
_pipe,
fun(Ir) ->
gleam@bool:guard(
not gleam@list:contains(erlang:element(4, Ir), s_l_o),
{ok, caffeine_lang@linker@ir:promote(Ir)},
fun() -> resolve_indicators(Ir) end
)
end
),
caffeine_lang@errors:from_results(_pipe@1).