4cfd3da965
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>
58 lines
1.6 KiB
Dart
58 lines
1.6 KiB
Dart
// Copyright (c) 2012, 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.
|
|
|
|
main() {
|
|
var c0 = const C0();
|
|
// ^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONST
|
|
// ^
|
|
// [cfe] Cannot invoke a non-'const' constructor where a const expression is expected.
|
|
var i0 = const I0();
|
|
// ^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONST
|
|
// ^
|
|
// [cfe] Cannot invoke a non-'const' factory where a const expression is expected.
|
|
var c1 = const C1();
|
|
var c2 = const C2();
|
|
// ^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CONST_WITH_NON_CONST
|
|
// ^
|
|
// [cfe] Cannot invoke a non-'const' constructor where a const expression is expected.
|
|
var c3 = const C3();
|
|
// ^^^^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_CONSTANT
|
|
}
|
|
|
|
abstract class I0 {
|
|
factory I0() = C0;
|
|
}
|
|
|
|
class C0 implements I0 {
|
|
C0();
|
|
}
|
|
|
|
class C1 {
|
|
const C1();
|
|
// ^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_WITH_NON_FINAL_FIELD
|
|
// [cfe] Constructor is marked 'const' so all fields must be final.
|
|
var modifiable;
|
|
}
|
|
|
|
class C2 {
|
|
C2();
|
|
}
|
|
|
|
class C3 {
|
|
const C3() : field = new C0()
|
|
// ^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.FIELD_INITIALIZED_IN_INITIALIZER_AND_DECLARATION
|
|
// [cfe] 'field' is a final instance variable that was initialized at the declaration.
|
|
// ^^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_CONSTANT
|
|
// [cfe] New expression is not a constant expression.
|
|
;
|
|
final field = null;
|
|
}
|