| // 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); | |
| } |