| // 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. |
| |
| // Tests local function usage, some having references to other constant values. |
| |
| // SharedOptions=--enable-experiment=const-functions |
| |
| import "package:expect/expect.dart"; |
| |
| int function1() { |
| int add(int a, int b) => a + b; |
| const value = add(10, 2); |
| // ^^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| const constTwo = 2; |
| int function2() { |
| int addTwo(int a) { |
| int b = a + constTwo; |
| return b; |
| } |
| |
| const value = addTwo(2); |
| // ^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| int function3() { |
| int addTwoReturn(int a) => a + constTwo; |
| const value = addTwoReturn(3); |
| // ^^^^^^^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| int function4() { |
| const localTwo = 2; |
| int addTwo(int a) => a + localTwo; |
| const value = addTwo(20); |
| // ^^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| int function5() { |
| T typeFn<T>(T a) => a; |
| const value = typeFn(3); |
| // ^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| int function6() { |
| int optionalFn([int a = 0]) => a; |
| const value = optionalFn(1); |
| // ^^^^^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| int function7() { |
| int namedFn({int a = 0}) => a; |
| const value = namedFn(a: 2); |
| // ^^^^^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value; |
| } |
| |
| int function8() { |
| int add(int a, int b) => a + b; |
| const value = add(1, 1); |
| // ^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| const value1 = add(2, 3); |
| // ^^^^^^^^^ |
| // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION |
| return value + value1; |
| } |
| |
| void main() { |
| Expect.equals(function1(), 12); |
| Expect.equals(function2(), 4); |
| Expect.equals(function3(), 5); |
| Expect.equals(function4(), 22); |
| Expect.equals(function5(), 3); |
| Expect.equals(function6(), 1); |
| Expect.equals(function7(), 2); |
| Expect.equals(function8(), 7); |
| } |