public void testNoWarningsOnJavaKotlinInheritance() throws Exception { // This test checks that there are no PARAMETER_NAME_CHANGED_ON_OVERRIDE or // DIFFERENT_NAMES_FOR_THE_SAME_PARAMETER_IN_SUPERTYPES // warnings when subclassing in Kotlin from Java binaries (in case when no parameter names are // available for Java classes) KotlinTestUtils.compileJavaFiles( Collections.singletonList(getTestDataFileWithExtension("java")), Arrays.asList("-d", tmpdir.getPath())); Project project = createEnvironment(Collections.singletonList(tmpdir)).getProject(); AnalysisResult result = JvmResolveUtil.analyzeOneFileWithJavaIntegration( KotlinTestUtils.loadJetFile(project, getTestDataFileWithExtension("kt"))); result.throwIfError(); BindingContext bindingContext = result.getBindingContext(); AnalyzerWithCompilerReport.Companion.reportDiagnostics( bindingContext.getDiagnostics(), PrintingMessageCollector.PLAIN_TEXT_TO_SYSTEM_ERR); assertEquals( "There should be no diagnostics", 0, Iterables.size(bindingContext.getDiagnostics())); }
@NotNull public static List<Diagnostic> getDiagnosticsIncludingSyntaxErrors( @NotNull BindingContext bindingContext, @NotNull final PsiElement root, boolean markDynamicCalls, @Nullable List<DeclarationDescriptor> dynamicCallDescriptors) { List<Diagnostic> diagnostics = new ArrayList<Diagnostic>(); diagnostics.addAll( Collections2.filter( bindingContext.getDiagnostics().all(), new Predicate<Diagnostic>() { @Override public boolean apply(Diagnostic diagnostic) { return PsiTreeUtil.isAncestor(root, diagnostic.getPsiElement(), false); } })); for (PsiErrorElement errorElement : AnalyzingUtils.getSyntaxErrorRanges(root)) { diagnostics.add(new SyntaxErrorDiagnostic(errorElement)); } List<Diagnostic> debugAnnotations = getDebugInfoDiagnostics(root, bindingContext, markDynamicCalls, dynamicCallDescriptors); diagnostics.addAll(debugAnnotations); return diagnostics; }