src/Pure/System/isabelle_tool.scala
changeset 73369 ffdb22a155b4
parent 73367 77ef8bef0593
child 73399 48569c862eb8
equal deleted inserted replaced
73368:894f29abe5fc 73369:ffdb22a155b4
    27 
    27 
    28     val class_loader = new URLClassLoader(Array(), getClass.getClassLoader)
    28     val class_loader = new URLClassLoader(Array(), getClass.getClassLoader)
    29     val tool_box = universe.runtimeMirror(class_loader).mkToolBox()
    29     val tool_box = universe.runtimeMirror(class_loader).mkToolBox()
    30 
    30 
    31     try {
    31     try {
    32       val symbol = tool_box.parse(source) match {
    32       val tree = tool_box.parse(source)
    33         case tree: universe.ModuleDef => tool_box.define(tree)
    33       val module =
    34         case _ => err("Source does not describe a module (Scala object)")
    34         try { tree.asInstanceOf[universe.ModuleDef] }
    35       }
    35         catch {
    36       tool_box.compile(universe.Ident(symbol))() match {
    36           case _: java.lang.ClassCastException =>
       
    37             err("Source does not describe a module (Scala object)")
       
    38         }
       
    39       tool_box.compile(universe.Ident(tool_box.define(module)))() match {
    37         case body: Body => body
    40         case body: Body => body
    38         case _ => err("Ill-typed source: Isabelle_Tool.Body expected")
    41         case _ => err("Ill-typed source: Isabelle_Tool.Body expected")
    39       }
    42       }
    40     }
    43     }
    41     catch {
    44     catch {