From 7e75486dca12178daa8cf3b9962fc3667e277c74 Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Thu, 24 Nov 2016 14:23:54 +0300 Subject: [PATCH] [Parameter Hints] IDEA-164121, clear state when empty element is passed --- .../hints/settings/ParameterNameHintsSettings.kt | 16 +++++++++++----- .../hints/settings/ParameterNameSettingsTest.kt | 13 +++++++++++++ .../GroovyInlayParameterHintsProviderTest.groovy | 6 ++---- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/hints/settings/ParameterNameHintsSettings.kt b/platform/lang-impl/src/com/intellij/codeInsight/hints/settings/ParameterNameHintsSettings.kt index 1a941281117d..f702b7501d06 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/hints/settings/ParameterNameHintsSettings.kt +++ b/platform/lang-impl/src/com/intellij/codeInsight/hints/settings/ParameterNameHintsSettings.kt @@ -80,11 +80,17 @@ class ParameterNameHintsSettings : PersistentStateComponent { } override fun loadState(state: Element) { - val allBlackLists = state.getChild(XmlTagHelper.BLACKLISTS)?.getChildren(XmlTagHelper.LANGUAGE_LIST) ?: emptyList() - allBlackLists.mapNotNull { - val language = it.attributeValue(XmlTagHelper.LANGUAGE) ?: return@mapNotNull - myAddedPatterns[language] = it.extractPatterns(XmlTagHelper.ADDED) - myRemovedPatterns[language] = it.extractPatterns(XmlTagHelper.REMOVED) + val allBlackLists = state + .getChild(XmlTagHelper.BLACKLISTS) + ?.getChildren(XmlTagHelper.LANGUAGE_LIST) ?: emptyList() + + myAddedPatterns.clear() + myRemovedPatterns.clear() + + allBlackLists.mapNotNull { blacklist -> + val language = blacklist.attributeValue(XmlTagHelper.LANGUAGE) ?: return@mapNotNull + myAddedPatterns[language] = blacklist.extractPatterns(XmlTagHelper.ADDED) + myRemovedPatterns[language] = blacklist.extractPatterns(XmlTagHelper.REMOVED) } } diff --git a/platform/lang-impl/testSources/com/intellij/codeInsight/hints/settings/ParameterNameSettingsTest.kt b/platform/lang-impl/testSources/com/intellij/codeInsight/hints/settings/ParameterNameSettingsTest.kt index e1e543bef049..f70f3ec59540 100644 --- a/platform/lang-impl/testSources/com/intellij/codeInsight/hints/settings/ParameterNameSettingsTest.kt +++ b/platform/lang-impl/testSources/com/intellij/codeInsight/hints/settings/ParameterNameSettingsTest.kt @@ -20,6 +20,7 @@ import com.intellij.codeInsight.hints.InlayParameterHintsProvider import com.intellij.openapi.fileTypes.PlainTextLanguage import com.intellij.psi.PsiElement import junit.framework.TestCase +import org.jdom.Element class MockInlayProvider(override val defaultBlackList: Set): InlayParameterHintsProvider { @@ -75,6 +76,18 @@ class ParameterNameSettingsTest : TestCase() { assert(ignoreSet.contains("xxx")) } + fun `test if empty element is passed settings are dropped`() { + addIgnorePattern("new_ignore_pattern") + + var ignoreSet = getIgnoreSet() + assert(ignoreSet.size == 1) + + settings.loadState(Element("element")) + + ignoreSet = getIgnoreSet() + assert(ignoreSet.isEmpty()) + } + fun `test removed pattern is removed when defaults are updated`() { defaultSettingsUpdated("aaa", "bbb") diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/hint/GroovyInlayParameterHintsProviderTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/hint/GroovyInlayParameterHintsProviderTest.groovy index ef13ab864175..454d4746fae9 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/hint/GroovyInlayParameterHintsProviderTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/codeInsight/hint/GroovyInlayParameterHintsProviderTest.groovy @@ -19,7 +19,7 @@ import com.intellij.codeInsight.daemon.impl.ParameterHintsPresentationManager import com.intellij.codeInsight.hints.settings.ParameterNameHintsSettings import com.intellij.testFramework.LightProjectDescriptor import groovy.transform.CompileStatic -import groovy.transform.TypeCheckingMode +import org.jdom.Element import org.jetbrains.plugins.groovy.GroovyLightProjectDescriptor import org.jetbrains.plugins.groovy.LightGroovyTestCase @@ -47,10 +47,8 @@ class Foo { } @Override - @CompileStatic(TypeCheckingMode.SKIP) void tearDown() throws Exception { - ParameterNameHintsSettings.getInstance().myAddedPatterns.clear() - ParameterNameHintsSettings.getInstance().myRemovedPatterns.clear() + ParameterNameHintsSettings.getInstance().loadState(new Element("element")) super.tearDown() }