diff options
Diffstat (limited to 'src/compiler/scala/reflect/macros/contexts/Parsers.scala')
-rw-r--r-- | src/compiler/scala/reflect/macros/contexts/Parsers.scala | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/compiler/scala/reflect/macros/contexts/Parsers.scala b/src/compiler/scala/reflect/macros/contexts/Parsers.scala new file mode 100644 index 0000000000..3dab02beba --- /dev/null +++ b/src/compiler/scala/reflect/macros/contexts/Parsers.scala @@ -0,0 +1,24 @@ +package scala.reflect.macros +package contexts + +import scala.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 + // see `Typers.typedUseCase` for details + try { + import scala.reflect.runtime.{universe => ru} + val parsed = ru.rootMirror.mkToolBox().parse(code) + val importer = universe.mkImporter(ru) + importer.importTree(parsed) + } catch { + case ToolBoxError(msg, cause) => + // todo. provide a position + throw new ParseException(universe.NoPosition, msg) + } +} |