Current section

Files

Jump to
caffeine_lang src caffeine_lang@frontend@parser_error.erl
Raw

src/caffeine_lang@frontend@parser_error.erl

-module(caffeine_lang@frontend@parser_error).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/frontend/parser_error.gleam").
-export([to_string/1, error_line/1, error_column/1]).
-export_type([parser_error/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.
-type parser_error() :: {tokenizer_error,
caffeine_lang@frontend@tokenizer_error:tokenizer_error()} |
{unexpected_token, binary(), binary(), integer(), integer()} |
{unexpected_e_o_f, binary(), integer(), integer()} |
{unknown_type, binary(), integer(), integer()} |
{invalid_refinement, binary(), integer(), integer()} |
{quoted_field_name, binary(), integer(), integer()} |
{invalid_type_alias_name, binary(), binary(), integer(), integer()}.
-file("src/caffeine_lang/frontend/parser_error.gleam", 16).
?DOC(" Converts a parser error to a human-readable string.\n").
-spec to_string(parser_error()) -> binary().
to_string(Err) ->
case Err of
{tokenizer_error, Tok_err} ->
caffeine_lang@frontend@tokenizer_error:to_string(Tok_err);
{unexpected_token, Expected, Got, Line, Column} ->
<<<<<<<<<<<<<<"Unexpected token at line "/utf8,
(erlang:integer_to_binary(Line))/binary>>/binary,
", column "/utf8>>/binary,
(erlang:integer_to_binary(Column))/binary>>/binary,
": expected "/utf8>>/binary,
Expected/binary>>/binary,
", got "/utf8>>/binary,
Got/binary>>;
{unexpected_e_o_f, Expected@1, Line@1, Column@1} ->
<<<<<<<<<<"Unexpected end of file at line "/utf8,
(erlang:integer_to_binary(Line@1))/binary>>/binary,
", column "/utf8>>/binary,
(erlang:integer_to_binary(Column@1))/binary>>/binary,
": expected "/utf8>>/binary,
Expected@1/binary>>;
{unknown_type, Name, Line@2, Column@2} ->
<<<<<<<<<<"Unknown type '"/utf8, Name/binary>>/binary,
"' at line "/utf8>>/binary,
(erlang:integer_to_binary(Line@2))/binary>>/binary,
", column "/utf8>>/binary,
(erlang:integer_to_binary(Column@2))/binary>>;
{invalid_refinement, Message, Line@3, Column@3} ->
<<<<<<<<<<"Invalid refinement at line "/utf8,
(erlang:integer_to_binary(Line@3))/binary>>/binary,
", column "/utf8>>/binary,
(erlang:integer_to_binary(Column@3))/binary>>/binary,
": "/utf8>>/binary,
Message/binary>>;
{quoted_field_name, Name@1, Line@4, Column@4} ->
<<<<<<<<<<<<<<<<"Quoted field name at line "/utf8,
(erlang:integer_to_binary(Line@4))/binary>>/binary,
", column "/utf8>>/binary,
(erlang:integer_to_binary(Column@4))/binary>>/binary,
": field names should not be quoted. Use '"/utf8>>/binary,
Name@1/binary>>/binary,
"' instead of '\""/utf8>>/binary,
Name@1/binary>>/binary,
"\"'"/utf8>>;
{invalid_type_alias_name, Name@2, Message@1, Line@5, Column@5} ->
<<<<<<<<<<<<<<"Invalid type alias name '"/utf8, Name@2/binary>>/binary,
"' at line "/utf8>>/binary,
(erlang:integer_to_binary(Line@5))/binary>>/binary,
", column "/utf8>>/binary,
(erlang:integer_to_binary(Column@5))/binary>>/binary,
": "/utf8>>/binary,
Message@1/binary>>
end.
-file("src/caffeine_lang/frontend/parser_error.gleam", 72).
?DOC(" Extracts the line number from a parser error.\n").
-spec error_line(parser_error()) -> integer().
error_line(Err) ->
case Err of
{tokenizer_error, Tok_err} ->
case Tok_err of
{unterminated_string, Line, _} ->
Line;
{invalid_character, Line@1, _, _} ->
Line@1
end;
{unexpected_token, _, _, Line@2, _} ->
Line@2;
{unexpected_e_o_f, _, Line@3, _} ->
Line@3;
{unknown_type, _, Line@4, _} ->
Line@4;
{invalid_refinement, _, Line@5, _} ->
Line@5;
{quoted_field_name, _, Line@6, _} ->
Line@6;
{invalid_type_alias_name, _, _, Line@7, _} ->
Line@7
end.
-file("src/caffeine_lang/frontend/parser_error.gleam", 89).
?DOC(" Extracts the column number from a parser error.\n").
-spec error_column(parser_error()) -> integer().
error_column(Err) ->
case Err of
{tokenizer_error, Tok_err} ->
case Tok_err of
{unterminated_string, _, Column} ->
Column;
{invalid_character, _, Column@1, _} ->
Column@1
end;
{unexpected_token, _, _, _, Column@2} ->
Column@2;
{unexpected_e_o_f, _, _, Column@3} ->
Column@3;
{unknown_type, _, _, Column@4} ->
Column@4;
{invalid_refinement, _, _, Column@5} ->
Column@5;
{quoted_field_name, _, _, Column@6} ->
Column@6;
{invalid_type_alias_name, _, _, _, Column@7} ->
Column@7
end.