c81fcbafde
R=zundel@google.com,brianwilkerson@google.com BUG= TEST= Review URL: https://chromiumcodereview.appspot.com//9479013 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4771 260f80e4-7a28-3924-810f-c04153c831b5
123 lines
4.5 KiB
Java
123 lines
4.5 KiB
Java
// 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);
|
|
}
|