// // Source code recreated from a .class file by IntelliJ IDEA // (powered by Fernflower decompiler) // package com.intellij.extapi.psi; import com.intellij.lang.Language; import com.intellij.lang.LanguageParserDefinitions; import com.intellij.lang.ParserDefinition; import com.intellij.psi.FileViewProvider; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.impl.source.PsiFileImpl; import com.intellij.psi.tree.IFileElementType; import java.util.ArrayList; import java.util.Iterator; import java.util.Set; import org.jetbrains.annotations.NotNull; public abstract class PsiFileBase extends PsiFileImpl { @NotNull private final Language myLanguage; @NotNull private final ParserDefinition myParserDefinition; protected PsiFileBase(@NotNull FileViewProvider viewProvider, @NotNull Language language) { super(viewProvider); this.myLanguage = findLanguage(language, viewProvider); ParserDefinition parserDefinition = (ParserDefinition)LanguageParserDefinitions.INSTANCE.forLanguage(this.myLanguage); if(parserDefinition == null) { throw new RuntimeException("PsiFileBase: language.getParserDefinition() returned null for: " + this.myLanguage); } else { this.myParserDefinition = parserDefinition; IFileElementType nodeType = parserDefinition.getFileNodeType(); assert nodeType.getLanguage() == this.myLanguage : nodeType.getLanguage() + " != " + this.myLanguage; this.init(nodeType, nodeType); } } private static Language findLanguage(Language baseLanguage, FileViewProvider viewProvider) { Set languages = viewProvider.getLanguages(); Iterator i$ = languages.iterator(); Language actualLanguage; do { if(!i$.hasNext()) { throw new AssertionError("Language " + baseLanguage + " doesn\'t participate in view provider " + viewProvider + ": " + new ArrayList(languages)); } actualLanguage = (Language)i$.next(); } while(!actualLanguage.isKindOf(baseLanguage)); return actualLanguage; } @NotNull public final Language getLanguage() { Language var10000 = this.myLanguage; if(this.myLanguage == null) { throw new IllegalStateException(String.format("@NotNull method %s.%s must not return null", new Object[]{"com/intellij/extapi/psi/PsiFileBase", "getLanguage"})); } else { return var10000; } } public void accept(@NotNull PsiElementVisitor visitor) { visitor.visitFile(this); } @NotNull public ParserDefinition getParserDefinition() { ParserDefinition var10000 = this.myParserDefinition; if(this.myParserDefinition == null) { throw new IllegalStateException(String.format("@NotNull method %s.%s must not return null", new Object[]{"com/intellij/extapi/psi/PsiFileBase", "getParserDefinition"})); } else { return var10000; } } }