src/Pure/System/scala.scala
changeset 71872 b5191ededb6c
parent 71871 28def00726ca
child 71873 a7b81dd9954e
--- a/src/Pure/System/scala.scala	Sat May 23 21:43:30 2020 +0200
+++ b/src/Pure/System/scala.scala	Sat May 23 21:58:44 2020 +0200
@@ -79,9 +79,21 @@
 
         if (!ok && errors.isEmpty) List("Error") else errors
       }
+
+      def check(body: String): List[String] =
+      {
+        try { toplevel("package test\nobject Test { " + body + " }") }
+        catch { case ERROR(msg) => List(msg) }
+      }
     }
   }
 
+  def check_yxml(body: String): String =
+  {
+    val errors = Compiler.default_context.check(body)
+    locally { import XML.Encode._; YXML.string_of_body(list(string)(errors)) }
+  }
+
 
 
   /** invoke Scala functions from ML **/
@@ -198,4 +210,5 @@
 class Functions extends Isabelle_Scala_Functions(
   Scala.Fun("echo", identity),
   Scala.Fun.yxml("echo_yxml", identity),
+  Scala.Fun("scala_check", Scala.check_yxml),
   Scala.Fun("check_bibtex_database", Bibtex.check_database_yxml))