[Parameter Hints] IDEA-164121, clear state when empty element is passed

This commit is contained in:
Yaroslav Lepenkin
2016-11-24 14:25:19 +03:00
parent f846c43145
commit 7e75486dca
3 changed files with 26 additions and 9 deletions
@@ -80,11 +80,17 @@ class ParameterNameHintsSettings : PersistentStateComponent<Element> {
}
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)
}
}
@@ -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<String>): 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")
@@ -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()
}