mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
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:
@@ -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>)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user