EA-39083 - assert: LazyParseableElement.ensureParsed

This commit is contained in:
Anna Kozlova
2012-09-11 14:18:43 +04:00
parent 29331a04f4
commit bf48e89488
3 changed files with 60 additions and 34 deletions
@@ -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() {