diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-07-24 12:34:18 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-08-02 15:51:12 +0200 |
commit | 9892f52adf76c1e39c6d129f8b35ee98802de188 (patch) | |
tree | 64525f8ab63b921717e4ef2c4dbbb5f3005eb8b1 /src/compiler/scala/reflect/macros/runtime/Parsers.scala | |
parent | 5e1a0052523349775be1cc98b4094c44804f1240 (diff) | |
download | scala-9892f52adf76c1e39c6d129f8b35ee98802de188.tar.gz scala-9892f52adf76c1e39c6d129f8b35ee98802de188.tar.bz2 scala-9892f52adf76c1e39c6d129f8b35ee98802de188.zip |
reflect.makro => reflect.macros (Step I)
Builds a starr that uses stuff from scala.reflect.macros for macro activities.
Crucial makro thingies (such as makro.Context or makro.internal.macroImpl)
are temporarily left in place, because they are necessary for previous starr.
Macro tests will be fixed in a dedicated commit, so that they don't pollute
meaningful commits, making the life easy for reviewers and spelunkers.
Diffstat (limited to 'src/compiler/scala/reflect/macros/runtime/Parsers.scala')
-rw-r--r-- | src/compiler/scala/reflect/macros/runtime/Parsers.scala | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/macros/runtime/Parsers.scala b/src/compiler/scala/reflect/macros/runtime/Parsers.scala new file mode 100644 index 0000000000..6d89b71f39 --- /dev/null +++ b/src/compiler/scala/reflect/macros/runtime/Parsers.scala @@ -0,0 +1,25 @@ +package scala.reflect.macros +package runtime + +import language.existentials +import scala.tools.reflect.ToolBox +import scala.tools.reflect.ToolBoxError + +trait Parsers { + self: Context => + + def parse(code: String): Tree = + // todo. provide decent implementation + try { + import scala.reflect.runtime.{universe => ru} + val parsed = ru.rootMirror.mkToolBox().parseExpr(code) + val importer = universe.mkImporter(ru) + importer.importTree(parsed) + } catch { + case ToolBoxError(msg, cause) => + throw new ParseError(universe.NoPosition, msg) + } + + case class ParseError(val pos: Position, val msg: String) extends Throwable(msg) + object ParseError extends ParseErrorExtractor +}
\ No newline at end of file |