diff --git a/tortoise/src/main/scala/Compiler.scala b/tortoise/src/main/scala/Compiler.scala index b8bff4d..492e0b7 100644 --- a/tortoise/src/main/scala/Compiler.scala +++ b/tortoise/src/main/scala/Compiler.scala @@ -114,7 +114,8 @@ object Compiler extends CompilerLike { compileMoreProcedures(model, prog, procs) } - val compiledProcedures = new ProcedureCompiler(handlers)(compilerFlags = compilerFlags, compilerContext = new CompilerContext(blockLevel = 0, source = model.code)).compileProcedures(procedureDefs) + implicit val wrapper = SourceWrapper(model.code) + val compiledProcedures = new ProcedureCompiler(handlers).compileProcedures(procedureDefs) val compiledWidgets = { @@ -158,15 +159,16 @@ object Compiler extends CompilerLike { val header = SourceWrapping.getHeader(AgentKind.Observer, commands) val footer = SourceWrapping.getFooter(commands) val wrapped = s"$header$logo$footer" + implicit val wrapper = SourceWrapper(wrapped) val (defs, _) = frontEnd.frontEnd(wrapped, oldProcedures = oldProcedures, program = program, extensionManager = NLWExtensionManager) val pd = if (compilerFlags.optimizationsEnabled) Optimizer(defs.head) else defs.head if (commands) - handlers.commands(pd.statements, true, !raw)(compilerFlags = compilerFlags, compilerContext = new CompilerContext(blockLevel = 0, source = wrapped)) + handlers.commands(pd.statements, true, !raw) else - handlers.reporter(pd.statements.stmts(1).args(0))(compilerFlags = compilerFlags, compilerContext = new CompilerContext(blockLevel = 0, source = wrapped)) + handlers.reporter(pd.statements.stmts(1).args(0)) } private def outputConfig: JsStatement = diff --git a/tortoise/src/main/scala/CompilerLike.scala b/tortoise/src/main/scala/CompilerLike.scala index df03e1e..9c0b861 100644 --- a/tortoise/src/main/scala/CompilerLike.scala +++ b/tortoise/src/main/scala/CompilerLike.scala @@ -64,6 +64,9 @@ object CompilerFlags { // this is incremented each time a block of statements is entered case class CompilerContext(blockLevel: Int = 0, source: String = "") +case class SourceWrapper(src: String) + object CompilerContext { implicit val Default = CompilerContext() + implicit def makeContext(src: SourceWrapper) = CompilerContext(0, src.src) }