diff options
author | Fuyao Zhao <fuyaoz@google.com> | 2015-07-22 15:09:04 -0700 |
---|---|---|
committer | Fuyao Zhao <fuyaoz@google.com> | 2015-08-03 18:26:56 -0700 |
commit | 68d3d13cddc98e84f24b963ed209bbd7bd6d9d07 (patch) | |
tree | 001dc5451967598f24158f99bcf7d3a0a6db652a /android/src | |
parent | d0aa6f6e42a8ff80e71b676efb6240446e41d697 (diff) | |
download | idea-68d3d13cddc98e84f24b963ed209bbd7bd6d9d07.tar.gz |
Add module dep quickfix will correctly consider the type of module.
Don't generate source when doing gradle sync.
Change-Id: I0076332bef7ce48cc1221b318a7445205847bd16
Diffstat (limited to 'android/src')
-rw-r--r-- | android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java | 39 |
1 files changed, 37 insertions, 2 deletions
diff --git a/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java b/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java index d3722172a90..00583cb99e4 100644 --- a/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java +++ b/android/src/com/android/tools/idea/quickfix/AddGradleProjectDependencyFix.java @@ -15,6 +15,7 @@ */ package com.android.tools.idea.quickfix; +import com.android.builder.model.AndroidProject; import com.android.tools.idea.gradle.parser.Dependency; import com.google.common.base.Function; import com.google.common.collect.Sets; @@ -42,6 +43,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; +import static com.android.tools.idea.gradle.util.GradleUtil.getAndroidProject; import static com.android.tools.idea.gradle.util.GradleUtil.getGradlePath; import static com.intellij.compiler.ModuleCompilerUtil.addingDependencyFormsCircularity; import static com.intellij.util.containers.ContainerUtil.getFirstItem; @@ -66,6 +68,7 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix { Project project = psiElement.getProject(); JavaPsiFacade facade = JavaPsiFacade.getInstance(project); ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); + ModuleType currentModuleType = getModuleType(currentModule); for (PsiClass aClass : classes) { if (!facade.getResolveHelper().isAccessible(aClass, psiElement, aClass)) { @@ -79,9 +82,25 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix { if (virtualFile == null) { continue; } - final Module classModule = fileIndex.getModuleForFile(virtualFile); + Module classModule = fileIndex.getModuleForFile(virtualFile); if (classModule != null && classModule != currentModule && !ModuleRootManager.getInstance(currentModule).isDependsOn(classModule)) { - myModules.add(classModule); + ModuleType classModuleType = getModuleType(classModule); + boolean legalDependency = false; + switch (currentModuleType) { + case JAVA: + legalDependency = classModuleType == ModuleType.JAVA; + break; + case ANDROID_LIBRARY: + legalDependency = classModuleType == ModuleType.JAVA || classModuleType == ModuleType.ANDROID_LIBRARY; + break; + case ANDROID_APPLICATION: + legalDependency = classModuleType != ModuleType.ANDROID_APPLICATION; + break; + } + + if (legalDependency) { + myModules.add(classModule); + } } } myCurrentModule = currentModule; @@ -227,4 +246,20 @@ public class AddGradleProjectDependencyFix extends GradleDependencyFix { addDependency(from, dependency); } } + + private enum ModuleType { + JAVA, + ANDROID_LIBRARY, + ANDROID_APPLICATION + } + + @NotNull + private static ModuleType getModuleType(@NotNull Module module) { + AndroidProject androidProject = getAndroidProject(module); + if (androidProject == null) { + return ModuleType.JAVA; + } else { + return androidProject.isLibrary() ? ModuleType.ANDROID_LIBRARY : ModuleType.ANDROID_APPLICATION; + } + } } |