blob: 7a0c8ff880f89a9e6dd5cc0ca22e8f5fcd5a8ef1 [file] [log] [blame]
// Copyright (c) 2016, 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.
library fasta.uri_translator;
import 'package:front_end/src/api_prototype/file_system.dart' show FileSystem;
/// Instances of [UriTranslator] translate absolute URIs into corresponding
/// file URIs in a [FileSystem]. Translated URIs are typically `file:` URIs,
/// but may use a different scheme depending on the used custom file system.
abstract class UriTranslator {
/// Return the URIs of patches that should be applied to the platform library
/// with the given [libraryName], or `null` if there are no patches to apply.
List<Uri> getDartPatches(String libraryName);
/// Returns `true` if [uri] is private to the platform libraries (and thus
/// not accessible from user code).
bool isPlatformImplementation(Uri uri);
/// Return the corresponding file URI for the given absolute [uri], or `null`
/// if there is no corresponding file URI, or the given [uri] is already a
/// file URI.
/// Note: this only translates the URI, there is no guarantee that the
/// corresponding file exists in the file system.
/// If [reportMessage] is true a message will be reported via
/// [CompilerContext.current].
Uri translate(Uri uri, [bool reportMessage = true]);
/// Whether the given [libraryName] is supported by the underlying target.
bool isLibrarySupported(String libraryName);