/* sbt -- Simple Build Tool
 * Copyright 2008, 2009  Mark Harrah
 */
package xsbti;

import java.io.File;

public interface AnalysisCallback
{
	/** The names of classes that the analyzer should find subclasses of.*/
	public String[] superclassNames();
	/** Called when the the given superclass could not be found on the classpath by the compiler.*/
	public void superclassNotFound(String superclassName);
	/** Called before the source at the given location is processed. */
	public void beginSource(File source);
	/** Called when the a subclass of one of the classes given in <code>superclassNames</code> is
	* discovered.*/
	public void foundSubclass(File source, String subclassName, String superclassName, boolean isModule);
	/** Called to indicate that the source file <code>source</code> depends on the source file
	* <code>dependsOn</code>.  Note that only source files included in the current compilation will
	* passed to this method.  Dependencies on classes generated by sources not in the current compilation will
	* be passed as class dependencies to the classDependency method.*/
	public void sourceDependency(File dependsOn, File source);
	/** Called to indicate that the source file <code>source</code> depends on the jar
	* <code>jar</code>.*/
	public void jarDependency(File jar, File source);
	/** Called to indicate that the source file <code>source</code> depends on the class file
	* <code>clazz</code>.*/
	public void classDependency(File clazz, File source);
	/** Called to indicate that the source file <code>source</code> produces a class file at
	* <code>module</code>.*/
	public void generatedClass(File source, File module);
	/** Called after the source at the given location has been processed. */
	public void endSource(File sourcePath);
	/** Called when a module with a public 'main' method with the right signature is found.*/
	public void foundApplication(File source, String className);
	/** Called when the public API of a source file is extracted. */
	public void api(File sourceFile, xsbti.api.Source source);
}
@@ -245,16 +245,142 @@
 ames();%0A
+%09/** The names of annotations that the analyzer should look for on methods and classes.*/%0A%09public String%5B%5D annotationNames();%0A
 %09/** Cal
@@ -839,32 +839,247 @@
 lean isModule);%0A
+%09/** Called when an annotation with name %3Ccode%3EannotationName%3C/code%3E is found on a class or one of its methods.*/%0A%09public void foundAnnotated(File source, String className, String annotationName, boolean isModule);%0A
 %09/** Called to i

Support for tests written in Java and annotation-based test frameworks