Semantic highlighting: Improvements on types and type params
A lot of semantic highlighting support for types and type params is added. In detail, the scala-ide is now possible to highlight
Unfortunately, the scala compiler doesn't store enough information in the AST in order to exactly determine all possible types to highlight. Thus, some variations and some nested types can not be correctly highlighted - these are mainly structural types, compound types and existential types. There exist ignored test cases which specify the optimal behavior and which should be activated when the compiler provides more information in his ASTs.
- type params on the use side in general:
Seq[Int]
- compound types:
Map[String, Int] with MultiMap[String, Int]
- context bounds:
def foo[A : Ordering](a: A)
- function literals:
A => B
- tuple literals:
(A, B)
- structural types:
def foo(st: { def close(): Unit })
- upper and lower bounds:
def foo[A >: List[A] <: Iterable[A]](a: A)
- view bounds:
def foo[A <% Ordering[A]](a: A)
- existential types:
Seq[A] forSome { type A <: Foo }
- type projections:
A#B
- path dependent types:
a.B
Unfortunately, the scala compiler doesn't store enough information in the AST in order to exactly determine all possible types to highlight. Thus, some variations and some nested types can not be correctly highlighted - these are mainly structural types, compound types and existential types. There exist ignored test cases which specify the optimal behavior and which should be activated when the compiler provides more information in his ASTs.
Leave a comment