Manifest 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.
Manifest for the class type clazz[args], where clazz is
a class with non-package prefix type prefix and type arguments args.
Manifest for the class type clazz, where clazz is
a top-level or static class and args are its type arguments.
Manifest for the class type clazz[args], where clazz is
a top-level or static class.
Manifest for the class type clazz[args], 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)
Manifest for the intersection type parents_0 with ... with parents_n'.
Manifest for the singleton type value.type.
Manifest for the unknown type _ >: L <: U in an existential.
ManifestFactorydefines factory methods for manifests. It is intended for use by the compiler and should not be used in client code.Unlike
Manifest, 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. Why so complicated? Read up the comments forClassManifestFactory.