Skip to content

Happens-before broken for captured vars #655

Closed
@DarkDimius

Description

@DarkDimius
object Test extends dotty.runtime.LegacyApp {
  class Result(_str: => String) {
    lazy val str = _str
  }

  def foo(str: => String)(i: Int) = new Result(str)

  def bar(f: Int => Result) = f(42)

  var test: String = null
  val result = bar(foo(test))
  test = "bar"

  if (result.str == null) {
    println("Destroy ALL THE THINGS!!!")
  } else {
    println("Stroke a kitten")
  }
}
[info] % dotc t5610a.scala
[info] % java \
[info]   -classpath \
[info]   /Users/dark/workspace/dotty/tests/partest-generated/run/t5610a-run.obj:/Users/dark/workspace/dotty/target/scala-2.11/dotty_2.11-0.1-SNAPSHOT.jar:/Users/dark/.ivy2/cache/me.d-d/scala-compiler/jars/scala-compiler-2.11.5-20150506-175515-8fc7635b56.jar:/Users/dark/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.5.jar:/Users/dark/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.5.jar \
[info]   -Dfile.encoding=UTF-8 \
[info]   -Djava.library.path=/Users/dark/workspace/dotty/tests/partest-generated/run \
[info]   -Dpartest.output=/Users/dark/workspace/dotty/tests/partest-generated/run/t5610a-run.obj \
[info]   -Dpartest.lib=/Users/dark/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.5.jar \
[info]   -Dpartest.reflect=/Users/dark/.ivy2/cache/org.scala-lang/scala-reflect/jars/scala-reflect-2.11.5.jar \
[info]   -Dpartest.comp=/Users/dark/workspace/dotty/target/scala-2.11/dotty_2.11-0.1-SNAPSHOT.jar \
[info]   -Dpartest.cwd=/Users/dark/workspace/dotty/tests/partest-generated/run \
[info]   -Dpartest.test-path=/Users/dark/workspace/dotty/tests/partest-generated/run/t5610a.scala \
[info]   -Dpartest.testname=t5610a \
[info]   -Djavacmd=java \
[info]   -Djavaccmd=javac \
[info]   -Duser.language=en \
[info]   -Duser.country=US \
[info]   scala.tools.nsc.MainGenericRunner \
[info]   -usejavacp \
[info]   Test \
[info]   jvm > t5610a-run.log
[info] % diff /Users/dark/workspace/dotty/tests/partest-generated/run/t5610a-run.log /Users/dark/workspace/dotty/tests/partest-generated/run/t5610a.check
[info] %
[info] @@ -1 +1 @@
[info] -Destroy ALL THE THINGS!!!
[info] +Stroke a kitten

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions