mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
skip dummy file in resolve
This commit is contained in:
+1
-1
@@ -56,7 +56,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeElement;
|
||||
*/
|
||||
public abstract class GroovyPsiElementFactory {
|
||||
|
||||
@NonNls public static final String DUMMY_FILE_NAME = "DUMMY__.";
|
||||
@NonNls public static final String DUMMY_FILE_NAME = "DUMMY__";
|
||||
|
||||
public static GroovyPsiElementFactory getInstance(Project project) {
|
||||
return ServiceManager.getService(project, GroovyPsiElementFactory.class);
|
||||
|
||||
+1
-1
@@ -259,7 +259,7 @@ public class GroovyPsiElementFactoryImpl extends GroovyPsiElementFactory {
|
||||
}
|
||||
|
||||
private GroovyFileImpl createDummyFile(String text, boolean physical) {
|
||||
final String fileName = DUMMY_FILE_NAME + GroovyFileType.GROOVY_FILE_TYPE.getDefaultExtension();
|
||||
final String fileName = DUMMY_FILE_NAME + '.' + GroovyFileType.GROOVY_FILE_TYPE.getDefaultExtension();
|
||||
final long stamp = System.currentTimeMillis();
|
||||
final PsiFileFactory factory = PsiFileFactory.getInstance(myProject);
|
||||
return (GroovyFileImpl) factory.createFileFromText(fileName, GroovyFileType.GROOVY_FILE_TYPE, text, stamp, physical);
|
||||
|
||||
+17
-9
@@ -2,6 +2,7 @@
|
||||
package org.jetbrains.plugins.groovy.lang.psi.impl.statements.expressions;
|
||||
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
@@ -34,10 +35,7 @@ public class GrThisReferenceExpressionImpl extends GrThisSuperReferenceExpressio
|
||||
public PsiType getType() {
|
||||
final GrReferenceExpression qualifier = getQualifier();
|
||||
if (qualifier == null) {
|
||||
GroovyPsiElement context = PsiTreeUtil.getContextOfType(this, GrTypeDefinition.class, GroovyFile.class);
|
||||
if (context instanceof GroovyFile && GroovyPsiElementFactory.DUMMY_FILE_NAME.equals(((GroovyFile)context).getName())) {
|
||||
context = PsiTreeUtil.getContextOfType(context, true, GrTypeDefinition.class, GroovyFile.class);
|
||||
}
|
||||
GroovyPsiElement context = getFileContext();
|
||||
if (context instanceof GrTypeDefinition) {
|
||||
return createType((PsiClass)context);
|
||||
}
|
||||
@@ -63,6 +61,15 @@ public class GrThisReferenceExpressionImpl extends GrThisSuperReferenceExpressio
|
||||
return null;
|
||||
}
|
||||
|
||||
private GroovyPsiElement getFileContext() {
|
||||
GroovyPsiElement context = PsiTreeUtil.getContextOfType(this, GrTypeDefinition.class, GroovyFile.class);
|
||||
if (context instanceof GroovyFile && GroovyPsiElementFactory.DUMMY_FILE_NAME.equals(FileUtil.getNameWithoutExtension(
|
||||
((GroovyFile)context).getName()))) {
|
||||
context = PsiTreeUtil.getContextOfType(context, true, GrTypeDefinition.class, GroovyFile.class);
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
private PsiType createType(PsiClass context) {
|
||||
PsiElementFactory elementFactory = JavaPsiFacade.getInstance(getProject()).getElementFactory();
|
||||
if (PsiUtil.isInStaticContext(this)) {
|
||||
@@ -87,11 +94,12 @@ public class GrThisReferenceExpressionImpl extends GrThisSuperReferenceExpressio
|
||||
return qualifier.resolve();
|
||||
}
|
||||
|
||||
final GrTypeDefinition containingClass = PsiTreeUtil.getContextOfType(this, GrTypeDefinition.class, true, GroovyFile.class);
|
||||
if (containingClass != null) return containingClass;
|
||||
final PsiFile containingFile = getContainingFile();
|
||||
if (containingFile instanceof GroovyFile) {
|
||||
return ((GroovyFile)containingFile).getScriptClass();
|
||||
final GroovyPsiElement context = getFileContext();
|
||||
if (context instanceof GrTypeDefinition) {
|
||||
return context;
|
||||
}
|
||||
else if (context instanceof GroovyFile) {
|
||||
return ((GroovyFile)context).getScriptClass();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user