mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-39083 - assert: LazyParseableElement.ensureParsed
This commit is contained in:
@@ -20,12 +20,15 @@ import com.intellij.compiler.CompilerConfiguration;
|
||||
import com.intellij.execution.configurations.ConfigurationUtil;
|
||||
import com.intellij.execution.testframework.SourceScope;
|
||||
import com.intellij.ide.util.ClassFilter;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -49,10 +52,14 @@ public class TestClassFilter implements ClassFilter.ClassFilterWithScope {
|
||||
public Project getProject() { return myProject; }
|
||||
|
||||
public boolean isAccepted(final PsiClass aClass) {
|
||||
return ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.value(aClass) &&
|
||||
(aClass.isInheritor(myBase, true) || JUnitUtil.isTestClass(aClass))
|
||||
&& !CompilerConfiguration.getInstance(getProject()).isExcludedFromCompilation(PsiUtilBase.getVirtualFile(aClass))
|
||||
;
|
||||
return ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
|
||||
@Override
|
||||
public Boolean compute() {
|
||||
return ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.value(aClass) &&
|
||||
(aClass.isInheritor(myBase, true) || JUnitUtil.isTestClass(aClass))
|
||||
&& !CompilerConfiguration.getInstance(getProject()).isExcludedFromCompilation(PsiUtilCore.getVirtualFile(aClass));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public TestClassFilter intersectionWith(final GlobalSearchScope scope) {
|
||||
@@ -78,9 +85,14 @@ public class TestClassFilter implements ClassFilter.ClassFilterWithScope {
|
||||
}
|
||||
return new TestClassFilter(testCase, sourceScope.getGlobalSearchScope()){
|
||||
@Override
|
||||
public boolean isAccepted(PsiClass aClass) {
|
||||
public boolean isAccepted(final PsiClass aClass) {
|
||||
if (super.isAccepted(aClass)) {
|
||||
final String qualifiedName = aClass.getQualifiedName();
|
||||
final String qualifiedName = ApplicationManager.getApplication().runReadAction(new Computable<String>() {
|
||||
@Override
|
||||
public String compute() {
|
||||
return aClass.getQualifiedName();
|
||||
}
|
||||
});
|
||||
for (Pattern compilePattern : compilePatterns) {
|
||||
if (compilePattern.matcher(qualifiedName).matches()) {
|
||||
return true;
|
||||
|
||||
@@ -18,7 +18,9 @@ package com.theoryinpractice.testng.model;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.execution.configurations.ConfigurationUtil;
|
||||
import com.intellij.ide.util.ClassFilter;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -60,35 +62,40 @@ public class TestClassFilter implements ClassFilter.ClassFilterWithScope
|
||||
return new TestClassFilter(this.scope.intersectWith(scope), project, includeConfig, checkClassCanBeInstantiated);
|
||||
}
|
||||
|
||||
public boolean isAccepted(PsiClass psiClass) {
|
||||
if(!ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.value(psiClass)) return false;
|
||||
//PsiManager manager = PsiManager.getInstance(project);
|
||||
//if(manager.getEffectiveLanguageLevel().compareTo(LanguageLevel.JDK_1_5) < 0) return true;
|
||||
boolean hasTest = TestNGUtil.hasTest(psiClass);
|
||||
if (hasTest) {
|
||||
if (checkClassCanBeInstantiated) {
|
||||
final PsiMethod[] constructors = psiClass.getConstructors();
|
||||
if (constructors.length > 0) {
|
||||
boolean canBeInstantiated = false;
|
||||
for (PsiMethod constructor : constructors) {
|
||||
if (constructor.getParameterList().getParametersCount() == 0) {
|
||||
canBeInstantiated = true;
|
||||
break;
|
||||
}
|
||||
if (AnnotationUtil.isAnnotated(constructor, Arrays.asList(GUICE_INJECTION, FACTORY_INJECTION), true)) {
|
||||
canBeInstantiated = true;
|
||||
break;
|
||||
public boolean isAccepted(final PsiClass psiClass) {
|
||||
return ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
|
||||
@Override
|
||||
public Boolean compute() {
|
||||
if(!ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.value(psiClass)) return false;
|
||||
//PsiManager manager = PsiManager.getInstance(project);
|
||||
//if(manager.getEffectiveLanguageLevel().compareTo(LanguageLevel.JDK_1_5) < 0) return true;
|
||||
boolean hasTest = TestNGUtil.hasTest(psiClass);
|
||||
if (hasTest) {
|
||||
if (checkClassCanBeInstantiated) {
|
||||
final PsiMethod[] constructors = psiClass.getConstructors();
|
||||
if (constructors.length > 0) {
|
||||
boolean canBeInstantiated = false;
|
||||
for (PsiMethod constructor : constructors) {
|
||||
if (constructor.getParameterList().getParametersCount() == 0) {
|
||||
canBeInstantiated = true;
|
||||
break;
|
||||
}
|
||||
if (AnnotationUtil.isAnnotated(constructor, Arrays.asList(GUICE_INJECTION, FACTORY_INJECTION), true)) {
|
||||
canBeInstantiated = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!canBeInstantiated){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!canBeInstantiated){
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return includeConfig && TestNGUtil.hasConfig(psiClass);
|
||||
return includeConfig && TestNGUtil.hasConfig(psiClass);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Project getProject() {
|
||||
|
||||
@@ -17,7 +17,9 @@ package com.theoryinpractice.testng.model;
|
||||
|
||||
import com.intellij.execution.configurations.ConfigurationUtil;
|
||||
import com.intellij.ide.util.ClassFilter;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.theoryinpractice.testng.util.TestNGUtil;
|
||||
@@ -35,10 +37,15 @@ public class TestListenerFilter implements ClassFilter.ClassFilterWithScope
|
||||
this.project = project;
|
||||
}
|
||||
|
||||
public boolean isAccepted(PsiClass psiClass) {
|
||||
if (!ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.value(psiClass)) return false;
|
||||
public boolean isAccepted(final PsiClass psiClass) {
|
||||
return ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
|
||||
@Override
|
||||
public Boolean compute() {
|
||||
if (!ConfigurationUtil.PUBLIC_INSTANTIATABLE_CLASS.value(psiClass)) return false;
|
||||
|
||||
return TestNGUtil.inheritsITestListener(psiClass);
|
||||
return TestNGUtil.inheritsITestListener(psiClass);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public Project getProject() {
|
||||
|
||||
Reference in New Issue
Block a user