OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 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 | 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. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library string_scanner.exception; | 5 library string_scanner.exception; |
6 | 6 |
7 import 'package:source_maps/source_maps.dart'; | 7 import 'package:source_maps/source_maps.dart'; |
8 | 8 |
9 /// An exception thrown by a [StringScanner] that failed to parse a string. | 9 /// An exception thrown by a [StringScanner] that failed to parse a string. |
10 class StringScannerException implements FormatException { | 10 class StringScannerException extends SpanFormatException { |
11 /// The error message. | |
12 final String message; | |
13 | |
14 /// The source string being parsed. | 11 /// The source string being parsed. |
15 final String string; | 12 final String string; |
16 | 13 |
17 /// The URL of the source file being parsed. | 14 /// The URL of the source file being parsed. |
18 /// | 15 /// |
19 /// This may be `null`, indicating that the source URL is unknown. | 16 /// This may be `null`, indicating that the source URL is unknown. |
20 final Uri sourceUrl; | 17 final Uri sourceUrl; |
21 | 18 |
22 /// The span within [string] that caused the exception. | 19 StringScannerException(String message, this.string, this.sourceUrl, Span span) |
23 final Span span; | 20 : super(message, span); |
24 | |
25 StringScannerException(this.message, this.string, this.sourceUrl, this.span); | |
26 | |
27 /// Returns a detailed description of this exception. | |
28 /// | |
29 /// If [useColors] is true, the section of the source that caused the | |
30 /// exception will be colored using ANSI color codes. By default, it's colored | |
31 /// red, but a different ANSI code may passed via [color]. | |
32 String toString({bool useColors: false, String color}) { | |
33 return "Error on " + span.getLocationMessage( | |
34 message, useColors: useColors, color: color); | |
35 } | |
36 } | 21 } |
37 | |
OLD | NEW |