KT-6810 Don't report warnings in dummy.kt
#KT-6810 Fixed
This commit is contained in:
+10
@@ -25,6 +25,7 @@ import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.ModificationTracker;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.util.containers.ConcurrentWeakValueHashMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.FilteringIterator;
|
||||
@@ -36,7 +37,9 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.diagnostics.Severity;
|
||||
import org.jetbrains.kotlin.psi.JetAnnotated;
|
||||
import org.jetbrains.kotlin.psi.JetAnnotationEntry;
|
||||
import org.jetbrains.kotlin.psi.JetFile;
|
||||
import org.jetbrains.kotlin.psi.JetStubbedPsiUtil;
|
||||
import org.jetbrains.kotlin.psi.PsiPackage;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
import org.jetbrains.kotlin.resolve.constants.ArrayValue;
|
||||
import org.jetbrains.kotlin.resolve.constants.CompileTimeConstant;
|
||||
@@ -143,6 +146,13 @@ public class DiagnosticsWithSuppression implements Diagnostics {
|
||||
private boolean isSuppressed(@NotNull Diagnostic diagnostic) {
|
||||
PsiElement element = diagnostic.getPsiElement();
|
||||
|
||||
// If diagnostics are reported in a synthetic file generated by JetPsiFactory (dummy.kt),
|
||||
// there's no point to present such diagnostics to the user, because the user didn't write this code
|
||||
PsiFile file = element.getContainingFile();
|
||||
if (file instanceof JetFile) {
|
||||
if (PsiPackage.getDoNotAnalyze((JetFile) file) != null) return true;
|
||||
}
|
||||
|
||||
for (DiagnosticSuppressor suppressor : getDiagnosticSuppressors()) {
|
||||
if (suppressor.isSuppressed(diagnostic)) return true;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
$TESTDATA_DIR$/warningsInDummy.kt
|
||||
-d
|
||||
$TEMP_DIR$
|
||||
@@ -0,0 +1,5 @@
|
||||
fun foo(s: String) {
|
||||
if (s == "") {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
OK
|
||||
@@ -123,6 +123,12 @@ public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTes
|
||||
doJvmTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("warningsInDummy.args")
|
||||
public void testWarningsInDummy() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/jvm/warningsInDummy.args");
|
||||
doJvmTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("wrongAbiVersion.args")
|
||||
public void testWrongAbiVersion() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/jvm/wrongAbiVersion.args");
|
||||
|
||||
@@ -61,4 +61,9 @@ public class K2JvmCliTest extends CliBaseTest {
|
||||
public void conflictingOverloads() throws Exception {
|
||||
executeCompilerCompareOutputJVM();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void warningsInDummy() throws Exception {
|
||||
executeCompilerCompareOutputJVM();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,13 +18,13 @@ package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.junit.Assert
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.JetCoreEnvironment
|
||||
import org.jetbrains.kotlin.resolve.lazy.KotlinTestWithEnvironment
|
||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
|
||||
import org.jetbrains.kotlin.resolve.diagnostics.MutableDiagnosticsWithSuppression
|
||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
|
||||
class MutableDiagnosticsTest : KotlinTestWithEnvironment() {
|
||||
override fun createEnvironment(): JetCoreEnvironment? {
|
||||
@@ -132,6 +132,10 @@ class MutableDiagnosticsTest : KotlinTestWithEnvironment() {
|
||||
private inner class DummyDiagnostic : Diagnostic {
|
||||
val dummyElement = JetPsiFactory(getEnvironment().getProject()).createType("Int")
|
||||
|
||||
;{
|
||||
dummyElement.getContainingJetFile().doNotAnalyze = null
|
||||
}
|
||||
|
||||
override fun getFactory() = unimplemented()
|
||||
override fun getSeverity() = unimplemented()
|
||||
override fun getPsiElement() = dummyElement
|
||||
|
||||
+1
-1
@@ -98,7 +98,7 @@ public class CapturedTypeApproximationTest() : JetLiteFixture() {
|
||||
|
||||
appendln(testType)
|
||||
|
||||
if (bindingContext.getDiagnostics().any { it.getSeverity() == Severity.ERROR }) {
|
||||
if (bindingContext.getDiagnostics().noSuppression().any { it.getSeverity() == Severity.ERROR }) {
|
||||
appendln(" compiler error\n")
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user