8c2f088481
Some errors like type checking of fields should be reported directly, so this CL separates these errors from evaluation exception errors. This reverts some changes we have before. Additionally, we move error reporting for the constructors to an outer-most method to avoid reporting multiple times. Change-Id: Ie2fde0ea7d389a633051cb106012a0738354f821 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/319911 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Kallen Tu <kallentu@google.com>
25 lines
572 B
Dart
25 lines
572 B
Dart
// Copyright (c) 2018, 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.
|
|
|
|
class A {
|
|
const A(int a);
|
|
}
|
|
|
|
class B {
|
|
final a;
|
|
const B(dynamic v) //
|
|
: a = A(v)
|
|
// ^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_CONSTANT
|
|
// [cfe] Constant evaluation error:
|
|
// [cfe] Constant expression expected.
|
|
;
|
|
}
|
|
|
|
void main() {
|
|
const B("");
|
|
//^^^^^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.INVALID_CONSTANT
|
|
}
|