default file template inspection to hold its internal PSI on a soft reference: prevents memory snapshot pollution with JavaFileElement's

This commit is contained in:
peter
2012-03-22 10:54:04 +01:00
parent 14c7d61811
commit 812951529f
2 changed files with 17 additions and 4 deletions
@@ -22,6 +22,7 @@ import com.intellij.psi.impl.source.tree.java.MethodElement
import com.intellij.testFramework.LeakHunter
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase
import com.intellij.util.Processor
import com.intellij.codeInspection.defaultFileTemplateUsage.DefaultFileTemplateUsageInspection
/**
* @author peter
@@ -74,4 +75,14 @@ class AstLeaksTest extends LightCodeInsightFixtureTestCase {
LeakHunter.checkLeak(sup, MethodElement)
}
public void "test no hard refs to Default File Template inspection internal AST"() {
myFixture.addFileToProject('sup.java', 'class Super { void bar() {} }')
PsiJavaFile foo = myFixture.addFileToProject('a.java', 'class Foo { void bar() { bar(); } }')
myFixture.configureFromExistingVirtualFile(foo.virtualFile)
myFixture.enableInspections(new DefaultFileTemplateUsageInspection())
myFixture.doHighlighting()
LeakHunter.checkLeak(foo.classes[0], MethodElement, { MethodElement node -> !node.psi.physical } as Processor<MethodElement>)
}
}