| // Copyright (c) 2011, 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. |
| |
| package com.google.dart.compiler; |
| |
| import com.google.dart.compiler.ast.LibraryUnit; |
| import com.google.dart.compiler.metrics.CompilerMetrics; |
| |
| import java.io.IOException; |
| import java.io.Reader; |
| import java.io.Writer; |
| import java.net.URI; |
| |
| /** |
| * An interface used internally by the {@link DartCompiler} for determining where an artifact should |
| * be generated and providing feedback during the compilation process. This is an internal compiler |
| * construct and as such should not be instantiated or implemented by those outside the compiler |
| * itself. |
| */ |
| public interface DartCompilerContext { |
| |
| /** |
| * Parse the application being compiled and return the result. The "application unit" is a |
| * library that specifies an entry-point. |
| * |
| * This method will be removed in favor of {@link #getAppLibraryUnit()}. |
| * |
| * @return the parsed result (not <code>null</code>) |
| */ |
| LibraryUnit getApplicationUnit(); |
| |
| /** |
| * Parse the application being compiled and return the result. The "app" library unit is a |
| * library that specifies an entry-point. |
| * |
| * @return the parsed result (not <code>null</code>) |
| */ |
| LibraryUnit getAppLibraryUnit(); |
| |
| /** |
| * Parse the specified library and return the result. |
| * |
| * @param lib the library to parse (not <code>null</code>) |
| * @return the parsed result (not <code>null</code>) |
| */ |
| LibraryUnit getLibraryUnit(LibrarySource lib); |
| |
| /** |
| * Called by the compiler when a error (fatal or non-fatal) has occurred in a Dart file. |
| * |
| * @param event the event information (not <code>null</code>) |
| */ |
| void onError(DartCompilationError event); |
| |
| /** |
| * Gets a reader for an artifact associated with the specified source, which |
| * must have been written to {@link #getArtifactWriter(Source, String, String)}. The |
| * caller is responsible for closing the reader. Only one artifact may be |
| * associated with the given extension. |
| * |
| * @param source the source file (not <code>null</code>) |
| * @param part a component of the source file to get a reader for (may be empty). |
| * @param extension the file extension for this artifact (not |
| * <code>null</code>, not empty) |
| * @return the reader, or <code>null</code> if no such artifact exists |
| */ |
| Reader getArtifactReader(Source source, String part, String extension) throws IOException; |
| |
| /** |
| * Gets the {@link URI} for an artifact associated with this source. |
| * |
| * @param source the source file (not <code>null</code>) |
| * @param part a component of the source file to get a reader for (may be empty). |
| * @param extension the file extension for this artifact (not |
| * <code>null</code>, not empty) |
| */ |
| URI getArtifactUri(DartSource source, String part, String extension); |
| |
| /** |
| * Gets a writer for an artifact associated with this source. The caller is |
| * responsible for closing the writer. Only one artifact may be associated |
| * with the given extension. |
| * |
| * @param source the source file (not <code>null</code>) |
| * @param part a component of the source file to get a reader for (may be empty). |
| * @param extension the file extension for this artifact (not |
| * <code>null</code>, not empty) |
| */ |
| Writer getArtifactWriter(Source source, String part, String extension) throws IOException; |
| |
| /** |
| * Determines whether an artifact for the specified source is out of date |
| * with respect to some other source. |
| * |
| * @param source the source file to check (not <code>null</code>) |
| * @param base the artifact's base source (not <code>null</code>) |
| * @param extension the file extension for this artifact (not |
| * <code>null</code>, not empty) |
| * @return <code>true</code> if out of date |
| */ |
| boolean isOutOfDate(Source source, Source base, String extension); |
| |
| /** |
| * Returns the {@link CompilerMetrics} instance or <code>null</code> if we should not record |
| * metrics. |
| * |
| * @return the metrics instance, <code>null</code> if metrics should not be recorded |
| */ |
| CompilerMetrics getCompilerMetrics(); |
| |
| /** |
| * Returns the {@link CompilerConfiguration} instance. |
| * @return the compiler configuration instance. |
| */ |
| CompilerConfiguration getCompilerConfiguration(); |
| |
| /** |
| * Return the system library corresponding to the specified "dart:<libname>" spec. |
| */ |
| LibrarySource getSystemLibraryFor(String importSpec); |
| } |