From dcd1ae7d56a4d6c01293f39d6b84e2cb53b0602e Mon Sep 17 00:00:00 2001 From: Liu Fengyun Date: Fri, 28 Aug 2020 17:19:48 +0200 Subject: [PATCH] Fix #9670: handle local class in parent effects --- .../dotty/tools/dotc/transform/init/Summarization.scala | 2 +- tests/init/crash/i9670.scala | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 tests/init/crash/i9670.scala diff --git a/compiler/src/dotty/tools/dotc/transform/init/Summarization.scala b/compiler/src/dotty/tools/dotc/transform/init/Summarization.scala index ca797ac81f53..82293c63452e 100644 --- a/compiler/src/dotty/tools/dotc/transform/init/Summarization.scala +++ b/compiler/src/dotty/tools/dotc/transform/init/Summarization.scala @@ -309,7 +309,7 @@ object Summarization { if (cls == defn.AnyClass || cls == defn.AnyValClass) Effects.empty else { val ctor = cls.primaryConstructor - Summarization.analyze(tref.prefix, ref)._2 + + Summarization.analyze(New(ref.tpe))(env.withOwner(ctor.owner))._2 + MethodCall(ThisRef()(ref), ctor)(ref) } }) diff --git a/tests/init/crash/i9670.scala b/tests/init/crash/i9670.scala new file mode 100644 index 000000000000..82a055ec7203 --- /dev/null +++ b/tests/init/crash/i9670.scala @@ -0,0 +1,9 @@ +object Outer { + def foo = { + trait Mixin + class E extends Mixin + object SomeObject { + val A = E() + } + } +}