From 5f8c65027d718feb3a3a52bbd2f5a345fa29e0ed Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Wed, 11 Apr 2018 17:51:40 +0300 Subject: [PATCH] Java: Don't show annotations and return type in extract method preview tree (IDEA-189278) --- .../refactoring/extractMethod/preview/MethodNode.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/preview/MethodNode.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/preview/MethodNode.java index 4322c37eaf9c..bb049ceb89f7 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/preview/MethodNode.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/preview/MethodNode.java @@ -4,10 +4,7 @@ package com.intellij.refactoring.extractMethod.preview; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.TextRange; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFileFactory; -import com.intellij.psi.PsiJavaFile; -import com.intellij.psi.PsiMethod; +import com.intellij.psi.*; import com.intellij.usageView.UsageInfo; import com.intellij.usages.ChunkExtractor; import com.intellij.usages.TextChunk; @@ -34,15 +31,19 @@ class MethodNode extends FragmentNode { protected TextChunk[] createTextChunks(@NotNull PsiElement element) { assert element instanceof PsiMethod; Project project = element.getProject(); + + // EditorHighlighter requires VirtualFile, let's make sure it exists. Also, file.getText() is much cheaper with this. PsiJavaFile file = (PsiJavaFile)PsiFileFactory.getInstance(project).createFileFromText( "A.java", JavaLanguage.INSTANCE, "class A{" + element.getText() + "}"); PsiMethod psiMethod = file.getClasses()[0].getMethods()[0]; UsageInfo2UsageAdapter usageAdapter = new UsageInfo2UsageAdapter(new UsageInfo(psiMethod)); TextRange range = psiMethod.getTextRange(); + PsiIdentifier identifier = psiMethod.getNameIdentifier(); + int startOffset = identifier != null ? identifier.getTextRange().getStartOffset() : range.getStartOffset(); int endOffset = Math.min(psiMethod.getParameterList().getTextRange().getEndOffset(), range.getEndOffset()); return ChunkExtractor.getExtractor(file) - .createTextChunks(usageAdapter, file.getText(), range.getStartOffset(), endOffset, false, new ArrayList<>()); + .createTextChunks(usageAdapter, file.getText(), startOffset, endOffset, false, new ArrayList<>()); } public Icon getIcon() {