boolean (@NotNull List<Module> scopeModules, boolean runUnknownSdkCheck) { final List<String> modulesWithoutJdkAssigned = new ArrayList<>(); boolean projectSdkNotSpecified = false; for (final Module module : scopeModules) { final Sdk jdk = ModuleRootManager.getInstance(module).getSdk(); if (jdk != null) { continue; } projectSdkNotSpecified |= ModuleRootManager.getInstance(module).isSdkInherited(); modulesWithoutJdkAssigned.add(module.getName()); } if (runUnknownSdkCheck) { final CompilerDriverUnknownSdkTracker.Outcome result = CompilerDriverUnknownSdkTracker.getInstance(myProject).fixSdkSettings(projectSdkNotSpecified, scopeModules, formatModulesList(modulesWithoutJdkAssigned)); if (result == CompilerDriverUnknownSdkTracker.Outcome.STOP_COMPILE) { return false; } //we do not trust the CompilerDriverUnknownSdkTracker, to extra check has to be done anyway return validateJdks(scopeModules, false); } else { if (!modulesWithoutJdkAssigned.isEmpty()) { showNotSpecifiedError("error.jdk.not.specified", projectSdkNotSpecified, modulesWithoutJdkAssigned, JavaCompilerBundle.message("modules.classpath.title")); return false; } return true; } }