Skip to content

Commit 1d0ecf1

Browse files
committed
Fix #7758: Avoid stackoverflows after inline attempts
1 parent 9aa7991 commit 1d0ecf1

File tree

3 files changed

+4
-2
lines changed

3 files changed

+4
-2
lines changed

compiler/src/dotty/tools/dotc/transform/patmat/Space.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ class SpaceEngine(implicit ctx: Context) extends SpaceLogic {
314314
// Precondition: !isSubType(tp1, tp2) && !isSubType(tp2, tp1).
315315
if (!ctx.explicitNulls && (tp1.isNullType || tp2.isNullType)) {
316316
// Since projections of types don't include null, intersection with null is empty.
317-
return Empty
317+
Empty
318318
}
319319
else {
320320
val res = ctx.typeComparer.provablyDisjoint(tp1, tp2)

compiler/src/dotty/tools/dotc/typer/Typer.scala

+2-1
Original file line numberDiff line numberDiff line change
@@ -2826,7 +2826,8 @@ class Typer extends Namer
28262826
tree.tpe <:< wildApprox(pt)
28272827
val errorCount = ctx.reporter.errorCount
28282828
val inlined = Inliner.inlineCall(tree)
2829-
if (errorCount == ctx.reporter.errorCount) readaptSimplified(inlined) else inlined
2829+
if ((inlined ne tree) && errorCount == ctx.reporter.errorCount) readaptSimplified(inlined)
2830+
else inlined
28302831
}
28312832
else if (tree.symbol.isScala2Macro &&
28322833
// raw and s are eliminated by the StringInterpolatorOpt phase

tests/neg/i7758.scala

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
def f: Int = implicitly: Int

0 commit comments

Comments
 (0)