1%-
2% Copyright (c) 2012-2014 Yakaz
3% Copyright (c) 2016-2018 Jean-Sébastien Pédron <jean-sebastien.pedron@dumbbell.fr>
4% All rights reserved.
5%
6% Redistribution and use in source and binary forms, with or without
7% modification, are permitted provided that the following conditions
8% are met:
9% 1. Redistributions of source code must retain the above copyright
10%    notice, this list of conditions and the following disclaimer.
11% 2. Redistributions in binary form must reproduce the above copyright
12%    notice, this list of conditions and the following disclaimer in the
13%    documentation and/or other materials provided with the distribution.
14%
15% THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16% ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18% ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19% FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21% OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22% HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23% LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24% OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25% SUCH DAMAGE.
26
27-ifndef(yamerl_errors_hrl).
28-define(yamerl_errors_hrl, true).
29
30-include("yamerl_types.hrl").
31-include("yamerl_tokens.hrl").
32
33%% -------------------------------------------------------------------
34%% Errors and warnings.
35%% -------------------------------------------------------------------
36
37-record(yamerl_invalid_option, {
38    type   = error :: error | warning,
39    text           :: string() | undefined,
40
41    option         :: term()
42  }).
43
44-record(yamerl_parsing_error, {
45    type   = error :: error | warning,
46    text           :: string() | undefined,
47
48    line           :: position() | undefined,
49    column         :: position() | undefined,
50    name   = error :: atom(),
51    token          :: yamerl_partial_token()
52                    | undefined,
53    extra  = []    :: [term()]
54  }).
55
56-type yamerl_error() :: #yamerl_invalid_option{}
57                      | #yamerl_parsing_error{}.
58
59-record(yamerl_exception, {
60    errors = [] :: [yamerl_error()]
61  }).
62-type yamerl_exception() :: #yamerl_exception{}.
63
64-endif.
65