mirror of
https://github.com/revanced/smali.git
synced 2025-05-06 09:24:33 +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;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.ResolveScopeManager;
|
||||
@ -129,6 +130,10 @@ public class NameUtils {
|
||||
|
||||
public static PsiClass resolveSmaliType(@NotNull Project project, @NotNull GlobalSearchScope scope,
|
||||
@NotNull String smaliType) {
|
||||
if (DumbService.isDumb(project)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||
|
||||
String javaType = NameUtils.smaliToJavaType(smaliType);
|
||||
|
@ -31,6 +31,7 @@
|
||||
|
||||
package org.jf.smalidea;
|
||||
|
||||
import com.intellij.openapi.project.DumbServiceImpl;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.impl.JavaAwareProjectJdkTableImpl;
|
||||
import com.intellij.psi.JavaResolveResult;
|
||||
@ -66,6 +67,24 @@ public class ClassReferenceTest extends ResolveTestCase {
|
||||
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
|
||||
*/
|
||||
@ -105,6 +124,8 @@ public class ClassReferenceTest extends ResolveTestCase {
|
||||
Assert.assertEquals("blarg", smaliClass.getQualifiedName());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
protected Sdk getTestProjectJdk() {
|
||||
return JavaAwareProjectJdkTableImpl.getInstanceEx().getInternalJdk();
|
||||
|
Loading…
x
Reference in New Issue
Block a user