Skip to content

Java: IntersectionType is missing predicates and does not work correctly #5403

@Marcono1234

Description

@Marcono1234

There are several issues with IntersectionType:

  • It currently only provides getFirstBound(), there are no other predicates to get the other bounds (though getASubtype() can apparently be used as workaround)
  • It does not preserve order of the bounds (i.e. MyInterface2 & MyInterface1 would become MyInterface1 & MyInterface2)
  • It requires that getFirstBound() is a class, returning Object when only interfaces are used as bounds; that is (to my understanding) wrong

It would be good to give it the following predicates:

  • getFirstBoundType()
  • getBoundType(int position)
  • getABoundType()

(I cannot submit a pull request for this because it appears that database changes are required for this)

Side note: Usage of IntersectionType in erase(Type) will also behave incorrectly due to the getFirstBound() behavior described above, and also does not match the JLS which does not mention intersection types for type erasure (not sure what the correct behavior would be here).

result = erase(t.(IntersectionType).getFirstBound())

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions