mirror of
https://github.com/revanced/smali.git
synced 2025-05-06 17:34:34 +02:00
Don't try to resolve smali type references when in dumb mode
This commit is contained in:
parent
f8f4e32240
commit
6f11c52b56
@ -32,6 +32,7 @@
|
|||||||
package org.jf.smalidea.util;
|
package org.jf.smalidea.util;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.intellij.openapi.project.DumbService;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.impl.ResolveScopeManager;
|
import com.intellij.psi.impl.ResolveScopeManager;
|
||||||
@ -129,6 +130,10 @@ public class NameUtils {
|
|||||||
|
|
||||||
public static PsiClass resolveSmaliType(@NotNull Project project, @NotNull GlobalSearchScope scope,
|
public static PsiClass resolveSmaliType(@NotNull Project project, @NotNull GlobalSearchScope scope,
|
||||||
@NotNull String smaliType) {
|
@NotNull String smaliType) {
|
||||||
|
if (DumbService.isDumb(project)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||||
|
|
||||||
String javaType = NameUtils.smaliToJavaType(smaliType);
|
String javaType = NameUtils.smaliToJavaType(smaliType);
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
package org.jf.smalidea;
|
package org.jf.smalidea;
|
||||||
|
|
||||||
|
import com.intellij.openapi.project.DumbServiceImpl;
|
||||||
import com.intellij.openapi.projectRoots.Sdk;
|
import com.intellij.openapi.projectRoots.Sdk;
|
||||||
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
|
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
|
||||||
import com.intellij.psi.JavaResolveResult;
|
import com.intellij.psi.JavaResolveResult;
|
||||||
@ -66,6 +67,24 @@ public class ClassReferenceTest extends ResolveTestCase {
|
|||||||
Assert.assertEquals("java.lang.Object", ((PsiClass)resolveResults[0].getElement()).getQualifiedName());
|
Assert.assertEquals("java.lang.Object", ((PsiClass)resolveResults[0].getElement()).getQualifiedName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test a reference to a java class from a smali class, while in dumb mode
|
||||||
|
*/
|
||||||
|
public void testJavaReferenceFromSmaliInDumbMode() throws Exception {
|
||||||
|
SmaliClassTypeElement typeElement = (SmaliClassTypeElement)configureByFileText(
|
||||||
|
".class public Lblah; .super L<ref>java/lang/Object;", "blah.smali");
|
||||||
|
|
||||||
|
Assert.assertNotNull(typeElement);
|
||||||
|
Assert.assertEquals("Object", typeElement.getName());
|
||||||
|
|
||||||
|
DumbServiceImpl.getInstance(getProject()).setDumb(true);
|
||||||
|
|
||||||
|
PsiClass psiClass = typeElement.resolve();
|
||||||
|
Assert.assertNull(psiClass);
|
||||||
|
|
||||||
|
DumbServiceImpl.getInstance(getProject()).setDumb(false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test a reference to a smali class from a smali class
|
* Test a reference to a smali class from a smali class
|
||||||
*/
|
*/
|
||||||
@ -105,6 +124,8 @@ public class ClassReferenceTest extends ResolveTestCase {
|
|||||||
Assert.assertEquals("blarg", smaliClass.getQualifiedName());
|
Assert.assertEquals("blarg", smaliClass.getQualifiedName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Sdk getTestProjectJdk() {
|
protected Sdk getTestProjectJdk() {
|
||||||
return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
|
return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user