-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Incorrectly setting sources for macros from separate compilation #7342
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Labels
Comments
anatoliykmetyuk
added a commit
to dotty-staging/dotty
that referenced
this issue
Oct 3, 2019
…ta reduction On beta reduction of lambdas, we should create a block and not an inline node.
Related: Macros_1.scala inline def h(f: => Int => Int): Int = f(42) Macros_2.scala inline def m = h(x => x + x) Macros_3.scala def g = m Separately compile all three with Fail on the third one[info] Running (fork) dotty.tools.dotc.Main -classpath .:/Users/anatolii/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.13.1.jar:/Users/anatolii/Projects/dotty/dotty/library/../out/bootstrap/dotty-library-bootstrapped/scala-0.20/dotty-library_0.20-0.20.0-bin-SNAPSHOT.jar -Ycheck:all -Xprint:frontend,inlinedPositions -Yprint-pos -Yshow-tree-ids /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala
result of /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala after frontend:
package <empty>@<Macros_3.scala:1>#1028 {
final lazy module val Macros_3$package:
Macros_3$package$@<Macros_3.scala:1>#1035
=
new Macros_3$package$@<Macros_3.scala:1>#1035@<Macros_3.scala:1>#1036@<
Macros_3.scala:1
>#1037()@<Macros_3.scala:1>#1038
@<Macros_3.scala:1>#1039
final module class Macros_3$package$() extends Object#1136@<Macros_3.scala:1>#
1137
@<Macros_3.scala:1>#1138()@<Macros_3.scala:1>#1139, _root_@<Macros_3.scala:1>#
1047
.scala@<Macros_3.scala:1>#1048.Serializable@<Macros_3.scala:1>#1049 {
this: Macros_3$package@<Macros_3.scala:1>#1040.type@<Macros_3.scala:1>#1041
=>
def g: Int#1025 =
{
{
{
val x: Int#3085 = 42@<Macros_1.scala:1>#3074@<Macros_1.scala:1>#3086
x@<Macros_2.scala:1>#2102.+@<Macros_2.scala:1>#2103(
x@<Macros_2.scala:1>#2104
)@<Macros_2.scala:1>#2105
}@<Macros_1.scala:1>#3087:Int@<Macros_1.scala:1>#3076@<
Macros_1.scala:1
>#3088
}@<Macros_2.scala:1>#2106
}@<Macros_3.scala:1>#1179
@<Macros_3.scala:1>#1180
}@<Macros_3.scala:1>#1182
}@<Macros_3.scala:1>#1183
checking /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala after phase frontend
result of /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala after inlinedPositions:
Unchanged since frontend
checking /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala after phase inlinedPositions
*** error while checking /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala after phase inlinedPositions ***
exception occurred while compiling /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala
java.lang.AssertionError: assertion failed: wrong source set for x@<Macros_2.scala:1>#2102.+@<Macros_2.scala:1>#2103(x@<Macros_2.scala:1>#2104)@<
Macros_2.scala:1
>#2105 # 2105 of class dotty.tools.dotc.ast.Trees$Apply, set to /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_2.scala but context had /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala while compiling /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala
Exception in thread "main" java.lang.AssertionError: assertion failed: wrong source set for x@<Macros_2.scala:1>#2102.+@<Macros_2.scala:1>#2103(x@<Macros_2.scala:1>#2104)@<
Macros_2.scala:1
>#2105 # 2105 of class dotty.tools.dotc.ast.Trees$Apply, set to /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_2.scala but context had /Users/anatolii/Projects/dotty/pg/i7342/versions/t/Macros_3.scala
at dotty.DottyPredef$.assertFail(DottyPredef.scala:17)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:33)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:48)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1394)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1483)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:50)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:48)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:48)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1449)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1483)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:50)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply$$anonfun$1(Trees.scala:1368)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1368)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1454)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1483)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:50)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1452)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1483)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:50)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1482)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply$$anonfun$1(Trees.scala:1368)
at scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
at scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
at scala.collection.immutable.List.foldLeft(List.scala:79)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1368)
at dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1458)
at dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.traverseChildren(Trees.scala:1483)
at dotty.tools.dotc.transform.YCheckPositions$$anon$1.traverse(YCheckPositions.scala:50)
at dotty.tools.dotc.transform.YCheckPositions.checkPostCondition(YCheckPositions.scala:53)
at dotty.tools.dotc.transform.TreeChecker.dotty$tools$dotc$transform$TreeChecker$Checker$$_$typedUnadapted$$anonfun$1(TreeChecker.scala:318)
at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.immutable.List.foreach(List.scala:305)
at dotty.tools.dotc.transform.TreeChecker$Checker.typedUnadapted(TreeChecker.scala:318)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2151)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2163)
at dotty.tools.dotc.transform.TreeChecker$Checker.typed(TreeChecker.scala:286)
at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2239)
at dotty.tools.dotc.transform.TreeChecker.check(TreeChecker.scala:121)
at dotty.tools.dotc.transform.TreeChecker.run(TreeChecker.scala:94)
at dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:315)
at scala.collection.immutable.List.map(List.scala:219)
at dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:316)
at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:159)
at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
at dotty.tools.dotc.Run.runPhases$5(Run.scala:169)
at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:177)
at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:67)
at dotty.tools.dotc.Run.compileUnits(Run.scala:184)
at dotty.tools.dotc.Run.compileSources(Run.scala:121)
at dotty.tools.dotc.Run.compile(Run.scala:104)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
at dotty.tools.dotc.Driver.process(Driver.scala:178)
at dotty.tools.dotc.Driver.process(Driver.scala:147)
at dotty.tools.dotc.Driver.process(Driver.scala:159)
at dotty.tools.dotc.Driver.main(Driver.scala:186)
at dotty.tools.dotc.Main.main(Main.scala) |
nicolasstucki
pushed a commit
to dotty-staging/dotty
that referenced
this issue
Mar 9, 2020
…ta reduction On beta reduction of lambdas, we should create a block and not an inline node.
nicolasstucki
added a commit
that referenced
this issue
Mar 9, 2020
Fix #7342: Incorrectly setting sources for inlined lambdas on beta reduction
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Macros_1.scala:
Macros_2.scala:
Compile them separately and
Macros_2.scala
should be compiled with-Ycheck:all
, e.g.:You will get:
Ycheck failure
This could be what is blocking #7333.
The text was updated successfully, but these errors were encountered: