Version 3.9.0-246.0.dev Merge b2c7d08cf1f5bf093be9641966058e1c1c74051d into dev
diff --git a/pkg/front_end/lib/src/kernel/kernel_target.dart b/pkg/front_end/lib/src/kernel/kernel_target.dart index 836c6ce..04cebee 100644 --- a/pkg/front_end/lib/src/kernel/kernel_target.dart +++ b/pkg/front_end/lib/src/kernel/kernel_target.dart
@@ -1039,7 +1039,10 @@ } Procedure? constructorTearOff = createConstructorTearOffProcedure( - new MemberName(libraryBuilder.libraryName, + new MemberName( + superConstructor.name.isPrivate + ? new LibraryName(superConstructor.name.libraryReference!) + : libraryBuilder.libraryName, constructorTearOffName(superConstructor.name.text)), libraryBuilder, cls.fileUri,
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart new file mode 100644 index 0000000..ab7836b --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart
@@ -0,0 +1,13 @@ +// Copyright (c) 2025, 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. + +import 'private_lib.dart'; + +mixin M {} + +class D = A with M; + +class E = B with M; // TODO(johnniwinther): This should not be an error. + +class F = C with M;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.expect new file mode 100644 index 0000000..c903ca8 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.expect
@@ -0,0 +1,161 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart:11:7: Error: The superclass, 'B', has no unnamed constructor that takes no arguments. +// class E = B with M; // TODO(johnniwinther): This should not be an error. +// ^ +// +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D = pri::A with self::M { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; + static synthetic method pri::_#_#tearOff() → self::D + return new self::D::_(); +} +class E = pri::B with self::M { + synthetic constructor •() → self::E + : invalid-initializer + ; + static synthetic method _#new#tearOff() → self::E + return new self::E::•(); +} +class F = pri::C with self::M { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; + static synthetic method _#named#tearOff() → self::F + return new self::F::named(); + static synthetic method pri::_#_#tearOff() → self::F + return new self::F::_(); +} + +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. +// H._() : super._(); // Error +// ^^^^^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:36:5: Error: Member not found: 'D._'. +// D._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:37:5: Error: Member not found: '_'. +// D._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:38:5: Error: Member not found: 'E._'. +// E._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:39:5: Error: Member not found: '_'. +// E._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:40:5: Error: Member not found: 'F._'. +// F._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:41:5: Error: Member not found: '_'. +// F._; // Error +// ^ +// +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + : super core::Object::•() + ; + static synthetic method _#_#tearOff() → pri::A + return new pri::A::_(); +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); + static synthetic method _#_#tearOff() → pri::B + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + : super core::Object::•() + ; + static synthetic method _#new#tearOff() → pri::_B + return new pri::_B::•(); +} +class C extends core::Object { + constructor named() → pri::C + : super core::Object::•() + ; + constructor _() → pri::C + : super core::Object::•() + ; + static synthetic method _#named#tearOff() → pri::C + return new pri::C::named(); + static synthetic method _#_#tearOff() → pri::C + return new pri::C::_(); +} +class G extends self::D { + constructor _() → pri::G + : super self::D::_() + ; + static synthetic method _#_#tearOff() → pri::G + return new pri::G::_(); +} +class H extends self::E { + constructor _() → pri::H + : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. + H._() : super._(); // Error + ^^^^^" + ; + static synthetic method _#_#tearOff() → pri::H + return new pri::H::_(); +} +class I extends self::F { + constructor named() → pri::I + : super self::F::named() + ; + constructor _() → pri::I + : super self::F::_() + ; + static synthetic method _#named#tearOff() → pri::I + return new pri::I::named(); + static synthetic method _#_#tearOff() → pri::I + return new pri::I::_(); +} +static method method() → dynamic { + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:36:5: Error: Member not found: 'D._'. + D._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:37:5: Error: Member not found: '_'. + D._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:38:5: Error: Member not found: 'E._'. + E._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:39:5: Error: Member not found: '_'. + E._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:40:5: Error: Member not found: 'F._'. + F._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:41:5: Error: Member not found: '_'. + F._; // Error + ^"; +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.modular.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.modular.expect new file mode 100644 index 0000000..c903ca8 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.modular.expect
@@ -0,0 +1,161 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart:11:7: Error: The superclass, 'B', has no unnamed constructor that takes no arguments. +// class E = B with M; // TODO(johnniwinther): This should not be an error. +// ^ +// +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D = pri::A with self::M { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; + static synthetic method pri::_#_#tearOff() → self::D + return new self::D::_(); +} +class E = pri::B with self::M { + synthetic constructor •() → self::E + : invalid-initializer + ; + static synthetic method _#new#tearOff() → self::E + return new self::E::•(); +} +class F = pri::C with self::M { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; + static synthetic method _#named#tearOff() → self::F + return new self::F::named(); + static synthetic method pri::_#_#tearOff() → self::F + return new self::F::_(); +} + +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. +// H._() : super._(); // Error +// ^^^^^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:36:5: Error: Member not found: 'D._'. +// D._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:37:5: Error: Member not found: '_'. +// D._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:38:5: Error: Member not found: 'E._'. +// E._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:39:5: Error: Member not found: '_'. +// E._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:40:5: Error: Member not found: 'F._'. +// F._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:41:5: Error: Member not found: '_'. +// F._; // Error +// ^ +// +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + : super core::Object::•() + ; + static synthetic method _#_#tearOff() → pri::A + return new pri::A::_(); +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); + static synthetic method _#_#tearOff() → pri::B + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + : super core::Object::•() + ; + static synthetic method _#new#tearOff() → pri::_B + return new pri::_B::•(); +} +class C extends core::Object { + constructor named() → pri::C + : super core::Object::•() + ; + constructor _() → pri::C + : super core::Object::•() + ; + static synthetic method _#named#tearOff() → pri::C + return new pri::C::named(); + static synthetic method _#_#tearOff() → pri::C + return new pri::C::_(); +} +class G extends self::D { + constructor _() → pri::G + : super self::D::_() + ; + static synthetic method _#_#tearOff() → pri::G + return new pri::G::_(); +} +class H extends self::E { + constructor _() → pri::H + : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. + H._() : super._(); // Error + ^^^^^" + ; + static synthetic method _#_#tearOff() → pri::H + return new pri::H::_(); +} +class I extends self::F { + constructor named() → pri::I + : super self::F::named() + ; + constructor _() → pri::I + : super self::F::_() + ; + static synthetic method _#named#tearOff() → pri::I + return new pri::I::named(); + static synthetic method _#_#tearOff() → pri::I + return new pri::I::_(); +} +static method method() → dynamic { + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:36:5: Error: Member not found: 'D._'. + D._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:37:5: Error: Member not found: '_'. + D._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:38:5: Error: Member not found: 'E._'. + E._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:39:5: Error: Member not found: '_'. + E._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:40:5: Error: Member not found: 'F._'. + F._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:41:5: Error: Member not found: '_'. + F._; // Error + ^"; +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.outline.expect new file mode 100644 index 0000000..d10401f --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.outline.expect
@@ -0,0 +1,94 @@ +library; +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D = pri::A with self::M { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; + static synthetic method pri::_#_#tearOff() → self::D + return new self::D::_(); +} +class E = pri::B with self::M { + synthetic constructor •() → self::E + ; + static synthetic method _#new#tearOff() → self::E + return new self::E::•(); +} +class F = pri::C with self::M { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; + static synthetic method _#named#tearOff() → self::F + return new self::F::named(); + static synthetic method pri::_#_#tearOff() → self::F + return new self::F::_(); +} + +library; +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + ; + static synthetic method _#_#tearOff() → pri::A + return new pri::A::_(); +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); + static synthetic method _#_#tearOff() → pri::B + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + ; + static synthetic method _#new#tearOff() → pri::_B + return new pri::_B::•(); +} +class C extends core::Object { + constructor named() → pri::C + ; + constructor _() → pri::C + ; + static synthetic method _#named#tearOff() → pri::C + return new pri::C::named(); + static synthetic method _#_#tearOff() → pri::C + return new pri::C::_(); +} +class G extends self::D { + constructor _() → pri::G + ; + static synthetic method _#_#tearOff() → pri::G + return new pri::G::_(); +} +class H extends self::E { + constructor _() → pri::H + ; + static synthetic method _#_#tearOff() → pri::H + return new pri::H::_(); +} +class I extends self::F { + constructor named() → pri::I + ; + constructor _() → pri::I + ; + static synthetic method _#named#tearOff() → pri::I + return new pri::I::named(); + static synthetic method _#_#tearOff() → pri::I + return new pri::I::_(); +} +static method method() → dynamic + ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.transformed.expect new file mode 100644 index 0000000..6aeb335 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.strong.transformed.expect
@@ -0,0 +1,161 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart:11:7: Error: The superclass, 'B', has no unnamed constructor that takes no arguments. +// class E = B with M; // TODO(johnniwinther): This should not be an error. +// ^ +// +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D extends pri::A implements self::M /*isEliminatedMixin*/ { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; + static synthetic method pri::_#_#tearOff() → self::D + return new self::D::_(); +} +class E extends pri::B implements self::M /*isEliminatedMixin*/ { + synthetic constructor •() → self::E + : invalid-initializer + ; + static synthetic method _#new#tearOff() → self::E + return new self::E::•(); +} +class F extends pri::C implements self::M /*isEliminatedMixin*/ { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; + static synthetic method _#named#tearOff() → self::F + return new self::F::named(); + static synthetic method pri::_#_#tearOff() → self::F + return new self::F::_(); +} + +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. +// H._() : super._(); // Error +// ^^^^^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:36:5: Error: Member not found: 'D._'. +// D._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:37:5: Error: Member not found: '_'. +// D._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:38:5: Error: Member not found: 'E._'. +// E._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:39:5: Error: Member not found: '_'. +// E._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:40:5: Error: Member not found: 'F._'. +// F._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:41:5: Error: Member not found: '_'. +// F._; // Error +// ^ +// +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + : super core::Object::•() + ; + static synthetic method _#_#tearOff() → pri::A + return new pri::A::_(); +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); + static synthetic method _#_#tearOff() → pri::B + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + : super core::Object::•() + ; + static synthetic method _#new#tearOff() → pri::_B + return new pri::_B::•(); +} +class C extends core::Object { + constructor named() → pri::C + : super core::Object::•() + ; + constructor _() → pri::C + : super core::Object::•() + ; + static synthetic method _#named#tearOff() → pri::C + return new pri::C::named(); + static synthetic method _#_#tearOff() → pri::C + return new pri::C::_(); +} +class G extends self::D { + constructor _() → pri::G + : super self::D::_() + ; + static synthetic method _#_#tearOff() → pri::G + return new pri::G::_(); +} +class H extends self::E { + constructor _() → pri::H + : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. + H._() : super._(); // Error + ^^^^^" + ; + static synthetic method _#_#tearOff() → pri::H + return new pri::H::_(); +} +class I extends self::F { + constructor named() → pri::I + : super self::F::named() + ; + constructor _() → pri::I + : super self::F::_() + ; + static synthetic method _#named#tearOff() → pri::I + return new pri::I::named(); + static synthetic method _#_#tearOff() → pri::I + return new pri::I::_(); +} +static method method() → dynamic { + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:36:5: Error: Member not found: 'D._'. + D._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:37:5: Error: Member not found: '_'. + D._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:38:5: Error: Member not found: 'E._'. + E._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:39:5: Error: Member not found: '_'. + E._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:40:5: Error: Member not found: 'F._'. + F._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart:41:5: Error: Member not found: '_'. + F._; // Error + ^"; +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.textual_outline.expect new file mode 100644 index 0000000..ac80ac0 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.textual_outline.expect
@@ -0,0 +1,9 @@ +import 'private_lib.dart'; + +mixin M {} + +class D = A with M; + +class E = B with M; + +class F = C with M;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.textual_outline_modelled.expect new file mode 100644 index 0000000..c785d0d --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private.dart.textual_outline_modelled.expect
@@ -0,0 +1,9 @@ +import 'private_lib.dart'; + +class D = A with M; + +class E = B with M; + +class F = C with M; + +mixin M {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart b/pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart new file mode 100644 index 0000000..ba0c6db --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/lowering/private_lib.dart
@@ -0,0 +1,42 @@ +// Copyright (c) 2025, 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. + +import 'private.dart'; + +class A { + A._(); +} + +class B { + factory B._() = _B; +} + +class _B implements B {} + +class C { + C.named(); + C._(); +} + +class G extends D { + G._() : super._(); // TODO(johnniwinther): This should be an error. +} + +class H extends E { + H._() : super._(); // Error +} + +class I extends F { + I.named() : super.named(); // Ok + I._() : super._(); // TODO(johnniwinther): This should be an error. +} + +method() { + D._(); // Error + D._; // Error + E._(); // Error + E._; // Error + F._(); // Error + F._; // Error +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart b/pkg/front_end/testcases/constructor_tearoffs/private.dart new file mode 100644 index 0000000..ab7836b --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart
@@ -0,0 +1,13 @@ +// Copyright (c) 2025, 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. + +import 'private_lib.dart'; + +mixin M {} + +class D = A with M; + +class E = B with M; // TODO(johnniwinther): This should not be an error. + +class F = C with M;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.expect b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.expect new file mode 100644 index 0000000..3572fc6 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.expect
@@ -0,0 +1,135 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/private.dart:11:7: Error: The superclass, 'B', has no unnamed constructor that takes no arguments. +// class E = B with M; // TODO(johnniwinther): This should not be an error. +// ^ +// +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D = pri::A with self::M { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; +} +class E = pri::B with self::M { + synthetic constructor •() → self::E + : invalid-initializer + ; +} +class F = pri::C with self::M { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; +} + +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. +// H._() : super._(); // Error +// ^^^^^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:36:5: Error: Member not found: 'D._'. +// D._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:37:5: Error: Member not found: '_'. +// D._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:38:5: Error: Member not found: 'E._'. +// E._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:39:5: Error: Member not found: '_'. +// E._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:40:5: Error: Member not found: 'F._'. +// F._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:41:5: Error: Member not found: '_'. +// F._; // Error +// ^ +// +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + : super core::Object::•() + ; +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + : super core::Object::•() + ; +} +class C extends core::Object { + constructor named() → pri::C + : super core::Object::•() + ; + constructor _() → pri::C + : super core::Object::•() + ; +} +class G extends self::D { + constructor _() → pri::G + : super self::D::_() + ; +} +class H extends self::E { + constructor _() → pri::H + : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. + H._() : super._(); // Error + ^^^^^" + ; +} +class I extends self::F { + constructor named() → pri::I + : super self::F::named() + ; + constructor _() → pri::I + : super self::F::_() + ; +} +static method method() → dynamic { + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:36:5: Error: Member not found: 'D._'. + D._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:37:5: Error: Member not found: '_'. + D._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:38:5: Error: Member not found: 'E._'. + E._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:39:5: Error: Member not found: '_'. + E._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:40:5: Error: Member not found: 'F._'. + F._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:41:5: Error: Member not found: '_'. + F._; // Error + ^"; +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.modular.expect b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.modular.expect new file mode 100644 index 0000000..3572fc6 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.modular.expect
@@ -0,0 +1,135 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/private.dart:11:7: Error: The superclass, 'B', has no unnamed constructor that takes no arguments. +// class E = B with M; // TODO(johnniwinther): This should not be an error. +// ^ +// +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D = pri::A with self::M { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; +} +class E = pri::B with self::M { + synthetic constructor •() → self::E + : invalid-initializer + ; +} +class F = pri::C with self::M { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; +} + +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. +// H._() : super._(); // Error +// ^^^^^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:36:5: Error: Member not found: 'D._'. +// D._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:37:5: Error: Member not found: '_'. +// D._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:38:5: Error: Member not found: 'E._'. +// E._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:39:5: Error: Member not found: '_'. +// E._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:40:5: Error: Member not found: 'F._'. +// F._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:41:5: Error: Member not found: '_'. +// F._; // Error +// ^ +// +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + : super core::Object::•() + ; +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + : super core::Object::•() + ; +} +class C extends core::Object { + constructor named() → pri::C + : super core::Object::•() + ; + constructor _() → pri::C + : super core::Object::•() + ; +} +class G extends self::D { + constructor _() → pri::G + : super self::D::_() + ; +} +class H extends self::E { + constructor _() → pri::H + : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. + H._() : super._(); // Error + ^^^^^" + ; +} +class I extends self::F { + constructor named() → pri::I + : super self::F::named() + ; + constructor _() → pri::I + : super self::F::_() + ; +} +static method method() → dynamic { + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:36:5: Error: Member not found: 'D._'. + D._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:37:5: Error: Member not found: '_'. + D._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:38:5: Error: Member not found: 'E._'. + E._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:39:5: Error: Member not found: '_'. + E._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:40:5: Error: Member not found: 'F._'. + F._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:41:5: Error: Member not found: '_'. + F._; // Error + ^"; +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.outline.expect b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.outline.expect new file mode 100644 index 0000000..ac69a5b --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.outline.expect
@@ -0,0 +1,68 @@ +library; +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D = pri::A with self::M { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; +} +class E = pri::B with self::M { + synthetic constructor •() → self::E + ; +} +class F = pri::C with self::M { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; +} + +library; +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + ; +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + ; +} +class C extends core::Object { + constructor named() → pri::C + ; + constructor _() → pri::C + ; +} +class G extends self::D { + constructor _() → pri::G + ; +} +class H extends self::E { + constructor _() → pri::H + ; +} +class I extends self::F { + constructor named() → pri::I + ; + constructor _() → pri::I + ; +} +static method method() → dynamic + ;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.transformed.expect b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.transformed.expect new file mode 100644 index 0000000..1d5a115 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart.strong.transformed.expect
@@ -0,0 +1,135 @@ +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/private.dart:11:7: Error: The superclass, 'B', has no unnamed constructor that takes no arguments. +// class E = B with M; // TODO(johnniwinther): This should not be an error. +// ^ +// +import self as self; +import "dart:core" as core; +import "private_lib.dart" as pri; + +import "org-dartlang-testcase:///private_lib.dart"; + +abstract class M extends core::Object /*isMixinDeclaration*/ { +} +class D extends pri::A implements self::M /*isEliminatedMixin*/ { + synthetic constructor pri::_() → self::D + : super pri::A::_() + ; +} +class E extends pri::B implements self::M /*isEliminatedMixin*/ { + synthetic constructor •() → self::E + : invalid-initializer + ; +} +class F extends pri::C implements self::M /*isEliminatedMixin*/ { + synthetic constructor named() → self::F + : super pri::C::named() + ; + synthetic constructor pri::_() → self::F + : super pri::C::_() + ; +} + +library; +// +// Problems in library: +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. +// H._() : super._(); // Error +// ^^^^^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:36:5: Error: Member not found: 'D._'. +// D._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:37:5: Error: Member not found: '_'. +// D._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:38:5: Error: Member not found: 'E._'. +// E._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:39:5: Error: Member not found: '_'. +// E._; // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:40:5: Error: Member not found: 'F._'. +// F._(); // Error +// ^ +// +// pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:41:5: Error: Member not found: '_'. +// F._; // Error +// ^ +// +import self as pri; +import "dart:core" as core; +import "private.dart" as self; + +import "org-dartlang-testcase:///private.dart"; + +class A extends core::Object { + constructor _() → pri::A + : super core::Object::•() + ; +} +class B extends core::Object { + static factory _() → pri::B /* redirection-target: pri::_B::• */ + return new pri::_B::•(); +} +class _B extends core::Object implements pri::B { + synthetic constructor •() → pri::_B + : super core::Object::•() + ; +} +class C extends core::Object { + constructor named() → pri::C + : super core::Object::•() + ; + constructor _() → pri::C + : super core::Object::•() + ; +} +class G extends self::D { + constructor _() → pri::G + : super self::D::_() + ; +} +class H extends self::E { + constructor _() → pri::H + : final dynamic #t1 = invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:27:11: Error: Superclass has no constructor named 'B._'. + H._() : super._(); // Error + ^^^^^" + ; +} +class I extends self::F { + constructor named() → pri::I + : super self::F::named() + ; + constructor _() → pri::I + : super self::F::_() + ; +} +static method method() → dynamic { + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:36:5: Error: Member not found: 'D._'. + D._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:37:5: Error: Member not found: '_'. + D._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:38:5: Error: Member not found: 'E._'. + E._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:39:5: Error: Member not found: '_'. + E._; // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:40:5: Error: Member not found: 'F._'. + F._(); // Error + ^"; + invalid-expression "pkg/front_end/testcases/constructor_tearoffs/private_lib.dart:41:5: Error: Member not found: '_'. + F._; // Error + ^"; +}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart.textual_outline.expect b/pkg/front_end/testcases/constructor_tearoffs/private.dart.textual_outline.expect new file mode 100644 index 0000000..ac80ac0 --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart.textual_outline.expect
@@ -0,0 +1,9 @@ +import 'private_lib.dart'; + +mixin M {} + +class D = A with M; + +class E = B with M; + +class F = C with M;
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/constructor_tearoffs/private.dart.textual_outline_modelled.expect new file mode 100644 index 0000000..c785d0d --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private.dart.textual_outline_modelled.expect
@@ -0,0 +1,9 @@ +import 'private_lib.dart'; + +class D = A with M; + +class E = B with M; + +class F = C with M; + +mixin M {}
diff --git a/pkg/front_end/testcases/constructor_tearoffs/private_lib.dart b/pkg/front_end/testcases/constructor_tearoffs/private_lib.dart new file mode 100644 index 0000000..ba0c6db --- /dev/null +++ b/pkg/front_end/testcases/constructor_tearoffs/private_lib.dart
@@ -0,0 +1,42 @@ +// Copyright (c) 2025, 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. + +import 'private.dart'; + +class A { + A._(); +} + +class B { + factory B._() = _B; +} + +class _B implements B {} + +class C { + C.named(); + C._(); +} + +class G extends D { + G._() : super._(); // TODO(johnniwinther): This should be an error. +} + +class H extends E { + H._() : super._(); // Error +} + +class I extends F { + I.named() : super.named(); // Ok + I._() : super._(); // TODO(johnniwinther): This should be an error. +} + +method() { + D._(); // Error + D._; // Error + E._(); // Error + E._; // Error + F._(); // Error + F._; // Error +}
diff --git a/tools/VERSION b/tools/VERSION index 078cfc1..e0a3036 100644 --- a/tools/VERSION +++ b/tools/VERSION
@@ -27,5 +27,5 @@ MAJOR 3 MINOR 9 PATCH 0 -PRERELEASE 245 +PRERELEASE 246 PRERELEASE_PATCH 0