diff --git a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetCodeBlockModificationListener.java b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetCodeBlockModificationListener.java index c2281f8dfdc..80ec70f6fb1 100644 --- a/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetCodeBlockModificationListener.java +++ b/compiler/jet.as.java.psi/src/org/jetbrains/jet/asJava/JetCodeBlockModificationListener.java @@ -55,7 +55,7 @@ public class JetCodeBlockModificationListener implements PsiTreeChangePreprocess case CHILDREN_CHANGED: // general childrenChanged() event after each change - if (!event.isGenericChildrenChange()) { + if (!event.isGenericChange()) { processChange(event.getParent(), event.getParent(), null); } break; diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index e6ce0dbf436..b05e7056225 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -6,7 +6,7 @@ @snapshot@ JetBrains Inc. - + JUnit TestNG-J @@ -281,7 +281,7 @@ - + diff --git a/idea/src/META-INF/testng-j.xml b/idea/src/META-INF/testng-j.xml index 244886763ef..765c8325ecd 100644 --- a/idea/src/META-INF/testng-j.xml +++ b/idea/src/META-INF/testng-j.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java index ca48cf171be..235db508bae 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/JetLineMarkerProvider.java @@ -38,6 +38,7 @@ import com.intellij.openapi.ui.popup.JBPopupFactory; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.PsiElementProcessor; import com.intellij.psi.search.PsiElementProcessorAdapter; import com.intellij.psi.search.searches.AllOverridingMethodsSearch; @@ -163,7 +164,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider { new LineMarkerNavigator() { @Override - public void browse(@Nullable MouseEvent e, @Nullable PsiElement element) { + public void browse(@Nullable MouseEvent e, @Nullable final PsiElement element) { if (element == null) return; assert element.getParent() instanceof JetProperty : "This marker navigator should be placed only on identifies in properties"; @@ -181,7 +182,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider { Runnable jetPsiMethodProcessor = new Runnable() { @Override public void run() { - KotlinDefinitionsSearcher.processPropertyImplementationsMethods(psiPropertyMethods, elementProcessor); + KotlinDefinitionsSearcher.processPropertyImplementationsMethods(psiPropertyMethods, GlobalSearchScope.allScope(element.getProject()), elementProcessor); } }; diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java index 2709a0dace0..5aa848d0868 100644 --- a/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java +++ b/idea/src/org/jetbrains/jet/plugin/run/JetTestNgConfigurationProducer.java @@ -19,10 +19,10 @@ package org.jetbrains.jet.plugin.run; import com.intellij.execution.JavaRunConfigurationExtensionManager; import com.intellij.execution.Location; import com.intellij.execution.PsiLocation; -import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.actions.ConfigurationContext; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Ref; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; @@ -31,35 +31,28 @@ import com.intellij.psi.util.PsiTreeUtil; import com.theoryinpractice.testng.configuration.TestNGConfiguration; import com.theoryinpractice.testng.configuration.TestNGConfigurationProducer; import com.theoryinpractice.testng.util.TestNGUtil; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.asJava.LightClassUtil; import org.jetbrains.jet.lang.psi.*; public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer { - - public JetTestNgConfigurationProducer() { - super(); - } - - private JetElement myElement = null; - @Override - public PsiElement getSourceElement() { - return myElement; - } - - @Override - @Nullable - protected RunnerAndConfigurationSettings createConfigurationByElement(Location location, ConfigurationContext context) { + protected boolean setupConfigurationFromContext( + TestNGConfiguration configuration, ConfigurationContext context, Ref sourceElement + ) { // TODO: check TestNG Pattern running first, before method/class (see TestNGInClassConfigurationProducer for logic) // TODO: and PsiClassOwner not handled, which is in TestNGInClassConfigurationProducer - Project project = location.getProject(); + Location location = context.getLocation(); + if (location == null) { + return false; + } + + Project project = context.getProject(); PsiElement leaf = location.getPsiElement(); if (!(leaf.getContainingFile() instanceof JetFile)) { - return null; + return false; } JetFile jetFile = (JetFile) leaf.getContainingFile(); @@ -75,8 +68,7 @@ public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer for (PsiMethod method : delegate.getMethods()) { if (method.getNavigationElement() == function) { if (TestNGUtil.hasTest(method)) { - myElement = function; - return createRuntimeConfigSettings(location, context, project, delegate, method); + return configure(configuration, location, context, project, delegate, method); } break; } @@ -92,27 +84,25 @@ public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer } if (jetClass == null) { - return null; + return false; } PsiClass delegate = LightClassUtil.getPsiClass(jetClass); if (!isTestNGClass(delegate)) { - return null; + return false; } - myElement = jetClass; - return createRuntimeConfigSettings(location, context, project, delegate, null); + return configure(configuration, location, context, project, delegate, null); } - private RunnerAndConfigurationSettings createRuntimeConfigSettings( - Location location, ConfigurationContext context, Project project, - @Nullable PsiClass delegate, @Nullable PsiMethod method) { + private boolean configure( + TestNGConfiguration configuration, Location location, ConfigurationContext context, Project project, + @Nullable PsiClass delegate, @Nullable PsiMethod method + ) { if (delegate == null) { - return null; + return false; } - RunnerAndConfigurationSettings settings = cloneTemplateConfiguration(project, context); - TestNGConfiguration configuration = (TestNGConfiguration) settings.getConfiguration(); setupConfigurationModule(context, configuration); Module originalModule = configuration.getConfigurationModule().getModule(); configuration.setClassConfiguration(delegate); @@ -120,17 +110,12 @@ public class JetTestNgConfigurationProducer extends TestNGConfigurationProducer configuration.setMethodConfiguration(PsiLocation.fromPsiElement(project, method)); } configuration.restoreOriginalModule(originalModule); - settings.setName(configuration.getName()); + configuration.setName(configuration.getName()); JavaRunConfigurationExtensionManager.getInstance().extendCreatedConfiguration(configuration, location); - return settings; + return true; } private static boolean isTestNGClass(PsiClass psiClass) { return psiClass != null && PsiClassUtil.isRunnableClass(psiClass, true, false) && TestNGUtil.hasTest(psiClass); } - - @Override - public int compareTo(@NotNull Object o) { - return 0; - } } diff --git a/idea/src/org/jetbrains/jet/plugin/search/KotlinDefinitionsSearcher.java b/idea/src/org/jetbrains/jet/plugin/search/KotlinDefinitionsSearcher.java index 6d0cdb48c18..3e9aeddd8af 100644 --- a/idea/src/org/jetbrains/jet/plugin/search/KotlinDefinitionsSearcher.java +++ b/idea/src/org/jetbrains/jet/plugin/search/KotlinDefinitionsSearcher.java @@ -18,68 +18,77 @@ package org.jetbrains.jet.plugin.search; import com.intellij.codeInsight.navigation.MethodImplementationsSearch; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.application.QueryExecutorBase; import com.intellij.openapi.util.Computable; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.search.searches.ClassInheritorsSearch; +import com.intellij.psi.search.searches.DefinitionsScopedSearch; import com.intellij.util.Processor; +import com.intellij.util.QueryExecutor; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.asJava.LightClassUtil; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.java.JetClsMethod; -public class KotlinDefinitionsSearcher extends QueryExecutorBase { +public class KotlinDefinitionsSearcher implements QueryExecutor { @Override - public void processQuery(@NotNull PsiElement queryParameters, @NotNull Processor consumer) { - if (queryParameters instanceof JetClass) { - processClassImplementations((JetClass) queryParameters, consumer); + public boolean execute(@NotNull DefinitionsScopedSearch.SearchParameters queryParameters, @NotNull Processor consumer) { + PsiElement element = queryParameters.getElement(); + SearchScope scope = queryParameters.getScope(); + + if (element instanceof JetClass) { + return processClassImplementations((JetClass) element, consumer); } - if (queryParameters instanceof JetNamedFunction) { - processFunctionImplementations((JetNamedFunction) queryParameters, consumer); + if (element instanceof JetNamedFunction) { + return processFunctionImplementations((JetNamedFunction) element, scope, consumer); } - if (queryParameters instanceof JetProperty) { - processPropertyImplementations((JetProperty) queryParameters, consumer); + if (element instanceof JetProperty) { + return processPropertyImplementations((JetProperty) element, scope, consumer); } - if (queryParameters instanceof JetParameter) { - JetParameter parameter = (JetParameter) queryParameters; + if (element instanceof JetParameter) { + JetParameter parameter = (JetParameter) element; if (JetPsiUtil.getClassIfParameterIsProperty(parameter) != null) { - processPropertyImplementations(parameter, consumer); + return processPropertyImplementations((JetParameter) element, scope, consumer); } } - } - private static void processClassImplementations(final JetClass queryParameters, Processor consumer) { + return true; + } + + private static boolean processClassImplementations(final JetClass klass, Processor consumer) { PsiClass psiClass = ApplicationManager.getApplication().runReadAction(new Computable() { @Override public PsiClass compute() { - return LightClassUtil.getPsiClass(queryParameters); + return LightClassUtil.getPsiClass(klass); } }); if (psiClass != null) { - ContainerUtil.process(ClassInheritorsSearch.search(psiClass, true), consumer); + return ContainerUtil.process(ClassInheritorsSearch.search(psiClass, true), consumer); } + return true; } - private static void processFunctionImplementations(final JetNamedFunction queryParameters, Processor consumer) { + private static boolean processFunctionImplementations(final JetNamedFunction function, SearchScope scope, Processor consumer) { PsiMethod psiMethod = ApplicationManager.getApplication().runReadAction(new Computable() { @Override public PsiMethod compute() { - return LightClassUtil.getLightClassMethod(queryParameters); + return LightClassUtil.getLightClassMethod(function); } }); if (psiMethod != null) { - ContainerUtil.process(MethodImplementationsSearch.getMethodImplementations(psiMethod), consumer); + ContainerUtil.process(MethodImplementationsSearch.getMethodImplementations(psiMethod, scope), consumer); } + return true; } - private static void processPropertyImplementations(@NotNull final JetParameter parameter, @NotNull Processor consumer) { + private static boolean processPropertyImplementations(@NotNull final JetParameter parameter, @NotNull SearchScope scope, @NotNull Processor consumer) { LightClassUtil.PropertyAccessorsPsiMethods accessorsPsiMethods = ApplicationManager.getApplication().runReadAction( new Computable() { @Override @@ -88,10 +97,10 @@ public class KotlinDefinitionsSearcher extends QueryExecutorBase consumer) { + private static boolean processPropertyImplementations(@NotNull final JetProperty property, @NotNull SearchScope scope, @NotNull Processor consumer) { LightClassUtil.PropertyAccessorsPsiMethods accessorsPsiMethods = ApplicationManager.getApplication().runReadAction( new Computable() { @Override @@ -100,24 +109,31 @@ public class KotlinDefinitionsSearcher extends QueryExecutorBase consumer) { + public static boolean processPropertyImplementationsMethods(LightClassUtil.PropertyAccessorsPsiMethods accessors, @NotNull SearchScope scope, @NotNull Processor consumer) { for (PsiMethod method : accessors) { - PsiMethod[] implementations = MethodImplementationsSearch.getMethodImplementations(method); + PsiMethod[] implementations = MethodImplementationsSearch.getMethodImplementations(method, scope); for (PsiMethod implementation : implementations) { PsiElement mirrorElement = implementation instanceof JetClsMethod ? ((JetClsMethod) implementation).getOrigin() : null; if (mirrorElement instanceof JetProperty || mirrorElement instanceof JetParameter) { - consumer.process(mirrorElement); + if (!consumer.process(mirrorElement)) { + return false; + } } else if (mirrorElement instanceof JetPropertyAccessor && mirrorElement.getParent() instanceof JetProperty) { - consumer.process(mirrorElement.getParent()); + if (!consumer.process(mirrorElement.getParent())) { + return false; + } } else { - consumer.process(implementation); + if (!consumer.process(implementation)) { + return false; + } } } } + return true; } } diff --git a/update_dependencies.xml b/update_dependencies.xml index 8ef73e09d7b..ba1062da62d 100644 --- a/update_dependencies.xml +++ b/update_dependencies.xml @@ -1,7 +1,7 @@ - - - + + +