blob: 6046c28351947154df4a15e360b02f8c2db6d920 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.openapi.compiler;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.UserDataHolder;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.pom.Navigatable;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* An interface allowing access and modification of the data associated with the current compile session.
*/
public interface CompileContext extends UserDataHolder {
/**
* Allows to add a message to be shown in Compiler message view.
* If correct url, line and column numbers are supplied, the navigation to the specified file is available from the view.
*
* @param category the category of a message (information, error, warning).
* @param message the text of the message.
* @param url a url to the file to which the message applies, null if not available.
* @param lineNum a line number, -1 if not available.
* @param columnNum a column number, -1 if not available.
*/
void addMessage(CompilerMessageCategory category, String message, @Nullable String url, int lineNum, int columnNum);
/**
* Allows to add a message to be shown in Compiler message view, with a specified Navigatable
* that is used to navigate to the error location.
*
* @param category the category of a message (information, error, warning).
* @param message the text of the message.
* @param url a url to the file to which the message applies, null if not available.
* @param lineNum a line number, -1 if not available.
* @param columnNum a column number, -1 if not available.
* @param navigatable the navigatable pointing to the error location.
* @since 6.0
*/
void addMessage(CompilerMessageCategory category, String message, @Nullable String url, int lineNum, int columnNum,
Navigatable navigatable);
/**
* Returns all messages of the specified category added during the current compile session.
*
* @param category the category for which messages are requested.
* @return all compiler messages of the specified category
*/
CompilerMessage[] getMessages(CompilerMessageCategory category);
/**
* Returns the count of messages of the specified category added during the current compile session.
*
* @param category the category for which messages are requested.
* @return the number of messages of the specified category
*/
int getMessageCount(CompilerMessageCategory category);
/**
* Returns the progress indicator of the compilation process.
*
* @return the progress indicator instance.
*/
@NotNull
ProgressIndicator getProgressIndicator();
/**
* Returns the current compile scope.
*
* @return current compile scope
*/
CompileScope getCompileScope();
/**
* Returns the compile scope which would be used if the entire project was rebuilt.
* {@link #getCompileScope()} may return the scope, that is more narrow than ProjectCompileScope.
*
* @return project-wide compile scope.
*/
CompileScope getProjectCompileScope();
/**
* A compiler may call this method in order to request complete project rebuild.
* This may be necessary, for example, when compiler caches are corrupted.
*/
void requestRebuildNextTime(String message);
boolean isRebuildRequested();
@Nullable
String getRebuildReason();
/**
* Returns the module to which the specified file belongs. This method is aware of the file->module mapping
* for generated files.
*
* @param file the file to check.
* @return the module to which the file belongs
*/
Module getModuleByFile(VirtualFile file);
/**
* Returns the source roots for the specified module.
*
* @return module's source roots as well as source roots for generated sources that are attributed to the module
*/
VirtualFile[] getSourceRoots(Module module);
/**
* Returns the output directory for the specified module.
*
* @param module the module to check.
* @return the output directory for the module specified, null if corresponding VirtualFile is not valid or directory not specified
*/
@Nullable
VirtualFile getModuleOutputDirectory(Module module);
/**
* Returns the test output directory for the specified module.
*
* @param module the module to check.
* @return the tests output directory the module specified, null if corresponding VirtualFile is not valid. If in Paths settings
* output directory for tests is not configured explicitly, but the output path is present, the output path will be returned.
*/
@Nullable
VirtualFile getModuleOutputDirectoryForTests(Module module);
/**
* Checks if the compilation is incremental, i.e. triggered by one of "Make" actions.
*
* @return true if compilation is incremental.
*/
boolean isMake();
boolean isRebuild();
Project getProject();
boolean isAnnotationProcessorsEnabled();
}