ClassManifest for the abstract type prefix # name
.
ClassManifest for the abstract type prefix # name
. upperBound
is not
strictly necessary as it could be obtained by reflection. It was
added so that erasure can be calculated without reflection.
todo: remove after next boostrap
ClassManifest for the abstract type prefix # name
.
ClassManifest for the abstract type prefix # name
. upperBound
is not
strictly necessary as it could be obtained by reflection. It was
added so that erasure can be calculated without reflection.
ClassManifest for the class type clazz[args]
, where clazz
is
a class with non-package prefix type prefix
and type arguments args
.
ClassManifest for the class type clazz[args]
, where clazz
is
a top-level or static class and args
are its type arguments
ClassManifest for the class type clazz
, where clazz
is
a top-level or static class.
ClassManifest for the class type clazz
, where clazz
is
a top-level or static class.
This no-prefix, no-arguments case is separate because we it's called from ScalaRunTime.boxArray itself. If we pass varargs as arrays into this, we get an infinitely recursive call to boxArray. (Besides, having a separate case is more efficient)
ClassManifestFactory
defines factory methods for manifests. It is intended for use by the compiler and should not be used in client code.Unlike
ClassManifest
, this factory isn't annotated with a deprecation warning. This is done to prevent avalanches of deprecation warnings in the code that calls methods with manifests.In a perfect world, we would just remove the @deprecated annotation from
ClassManifest
the object and then delete it in 2.11. After all, that object is explicitly marked as internal, so noone should use it. However a lot of existing libraries disregarded the scaladoc that comes withClassManifest
, so we need to somehow nudge them into migrating prior to removing stuff out of the blue. Hence we've introduced this design decision as the lesser of two evils.