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>
34 lines
891 B
Dart
34 lines
891 B
Dart
// Copyright (c) 2014, 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 C {
|
|
final double d;
|
|
const C(this.d);
|
|
}
|
|
|
|
class D extends C {
|
|
const D(var d) : super(d);
|
|
}
|
|
|
|
const intValue = 0;
|
|
const c = const C(0.0);
|
|
const d = const C(intValue);
|
|
// ^^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.ARGUMENT_TYPE_NOT_ASSIGNABLE
|
|
// [analyzer] COMPILE_TIME_ERROR.CONST_CONSTRUCTOR_PARAM_TYPE_MISMATCH
|
|
// [cfe] The argument type 'int' can't be assigned to the parameter type 'double'.
|
|
const e = const D(0.0);
|
|
const f = const D(intValue);
|
|
// ^^^^^^^^^^^^^^^^^
|
|
// [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_THROWS_EXCEPTION
|
|
// ^
|
|
// [cfe] Constant evaluation error:
|
|
|
|
main() {
|
|
print(c);
|
|
print(d);
|
|
print(e);
|
|
print(f);
|
|
}
|