[xml dom] refactoring: introduce public DomFileDescription::registerReferenceInjectorTestAccessor method to use in tests (IJPL-205216)

This is needed to avoid IllegalAccessError if tests are loaded by a different classloader and to allow enabling 'Suspicious Package-Private Access' for tests as well.

GitOrigin-RevId: 9a61f20ebc4ca2ed7a825ff5fecd74736ca69c57
This commit is contained in:
Nikolay Chashnikov
2025-09-02 12:20:55 +02:00
committed by intellij-monorepo-bot
parent fc83a8f2fc
commit 232f33f2ec
3 changed files with 9 additions and 5 deletions

View File

@@ -14,9 +14,7 @@ import com.intellij.util.NotNullFunction;
import com.intellij.util.SmartList;
import com.intellij.util.containers.ConcurrentFactoryMap;
import com.intellij.util.xml.highlighting.DomElementsAnnotator;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.*;
import javax.swing.*;
import java.lang.reflect.Type;
@@ -121,6 +119,12 @@ public class DomFileDescription<T> {
protected final void registerReferenceInjector(DomReferenceInjector injector) {
myInjectors.add(injector);
}
@TestOnly
@ApiStatus.Internal
public void registerReferenceInjectorTestAccessor(DomReferenceInjector injector) {
registerReferenceInjector(injector);
}
public List<DomReferenceInjector> getReferenceInjectors() {
return myInjectors;

View File

@@ -208,7 +208,7 @@ public class DomFileDescriptionTest extends DomHardCoreTestCase {
getDomManager().registerFileDescription(description, myDisposable);
DomFileElementImpl<FooElement> fileElement = getDomManager().getFileElement(file, FooElement.class);
assertNotNull(fileElement);
assertEquals("a", fileElement.getFileDescription().myRootTagName);
assertEquals("a", fileElement.getFileDescription().getRootTagName());
}
public interface AbstractElement extends GenericDomValue<String> {

View File

@@ -93,7 +93,7 @@ public class DomReferenceInjectorTest extends DomHardCoreTestCase {
}
private void registerInjectorFor(DomElement element, PsiElement targetElement) {
DomUtil.getFileElement(element).getFileDescription().registerReferenceInjector(new MyInjector(targetElement));
DomUtil.getFileElement(element).getFileDescription().registerReferenceInjectorTestAccessor(new MyInjector(targetElement));
}
public interface MyElement extends DomElement {