Skip to content

java stream API interop regression in 3.4.0-RC1 #19354

Closed
@SimY4

Description

@SimY4

Compiler version

3.4.0-RC1

Minimized code

import javax.annotation.processing.{ AbstractProcessor, RoundEnvironment }
import javax.lang.model.element.{ ElementKind, PackageElement, TypeElement }

import java.util as ju

class P extends AbstractProcessor {
  override def process(annotations: ju.Set[? <: TypeElement], roundEnv: RoundEnvironment): Boolean = {
    annotations
      .stream()
      .flatMap(annotation => roundEnv.getElementsAnnotatedWith(annotation).stream())
      .filter(element => element.getKind == ElementKind.PACKAGE)
      .map(element => element.asInstanceOf[PackageElement])
      .toList()
    true
  }
}

Output

Ambiguous overload. The overloaded alternatives of method getElementsAnnotatedWith in trait RoundEnvironment with types
 (x$0: Class[? <: java.lang.annotation.Annotation]):
  java.util.Set[? <: javax.lang.model.element.Element]
 (x$0: javax.lang.model.element.TypeElement):
  java.util.Set[? <: javax.lang.model.element.Element]
both match arguments ((annotation : Nothing))

Expectation

This java interop with Stream APIs worked in 3.3.1 and all versions before. Regressed in 3.4.0-RC1

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions