From bf62bc0261d941a23cb721b256fe306d08ea3dc4 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 15 Feb 2013 17:50:13 +0400 Subject: [PATCH] PsiJetStubWithFqName interface extracted --- .../org/jetbrains/jet/lang/psi/JetClass.java | 4 ++- .../jet/lang/psi/JetObjectDeclaration.java | 2 +- .../jet/lang/psi/stubs/PsiJetClassStub.java | 8 +----- .../jet/lang/psi/stubs/PsiJetObjectStub.java | 7 +---- .../lang/psi/stubs/PsiJetStubWithFqName.java | 27 +++++++++++++++++++ .../stubs/elements/JetClassElementType.java | 3 ++- .../stubs/elements/JetFileElementType.java | 2 +- .../stubs/elements/JetObjectElementType.java | 2 +- .../psi/stubs/impl/PsiJetClassStubImpl.java | 11 +++++--- .../psi/stubs/impl/PsiJetObjectStubImpl.java | 2 +- .../stubindex/StubIndexServiceImpl.java | 14 +++++----- 11 files changed, 53 insertions(+), 29 deletions(-) create mode 100644 compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetStubWithFqName.java diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java index 860c20e792b..e27bec5c2bb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java @@ -30,6 +30,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.lang.psi.stubs.PsiJetClassStub; import org.jetbrains.jet.lang.psi.stubs.elements.JetStubElementTypes; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lexer.JetTokens; import java.util.ArrayList; @@ -197,7 +198,8 @@ public class JetClass extends JetTypeParameterListOwnerStub imp private String getQualifiedName() { PsiJetClassStub stub = getStub(); if (stub != null) { - return stub.getQualifiedName(); + FqName fqName = stub.getFqName(); + return fqName == null ? null : fqName.getFqName(); } List parts = new ArrayList(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java index 1ab7adaabbd..c2add7f1c4f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java @@ -66,7 +66,7 @@ public class JetObjectDeclaration extends JetNamedDeclarationStub { - @NonNls - @Nullable - String getQualifiedName(); +public interface PsiJetClassStub extends PsiJetStubWithFqName { boolean isTrait(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetObjectStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetObjectStub.java index a11ca689de0..d0c30732a21 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetObjectStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetObjectStub.java @@ -16,14 +16,9 @@ package org.jetbrains.jet.lang.psi.stubs; -import com.intellij.psi.stubs.NamedStub; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.psi.JetObjectDeclaration; -import org.jetbrains.jet.lang.resolve.name.FqName; -public interface PsiJetObjectStub extends NamedStub { - @Nullable - FqName getFQName(); +public interface PsiJetObjectStub extends PsiJetStubWithFqName { boolean isTopLevel(); boolean isClassObject(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetStubWithFqName.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetStubWithFqName.java new file mode 100644 index 00000000000..9c8c2d6101a --- /dev/null +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/PsiJetStubWithFqName.java @@ -0,0 +1,27 @@ +/* + * Copyright 2010-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.jet.lang.psi.stubs; + +import com.intellij.psi.PsiNamedElement; +import com.intellij.psi.stubs.NamedStub; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.resolve.name.FqName; + +public interface PsiJetStubWithFqName extends NamedStub { + @Nullable + FqName getFqName(); +} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetClassElementType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetClassElementType.java index bbb90bae9f5..68b6718f761 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetClassElementType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetClassElementType.java @@ -61,7 +61,8 @@ public class JetClassElementType extends JetStubElementType { - public static final int STUB_VERSION = 22; + public static final int STUB_VERSION = 23; public JetFileElementType() { super("jet.FILE", JetLanguage.INSTANCE); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetObjectElementType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetObjectElementType.java index 660f3374226..7d8a1aa8814 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetObjectElementType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/elements/JetObjectElementType.java @@ -71,7 +71,7 @@ public class JetObjectElementType extends JetStubElementType implements PsiJetCla } @Override - public String getQualifiedName() { - return StringRef.toString(qualifiedName); + public FqName getFqName() { + String stringRef = StringRef.toString(qualifiedName); + if (stringRef == null) { + return null; + } + return new FqName(stringRef); } @Override @@ -152,7 +157,7 @@ public class PsiJetClassStubImpl extends StubBase implements PsiJetCla } builder.append("name=").append(getName()); - builder.append(" fqn=").append(getQualifiedName()); + builder.append(" fqn=").append(getFqName()); builder.append(" superNames=").append("[").append(StringUtil.join(ArrayUtil.toStringArray(getSuperNames()))).append("]"); builder.append("]"); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetObjectStubImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetObjectStubImpl.java index 5b5d825eec8..11ef8687eb9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetObjectStubImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/stubs/impl/PsiJetObjectStubImpl.java @@ -65,7 +65,7 @@ public class PsiJetObjectStubImpl extends StubBase impleme @Nullable @Override - public FqName getFQName() { + public FqName getFqName() { return fqName; } diff --git a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java index 68f2ebeb3a6..7ed1b818e99 100644 --- a/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java +++ b/idea/src/org/jetbrains/jet/plugin/stubindex/StubIndexServiceImpl.java @@ -48,9 +48,9 @@ public class StubIndexServiceImpl implements StubIndexService { sink.occurrence(JetShortClassNameIndex.getInstance().getKey(), name); } - String fqn = stub.getQualifiedName(); + FqName fqn = stub.getFqName(); if (fqn != null) { - sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqn); + sink.occurrence(JetFullClassNameIndex.getInstance().getKey(), fqn.getFqName()); } for (String superName : stub.getSuperNames()) { @@ -63,17 +63,17 @@ public class StubIndexServiceImpl implements StubIndexService { @Override public void indexObject(PsiJetObjectStub stub, IndexSink sink) { String name = stub.getName(); - FqName fqName = stub.getFQName(); + FqName fqName = stub.getFqName(); if (stub.isClassObject()) { StubElement parentStub = stub.getParentStub(); - assert parentStub instanceof PsiJetClassStub : "Something but a class is a parent to class object stub: " + parentStub; + assert parentStub instanceof PsiJetStubWithFqName : "Something but a class/object is a parent to class object stub: " + parentStub; name = JvmAbi.CLASS_OBJECT_CLASS_NAME; - String qualifiedName = ((PsiJetClassStub) parentStub).getQualifiedName(); - if (qualifiedName != null) { - fqName = new FqName(qualifiedName).child(Name.identifier(name)); + FqName parentFqName = ((PsiJetStubWithFqName) parentStub).getFqName(); + if (parentFqName != null) { + fqName = parentFqName.child(Name.identifier(name)); } } else {