Skip to content

Commit d4f0069

Browse files
smarterodersky
authored andcommitted
Fix incremental compilation when inline method signature changes
1 parent f239bdb commit d4f0069

File tree

7 files changed

+43
-0
lines changed

7 files changed

+43
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
object A {
2+
def get: Int = 1
3+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
object C {
2+
def test: Unit = {
3+
val i: Int = B.getInline
4+
}
5+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
object B {
2+
@inline def getInline: Int =
3+
A.get
4+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
object B {
2+
@inline def getInline: Double =
3+
A.get
4+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import sbt._
2+
import Keys._
3+
4+
object DottyInjectedPlugin extends AutoPlugin {
5+
override def requires = plugins.JvmPlugin
6+
override def trigger = allRequirements
7+
8+
override val projectSettings = Seq(
9+
scalaVersion := "0.1-SNAPSHOT",
10+
scalaOrganization := "ch.epfl.lamp",
11+
scalacOptions += "-language:Scala2",
12+
scalaBinaryVersion := "2.11",
13+
autoScalaLibrary := false,
14+
libraryDependencies ++= Seq("org.scala-lang" % "scala-library" % "2.11.5"),
15+
scalaCompilerBridgeSource := ("ch.epfl.lamp" % "dotty-bridge" % "0.1.1-SNAPSHOT" % "component").sources()
16+
)
17+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
$ copy-file changes/B1.scala B.scala
2+
> compile
3+
4+
$ copy-file changes/B2.scala B.scala
5+
# Compilation of C.scala should fail because B.getInline now has type Double instead of Int
6+
-> compile

src/dotty/tools/dotc/sbt/ExtractDependencies.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,10 @@ private class ExtractDependenciesCollector(implicit val ctx: Context) extends tp
190190
addUsedName(rename)
191191
case _ =>
192192
}
193+
case Inlined(call, _, _) =>
194+
// The inlined call is normally ignored by TreeTraverser but we need to
195+
// record it as a dependency
196+
traverse(call)
193197
case t: TypeTree =>
194198
usedTypeTraverser.traverse(t.tpe)
195199
case ref: RefTree =>

0 commit comments

Comments
 (0)