Files
sdk/tests/language/const/counter_test.dart
T
Kallen Tu 8c2f088481 [analyzer] Separate exception and evaluation errors in the const evaluator.
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>
2023-08-22 18:21:10 +00:00

28 lines
851 B
Dart

// Copyright (c) 2017, 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.
// Bug: 4254106 Constant constructors must have (implicit) const parameters.
class ConstCounter {
const ConstCounter(int i)
: nextValue_ = (
// ^
// [cfe] Can't find ')' to match '('.
// Incorrect assignment of a non-const function to a final field.
() => i + 1;
// ^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_CONSTANT
// [cfe] Not a constant expression.
// ^
// [analyzer] SYNTACTIC_ERROR.EXPECTED_TOKEN
final nextValue_;
}
main() {
const ConstCounter(3);
//^^^^^^^^^^^^^^^^^^^^^
// [analyzer] COMPILE_TIME_ERROR.INVALID_CONSTANT
}