From 83a0365a144386be826bb8d58eca16bb1baeb99d Mon Sep 17 00:00:00 2001 From: Alexander Zolotov Date: Mon, 1 Aug 2016 15:21:32 +0300 Subject: [PATCH] Do not return disposed template state --- .../refactoring/InplaceReassignVariableTest.java | 12 +++--------- .../template/impl/TemplateManagerImpl.java | 9 +++++++-- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/refactoring/InplaceReassignVariableTest.java b/java/java-tests/testSrc/com/intellij/refactoring/InplaceReassignVariableTest.java index d4a243707738..62a1c972c787 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/InplaceReassignVariableTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/InplaceReassignVariableTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -16,14 +16,12 @@ package com.intellij.refactoring; import com.intellij.codeInsight.template.impl.TemplateManagerImpl; -import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.openapi.command.undo.UndoManager; import com.intellij.openapi.fileEditor.TextEditor; import com.intellij.openapi.fileEditor.impl.text.TextEditorProvider; import com.intellij.refactoring.introduceVariable.ReassignVariableUtil; public class InplaceReassignVariableTest extends AbstractJavaInplaceIntroduceTest { - @Override protected void runTest() throws Throwable { doRunTest(); @@ -55,10 +53,8 @@ public class InplaceReassignVariableTest extends AbstractJavaInplaceIntroduceTes invokeRefactoring(); ReassignVariableUtil.reassign(getEditor()); + assertNull(TemplateManagerImpl.getTemplateState(getEditor())); - TemplateState state = TemplateManagerImpl.getTemplateState(getEditor()); - assert state != null; - state.gotoEnd(false); checkResultByFile(getBasePath() + name + "_after" + getExtension()); } finally { @@ -77,9 +73,7 @@ public class InplaceReassignVariableTest extends AbstractJavaInplaceIntroduceTes invokeRefactoring(); ReassignVariableUtil.reassign(getEditor()); - TemplateState state = TemplateManagerImpl.getTemplateState(getEditor()); - assert state != null; - state.gotoEnd(false); + assertNull(TemplateManagerImpl.getTemplateState(getEditor())); TextEditor textEditor = TextEditorProvider.getInstance().getTextEditor(getEditor()); assertNotNull(textEditor); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java index 6659c8fb0d1b..0282c63bbd45 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2014 JetBrains s.r.o. + * Copyright 2000-2016 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. @@ -112,7 +112,12 @@ public class TemplateManagerImpl extends TemplateManager implements Disposable { @Nullable public static TemplateState getTemplateState(@NotNull Editor editor) { - return editor.getUserData(TEMPLATE_STATE_KEY); + TemplateState templateState = editor.getUserData(TEMPLATE_STATE_KEY); + if (templateState != null && templateState.isDisposed()) { + editor.putUserData(TEMPLATE_STATE_KEY, null); + return null; + } + return templateState; } static void clearTemplateState(@NotNull Editor editor) {