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]).
-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.