OLD | NEW |
| (Empty) |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | |
2 // for details. All rights reserved. Use of this source code is governed by a | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 | |
5 library source_span.span_exception; | |
6 | |
7 import 'span.dart'; | |
8 | |
9 /// A class for exceptions that have source span information attached. | |
10 class SourceSpanException implements Exception { | |
11 /// A message describing the exception. | |
12 final String message; | |
13 | |
14 /// The span associated with this exception. | |
15 /// | |
16 /// This may be `null` if the source location can't be determined. | |
17 final SourceSpan span; | |
18 | |
19 SourceSpanException(this.message, this.span); | |
20 | |
21 /// Returns a string representation of [this]. | |
22 /// | |
23 /// [color] may either be a [String], a [bool], or `null`. If it's a string, | |
24 /// it indicates an ANSII terminal color escape that should be used to | |
25 /// highlight the span's text. If it's `true`, it indicates that the text | |
26 /// should be highlighted using the default color. If it's `false` or `null`, | |
27 /// it indicates that the text shouldn't be highlighted. | |
28 String toString({color}) { | |
29 if (span == null) return message; | |
30 return "Error on " + span.message(message, color: color); | |
31 } | |
32 } | |
33 | |
34 /// A [SourceSpanException] that's also a [FormatException]. | |
35 class SourceSpanFormatException extends SourceSpanException | |
36 implements FormatException { | |
37 final source; | |
38 | |
39 int get offset => span == null ? null : span.start.offset; | |
40 | |
41 SourceSpanFormatException(String message, SourceSpan span, [this.source]) | |
42 : super(message, span); | |
43 } | |
OLD | NEW |