From 6821bac06b34c416ca94216025b864e73592cbe7 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Fri, 30 Sep 2016 18:42:34 +0200 Subject: Fix incremental compilation when inline method body changes Since we have no nice way of hashing a typed tree we use the pretty-printed tree of the method (as it would be printed by -Xprint:posttyper -Xprint-types) as a hacky substitute for now. --- bridge/src/sbt-test/source-dependencies/inline/C.scala | 2 +- bridge/src/sbt-test/source-dependencies/inline/changes/B3.scala | 4 ++++ bridge/src/sbt-test/source-dependencies/inline/test | 8 ++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 bridge/src/sbt-test/source-dependencies/inline/changes/B3.scala (limited to 'bridge/src/sbt-test') diff --git a/bridge/src/sbt-test/source-dependencies/inline/C.scala b/bridge/src/sbt-test/source-dependencies/inline/C.scala index 0370943e1..caeb61535 100644 --- a/bridge/src/sbt-test/source-dependencies/inline/C.scala +++ b/bridge/src/sbt-test/source-dependencies/inline/C.scala @@ -1,5 +1,5 @@ object C { - def test: Unit = { + def main(args: Array[String]): Unit = { val i: Int = B.getInline } } diff --git a/bridge/src/sbt-test/source-dependencies/inline/changes/B3.scala b/bridge/src/sbt-test/source-dependencies/inline/changes/B3.scala new file mode 100644 index 000000000..991bd17b8 --- /dev/null +++ b/bridge/src/sbt-test/source-dependencies/inline/changes/B3.scala @@ -0,0 +1,4 @@ +object B { + @inline def getInline: Int = + sys.error("This is an expected failure when running C") +} diff --git a/bridge/src/sbt-test/source-dependencies/inline/test b/bridge/src/sbt-test/source-dependencies/inline/test index ba891710f..56fdb0486 100644 --- a/bridge/src/sbt-test/source-dependencies/inline/test +++ b/bridge/src/sbt-test/source-dependencies/inline/test @@ -4,3 +4,11 @@ $ copy-file changes/B1.scala B.scala $ copy-file changes/B2.scala B.scala # Compilation of C.scala should fail because B.getInline now has type Double instead of Int -> compile + +$ copy-file changes/B1.scala B.scala +> run + +$ copy-file changes/B3.scala B.scala +# The body of B.getInline was changed so C.scala should be recompiled +# If it was recompiled, run should fail since B.getInline now throws an exception +-> run -- cgit v1.2.3