// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:source_span/source_span.dart'; /// Runs [body] and wraps any format exceptions it produces. /// /// [name] should describe the type of thing being parsed, and [value] should be /// its actual value. T wrapFormatException(String name, String value, T Function() body) { try { return body(); } on SourceSpanFormatException catch (error) { throw SourceSpanFormatException( 'Invalid $name: ${error.message}', error.span, error.source); } on FormatException catch (error) { throw FormatException( 'Invalid $name "$value": ${error.message}', error.source, error.offset); } }