From 1754bb13eb245bdc90443692da0db1bb3c729e78 Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 29 Jun 2010 01:22:57 +0400 Subject: [PATCH] replace Class.isInstance checks with cheaper ones --- .../jetbrains/plugins/groovy/lang/psi/GroovyFile.java | 2 ++ .../plugins/groovy/lang/psi/impl/GroovyFileImpl.java | 6 ++++-- .../expressions/GrReferenceExpressionImpl.java | 10 +++++----- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GroovyFile.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GroovyFile.java index bc39bc823c83..7477b510b322 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GroovyFile.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/GroovyFile.java @@ -19,6 +19,7 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.FileResolveScopeProvider; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMembersDeclaration; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.packaging.GrPackageDefinition; @@ -33,6 +34,7 @@ public interface GroovyFile extends GroovyFileBase, FileResolveScopeProvider { @NotNull String getPackageName(); + @Nullable GrPackageDefinition getPackageDefinition(); void setPackageName(String packageName); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java index 6d26504ca5ea..fa9f9c38cafe 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/GroovyFileImpl.java @@ -44,6 +44,7 @@ import org.jetbrains.plugins.groovy.GroovyFileType; import org.jetbrains.plugins.groovy.GroovyIcons; import org.jetbrains.plugins.groovy.extensions.GroovyScriptType; import org.jetbrains.plugins.groovy.lang.lexer.GroovyTokenTypes; +import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrTopLevelDefintion; @@ -88,7 +89,7 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { if (stub instanceof GrFileStub) { return ((GrFileStub)stub).getPackageName().toString(); } - GrPackageDefinition packageDef = findChildByClass(GrPackageDefinition.class); + GrPackageDefinition packageDef = getPackageDefinition(); if (packageDef != null) { return packageDef.getPackageName(); } @@ -96,7 +97,8 @@ public class GroovyFileImpl extends GroovyFileBaseImpl implements GroovyFile { } public GrPackageDefinition getPackageDefinition() { - return findChildByClass(GrPackageDefinition.class); + ASTNode node = calcTreeElement().findChildByType(GroovyElementTypes.PACKAGE_DEFINITION); + return node != null ? (GrPackageDefinition)node.getPsi() : null; } private GrParameter getSyntheticArgsParameter() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java index 06ceb4c3ae75..b322d665bc56 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java @@ -28,10 +28,7 @@ import com.intellij.psi.tree.IElementType; import com.intellij.psi.util.PropertyUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.TypeConversionUtil; -import com.intellij.util.ArrayUtil; -import com.intellij.util.Consumer; -import com.intellij.util.Function; -import com.intellij.util.IncorrectOperationException; +import com.intellij.util.*; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -711,7 +708,10 @@ public class GrReferenceExpressionImpl extends GrReferenceElementImpl implements } public GrExpression getQualifierExpression() { - return findChildByClass(GrExpression.class); + for (PsiElement cur = this.getFirstChild(); cur != null; cur = cur.getNextSibling()) { + if (cur instanceof GrExpression) return (GrExpression)cur; + } + return null; } public boolean isQualified() {