aboutsummaryrefslogtreecommitdiff
path: root/tests/pending/run/typetags_without_scala_reflect_manifest_lookup.scala
blob: 2b1af02f2565c35bd969e50a5b426d23e50038dc (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import scala.tools.partest._
import scala.tools.nsc.Settings

object Test extends DirectTest {
  override def extraSettings = "-cp " + sys.props("partest.lib") + " -d \"" + testOutput.path + "\""

  def code = """
    object Test extends dotty.runtime.LegacyApp {
      // manifest lookup also involves type tag lookup
      // because we support manifest <-> typetag convertability
      //
      // however when scala-reflect.jar (the home of type tags) is not on the classpath
      // we need to omit the type tag lookup, because we lack the necessary symbols
      // to do implicit search and tag materialization
      // (such missing symbols are e.g. ApiUniverseClass and TypeTagsClass)
      //
      // the test case you're looking at checks exactly this
      // we establish a classpath that only includes scala-library.jar
      // and then force scalac to perform implicit search for a manifest
      // if type tag lookup is not disabled, the compiler will crash
      // if it is disabled, then the compilation will succeed
      // http://groups.google.com/group/scala-internals/browse_thread/thread/166ce4b71b7c46bb
      def foo[T: Manifest] = ()
      foo[List[Int]]
    }
  """

  def show = compile()
}