diff options
author | Guillaume Martres <smarter@ubuntu.com> | 2016-09-30 18:42:34 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-10-02 16:12:28 +0200 |
commit | 6821bac06b34c416ca94216025b864e73592cbe7 (patch) | |
tree | e4ce0e9cd5c13b137fa969f046446b310cb36716 /bridge | |
parent | d4f00691c4a26f716cbf29878022309a741de070 (diff) | |
download | dotty-6821bac06b34c416ca94216025b864e73592cbe7.tar.gz dotty-6821bac06b34c416ca94216025b864e73592cbe7.tar.bz2 dotty-6821bac06b34c416ca94216025b864e73592cbe7.zip |
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.
Diffstat (limited to 'bridge')
3 files changed, 13 insertions, 1 deletions
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 |