diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java index 8fe71905fe3d..bff36367ca53 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java @@ -21,9 +21,6 @@ import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.Disposable; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.FileTypeManager; -import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.roots.ModuleRootManager; @@ -46,9 +43,9 @@ import com.intellij.psi.impl.source.tree.TreeUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.UsageSearchContext; import com.intellij.testFramework.ExpectedHighlightingData; +import com.intellij.testFramework.FileTreeAccessFilter; import com.intellij.util.IncorrectOperationException; import gnu.trove.THashMap; -import gnu.trove.THashSet; import gnu.trove.TIntArrayList; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -61,7 +58,7 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase { private final Map myAvailableTools = new THashMap(); private final Map myAvailableLocalTools = new THashMap(); private boolean toInitializeDaemon; - protected final Set myAddedClasses = new THashSet(); + private final FileTreeAccessFilter myFileTreeAccessFilter = new FileTreeAccessFilter(); protected void setUp() throws Exception { super.setUp(); @@ -169,9 +166,8 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase { final ArrayList result = new ArrayList(); for (InspectionToolProvider toolProvider : provider) { for (Class aClass : toolProvider.getInspectionClasses()) { - final Object tool; try { - tool = aClass.newInstance(); + final Object tool = aClass.newInstance(); assertTrue(tool instanceof LocalInspectionTool); result.add((LocalInspectionTool)tool); } @@ -223,17 +219,9 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase { //to initialize caches myPsiManager.getCacheManager().getFilesWithWord("XXX", UsageSearchContext.IN_COMMENTS, GlobalSearchScope.allScope(myProject), true); - VirtualFileFilter javaFilesFilter = new VirtualFileFilter() { - public boolean accept(VirtualFile file) { - if (myAddedClasses.contains(file)) return false; - - FileType fileType = FileTypeManager.getInstance().getFileTypeByFile(file); - return (fileType == StdFileTypes.JAVA || fileType == StdFileTypes.CLASS) && !file.getName().equals("package-info.java"); - } - }; final JavaPsiFacadeEx facade = getJavaFacade(); if (facade != null) { - facade.setAssertOnFileLoadingFilter(javaFilesFilter); // check repository work + facade.setAssertOnFileLoadingFilter(myFileTreeAccessFilter); // check repository work } Collection infos = doHighlighting(); @@ -249,7 +237,7 @@ public abstract class DaemonAnalyzerTestCase extends CodeInsightTestCase { } public void allowTreeAccessForFile(final VirtualFile file) { - myAddedClasses.add(file); + myFileTreeAccessFilter.allowTreeAccessForFile(file); } protected Collection highlightErrors() { diff --git a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java index 7e20f0e6b9d7..e3dff20f98e4 100644 --- a/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java +++ b/java/testFramework/src/com/intellij/codeInsight/daemon/LightDaemonAnalyzerTestCase.java @@ -8,16 +8,13 @@ import com.intellij.codeInsight.daemon.impl.HighlightInfo; import com.intellij.codeInsight.daemon.impl.TextEditorHighlightingPassRegistrarEx; import com.intellij.injected.editor.EditorWindow; import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.fileTypes.FileTypeManager; -import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.progress.ProgressIndicator; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.testFramework.ExpectedHighlightingData; +import com.intellij.testFramework.FileTreeAccessFilter; import com.intellij.testFramework.LightCodeInsightTestCase; import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NonNls; @@ -29,6 +26,8 @@ import java.util.Collections; import java.util.List; public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCase { + private final FileTreeAccessFilter myJavaFilesFilter = new FileTreeAccessFilter(); + @Override protected void setUp() throws Exception { super.setUp(); @@ -54,13 +53,8 @@ public abstract class LightDaemonAnalyzerTestCase extends LightCodeInsightTestCa PsiDocumentManager.getInstance(getProject()).commitAllDocuments(); getFile().getText(); //to load text - VirtualFileFilter javaFilesFilter = new VirtualFileFilter() { - public boolean accept(VirtualFile file) { - FileType fileType = FileTypeManager.getInstance().getFileTypeByFile(file); - return fileType == StdFileTypes.JAVA || fileType == StdFileTypes.CLASS; - } - }; - getJavaFacade().setAssertOnFileLoadingFilter(javaFilesFilter); // check repository work + myJavaFilesFilter.allowTreeAccessForFile(getVFile()); + getJavaFacade().setAssertOnFileLoadingFilter(myJavaFilesFilter); // check repository work Collection infos = doHighlighting(); diff --git a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java index 3e1752c27ca1..0cc018f9ef14 100644 --- a/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java +++ b/java/testFramework/src/com/intellij/testFramework/IdeaTestUtil.java @@ -40,7 +40,7 @@ public class IdeaTestUtil extends PlatformTestUtil { }; public static final boolean COVERAGE_ENABLED_BUILD = "true".equals(System.getProperty("idea.coverage.enabled.build")); - public static final MyVirtualFileFilter CVS_FILE_FILTER = new MyVirtualFileFilter(); + public static final CvsVirtualFileFilter CVS_FILE_FILTER = new CvsVirtualFileFilter(); private static HashMap buildNameToFileMap(VirtualFile[] files, VirtualFileFilter filter) { HashMap map = new HashMap(); @@ -263,7 +263,7 @@ public class IdeaTestUtil extends PlatformTestUtil { System.out.println("This machine timing: " + Timings.MACHINE_TIMING); } - public static class MyVirtualFileFilter implements VirtualFileFilter, FilenameFilter { + public static class CvsVirtualFileFilter implements VirtualFileFilter, FilenameFilter { public boolean accept(VirtualFile file) { return !file.isDirectory() || !"CVS".equals(file.getName()); } diff --git a/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java b/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java index eee87fd6f1cd..b398dbc3686c 100644 --- a/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java +++ b/platform/lang-impl/src/com/intellij/injected/editor/DocumentWindowImpl.java @@ -592,8 +592,8 @@ public class DocumentWindowImpl extends UserDataHolderBase implements Disposable if (change == null) continue; String prefix = myShreds.get(i).prefix; String suffix = myShreds.get(i).suffix; - assert change.startsWith(prefix) : change + " " + prefix; - assert change.endsWith(suffix) : change + " " + suffix; + assert change.startsWith(prefix) : change + "/" + prefix; + assert change.endsWith(suffix) : change + "/" + suffix; result[i] = StringUtil.trimEnd(StringUtil.trimStart(change, prefix), suffix); } return result; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java index 3192476f098a..7ebf6e39476d 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/PsiFileImpl.java @@ -184,7 +184,7 @@ public abstract class PsiFileImpl extends ElementBase implements PsiFileEx, PsiF final FileViewProvider viewProvider = getViewProvider(); if (viewProvider.isPhysical() && myManager.isAssertOnFileLoading(viewProvider.getVirtualFile())) { - LOG.error("Access to tree elements not allowed in tests." + viewProvider.getVirtualFile().getPresentableUrl()); + LOG.error("Access to tree elements not allowed in tests. path='" + viewProvider.getVirtualFile().getPresentableUrl()+"'"); } final Document document = viewProvider.isEventSystemEnabled() ? viewProvider.getDocument() : null; diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/Place.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/Place.java index 90c1d026d479..8200a6e2088a 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/Place.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/Place.java @@ -11,7 +11,7 @@ import java.util.List; * @author cdr */ public class Place extends SmartList { - private PsiFile myInjectedPsi; + private volatile PsiFile myInjectedPsi; Place(@NotNull List shreds, PsiFile injectedPsi) { super(shreds); diff --git a/platform/testFramework/src/com/intellij/testFramework/FileTreeAccessFilter.java b/platform/testFramework/src/com/intellij/testFramework/FileTreeAccessFilter.java new file mode 100755 index 000000000000..bd6dc3cbb64f --- /dev/null +++ b/platform/testFramework/src/com/intellij/testFramework/FileTreeAccessFilter.java @@ -0,0 +1,35 @@ +package com.intellij.testFramework; + +import com.intellij.injected.editor.VirtualFileWindow; +import com.intellij.openapi.fileTypes.FileType; +import com.intellij.openapi.fileTypes.FileTypeManager; +import com.intellij.openapi.fileTypes.StdFileTypes; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileFilter; +import gnu.trove.THashSet; + +import java.util.Set; + +/** +* Created by IntelliJ IDEA. +* User: cdr +* Date: Oct 2, 2009 +* Time: 2:41:53 PM +* To change this template use File | Settings | File Templates. +*/ +public class FileTreeAccessFilter implements VirtualFileFilter { + protected final Set myAddedClasses = new THashSet(); + + public boolean accept(VirtualFile file) { + if (file instanceof VirtualFileWindow) file = ((VirtualFileWindow)file).getDelegate(); + + if (myAddedClasses.contains(file)) return false; + + FileType fileType = FileTypeManager.getInstance().getFileTypeByFile(file); + return (fileType == StdFileTypes.JAVA || fileType == StdFileTypes.CLASS) && !file.getName().equals("package-info.java"); + } + + public void allowTreeAccessForFile(VirtualFile file) { + myAddedClasses.add(file); + } +} diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 195fb7537d1b..6ddab15bd027 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -24,9 +24,9 @@ import com.intellij.codeInspection.ex.*; import com.intellij.facet.Facet; import com.intellij.facet.FacetManager; import com.intellij.find.FindManager; -import com.intellij.find.impl.FindManagerImpl; import com.intellij.find.findUsages.FindUsagesHandler; import com.intellij.find.findUsages.FindUsagesOptions; +import com.intellij.find.impl.FindManagerImpl; import com.intellij.ide.DataManager; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.DataContext; @@ -51,7 +51,6 @@ import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.fileEditor.OpenFileDescriptor; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.FileTypeManager; -import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.module.Module; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; @@ -76,10 +75,7 @@ import com.intellij.psi.util.PsiUtilBase; import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesProcessor; import com.intellij.refactoring.rename.RenameProcessor; import com.intellij.refactoring.rename.RenamePsiElementProcessor; -import com.intellij.testFramework.ExpectedHighlightingData; -import com.intellij.testFramework.InspectionTestUtil; -import com.intellij.testFramework.LightPlatformTestCase; -import com.intellij.testFramework.UsefulTestCase; +import com.intellij.testFramework.*; import com.intellij.testFramework.fixtures.*; import com.intellij.usageView.UsageInfo; import com.intellij.util.ArrayUtil; @@ -88,7 +84,6 @@ import com.intellij.util.Function; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashMap; -import gnu.trove.THashSet; import junit.framework.Assert; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -120,9 +115,9 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig private final TempDirTestFixture myTempDirFixture; protected final IdeaProjectTestFixture myProjectFixture; - protected final Set myAddedClasses = new THashSet(); @NonNls private static final String XXX = "XXX"; private PsiElement myFileContext; + private final FileTreeAccessFilter myJavaFilesFilter = new FileTreeAccessFilter(); public CodeInsightTestFixtureImpl(IdeaProjectTestFixture projectFixture, TempDirTestFixture tempDirTestFixture) { myProjectFixture = projectFixture; @@ -1016,16 +1011,8 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig //to initialize caches myPsiManager.getCacheManager().getFilesWithWord(XXX, UsageSearchContext.IN_COMMENTS, GlobalSearchScope.allScope(project), true); - VirtualFileFilter javaFilesFilter = new VirtualFileFilter() { - public boolean accept(VirtualFile file) { - if (myAddedClasses.contains(file)) return false; - FileType fileType = FileTypeManager.getInstance().getFileTypeByFile(file); - return fileType == StdFileTypes.JAVA || fileType == StdFileTypes.CLASS; - } - }; - - ((PsiManagerImpl)PsiManager.getInstance(project)).setAssertOnFileLoadingFilter(javaFilesFilter); + ((PsiManagerImpl)PsiManager.getInstance(project)).setAssertOnFileLoadingFilter(myJavaFilesFilter); final long start = System.currentTimeMillis(); // ProfilingUtil.startCPUProfiling(); @@ -1144,7 +1131,7 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig } public void allowTreeAccessForFile(final VirtualFile file) { - myAddedClasses.add(file); + myJavaFilesFilter.allowTreeAccessForFile(file); } static class SelectionAndCaretMarkupLoader {