import 'package:source_span/source_span.dart'; class SyntaxError implements Exception { final SyntaxErrorSeverity severity; final String message; final FileSpan span; String _toolString; SyntaxError(this.severity, this.message, this.span); String get toolString { if (_toolString != null) return _toolString; var type = severity == SyntaxErrorSeverity.warning ? 'warning' : 'error'; return _toolString = '$type: ${span.start.toolString}: $message'; } } enum SyntaxErrorSeverity { warning, error, info, hint, }