Failed code inspection #
Few generated types fail code inspection, mostly because of the imperfect official type. For the example below
Therefore, I cast them in generated code.
However, some types are incorrectly inferred and error shows even cast, whereas I
forget those examples unfortunately. Use another source type or annotate them with Tracer.Omit
.
Inaccurate *
in typealias
#
*
in alias types are all shifted first and then converted, which, however, may be inaccurate.
For source code
interface A<T: Iterable<String>>
interface B<T: List<CharSequence>>
typealias MyTypeAlias<T> = Pair<A<T>, B<T>>
The real bound is List<String>
, which is only one of those difficult cases. With Tracer
,
MyTypeAlias<*>
is converted to Pair<A<*>, B<*>>
first, and
Pair<A<out Iterable<String>>, B<out List<CharSequence>>>
next.
This could be fixed if one day kotlin requires generic bounds for typealias liketypealias MyTypeAlias<T: List<String>> = Pair<A<T>, B<T>>
Never use special characters in class names #
Class A•A
is imported as `A•A`
because of special symbols which, however, are
hard to adapt. At present, Tracer
doesn’t support this import style in the
generated code.