Files
sdk/pkg/front_end/testcases/general/initialization_errors.dart.strong.expect
Johnni Winther 4cfd3da965 [cfe][PrimaryConstructors] Update reporting for mixin class with initializer/constructor body
This update the position used for reporting a mixin class primary constructor with a primary constructor by declaration with initializers or an explicit body. Since mixin classes can have simple constructors, it makes more sense to report the error on the offending syntax than on the primary constructor itself.

The CL also updates the offset used for field initializers to the field name rather than the `=`. This align the offset with what is used for property sets.

Change-Id: Id5ccd55536b2c3b9d9336d2854772c1bcc5a175a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/490800
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2026-04-01 01:17:28 -07:00

224 lines
10 KiB
Plaintext

library;
//
// Problems in library:
//
// pkg/front_end/testcases/general/initialization_errors.dart:9:14: Error: 'x' was already initialized by this constructor.
// this.x = 42 {}
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:16:14: Error: 'x' was already initialized by this constructor.
// this.x = 42 {}
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:22:14: Error: 'x' is a final instance variable that was initialized at the declaration.
// : this.x = 41,
// ^
// pkg/front_end/testcases/general/initialization_errors.dart:20:13: Context: 'x' was initialized here.
// final int x = 2;
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:23:14: Error: 'x' was already initialized by this constructor.
// this.x = 42 {}
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:30:14: Error: A redirecting constructor can't have other initializers.
// : this.x = 41,
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:32:14: Error: A redirecting constructor can't have other initializers.
// this.y = 42 {}
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:43:14: Error: A redirecting constructor can't have other initializers.
// this.x = 1,
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:44:14: Error: A redirecting constructor can't have other initializers.
// this.y = 2 {}
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:49:14: Error: A redirecting constructor can't have other initializers.
// : this.x = 1,
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:51:14: Error: A redirecting constructor can't have other initializers.
// this.y = 2;
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:53:9: Error: A redirecting constructor can't have a 'super' initializer.
// : super(),
// ^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:55:14: Error: Can't have initializers after 'super'.
// this.x = 1,
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:56:14: Error: Can't have initializers after 'super'.
// this.y = 2;
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:58:14: Error: A redirecting constructor can't have other initializers.
// : this.x = 1,
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:59:14: Error: A redirecting constructor can't have other initializers.
// this.y = 2,
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:62:9: Error: A redirecting constructor can't have other initializers.
// : assert(true),
// ^^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:66:9: Error: A redirecting constructor can't have other initializers.
// assert(true);
// ^^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:72:9: Error: A redirecting constructor can't have a 'super' initializer.
// super() {}
// ^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:78:9: Error: A redirecting constructor can't have a 'super' initializer.
// : super(),
// ^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:80:9: Error: Can't have more than one 'super' initializer.
// super() {}
// ^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:87:14: Error: A redirecting constructor can't have more than one redirection.
// this.named();
// ^
//
// pkg/front_end/testcases/general/initialization_errors.dart:94:9: Error: Can't have more than one 'super' initializer.
// super() {}
// ^^^^^
//
// pkg/front_end/testcases/general/initialization_errors.dart:101:14: Error: Can't have initializers after 'super'.
// this.x = 42 {}
// ^
//
import self as self;
import "dart:core" as core;
class A extends core::Object {
field core::int x;
constructor •() → self::A
: self::A::x = 41, invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:9:14: Error: 'x' was already initialized by this constructor.
this.x = 42 {}
^" {}
}
class B extends core::Object {
final field core::int x;
constructor •() → self::B
: self::B::x = 41, invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:16:14: Error: 'x' was already initialized by this constructor.
this.x = 42 {}
^" {}
}
class C extends core::Object {
final field core::int x = 2;
constructor •() → self::C
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:22:14: Error: 'x' is a final instance variable that was initialized at the declaration.
: this.x = 41,
^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:23:14: Error: 'x' was already initialized by this constructor.
this.x = 42 {}
^" {}
}
class D extends core::Object {
final field core::int x;
final field core::int y;
erroneous constructor •() → self::D
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:30:14: Error: A redirecting constructor can't have other initializers.
: this.x = 41,
^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:32:14: Error: A redirecting constructor can't have other initializers.
this.y = 42 {}
^", this self::D::named() {}
constructor named() → self::D
: self::D::x = 41, self::D::y = 42, super core::Object::•() {}
}
class E extends core::Object {
final field core::int x;
final field core::int y;
erroneous constructor •() → self::E
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:43:14: Error: A redirecting constructor can't have other initializers.
this.x = 1,
^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:44:14: Error: A redirecting constructor can't have other initializers.
this.y = 2 {}
^", this self::E::named() {}
constructor named() → self::E
: self::E::x = 41, self::E::y = 42, super core::Object::•() {}
erroneous constructor named2() → self::E
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:49:14: Error: A redirecting constructor can't have other initializers.
: this.x = 1,
^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:51:14: Error: A redirecting constructor can't have other initializers.
this.y = 2;
^", this self::E::named()
;
erroneous constructor named3() → self::E
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:53:9: Error: A redirecting constructor can't have a 'super' initializer.
: super(),
^^^^^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:55:14: Error: Can't have initializers after 'super'.
this.x = 1,
^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:56:14: Error: Can't have initializers after 'super'.
this.y = 2;
^", super core::Object::•()
;
erroneous constructor named4() → self::E
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:58:14: Error: A redirecting constructor can't have other initializers.
: this.x = 1,
^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:59:14: Error: A redirecting constructor can't have other initializers.
this.y = 2,
^", this self::E::named()
;
erroneous constructor named5() → self::E
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:62:9: Error: A redirecting constructor can't have other initializers.
: assert(true),
^^^^^^", this self::E::named()
;
erroneous constructor named6() → self::E
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:66:9: Error: A redirecting constructor can't have other initializers.
assert(true);
^^^^^^", this self::E::named()
;
}
class F extends core::Object {
constructor •() → self::F
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:72:9: Error: A redirecting constructor can't have a 'super' initializer.
super() {}
^^^^^", this self::F::named() {}
constructor named() → self::F
: super core::Object::•() {}
}
class G extends core::Object {
erroneous constructor •() → self::G
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:78:9: Error: A redirecting constructor can't have a 'super' initializer.
: super(),
^^^^^", invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:80:9: Error: Can't have more than one 'super' initializer.
super() {}
^^^^^", super core::Object::•() {}
constructor named() → self::G
: super core::Object::•() {}
}
class H extends core::Object {
erroneous constructor •() → self::H
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:87:14: Error: A redirecting constructor can't have more than one redirection.
this.named();
^", this self::H::named()
;
constructor named() → self::H
: super core::Object::•() {}
}
class I extends core::Object {
constructor •() → self::I
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:94:9: Error: Can't have more than one 'super' initializer.
super() {}
^^^^^", super core::Object::•() {}
}
class J extends core::Object {
field core::int x;
erroneous constructor •() → self::J
: invalid-initializer "pkg/front_end/testcases/general/initialization_errors.dart:101:14: Error: Can't have initializers after 'super'.
this.x = 42 {}
^", super core::Object::•() {}
}
static method main() → dynamic {}