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