Fixing live template context detection after changes in parser

This commit is contained in:
Valentin Kipyatkov
2015-10-12 17:52:41 +03:00
parent 988c934e78
commit b519a8af08
3 changed files with 21 additions and 14 deletions
@@ -59,16 +59,14 @@ public abstract class JetTemplateContextType extends TemplateContextType {
else if (element instanceof LeafPsiElement) {
IElementType elementType = ((LeafPsiElement) element).getElementType();
if (elementType == JetTokens.IDENTIFIER) {
if (element.getParent() instanceof JetReferenceExpression) {
PsiElement parentOfParent = element.getParent().getParent();
PsiElement parent = element.getParent();
if (parent instanceof JetReferenceExpression) {
PsiElement parentOfParent = parent.getParent();
JetQualifiedExpression qualifiedExpression = PsiTreeUtil.getParentOfType(element, JetQualifiedExpression.class);
if (qualifiedExpression != null && qualifiedExpression.getSelectorExpression() == parentOfParent) {
return false;
}
}
else {
return false;
}
}
}
return element != null && isInContext(element);
+1
View File
@@ -0,0 +1 @@
val v = xxx<caret>
@@ -16,13 +16,12 @@
package org.jetbrains.kotlin.idea.codeInsight
import org.jetbrains.kotlin.idea.test.JetLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import java.io.File
import org.jetbrains.kotlin.idea.liveTemplates.JetTemplateContextType
import com.intellij.codeInsight.template.TemplateContextType
import com.intellij.testFramework.UsefulTestCase
import org.jetbrains.kotlin.idea.liveTemplates.JetTemplateContextType
import org.jetbrains.kotlin.idea.test.JetLightCodeInsightFixtureTestCase
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
import java.io.File
public class LiveTemplatesContextTest : JetLightCodeInsightFixtureTestCase() {
override fun getTestDataPath(): String =
@@ -30,14 +29,23 @@ public class LiveTemplatesContextTest : JetLightCodeInsightFixtureTestCase() {
public fun testInDocComment() {
myFixture.configureByFile(getTestName(false) + ".kt")
assertInContexts(javaClass<JetTemplateContextType.Generic>(), javaClass<JetTemplateContextType.Comment>())
assertInContexts(
JetTemplateContextType.Generic::class.java,
JetTemplateContextType.Comment::class.java)
}
public fun testTopLevel() {
myFixture.configureByFile(getTestName(false) + ".kt")
assertInContexts(javaClass<JetTemplateContextType.Generic>(),
javaClass<JetTemplateContextType.TopLevel>(),
javaClass<JetTemplateContextType.Expression>())
assertInContexts(
JetTemplateContextType.Generic::class.java,
JetTemplateContextType.TopLevel::class.java)
}
public fun testInExpression() {
myFixture.configureByFile(getTestName(false) + ".kt")
assertInContexts(
JetTemplateContextType.Generic::class.java,
JetTemplateContextType.Expression::class.java)
}
private fun assertInContexts(vararg expectedContexts: Class<out JetTemplateContextType>) {