package com.google.jstestdriver.idea.assertFramework.jstd;
import com.google.jstestdriver.idea.assertFramework.library.JstdLibraryUtil;
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
import com.intellij.lang.javascript.psi.JSFile;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiElement;
import com.intellij.util.ObjectUtils;
/**
* @author Sergey Simonchik
*/
public class JstdImplicitUsageProvider implements ImplicitUsageProvider {
@Override
public boolean isImplicitUsage(PsiElement element) {
JSFile jsFile = ObjectUtils.tryCast(element.getContainingFile(), JSFile.class);
if (jsFile == null) {
return false;
}
VirtualFile virtualFile = jsFile.getVirtualFile();
if (virtualFile == null) {
return false;
}
boolean isInScope = JstdLibraryUtil.isFileInJstdLibScope(element.getProject(), virtualFile);
if (!isInScope) {
return false;
}
JstdTestFileStructureBuilder builder = JstdTestFileStructureBuilder.getInstance();
JstdTestFileStructure fileStructure = builder.fetchCachedTestFileStructure(jsFile);
return fileStructure.isPrototypeTestElement(element);
}
@Override
public boolean isImplicitRead(PsiElement element) {
return false;
}
@Override
public boolean isImplicitWrite(PsiElement element) {
return false;
}
}