fix "IDEA-221944 Deadlock on opening second project" and support preloading for proje...
[idea/community.git] / java / java-indexing-impl / src / com / intellij / psi / impl / file / impl / JavaOutOfSourcesResolveScopeProvider.java
index a3e9e87f3a4c2ad5e5526681c08f0fe25e9c9f21..0532f2f7e11cfcd4617cf121e0182804aec3bda4 100644 (file)
@@ -1,18 +1,4 @@
-/*
- * Copyright 2000-2015 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
 package com.intellij.psi.impl.file.impl;
 
 import com.intellij.lang.java.JavaLanguage;
@@ -32,15 +18,15 @@ import org.jetbrains.annotations.Nullable;
  * For example, java files from test data.
  * There is still a possibility to modify this scope choice with the ResolveScopeEnlarger.
  */
-public class JavaOutOfSourcesResolveScopeProvider extends ResolveScopeProvider {
+public final class JavaOutOfSourcesResolveScopeProvider extends ResolveScopeProvider {
   @Nullable
   @Override
   public GlobalSearchScope getResolveScope(@NotNull VirtualFile file, Project project) {
     // For java only! For other languages resolve may be implemented with different rules, requiring larger scope.
     final FileType type = file.getFileType();
     if (type instanceof LanguageFileType && ((LanguageFileType)type).getLanguage() == JavaLanguage.INSTANCE) {
-      ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex();
-      if (index.isInContent(file) && !index.isInSource(file)) {
+      ProjectFileIndex index = project.isDefault() ? null : ProjectRootManager.getInstance(project).getFileIndex();
+      if (index == null || (index.isInContent(file) && !index.isInSource(file))) {
         return GlobalSearchScope.fileScope(project, file);
       }
     }