diff --git a/java/java-tests/testSrc/com/intellij/lang/java/parser/JavaParsingTestCase.java b/java/java-tests/testSrc/com/intellij/lang/java/parser/JavaParsingTestCase.java index f7198039219b..121ea006d4ff 100644 --- a/java/java-tests/testSrc/com/intellij/lang/java/parser/JavaParsingTestCase.java +++ b/java/java-tests/testSrc/com/intellij/lang/java/parser/JavaParsingTestCase.java @@ -19,20 +19,15 @@ import com.intellij.lang.ASTNode; import com.intellij.lang.PsiBuilder; import com.intellij.lang.StdLanguages; import com.intellij.openapi.fileTypes.StdFileTypes; -import com.intellij.openapi.roots.LanguageLevelModuleExtension; -import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.FileViewProvider; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.SingleRootFileViewProvider; -import com.intellij.psi.impl.JavaPsiFacadeEx; import com.intellij.psi.impl.source.PsiJavaFileImpl; import com.intellij.psi.impl.source.tree.FileElement; import com.intellij.psi.tree.IFileElementType; -import com.intellij.testFramework.IdeaTestCase; -import com.intellij.testFramework.LightVirtualFile; -import com.intellij.testFramework.ParsingTestCase; +import com.intellij.testFramework.*; import org.jetbrains.annotations.NonNls; import java.io.IOException; @@ -45,32 +40,8 @@ public abstract class JavaParsingTestCase extends ParsingTestCase { IdeaTestCase.initPlatformPrefix(); } - public static JavaPsiFacadeEx getJavaFacade() { - return JavaPsiFacadeEx.getInstanceEx(getProject()); - } - protected static void withLevel(final LanguageLevel level, final Runnable r) { - final LanguageLevelProjectExtension projectExt = LanguageLevelProjectExtension.getInstance(getProject()); - final LanguageLevelModuleExtension moduleExt = LanguageLevelModuleExtension.getInstance(getModule()); - - final LanguageLevel projectLevel = projectExt.getLanguageLevel(); - final LanguageLevel moduleLevel = moduleExt.getLanguageLevel(); - try { - projectExt.setLanguageLevel(level); - - final LanguageLevelModuleExtension modifiable = (LanguageLevelModuleExtension)moduleExt.getModifiableModel(true); - modifiable.setLanguageLevel(level); - modifiable.commit(); - - r.run(); - } - finally { - final LanguageLevelModuleExtension modifiable = (LanguageLevelModuleExtension)moduleExt.getModifiableModel(true); - modifiable.setLanguageLevel(moduleLevel); - modifiable.commit(); - - projectExt.setLanguageLevel(projectLevel); - } + IdeaTestUtil.withLevel(getModule(), level, r); } protected interface TestParser { @@ -91,7 +62,7 @@ public abstract class JavaParsingTestCase extends ParsingTestCase { private static IFileElementType TEST_FILE_ELEMENT_TYPE = null; private static TestParser TEST_PARSER; - protected PsiFile createPsiFile(final String name, final String text, final TestParser parser) { + private PsiFile createPsiFile(final String name, final String text, final TestParser parser) { if (TEST_FILE_ELEMENT_TYPE == null) { TEST_FILE_ELEMENT_TYPE = new IFileElementType("test.java.file", StdLanguages.JAVA) { @Override diff --git a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java index 5a6357d9f184..fb9f52865320 100644 --- a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java +++ b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java @@ -18,6 +18,9 @@ package com.intellij.testFramework; import com.intellij.ide.util.treeView.AbstractTreeNode; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.module.Module; +import com.intellij.openapi.roots.LanguageLevelModuleExtension; +import com.intellij.openapi.roots.LanguageLevelProjectExtension; import com.intellij.openapi.ui.Queryable; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -25,6 +28,7 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; +import com.intellij.pom.java.LanguageLevel; import com.intellij.util.containers.HashMap; import com.intellij.util.io.ZipUtil; import junit.framework.Assert; @@ -167,11 +171,35 @@ public class IdeaTestUtil extends PlatformTestUtil { printDetectedPerformanceTimings(); } + @SuppressWarnings({"UseOfSystemOutOrSystemErr"}) public static void printDetectedPerformanceTimings() { System.out.println("Etalon timing: " + ETALON_TIMING); System.out.println("This machine timing: " + Timings.MACHINE_TIMING); } + public static void withLevel(final Module module, final LanguageLevel level, final Runnable r) { + final LanguageLevelProjectExtension projectExt = LanguageLevelProjectExtension.getInstance(module.getProject()); + final LanguageLevelModuleExtension moduleExt = LanguageLevelModuleExtension.getInstance(module); + + final LanguageLevel projectLevel = projectExt.getLanguageLevel(); + final LanguageLevel moduleLevel = moduleExt.getLanguageLevel(); + try { + projectExt.setLanguageLevel(level); + setModuleLanguageLevel(level, moduleExt); + r.run(); + } + finally { + setModuleLanguageLevel(moduleLevel, moduleExt); + projectExt.setLanguageLevel(projectLevel); + } + } + + private static void setModuleLanguageLevel(final LanguageLevel level, final LanguageLevelModuleExtension moduleExt) { + final LanguageLevelModuleExtension modifiable = (LanguageLevelModuleExtension)moduleExt.getModifiableModel(true); + modifiable.setLanguageLevel(level); + modifiable.commit(); + } + public static class CvsVirtualFileFilter implements VirtualFileFilter, FilenameFilter { @Override public boolean accept(VirtualFile file) { diff --git a/java/testFramework/src/com/intellij/testFramework/LightIdeaTestCase.java b/java/testFramework/src/com/intellij/testFramework/LightIdeaTestCase.java index 0ba4dd72ad88..db148022d103 100644 --- a/java/testFramework/src/com/intellij/testFramework/LightIdeaTestCase.java +++ b/java/testFramework/src/com/intellij/testFramework/LightIdeaTestCase.java @@ -19,6 +19,7 @@ import com.intellij.openapi.module.ModuleType; import com.intellij.openapi.module.StdModuleTypes; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; +import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.impl.JavaPsiFacadeEx; /** @@ -49,4 +50,8 @@ public abstract class LightIdeaTestCase extends LightPlatformTestCase { protected ModuleType getModuleType() { return StdModuleTypes.JAVA; } + + protected static void withLevel(final LanguageLevel level, final Runnable r) { + IdeaTestUtil.withLevel(getModule(), level, r); + } }