// 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 string usage with const functions. // SharedOptions=--enable-experiment=const-functions import "package:expect/expect.dart"; const String str = "str"; const var1 = str[2]; // ^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var2 = fn(); // ^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION fn() { String local = "str"; return local[0]; } const var3 = "str"[0]; // ^^^^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_INITIALIZED_WITH_NON_CONSTANT_VALUE const var4 = fn2(); // ^^^^^ // [analyzer] COMPILE_TIME_ERROR.CONST_EVAL_METHOD_INVOCATION fn2() { try { var x = str[-1]; } on RangeError { return 2; } } void main() { Expect.equals(var1, 'r'); Expect.equals(var2, 's'); Expect.equals(var3, 's'); Expect.equals(var4, 2); }