From 0333faaf61848153295b908bd2c960454d4a921c Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 20 Jan 2017 13:39:58 +0100 Subject: [PATCH] make sure postfix template filtering works with current module's language level --- .../com/intellij/psi/impl/source/PsiJavaFileBaseImpl.java | 6 ++++++ .../postfix/templates/LambdaPostfixTemplateTest.java | 3 ++- .../postfix/templates/OptionalPostfixTemplateTest.java | 3 ++- .../postfix/templates/StreamPostfixTemplateTest.java | 3 ++- .../src/com/intellij/testFramework/IdeaTestUtil.java | 6 ++++++ 5 files changed, 18 insertions(+), 3 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiJavaFileBaseImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiJavaFileBaseImpl.java index 35ec88e550aa..24d225c4c4db 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiJavaFileBaseImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiJavaFileBaseImpl.java @@ -506,6 +506,12 @@ public abstract class PsiJavaFileBaseImpl extends PsiFileImpl implements PsiJava putUserData(LANGUAGE_LEVEL_KEY, null); } + @Override + public void setOriginalFile(@NotNull PsiFile originalFile) { + super.setOriginalFile(originalFile); + clearCaches(); + } + private LanguageLevel getLanguageLevelInner() { if (myOriginalFile instanceof PsiJavaFile) { return ((PsiJavaFile)myOriginalFile).getLanguageLevel(); diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/LambdaPostfixTemplateTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/LambdaPostfixTemplateTest.java index bb0ec13de7b7..296554b01ad1 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/LambdaPostfixTemplateTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/LambdaPostfixTemplateTest.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.template.postfix.templates; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.IdeaTestUtil; import org.jetbrains.annotations.NotNull; public class LambdaPostfixTemplateTest extends PostfixTemplateTestCase { @@ -53,7 +54,7 @@ public class LambdaPostfixTemplateTest extends PostfixTemplateTestCase { } public void testDoNotExpandOnJavaLess8() { - LanguageLevelProjectExtension.getInstance(myFixture.getProject()).setLanguageLevel(LanguageLevel.JDK_1_6); + IdeaTestUtil.setModuleLanguageLevel(myModule, LanguageLevel.JDK_1_6, getTestRootDisposable()); doTest(); } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/OptionalPostfixTemplateTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/OptionalPostfixTemplateTest.java index f90cfd1d83df..aa108423bb8c 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/OptionalPostfixTemplateTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/OptionalPostfixTemplateTest.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.template.postfix.templates; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.IdeaTestUtil; import org.jetbrains.annotations.NotNull; public class OptionalPostfixTemplateTest extends PostfixTemplateTestCase { @@ -81,7 +82,7 @@ public class OptionalPostfixTemplateTest extends PostfixTemplateTestCase { } public void testDoNotExpandOnJavaLess8() { - LanguageLevelProjectExtension.getInstance(myFixture.getProject()).setLanguageLevel(LanguageLevel.JDK_1_6); + IdeaTestUtil.setModuleLanguageLevel(myModule, LanguageLevel.JDK_1_6, getTestRootDisposable()); doTest(); } } diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/StreamPostfixTemplateTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/StreamPostfixTemplateTest.java index f7d84be36c6c..e1bb9a79083e 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/StreamPostfixTemplateTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/template/postfix/templates/StreamPostfixTemplateTest.java @@ -17,6 +17,7 @@ package com.intellij.codeInsight.template.postfix.templates; import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.pom.java.LanguageLevel; +import com.intellij.testFramework.IdeaTestUtil; import org.jetbrains.annotations.NotNull; public class StreamPostfixTemplateTest extends PostfixTemplateTestCase { @@ -57,7 +58,7 @@ public class StreamPostfixTemplateTest extends PostfixTemplateTestCase { } public void testDoNotExpandOnJavaLess8() { - LanguageLevelProjectExtension.getInstance(myFixture.getProject()).setLanguageLevel(LanguageLevel.JDK_1_6); + IdeaTestUtil.setModuleLanguageLevel(myModule, LanguageLevel.JDK_1_6, getTestRootDisposable()); doTest(); } } diff --git a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java index 3e33201489aa..7e4acd57315a 100644 --- a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java +++ b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java @@ -72,6 +72,12 @@ public class IdeaTestUtil extends PlatformTestUtil { modifiable.commit(); } + public static void setModuleLanguageLevel(Module module, final LanguageLevel level, Disposable parentDisposable) { + LanguageLevel prev = LanguageLevelModuleExtensionImpl.getInstance(module).getLanguageLevel(); + setModuleLanguageLevel(module, level); + Disposer.register(parentDisposable, () -> setModuleLanguageLevel(module, prev)); + } + @TestOnly public static Sdk getMockJdk17() { return getMockJdk17("java 1.7");