blob: ebadf6bd00ae7f84795c56422a500ac64190fa4b [file] [log] [blame]
package com.jetbrains.javascript.debugger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.TextRange;
import com.intellij.psi.PsiElement;
import com.intellij.xdebugger.breakpoints.XLineBreakpointType;
import com.intellij.xdebugger.evaluation.ExpressionInfo;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.debugger.MemberFilter;
public abstract class JavaScriptDebugAware {
public static final ExtensionPointName<JavaScriptDebugAware> EP_NAME = ExtensionPointName.create("com.jetbrains.javaScriptDebugAware");
@Nullable
public abstract FileType getFileType();
@Nullable
public XLineBreakpointType<?> getBreakpointTypeClass(@NotNull Project project) {
return null;
}
/**
* Return false if you language could be natively executed in the VM
* You must not specify it and it doesn't matter if you use not own breakpoint type - (Kotlin or GWT use java breakpoint type, for example)
*/
public boolean isOnlySourceMappedBreakpoints() {
return true;
}
@Nullable
public TextRange getRangeForNamedElement(@NotNull PsiElement element, @Nullable PsiElement parent, int offset) {
return null;
}
@Nullable
public ExpressionInfo getEvaluationInfo(@NotNull PsiElement element, @NotNull Document document, @NotNull Project project) {
return null;
}
@Nullable
public static JavaScriptDebugAware find(@Nullable FileType fileType) {
if (fileType == null) {
return null;
}
for (JavaScriptDebugAware debugAware : EP_NAME.getExtensions()) {
if (fileType.equals(debugAware.getFileType())) {
return debugAware;
}
}
return null;
}
public static boolean isBreakpointAware(@Nullable FileType fileType) {
return find(fileType) != null;
}
@Nullable
public MemberFilter createMemberFilter(@NotNull PsiElement element, int end) {
return null;
}
}