@Override
 public void visitFile(PsiFile file) {
   final VirtualFile virtualFile = file.getVirtualFile();
   if (virtualFile != null) {
     String relative =
         ProjectUtilCore.displayUrlRelativeToProject(
             virtualFile, virtualFile.getPresentableUrl(), myProject, true, false);
     myContext.incrementJobDoneAmount(myContext.getStdJobDescriptors().BUILD_GRAPH, relative);
   }
   final FileViewProvider viewProvider = file.getViewProvider();
   final Set<Language> relevantLanguages = viewProvider.getLanguages();
   for (Language language : relevantLanguages) {
     visitElement(viewProvider.getPsi(language));
   }
   myPsiManager.dropResolveCaches();
   InjectedLanguageManager.getInstance(myProject).dropFileCaches(file);
 }
示例#2
0
  @Override
  @NotNull
  public PsiFile[] getPsiRoots() {
    final FileViewProvider viewProvider = getViewProvider();
    final Set<Language> languages = viewProvider.getLanguages();

    final PsiFile[] roots = new PsiFile[languages.size()];
    int i = 0;
    for (Language language : languages) {
      PsiFile psi = viewProvider.getPsi(language);
      if (psi == null) {
        LOG.error("PSI is null for " + language + "; in file: " + this);
      }
      roots[i++] = psi;
    }
    if (roots.length > 1) {
      Arrays.sort(roots, FILE_BY_LANGUAGE_ID);
    }
    return roots;
  }