JS frontend: suppress warnings from stdlib.
This commit is contained in:
@@ -20,6 +20,7 @@ import com.google.common.base.Joiner;
|
||||
import com.google.common.base.Predicates;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.extensions.ExtensionsArea;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -49,6 +50,7 @@ import org.jetbrains.jet.config.Services;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.resolve.DiagnosticsWithSuppression;
|
||||
import org.jetbrains.k2js.analyze.SuppressUnusedParameterForJsNative;
|
||||
import org.jetbrains.k2js.analyze.SuppressWarningsFromExternalModules;
|
||||
import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS;
|
||||
import org.jetbrains.k2js.config.*;
|
||||
import org.jetbrains.k2js.facade.MainCallParameters;
|
||||
@@ -93,10 +95,14 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
|
||||
|
||||
CompileEnvironmentUtil.addSourceFilesCheckingForDuplicates(configuration, arguments.freeArgs);
|
||||
JetCoreEnvironment environmentForJS = JetCoreEnvironment.createForProduction(rootDisposable, configuration);
|
||||
Extensions.getRootArea()
|
||||
.getExtensionPoint(DiagnosticsWithSuppression.SuppressStringProvider.EP_NAME)
|
||||
|
||||
ExtensionsArea rootArea = Extensions.getRootArea();
|
||||
rootArea.getExtensionPoint(DiagnosticsWithSuppression.SuppressStringProvider.EP_NAME)
|
||||
.registerExtension(new SuppressUnusedParameterForJsNative());
|
||||
|
||||
rootArea.getExtensionPoint(DiagnosticsWithSuppression.DiagnosticSuppressor.EP_NAME)
|
||||
.registerExtension(new SuppressWarningsFromExternalModules());
|
||||
|
||||
Project project = environmentForJS.getProject();
|
||||
List<JetFile> sourcesFiles = environmentForJS.getSourceFiles();
|
||||
|
||||
|
||||
@@ -152,6 +152,9 @@ public class JetCoreEnvironment {
|
||||
private static void registerApplicationExtensionPointsForCLI() {
|
||||
registerApplicationExtensionPoint(DiagnosticsWithSuppression.SuppressStringProvider.EP_NAME,
|
||||
DiagnosticsWithSuppression.SuppressStringProvider.class);
|
||||
|
||||
registerApplicationExtensionPoint(DiagnosticsWithSuppression.DiagnosticSuppressor.EP_NAME,
|
||||
DiagnosticsWithSuppression.DiagnosticSuppressor.class);
|
||||
}
|
||||
|
||||
private static void registerApplicationServicesForCLI(@NotNull JavaCoreApplicationEnvironment applicationEnvironment) {
|
||||
|
||||
@@ -55,9 +55,16 @@ public class DiagnosticsWithSuppression implements Diagnostics {
|
||||
List<String> get(@NotNull AnnotationDescriptor annotationDescriptor);
|
||||
}
|
||||
|
||||
public interface DiagnosticSuppressor {
|
||||
ExtensionPointName<DiagnosticSuppressor> EP_NAME = ExtensionPointName.create("org.jetbrains.kotlin.diagnosticSuppressor");
|
||||
|
||||
boolean isSuppressed(@NotNull Diagnostic diagnostic);
|
||||
}
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(DiagnosticsWithSuppression.class);
|
||||
|
||||
private static final SuppressStringProvider[] ADDITIONAL_SUPPRESS_STRING_PROVIDERS = Extensions.getExtensions(SuppressStringProvider.EP_NAME);
|
||||
private static final DiagnosticSuppressor[] DIAGNOSTIC_SUPPRESSORS = Extensions.getExtensions(DiagnosticSuppressor.EP_NAME);
|
||||
|
||||
private final BindingContext context;
|
||||
private final Collection<Diagnostic> diagnostics;
|
||||
@@ -110,6 +117,10 @@ public class DiagnosticsWithSuppression implements Diagnostics {
|
||||
private boolean isSuppressed(@NotNull Diagnostic diagnostic) {
|
||||
PsiElement element = diagnostic.getPsiElement();
|
||||
|
||||
for (DiagnosticSuppressor suppressor : DIAGNOSTIC_SUPPRESSORS) {
|
||||
if (suppressor.isSuppressed(diagnostic)) return true;
|
||||
}
|
||||
|
||||
if (isSuppressedForDebugger(diagnostic, element)) return true;
|
||||
|
||||
JetAnnotated annotated = JetStubbedPsiUtil.getPsiOrStubParent(element, JetAnnotated.class, false);
|
||||
|
||||
@@ -810,11 +810,13 @@
|
||||
<extensionPoint name="updater" beanClass="com.intellij.openapi.fileTypes.FileTypeExtensionPoint"/>
|
||||
<extensionPoint name="projectConfigurator" interface="org.jetbrains.jet.plugin.configuration.KotlinProjectConfigurator"/>
|
||||
<extensionPoint name="suppressStringProvider" interface="org.jetbrains.jet.lang.resolve.DiagnosticsWithSuppression$SuppressStringProvider"/>
|
||||
<extensionPoint name="diagnosticSuppressor" interface="org.jetbrains.jet.lang.resolve.DiagnosticsWithSuppression$DiagnosticSuppressor"/>
|
||||
</extensionPoints>
|
||||
|
||||
<extensions defaultExtensionNs="org.jetbrains.kotlin">
|
||||
<projectConfigurator implementation="org.jetbrains.jet.plugin.configuration.KotlinJavaModuleConfigurator"/>
|
||||
<projectConfigurator implementation="org.jetbrains.jet.plugin.configuration.KotlinJsModuleConfigurator"/>
|
||||
<suppressStringProvider implementation="org.jetbrains.k2js.analyze.SuppressUnusedParameterForJsNative"/>
|
||||
<diagnosticSuppressor implementation="org.jetbrains.k2js.analyze.SuppressWarningsFromExternalModules"/>
|
||||
</extensions>
|
||||
</idea-plugin>
|
||||
|
||||
+12
@@ -22,6 +22,10 @@ import org.jetbrains.jet.lang.diagnostics.Errors
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe
|
||||
import org.jetbrains.jet.lang.resolve.DiagnosticsWithSuppression
|
||||
import org.jetbrains.k2js.PredefinedAnnotation
|
||||
import org.jetbrains.jet.lang.diagnostics.Diagnostic
|
||||
import org.jetbrains.jet.lang.diagnostics.Severity
|
||||
import org.jetbrains.jet.lang.psi.JetFile
|
||||
import org.jetbrains.k2js.config.LibrarySourcesConfig
|
||||
|
||||
class SuppressUnusedParameterForJsNative : DiagnosticsWithSuppression.SuppressStringProvider {
|
||||
override fun get(annotationDescriptor: AnnotationDescriptor): List<String> {
|
||||
@@ -32,4 +36,12 @@ class SuppressUnusedParameterForJsNative : DiagnosticsWithSuppression.SuppressSt
|
||||
|
||||
return listOf()
|
||||
}
|
||||
}
|
||||
|
||||
class SuppressWarningsFromExternalModules : DiagnosticsWithSuppression.DiagnosticSuppressor {
|
||||
override fun isSuppressed(diagnostic: Diagnostic): Boolean {
|
||||
val file = diagnostic.getPsiFile()
|
||||
return diagnostic.getSeverity() == Severity.WARNING &&
|
||||
file is JetFile && file.getUserData(LibrarySourcesConfig.EXTERNAL_MODULE_NAME) != null
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user