From b44d26477ba09bc321a4ea69a0f14ae1fa58f4ed Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 31 May 2016 13:33:14 +0200 Subject: [PATCH] FileReferenceQuickFixProvider: don't leak PSI via "create file" fix --- .../FileReferenceQuickFixProvider.java | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java index c87bc61ab493..1243d04b8718 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/quickFix/FileReferenceQuickFixProvider.java @@ -156,30 +156,27 @@ public class FileReferenceQuickFixProvider { private static class MyCreateFileFix extends CreateFileFix { private final boolean isDirectory; - private final FileReference myReference; + private final String myNewFileTemplateName; public MyCreateFileFix(boolean isdirectory, String newFileName, PsiDirectory directory, FileReference reference) { super(isdirectory, newFileName, directory); isDirectory = isdirectory; - myReference = reference; + myNewFileTemplateName = isDirectory ? null : reference.getNewFileTemplateName(); } @Override protected String getFileText() { - if (!isDirectory) { - String templateName = myReference.getNewFileTemplateName(); - if (templateName != null) { - Project project = myReference.getElement().getProject(); - FileTemplateManager fileTemplateManager = FileTemplateManager.getInstance(project); - FileTemplate template = fileTemplateManager.getTemplate(templateName); - if (template == null) template = fileTemplateManager.findInternalTemplate(templateName); + if (!isDirectory && myNewFileTemplateName != null) { + Project project = getStartElement().getProject(); + FileTemplateManager fileTemplateManager = FileTemplateManager.getInstance(project); + FileTemplate template = fileTemplateManager.getTemplate(myNewFileTemplateName); + if (template == null) template = fileTemplateManager.findInternalTemplate(myNewFileTemplateName); - if (template != null) { - try { - return template.getText(fileTemplateManager.getDefaultProperties()); - } catch (IOException ex) { - throw new RuntimeException(ex); - } + if (template != null) { + try { + return template.getText(fileTemplateManager.getDefaultProperties()); + } catch (IOException ex) { + throw new RuntimeException(ex); } } }