aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Decorators.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-09-04 18:18:57 +0200
committerMartin Odersky <odersky@gmail.com>2016-10-02 16:11:21 +0200
commita81070ca1af106688b03c46d96f4266934d8cfbb (patch)
treeec4520668276b45cf083e73f2a043a224325ce71 /src/dotty/tools/dotc/core/Decorators.scala
parentc1674dc461ee3f4bf38b7b895cfc9d7d6b41b53f (diff)
downloaddotty-a81070ca1af106688b03c46d96f4266934d8cfbb.tar.gz
dotty-a81070ca1af106688b03c46d96f4266934d8cfbb.tar.bz2
dotty-a81070ca1af106688b03c46d96f4266934d8cfbb.zip
Fix some problems in Inliner
1. Don't retypecheck the arguments of an inlined epressions. These might be very large (e.g. inlined track, or traceIndented in dotty)/ 2. Keep track of inlined calls in context instead of Inlined nodes. We only need the to compute the source file, the rest is irrelevant. 3. In Def bindings of inlined by-name parameters, change owner of right hand side. Otherwise we get incorrect owner chains. 4. In TreeTypeMap, treat Inlined in the same way as a block.
Diffstat (limited to 'src/dotty/tools/dotc/core/Decorators.scala')
-rw-r--r--src/dotty/tools/dotc/core/Decorators.scala8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/Decorators.scala b/src/dotty/tools/dotc/core/Decorators.scala
index cd4941c72..64f50173c 100644
--- a/src/dotty/tools/dotc/core/Decorators.scala
+++ b/src/dotty/tools/dotc/core/Decorators.scala
@@ -8,7 +8,7 @@ import util.Positions.Position, util.SourcePosition
import collection.mutable.ListBuffer
import dotty.tools.dotc.transform.TreeTransforms._
import typer.Inliner
-import ast.tpd.Inlined
+import ast.tpd.Tree
import scala.language.implicitConversions
import printing.Formatting._
@@ -151,9 +151,9 @@ object Decorators {
}
implicit def sourcePos(pos: Position)(implicit ctx: Context): SourcePosition = {
- def recur(inlineds: List[Inlined], pos: Position): SourcePosition = inlineds match {
- case inlined :: rest =>
- Inliner.sourceFile(inlined).atPos(pos).withOuter(recur(rest, inlined.call.pos))
+ def recur(inlinedCalls: List[Tree], pos: Position): SourcePosition = inlinedCalls match {
+ case inlinedCall :: rest =>
+ Inliner.sourceFile(inlinedCall).atPos(pos).withOuter(recur(rest, inlinedCall.pos))
case empty =>
ctx.source.atPos(pos)
}