From d56b4d453c25e6c92e10e36d7884c1fe0327ca44 Mon Sep 17 00:00:00 2001 From: svtk Date: Thu, 31 Oct 2013 22:48:22 +0400 Subject: [PATCH] added check that all resolved calls are completed to diagnostic tests --- ...stractDiagnosticsTestWithEagerResolve.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/compiler/tests/org/jetbrains/jet/checkers/AbstractDiagnosticsTestWithEagerResolve.java b/compiler/tests/org/jetbrains/jet/checkers/AbstractDiagnosticsTestWithEagerResolve.java index 7924b9da28e..791a7872000 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/AbstractDiagnosticsTestWithEagerResolve.java +++ b/compiler/tests/org/jetbrains/jet/checkers/AbstractDiagnosticsTestWithEagerResolve.java @@ -17,18 +17,27 @@ package org.jetbrains.jet.checkers; import com.google.common.base.Predicates; +import com.google.common.collect.ImmutableMap; import com.intellij.psi.PsiFile; +import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.JetTestUtils; import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport; +import org.jetbrains.jet.lang.descriptors.CallableDescriptor; +import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils; +import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.AnalyzerScriptParameter; +import org.jetbrains.jet.lang.resolve.AnalyzingUtils; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingTrace; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; +import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCallWithTrace; import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM; import java.io.File; import java.util.Collections; import java.util.List; +import java.util.Map; public abstract class AbstractDiagnosticsTestWithEagerResolve extends AbstractJetDiagnosticsTest { @@ -52,5 +61,28 @@ public abstract class AbstractDiagnosticsTestWithEagerResolve extends AbstractJe JetTestUtils.assertEqualsToFile(testDataFile, actualText.toString()); assertTrue("Diagnostics mismatch. See the output above", ok); + + checkAllResolvedCallsAreCompleted(jetFiles, bindingContext); + } + + private static void checkAllResolvedCallsAreCompleted(@NotNull List jetFiles, @NotNull BindingContext bindingContext) { + for (JetFile file : jetFiles) { + if (!AnalyzingUtils.getSyntaxErrorRanges(file).isEmpty()) { + return; + } + } + + ImmutableMap> resolvedCallsEntries = + bindingContext.getSliceContents(BindingContext.RESOLVED_CALL); + for (Map.Entry> entry : resolvedCallsEntries.entrySet()) { + JetElement element = entry.getKey(); + ResolvedCall resolvedCall = entry.getValue(); + + DiagnosticUtils.LineAndColumn lineAndColumn = + DiagnosticUtils.getLineAndColumnInPsiFile(element.getContainingFile(), element.getTextRange()); + + assertTrue("Resolved call for '" + element.getText() + "'" + lineAndColumn + " in not completed", + ((ResolvedCallWithTrace)resolvedCall).isCompleted()); + } } }