-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()} | {empty_file, integer(), integer()} | {quoted_field_name, binary(), integer(), integer()} | {invalid_type_alias_name, binary(), binary(), integer(), integer()}. -file("src/caffeine_lang/frontend/parser_error.gleam", 17). ?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>>; {empty_file, Line@4, Column@4} -> <<<<<<"Empty file at line "/utf8, (erlang:integer_to_binary(Line@4))/binary>>/binary, ", column "/utf8>>/binary, (erlang:integer_to_binary(Column@4))/binary>>; {quoted_field_name, Name@1, Line@5, Column@5} -> <<<<<<<<<<<<<<<<"Quoted field name at line "/utf8, (erlang:integer_to_binary(Line@5))/binary>>/binary, ", column "/utf8>>/binary, (erlang:integer_to_binary(Column@5))/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@6, Column@6} -> <<<<<<<<<<<<<<"Invalid type alias name '"/utf8, Name@2/binary>>/binary, "' at line "/utf8>>/binary, (erlang:integer_to_binary(Line@6))/binary>>/binary, ", column "/utf8>>/binary, (erlang:integer_to_binary(Column@6))/binary>>/binary, ": "/utf8>>/binary, Message@1/binary>> end.