Ensure that every language has just one primary file type (IDEA-CR-50521)

GitOrigin-RevId: 9ada39d401d2c0f617be240be2d37787d93e2038
This commit is contained in:
Dmitry Jemerov
2019-07-31 19:04:01 +03:00
committed by intellij-monorepo-bot
parent fb0bfeda5a
commit 1a33912e0c
4 changed files with 19 additions and 3 deletions
@@ -34,7 +34,7 @@ public class ScratchFileType extends LanguageFileType implements FileTypeIdentif
public static final LanguageFileType INSTANCE = new ScratchFileType();
ScratchFileType() {
super(PlainTextLanguage.INSTANCE);
super(PlainTextLanguage.INSTANCE, true);
}
@Override
@@ -362,7 +362,7 @@
<projectViewPane implementation="com.intellij.ide.scratch.ScratchProjectViewPane"/>
<treeStructureProvider implementation="com.intellij.ide.scratch.ScratchProjectViewPane$MyStructureProvider" order="last"/>
<fileType name="Scratch" language="TEXT" implementationClass="com.intellij.ide.scratch.ScratchFileType" fieldName="INSTANCE"/>
<fileType name="Scratch" implementationClass="com.intellij.ide.scratch.ScratchFileType" fieldName="INSTANCE"/>
<navbar implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$NavBarExtension"/>
<lang.substitutor language="TEXT" implementationClass="com.intellij.ide.scratch.ScratchFileServiceImpl$Substitutor" order="first"/>
<nonProjectFileWritingAccessExtension implementation="com.intellij.ide.scratch.ScratchFileServiceImpl$AccessExtension"/>
@@ -835,6 +835,22 @@ public class FileTypesTest extends HeavyPlatformTestCase {
assertEquals(1, detectorCalls.get());
}
public void testUniqueLanguage() {
Map<String, LanguageFileType> map = new HashMap<>();
for (FileType type : FileTypeManager.getInstance().getRegisteredFileTypes()) {
if (!(type instanceof LanguageFileType)) continue;
LanguageFileType languageFileType = (LanguageFileType)type;
if (!languageFileType.isSecondary()) {
String id = languageFileType.getLanguage().getID();
LanguageFileType oldFileType = map.get(id);
if (oldFileType != null) {
fail("Multiple primary file types for language " + id + ": "+ oldFileType.getName() + ", " + languageFileType.getName());
}
map.put(id, languageFileType);
}
}
}
@NotNull
private static FileType createTestFileType() {
return new FileType() {
@@ -15,7 +15,7 @@ import javax.swing.*;
public class DGMFileType extends LanguageFileType implements FileTypeIdentifiableByVirtualFile {
public static final DGMFileType INSTANCE = new DGMFileType();
private DGMFileType() {
super(PropertiesLanguage.INSTANCE);
super(PropertiesLanguage.INSTANCE, true);
}
@NotNull