mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gradle] do not load groovy-related classes when groovy plugin is disabled IDEA-198173
GitOrigin-RevId: c6b62d4b669f10bdb7c3c70c2500c022c7cc1191
This commit is contained in:
committed by
intellij-monorepo-bot
parent
95b2667b99
commit
a279acf9e1
@@ -30,7 +30,7 @@ public class GradleGroovyRunLineMarkerProvider extends RunLineMarkerContributor
|
||||
if (isFromGroovyGradleScript(element)) {
|
||||
if (element instanceof LeafElement && !(element instanceof PsiWhiteSpace) && !(element instanceof PsiComment)
|
||||
&& element.getParent() instanceof GrReferenceExpression && element.getParent().getParent() instanceof GrMethodCallExpression) {
|
||||
List<String> tasks = GradleRunnerUtil.getTasksTarget(element);
|
||||
List<String> tasks = GradleGroovyRunnerUtil.getTasksTarget(element);
|
||||
if (!tasks.isEmpty() && tasks.contains(element.getText().trim())) {
|
||||
final AnAction[] actions = ExecutorAction.getActions();
|
||||
return new Info(AllIcons.RunConfigurations.TestState.Run, actions,
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.plugins.gradle.execution;
|
||||
|
||||
import com.intellij.execution.Location;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleResolverUtil;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class GradleGroovyRunnerUtil {
|
||||
@NotNull
|
||||
public static List<String> getTasksTarget(@NotNull PsiElement element, @Nullable Module module) {
|
||||
PsiElement parent = element;
|
||||
while (parent.getParent() != null && !(parent.getParent() instanceof PsiFile)) {
|
||||
parent = parent.getParent();
|
||||
}
|
||||
|
||||
if (isCreateTaskMethod(parent)) {
|
||||
final GrExpression[] arguments = ((GrMethodCallExpression)parent).getExpressionArguments();
|
||||
if (arguments.length > 0 && arguments[0] instanceof GrLiteral && ((GrLiteral)arguments[0]).getValue() instanceof String) {
|
||||
return Collections.singletonList((String)((GrLiteral)arguments[0]).getValue());
|
||||
}
|
||||
}
|
||||
else if (parent instanceof GrApplicationStatement) {
|
||||
PsiElement shiftExpression = parent.getChildren()[1].getChildren()[0];
|
||||
if (GradleResolverUtil.isLShiftElement(shiftExpression)) {
|
||||
PsiElement shiftiesChild = shiftExpression.getChildren()[0];
|
||||
if (shiftiesChild instanceof GrReferenceExpression) {
|
||||
return Collections.singletonList(shiftiesChild.getText());
|
||||
}
|
||||
else if (shiftiesChild instanceof GrMethodCallExpression) {
|
||||
return Collections.singletonList(shiftiesChild.getChildren()[0].getText());
|
||||
}
|
||||
}
|
||||
else if (shiftExpression instanceof GrMethodCallExpression) {
|
||||
return Collections.singletonList(shiftExpression.getChildren()[0].getText());
|
||||
}
|
||||
}
|
||||
GrMethodCallExpression methodCallExpression = PsiTreeUtil.getParentOfType(element, GrMethodCallExpression.class);
|
||||
if (methodCallExpression != null) {
|
||||
String taskNameCandidate = methodCallExpression.getChildren()[0].getText();
|
||||
Project project = element.getProject();
|
||||
if (module == null) {
|
||||
module = getModule(element, project);
|
||||
}
|
||||
GradleExtensionsSettings.GradleExtensionsData extensionsData = GradleExtensionsSettings.getInstance(project).getExtensionsFor(module);
|
||||
if (extensionsData != null) {
|
||||
GradleExtensionsSettings.GradleTask gradleTask = extensionsData.tasksMap.get(taskNameCandidate);
|
||||
if (gradleTask != null) {
|
||||
return Collections.singletonList(taskNameCandidate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Module getModule(@NotNull PsiElement element, @NotNull Project project) {
|
||||
PsiFile containingFile = element.getContainingFile();
|
||||
if (containingFile != null) {
|
||||
VirtualFile virtualFile = containingFile.getVirtualFile();
|
||||
if (virtualFile != null) {
|
||||
return ProjectFileIndex.SERVICE.getInstance(project).getModuleForFile(virtualFile);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static boolean isCreateTaskMethod(PsiElement parent) {
|
||||
return parent instanceof GrMethodCallExpression && PsiUtil.isMethodCall((GrMethodCallExpression)parent, "createTask");
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<String> getTasksTarget(@Nullable Location location) {
|
||||
if (location == null) return Collections.emptyList();
|
||||
if (location instanceof GradleTaskLocation) {
|
||||
return ((GradleTaskLocation)location).getTasks();
|
||||
}
|
||||
|
||||
Module module = location.getModule();
|
||||
return getTasksTarget(location.getPsiElement(), module);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<String> getTasksTarget(@NotNull PsiElement element) {
|
||||
return getTasksTarget(element, null);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,9 @@ import org.jetbrains.plugins.gradle.util.GradleConstants;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.plugins.gradle.execution.GradleRunnerUtil.*;
|
||||
import static org.jetbrains.plugins.gradle.execution.GradleGroovyRunnerUtil.getTasksTarget;
|
||||
import static org.jetbrains.plugins.gradle.execution.GradleRunnerUtil.isFromGroovyGradleScript;
|
||||
import static org.jetbrains.plugins.gradle.execution.GradleRunnerUtil.resolveProjectPath;
|
||||
|
||||
/**
|
||||
* @author Vladislav.Soroka
|
||||
|
||||
@@ -7,31 +7,19 @@ import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
|
||||
import com.intellij.execution.junit2.info.MethodLocation;
|
||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
|
||||
import com.intellij.openapi.module.Module;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.roots.ProjectFileIndex;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiMethod;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.gradle.model.data.BuildParticipant;
|
||||
import org.jetbrains.plugins.gradle.service.resolve.GradleResolverUtil;
|
||||
import org.jetbrains.plugins.gradle.settings.CompositeDefinitionSource;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleExtensionsSettings;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleProjectSettings;
|
||||
import org.jetbrains.plugins.gradle.settings.GradleSettings;
|
||||
import org.jetbrains.plugins.gradle.util.GradleConstants;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrApplicationStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.literals.GrLiteral;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
@@ -102,84 +90,4 @@ public class GradleRunnerUtil {
|
||||
if (virtualFile == null) return false;
|
||||
return GradleConstants.EXTENSION.equals(virtualFile.getExtension());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<String> getTasksTarget(@Nullable Location location) {
|
||||
if (location == null) return Collections.emptyList();
|
||||
if (location instanceof GradleTaskLocation) {
|
||||
return ((GradleTaskLocation)location).getTasks();
|
||||
}
|
||||
|
||||
Module module = location.getModule();
|
||||
return getTasksTarget(location.getPsiElement(), module);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<String> getTasksTarget(@NotNull PsiElement element, @Nullable Module module) {
|
||||
PsiElement parent = element;
|
||||
while (parent.getParent() != null && !(parent.getParent() instanceof PsiFile)) {
|
||||
parent = parent.getParent();
|
||||
}
|
||||
|
||||
if (isCreateTaskMethod(parent)) {
|
||||
final GrExpression[] arguments = ((GrMethodCallExpression)parent).getExpressionArguments();
|
||||
if (arguments.length > 0 && arguments[0] instanceof GrLiteral && ((GrLiteral)arguments[0]).getValue() instanceof String) {
|
||||
return Collections.singletonList((String)((GrLiteral)arguments[0]).getValue());
|
||||
}
|
||||
}
|
||||
else if (parent instanceof GrApplicationStatement) {
|
||||
PsiElement shiftExpression = parent.getChildren()[1].getChildren()[0];
|
||||
if (GradleResolverUtil.isLShiftElement(shiftExpression)) {
|
||||
PsiElement shiftiesChild = shiftExpression.getChildren()[0];
|
||||
if (shiftiesChild instanceof GrReferenceExpression) {
|
||||
return Collections.singletonList(shiftiesChild.getText());
|
||||
}
|
||||
else if (shiftiesChild instanceof GrMethodCallExpression) {
|
||||
return Collections.singletonList(shiftiesChild.getChildren()[0].getText());
|
||||
}
|
||||
}
|
||||
else if (shiftExpression instanceof GrMethodCallExpression) {
|
||||
return Collections.singletonList(shiftExpression.getChildren()[0].getText());
|
||||
}
|
||||
}
|
||||
GrMethodCallExpression methodCallExpression = PsiTreeUtil.getParentOfType(element, GrMethodCallExpression.class);
|
||||
if (methodCallExpression != null) {
|
||||
String taskNameCandidate = methodCallExpression.getChildren()[0].getText();
|
||||
Project project = element.getProject();
|
||||
if (module == null) {
|
||||
module = getModule(element, project);
|
||||
}
|
||||
GradleExtensionsSettings.GradleExtensionsData extensionsData = GradleExtensionsSettings.getInstance(project).getExtensionsFor(module);
|
||||
if (extensionsData != null) {
|
||||
GradleExtensionsSettings.GradleTask gradleTask = extensionsData.tasksMap.get(taskNameCandidate);
|
||||
if (gradleTask != null) {
|
||||
return Collections.singletonList(taskNameCandidate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static Module getModule(@NotNull PsiElement element, @NotNull Project project) {
|
||||
PsiFile containingFile = element.getContainingFile();
|
||||
if (containingFile != null) {
|
||||
VirtualFile virtualFile = containingFile.getVirtualFile();
|
||||
if (virtualFile != null) {
|
||||
return ProjectFileIndex.SERVICE.getInstance(project).getModuleForFile(virtualFile);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static List<String> getTasksTarget(@NotNull PsiElement element) {
|
||||
return getTasksTarget(element, null);
|
||||
}
|
||||
|
||||
|
||||
private static boolean isCreateTaskMethod(PsiElement parent) {
|
||||
return parent instanceof GrMethodCallExpression && PsiUtil.isMethodCall((GrMethodCallExpression)parent, "createTask");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user