// 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 if statements for const functions. // SharedOptions=--enable-experiment=const-functions import "package:expect/expect.dart"; const var1 = ifTest(1); // ^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var2 = ifTest(2); // ^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var3 = ifTest(3); // ^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE int ifTest(int a) { if (a == 1) { return 100; } else if (a == 2) { return 200; } else { return 300; } } const one = 1; const var4 = ifTest2(1); // ^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var5 = ifTest2(2); // ^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE int ifTest2(int a) { if (a == one) { return 100; } else { return 200; } } const var6 = ifTest3(1); // ^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var6_1 = ifTest3(2); // ^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var6_2 = ifTest3(0); // ^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE int ifTest3(int a) { if (a > 0) { if (a == 1) return 100; return 200; } return 300; } const var7 = ifTest4(1); // ^^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE int ifTest4(int a) { int b = a; if (a == 1) { b += a; if (a % 2 == 1) { b += a; } } else if (a == 2) { b -= a; } return b; } const var8 = ifTest5(); // ^^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE int ifTest5() { var x = 10; if (true) var x = 20; return x; } void main() { Expect.equals(var1, 100); Expect.equals(var2, 200); Expect.equals(var3, 300); Expect.equals(var4, 100); Expect.equals(var5, 200); Expect.equals(var6, 100); Expect.equals(var7, 3); Expect.equals(var8, 10); }