From 3d7699241642be41e17a4bd2aa3f573e7f043f82 Mon Sep 17 00:00:00 2001 From: Eldar Abusalimov Date: Wed, 7 Mar 2018 19:54:50 +0300 Subject: [PATCH 1/6] xdebugger: (testing) Invoke Promise.getBlocking() outside write action --- .../intellij/xdebugger/XDebuggerTestUtil.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java index 64247073b53d..d6d265665176 100644 --- a/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java +++ b/platform/xdebugger-impl/testSrc/com/intellij/xdebugger/XDebuggerTestUtil.java @@ -7,7 +7,6 @@ import com.intellij.execution.impl.ConsoleViewImpl; import com.intellij.icons.AllIcons; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.ReadAction; -import com.intellij.openapi.application.Result; import com.intellij.openapi.application.WriteAction; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Disposer; @@ -31,15 +30,16 @@ import com.intellij.xdebugger.impl.frame.XStackFrameContainerEx; import org.intellij.lang.annotations.Language; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.concurrency.Promise; import java.awt.*; import java.io.File; import java.io.IOException; import java.util.*; import java.util.List; +import java.util.concurrent.ExecutionException; import java.util.concurrent.Semaphore; import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import static org.junit.Assert.*; @@ -65,15 +65,13 @@ public class XDebuggerTestUtil { @Nullable public static XLineBreakpoint toggleBreakpoint(Project project, VirtualFile file, int line) { - return new WriteAction() { - @Override - protected void run(@NotNull Result result) { - Promise promise = - ((XDebuggerUtilImpl)XDebuggerUtil.getInstance()).toggleAndReturnLineBreakpoint(project, file, line, false); - - promise.done(result::setResult); - } - }.execute().getResultObject(); + try { + return WriteAction.computeAndWait(() -> ((XDebuggerUtilImpl)XDebuggerUtil.getInstance()) + .toggleAndReturnLineBreakpoint(project, file, line, false)).blockingGet(TIMEOUT_MS); + } + catch (TimeoutException | ExecutionException e) { + return null; + } } public static

XBreakpoint

insertBreakpoint(final Project project, From 72d73410258055cdb982949a016b88ed10dd1392 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Wed, 7 Mar 2018 21:48:31 +0300 Subject: [PATCH 2/6] [groovy] remove unnecessary myIsPartOfFqn logic This case is handled in GrReferenceResolveRunnerKt#resolveReferenceExpression before even resolve processor is created. --- .../processors/GroovyResolverProcessorImpl.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/GroovyResolverProcessorImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/GroovyResolverProcessorImpl.java index 5b6e73d1de18..fb8bdb4ddaf9 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/GroovyResolverProcessorImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/GroovyResolverProcessorImpl.java @@ -18,11 +18,8 @@ import static org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil.collapseRefl class GroovyResolverProcessorImpl extends GroovyResolverProcessor implements GrMethodComparator.Context { - private final boolean myIsPartOfFqn; - GroovyResolverProcessorImpl(@NotNull final GrReferenceExpression ref, @NotNull EnumSet kinds, boolean forceRValue) { super(ref, kinds, null, forceRValue); - myIsPartOfFqn = ResolveUtil.isPartOfFQN(ref); } @NotNull @@ -45,13 +42,6 @@ class GroovyResolverProcessorImpl extends GroovyResolverProcessor implements GrM return candidates; } - if (myIsPartOfFqn) { - candidates = getCandidates(GroovyResolveKind.PACKAGE, GroovyResolveKind.CLASS); - if (!candidates.isEmpty()) { - return candidates; - } - } - candidates = getCandidates(GroovyResolveKind.PROPERTY); if (!candidates.isEmpty()) { return candidates.size() <= 1 ? candidates : ContainerUtil.newSmartList(candidates.get(0)); From 3bcf8658c829090b33cb3ee6c1b1fdf580d40b2a Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Wed, 7 Mar 2018 21:49:42 +0300 Subject: [PATCH 3/6] [groovy] clean up --- .../groovy/lang/resolve/ResolveUtil.java | 35 ------------------- 1 file changed, 35 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java index 20fc5d3c0c21..ae60d10f9b1a 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java @@ -6,7 +6,6 @@ import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.scope.ElementClassHint; import com.intellij.psi.scope.ElementClassHint.DeclarationKind; @@ -63,8 +62,6 @@ import org.jetbrains.plugins.groovy.lang.resolve.processors.*; import java.util.*; -import static com.intellij.util.containers.ContainerUtil.count; -import static com.intellij.util.containers.ContainerUtil.filter; import static org.jetbrains.plugins.groovy.lang.psi.impl.GrAnnotationUtilKt.hasAnnotation; import static org.jetbrains.plugins.groovy.lang.psi.util.PsiTreeUtilKt.treeWalkUpAndGetSingleElement; import static org.jetbrains.plugins.groovy.lang.resolve.ResolveUtilKt.getDefaultConstructor; @@ -1080,19 +1077,6 @@ public class ResolveUtil { return true; } - public static boolean isMethodCallRef(@NotNull GrReferenceExpression ref) { - final PsiElement element = PsiTreeUtil.skipParentsOfType(ref, GrReferenceExpression.class); - return element instanceof GrMethodCall; - } - - public static boolean isPartOfFQN(@NotNull GrReferenceExpression ref) { - if (ref.hasAt()) return false; - final String name = ref.getReferenceName(); - if (StringUtil.isEmpty(name)) return false; - return Character.isUpperCase(name.charAt(0)) && !isMethodCallRef(ref) || - ref.getParent() instanceof GrReferenceExpression && isPartOfFQN((GrReferenceExpression)ref.getParent()); - } - public static boolean canResolveToMethod(@NotNull GrReferenceExpression ref) { return ref.hasMemberPointer() || ref.getParent() instanceof GrMethodCall; } @@ -1107,25 +1091,6 @@ public class ResolveUtil { return true; } - @NotNull - public static List filterAccessorMethods(@NotNull List candidates) { - return filter(candidates, it -> !(it.getElement() instanceof GrAccessorMethod)); - } - - @NotNull - public static List collapseReflectedMethodsSimple(@NotNull List candidates) { - if (count(candidates, it -> it.getElement() instanceof GrReflectedMethod) < 2) return candidates; - final Set visited = ContainerUtil.newHashSet(); - return ContainerUtil.mapNotNull(candidates, result -> { - final PsiElement element = result.getElement(); - if (!(element instanceof GrReflectedMethod)) return result; - - final GrMethod baseMethod = ((GrReflectedMethod)element).getBaseMethod(); - if (!visited.add(baseMethod)) return null; - return new ElementGroovyResult<>(baseMethod); - }); - } - @NotNull public static List collapseReflectedMethods(Collection candidates) { Set visited = ContainerUtil.newHashSet(); From d196c775ed8ca7b1de943757179c54d21442f2e4 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Wed, 7 Mar 2018 22:21:28 +0300 Subject: [PATCH 4/6] go to action: don't repaint popup which is already closed --- .../lang-impl/src/com/intellij/ide/actions/GotoActionAction.java | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java b/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java index d3b4c8f83196..4179b7757205 100644 --- a/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java +++ b/platform/lang-impl/src/com/intellij/ide/actions/GotoActionAction.java @@ -241,7 +241,6 @@ public class GotoActionAction extends GotoActionBase implements DumbAware { if (aw.isAvailable()) { String id = ActionManager.getInstance().getId(aw.getAction()); KeymapPanel.addKeyboardShortcut(id, ActionShortcutRestrictions.getInstance().getForActionId(id), activeKeymap, component); - popup.repaintListImmediate(); } } } From a0b535006444dc5df78bedb0a791c2ba469e78e7 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 7 Mar 2018 21:39:50 +0100 Subject: [PATCH 5/6] an API to avoid temporary StringRef allocations while deserializing stubs --- .../src/com/intellij/psi/stubs/StubInputStream.java | 10 ++++++---- .../src/com/intellij/psi/stubs/StubOutputStream.java | 6 ++---- .../src/com/intellij/util/io/DataInputOutputUtil.java | 10 ---------- platform/util/src/com/intellij/util/io/StringRef.java | 6 ++++++ 4 files changed, 14 insertions(+), 18 deletions(-) diff --git a/platform/core-api/src/com/intellij/psi/stubs/StubInputStream.java b/platform/core-api/src/com/intellij/psi/stubs/StubInputStream.java index b351575d015e..d569d441e46f 100644 --- a/platform/core-api/src/com/intellij/psi/stubs/StubInputStream.java +++ b/platform/core-api/src/com/intellij/psi/stubs/StubInputStream.java @@ -43,14 +43,16 @@ public class StubInputStream extends DataInputStream { @Nullable public StringRef readName() throws IOException { - return DataInputOutputUtil.readNAME(this, myNameStorage); + return StringRef.fromStream(this, myNameStorage); + } + + @Nullable + public String readNameString() throws IOException { + return StringRef.stringFromStream(this, myNameStorage); } public int readVarInt() throws IOException { return DataInputOutputUtil.readINT(this); } - public String stringFromId(int id) throws IOException { - return myNameStorage.valueOf(id); - } } diff --git a/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java b/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java index 79fca29c3be6..3657120fdc29 100644 --- a/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java +++ b/platform/core-api/src/com/intellij/psi/stubs/StubOutputStream.java @@ -42,14 +42,12 @@ public class StubOutputStream extends DataOutputStream { } public void writeName(@Nullable final String arg) throws IOException { - DataInputOutputUtil.writeNAME(this, arg, myNameStorage); + final int nameId = arg != null ? myNameStorage.enumerate(arg) : 0; + DataInputOutputUtil.writeINT(this, nameId); } public void writeVarInt(final int value) throws IOException { DataInputOutputUtil.writeINT(this, value); } - public int getStringId(final String value) throws IOException { - return myNameStorage.enumerate(value); - } } diff --git a/platform/util/src/com/intellij/util/io/DataInputOutputUtil.java b/platform/util/src/com/intellij/util/io/DataInputOutputUtil.java index d302cffefde2..f21b0521f2e5 100644 --- a/platform/util/src/com/intellij/util/io/DataInputOutputUtil.java +++ b/platform/util/src/com/intellij/util/io/DataInputOutputUtil.java @@ -42,16 +42,6 @@ public class DataInputOutputUtil extends DataInputOutputUtilRt { DataInputOutputUtilRt.writeINT(record, val); } - @Nullable - public static StringRef readNAME(@NotNull DataInput record, @NotNull AbstractStringEnumerator nameStore) throws IOException { - return StringRef.fromStream(record, nameStore); - } - - public static void writeNAME(@NotNull DataOutput record, @Nullable String name, @NotNull AbstractStringEnumerator nameStore) throws IOException { - final int nameId = name != null ? nameStore.enumerate(name) : 0; - writeINT(record, nameId); - } - public static long readLONG(@NotNull DataInput record) throws IOException { final int val = record.readUnsignedByte(); if (val < 192) { diff --git a/platform/util/src/com/intellij/util/io/StringRef.java b/platform/util/src/com/intellij/util/io/StringRef.java index 7cbfbecb0dbd..045aa16a2230 100644 --- a/platform/util/src/com/intellij/util/io/StringRef.java +++ b/platform/util/src/com/intellij/util/io/StringRef.java @@ -115,6 +115,12 @@ public class StringRef { return nameId != 0 ? new StringRef(nameId, store) : null; } + @Nullable + public static String stringFromStream(@NotNull DataInput in, @NotNull AbstractStringEnumerator store) throws IOException { + final int nameId = DataInputOutputUtil.readINT(in); + return nameId != 0 ? store.valueOf(nameId) : null; + } + @NotNull public static StringRef[] createArray(int count) { return count == 0 ? EMPTY_ARRAY : new StringRef[count]; From 34a8d36e3619cf186f6a36c8500539ad341a81fe Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 7 Mar 2018 21:40:14 +0100 Subject: [PATCH 6/6] avoid temporary StringRef allocations while deserializing stubs --- .../src/com/intellij/psi/impl/cache/TypeInfo.java | 3 +-- .../stubs/FunctionalExpressionElementType.java | 2 +- .../psi/impl/java/stubs/JavaClassElementType.java | 14 +++++++------- .../stubs/JavaClassReferenceListElementType.java | 3 +-- .../impl/java/stubs/JavaFieldStubElementType.java | 7 +++---- .../stubs/JavaImportStatementElementType.java | 6 +++--- .../impl/java/stubs/JavaMethodElementType.java | 6 +++--- .../impl/java/stubs/JavaModuleElementType.java | 4 +--- .../impl/java/stubs/JavaNameValuePairType.java | 3 +-- ...aPackageAccessibilityStatementElementType.java | 3 +-- .../impl/java/stubs/JavaParameterElementType.java | 4 ++-- .../stubs/JavaProvidesStatementElementType.java | 2 +- .../stubs/JavaRequiresStatementElementType.java | 2 +- .../java/stubs/JavaTypeParameterElementType.java | 4 +--- .../java/stubs/JavaUsesStatementElementType.java | 3 +-- .../psi/impl/source/JavaFileElementType.java | 4 ++-- .../src/com/intellij/psi/util/QualifiedName.java | 4 +--- .../groovy/lang/psi/stubs/GrStubUtils.java | 3 +-- .../elements/GrNameValuePairElementType.java | 2 +- .../elements/GrTypeDefinitionElementType.java | 6 +++--- .../parsing/PropertyStubElementType.java | 4 +--- .../jetbrains/python/psi/PyFileElementType.java | 2 +- .../python/psi/impl/stubs/PyClassElementType.java | 9 ++++----- .../psi/impl/stubs/PyDataclassFieldStubImpl.kt | 4 ++-- .../psi/impl/stubs/PyFunctionElementType.java | 14 +++++++------- .../impl/stubs/PyImportElementElementType.java | 4 ++-- .../impl/stubs/PyNamedParameterElementType.java | 15 +++++++-------- .../psi/impl/stubs/PyNamedTupleStubImpl.java | 13 ++++++------- .../impl/stubs/PyTargetExpressionElementType.java | 11 ++++------- .../impl/stubs/PyTupleParameterElementType.java | 4 +--- .../psi/impl/stubs/PyTypingAliasStubType.java | 4 ++-- .../psi/impl/stubs/PyTypingNewTypeStubImpl.kt | 6 +++--- .../python/psi/stubs/PropertyStubStorage.java | 9 +++------ 33 files changed, 79 insertions(+), 105 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java b/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java index af2087fcadc6..ffe9eed89af7 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/cache/TypeInfo.java @@ -34,7 +34,6 @@ import com.intellij.psi.stubs.StubInputStream; import com.intellij.psi.stubs.StubOutputStream; import com.intellij.psi.tree.IElementType; import com.intellij.util.SmartList; -import com.intellij.util.io.StringRef; import gnu.trove.TObjectIntHashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -210,7 +209,7 @@ public class TypeInfo { boolean hasEllipsis = isSet(flags, HAS_ELLIPSIS); int frequentIndex = FREQUENT_INDEX_MASK & flags; - String text = frequentIndex == 0 ? StringRef.toString(record.readName()) : ourIndexFrequentType[frequentIndex]; + String text = frequentIndex == 0 ? record.readNameString() : ourIndexFrequentType[frequentIndex]; return new TypeInfo(text, arrayCount, hasEllipsis, PsiAnnotationStub.EMPTY_ARRAY); } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/FunctionalExpressionElementType.java b/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/FunctionalExpressionElementType.java index 63786b19e237..68551865d553 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/FunctionalExpressionElementType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/FunctionalExpressionElementType.java @@ -40,7 +40,7 @@ public abstract class FunctionalExpressionElementType deserialize(@NotNull StubInputStream dataStream, StubElement parentStub) throws IOException { - return new FunctionalExpressionStub<>(parentStub, this, StringRef.toString(dataStream.readName())); + return new FunctionalExpressionStub<>(parentStub, this, dataStream.readNameString()); } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaClassElementType.java b/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaClassElementType.java index a88ae4d23bfd..fee5f8f593a8 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaClassElementType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaClassElementType.java @@ -167,16 +167,16 @@ public abstract class JavaClassElementType extends JavaStubElementType targets = StringUtil.split(dataStream.readUTFFast(), "/"); return new PsiPackageAccessibilityStatementStubImpl(parentStub, this, packageName, targets); } diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaParameterElementType.java b/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaParameterElementType.java index cfb776a2cac8..4357a7f3fddf 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaParameterElementType.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/java/stubs/JavaParameterElementType.java @@ -78,11 +78,11 @@ public class JavaParameterElementType extends JavaStubElementType= 0 ? LanguageLevel.values()[level] : null, compiled); + String packageName = dataStream.readNameString(); + return new PsiJavaFileStubImpl(null, packageName, level >= 0 ? LanguageLevel.values()[level] : null, compiled); } @Override diff --git a/platform/core-api/src/com/intellij/psi/util/QualifiedName.java b/platform/core-api/src/com/intellij/psi/util/QualifiedName.java index f951ee5b93ab..0119919cd682 100644 --- a/platform/core-api/src/com/intellij/psi/util/QualifiedName.java +++ b/platform/core-api/src/com/intellij/psi/util/QualifiedName.java @@ -18,7 +18,6 @@ package com.intellij.psi.util; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.stubs.StubInputStream; import com.intellij.psi.stubs.StubOutputStream; -import com.intellij.util.io.StringRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -158,8 +157,7 @@ public class QualifiedName implements Comparable { else { qName = new QualifiedName(size); for (int i = 0; i < size; i++) { - final StringRef name = dataStream.readName(); - qName.myComponents.add(name == null ? null : name.getString()); + qName.myComponents.add(dataStream.readNameString()); } } return qName; diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/GrStubUtils.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/GrStubUtils.java index ec2abc411ca2..1e986f00c3ab 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/GrStubUtils.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/GrStubUtils.java @@ -12,7 +12,6 @@ import com.intellij.psi.util.CachedValuesManager; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.io.DataInputOutputUtil; -import com.intellij.util.io.StringRef; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.plugins.groovy.lang.parser.GroovyElementTypes; @@ -42,7 +41,7 @@ public class GrStubUtils { @NotNull public static String[] readStringArray(@NotNull StubInputStream dataStream) throws IOException { - return ArrayUtil.toStringArray(readSeq(dataStream, () -> StringRef.toString(dataStream.readName()))); + return ArrayUtil.toStringArray(readSeq(dataStream, () -> dataStream.readNameString())); } public static void writeNullableString(StubOutputStream dataStream, @Nullable String typeText) throws IOException { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/elements/GrNameValuePairElementType.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/elements/GrNameValuePairElementType.java index 8727dcd20ea8..fe43b17a34b7 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/elements/GrNameValuePairElementType.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/stubs/elements/GrNameValuePairElementType.java @@ -50,7 +50,7 @@ public class GrNameValuePairElementType extends GrStubElementType { int size = dataStream.readVarInt(); names = new ArrayList<>(size); for (int i = 0; i < size; i++) { - names.add(dataStream.readName().getString()); + names.add(dataStream.readNameString()); } } return names; diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java index 48dcd73167bd..7d7cac3d55a8 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyClassElementType.java @@ -20,7 +20,6 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.stubs.*; import com.intellij.psi.util.QualifiedName; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.io.StringRef; import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.impl.PyClassImpl; @@ -165,7 +164,7 @@ public class PyClassElementType extends PyStubElementType @NotNull public PyClassStub deserialize(@NotNull final StubInputStream dataStream, final StubElement parentStub) throws IOException { - final String name = StringRef.toString(dataStream.readName()); + final String name = dataStream.readNameString(); final int superClassCount = dataStream.readByte(); final Map superClasses = new LinkedHashMap<>(); @@ -178,10 +177,10 @@ public class PyClassElementType extends PyStubElementType final ArrayList baseClassesText = new ArrayList<>(); for (int i = 0; i < baseClassesCount; i++) { final boolean isParametrized = dataStream.readBoolean(); - final StringRef ref = dataStream.readName(); - baseClassesText.add(ref != null ? ref.getString() : null); + String ref = dataStream.readNameString(); + baseClassesText.add(ref); if (ref != null && isParametrized) { - parametrizedBaseClasses.add(ref.getString()); + parametrizedBaseClasses.add(ref); } } diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyDataclassFieldStubImpl.kt b/python/src/com/jetbrains/python/psi/impl/stubs/PyDataclassFieldStubImpl.kt index dd4ec9d7d681..327009ced15a 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyDataclassFieldStubImpl.kt +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyDataclassFieldStubImpl.kt @@ -29,12 +29,12 @@ class PyDataclassFieldStubImpl private constructor(private val calleeName: Quali @Throws(IOException::class) fun deserialize(stream: StubInputStream): PyDataclassFieldStub? { - val calleeName = stream.readName() ?: return null + val calleeName = stream.readNameString() ?: return null val hasDefault = stream.readBoolean() val hasDefaultFactory = stream.readBoolean() val initValue = stream.readBoolean() - return PyDataclassFieldStubImpl(QualifiedName.fromDottedString(calleeName.string), hasDefault, hasDefaultFactory, initValue) + return PyDataclassFieldStubImpl(QualifiedName.fromDottedString(calleeName), hasDefault, hasDefaultFactory, initValue) } private fun calculateFullyQCalleeName(callee: PyReferenceExpression): QualifiedName? { diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyFunctionElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyFunctionElementType.java index 576b7e952de0..fd231845daff 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyFunctionElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyFunctionElementType.java @@ -91,22 +91,22 @@ public class PyFunctionElementType extends PyStubElementType> fields = deserializeFields(stream, stream.readVarInt()); if (calleeName == null || name == null) { @@ -107,8 +106,8 @@ public class PyNamedTupleStubImpl implements PyNamedTupleStub { } return new PyNamedTupleStubImpl( - QualifiedName.fromDottedString(calleeName.getString()), - name.getString(), + QualifiedName.fromDottedString(calleeName), + name, fields ); } @@ -177,8 +176,8 @@ public class PyNamedTupleStubImpl implements PyNamedTupleStub { final LinkedHashMap> fields = new LinkedHashMap<>(fieldsSize); for (int i = 0; i < fieldsSize; i++) { - final String name = StringRef.toString(stream.readName()); - final String type = StringRef.toString(stream.readName()); + final String name = stream.readNameString(); + final String type = stream.readNameString(); if (name != null) { fields.put(name, Optional.ofNullable(type)); diff --git a/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java b/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java index 8a96bb310a37..93d8e7ca84af 100644 --- a/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java +++ b/python/src/com/jetbrains/python/psi/impl/stubs/PyTargetExpressionElementType.java @@ -25,7 +25,6 @@ import com.intellij.psi.stubs.StubInputStream; import com.intellij.psi.stubs.StubOutputStream; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.QualifiedName; -import com.intellij.util.io.StringRef; import com.jetbrains.python.PyElementTypes; import com.jetbrains.python.PyNames; import com.jetbrains.python.PythonDialectsTokenSetProvider; @@ -127,19 +126,17 @@ public class PyTargetExpressionElementType extends PyStubElementType implements Custom me.mySetter = readOne(stream); me.myDeleter = readOne(stream); // - StringRef ref = stream.readName(); - me.myDoc = ref != null? ref.getString() : null; + me.myDoc = stream.readNameString(); return me; } @@ -92,10 +90,9 @@ public class PropertyStubStorage extends PropertyBunch implements Custom @Nullable private static Maybe readOne(StubInputStream stream) throws IOException { - StringRef ref = stream.readName(); - if (ref == null) return none; + String s = stream.readNameString(); + if (s == null) return none; else { - String s = ref.getString(); if (IMPOSSIBLE_NAME.equals(s)) return unknown; else return new Maybe<>(s); }