| // Copyright (c) 2021, 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 { |
| final int Function(int) x; |
| const A(bool b) |
| : x = (b ? id : other); // OK, `(...)<T1..Tk>` is potentially constant. |
| } |
| |
| X id<X>(X x) => x; |
| X other<X>(X x) => throw '$x'; |
| |
| void main() { |
| const int Function(int) c1 = |
| id; // Already supported prior to the addition on this feature. |
| const c2 = |
| id; // Make `c2` a constant expression whose value is a function object. |
| const int Function(int) c3 = |
| c2; // OK, perform generic function instantiation on `c2`. |
| const c4 = A( |
| true); // OK, `(b ? id : other)<int>` is constant after substitution `b` -> `true`. |
| print('$c1, $c2, $c3, $c4'); |
| } |