@@ -108,7 +108,7 @@ class Repl(driver: Driver) extends REPL[Tree, EffektConfig, EffektError] {
108
108
}
109
109
output.emitln(" " )
110
110
111
- runFrontend(StringSource (" " ), module.make(UnitLit ()), config) { cu =>
111
+ runFrontend(StringSource (" " ), module.make(StringSource ( " " ), UnitLit ()), config) { cu =>
112
112
module.definitions.foreach {
113
113
case u : Def =>
114
114
outputCode(DeclPrinter (context.symbolOf(u)), config)
@@ -122,7 +122,7 @@ class Repl(driver: Driver) extends REPL[Tree, EffektConfig, EffektError] {
122
122
def typecheck (source : Source , config : EffektConfig ): Unit =
123
123
parse(source) match {
124
124
case Success (e : Term , _) =>
125
- runFrontend(source, module.make(e), config) { mod =>
125
+ runFrontend(source, module.make(source, e), config) { mod =>
126
126
// TODO this is a bit ad-hoc
127
127
val mainSym = mod.exports.terms(" main" ).head
128
128
val mainTpe = context.functionTypeOf(mainSym)
@@ -184,7 +184,7 @@ class Repl(driver: Driver) extends REPL[Tree, EffektConfig, EffektError] {
184
184
*/
185
185
def process (source : Source , tree : Tree , config : EffektConfig ): Unit = tree match {
186
186
case e : Term =>
187
- runCompiler(source, module.makeEval(e), config)
187
+ runCompiler(source, module.makeEval(source, e), config)
188
188
189
189
case i : Include =>
190
190
val extendedIncludes = module + i
@@ -217,7 +217,7 @@ class Repl(driver: Driver) extends REPL[Tree, EffektConfig, EffektError] {
217
217
218
218
case d : Def =>
219
219
val extendedDefs = module + d
220
- val decl = extendedDefs.make(UnitLit ())
220
+ val decl = extendedDefs.make(source, UnitLit ())
221
221
222
222
runFrontend(source, decl, config) { cu =>
223
223
module = extendedDefs
@@ -309,17 +309,20 @@ class Repl(driver: Driver) extends REPL[Tree, EffektConfig, EffektError] {
309
309
/**
310
310
* Create a module declaration using the given expression as body of main
311
311
*/
312
- def make (expr : Term ): ModuleDecl = {
312
+ def make (source : Source , expr : Term ): ModuleDecl = {
313
313
314
314
val body = Return (expr)
315
-
315
+ val fakeSpan = Span (source, 0 , 0 , origin = Origin .Synthesized )
316
+ val fullSpan = Span (source, 0 , source.content.length, origin = Origin .Synthesized )
316
317
ModuleDecl (" interactive" , includes,
317
- definitions :+ FunDef (IdDef (" main" ), Nil , Nil , Nil , None ,
318
- body) )
318
+ definitions :+ FunDef (IdDef (" main" , fakeSpan ), Many .empty(fakeSpan), Many .empty(fakeSpan), Many .empty(fakeSpan), Maybe . None (fakeSpan) ,
319
+ body, fullSpan), fullSpan )
319
320
}
320
321
321
- def makeEval (expr : Term ): ModuleDecl =
322
- make(Call (IdTarget (IdRef (List (), " println" )), Nil , List (expr), Nil ))
322
+ def makeEval (source : Source , expr : Term ): ModuleDecl = {
323
+ val fakeSpan = Span (source, 0 , 0 , origin = Origin .Synthesized )
324
+ make(source, Call (IdTarget (IdRef (List (), " println" , fakeSpan)), Nil , List (expr), Nil ))
325
+ }
323
326
}
324
327
lazy val emptyModule = ReplModule (Nil , Nil )
325
328
}
0 commit comments