// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. /// This is a regression test from issue #29310. The global type-inferrer does /// tracing of closures including allocated classes that implement a `call` /// method. We incorrectly considered also classes with invoked factory /// constructors, even if those were only abstract interfaces or mixins that /// weren't actually allocated explicitly. library regression_29130; main() { new B(); new C(); } class A { call() {} } // interface scenario: we shouldn't trace B abstract class B implements A { factory B() => DummyB(); } class DummyB implements B { call() {} } // mixin scenario: we should trace C, but we should trace _C abstract class C implements A { factory C() => new D(); } class D = A with C;