blob: e4998eea02c1f063a3536b4dd388e21fb81f8550 [file] [log] [blame]
// 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);
}