// RUN: %empty-directory(%t)
// RUN: %gyb -D_runtime=%target-runtime %s -o %t/main.swift
// RUN: %line-directive %t/main.swift -- %target-swift-frontend -typecheck -verify %t/main.swift

func test_StringSubscriptByInt(
  x: String,
  i: Int,
  r1: Range<Int>,
  r2: ClosedRange<Int>
) {
  _ = x[i] // expected-error {{'subscript' is unavailable: cannot subscript String with an Int, see the documentation comment for discussion}} {{none}}
  _ = x[r1] // expected-error {{'subscript' is unavailable: cannot subscript String with an integer range, see the documentation comment for discussion}} {{none}}
  _ = x[r2] // expected-error {{'subscript' is unavailable: cannot subscript String with an integer range, see the documentation comment for discussion}} {{none}}
}

% if _runtime == 'objc':
func test_UTF16ViewSubscriptByInt(x: String.UTF16View, i: Int, r: Range<Int>) {
  _ = x[i] // expected-error {{'subscript' is unavailable: Indexing a String's UTF16View requires a String.UTF16View.Index, which can be constructed from Int when Foundation is imported}} {{none}}
  _ = x[r] // expected-error {{'subscript' is unavailable: Slicing a String's UTF16View requires a Range<String.UTF16View.Index>, String.UTF16View.Index can be constructed from Int when Foundation is imported}} {{none}}
}
% end

func test_UTF8View(s: String.UTF8View, i: String.UTF8View.Index, d: Int) {
  _ = s.index(after: i) // OK
  _ = s.index(before: i) // OK
  _ = s.index(i, offsetBy: d) // OK
  _ = s.index(i, offsetBy: d, limitedBy: i) // OK
  _ = s.distance(from: i, to: i) // OK
}

func test_UTF16View(s: String.UTF16View, i: String.UTF16View.Index, d: Int) {
  _ = s.index(after: i) // OK
  _ = s.index(before: i) // OK
  _ = s.index(i, offsetBy: d) // OK
  _ = s.index(i, offsetBy: d, limitedBy: i) // OK
  _ = s.distance(from: i, to: i) // OK
}

func test_UnicodeScalarView(s: String.UnicodeScalarView, i: String.UnicodeScalarView.Index, d: Int) {
  _ = s.index(after: i) // OK
  _ = s.index(before: i) // OK
  _ = s.index(i, offsetBy: d) // OK
  _ = s.index(i, offsetBy: d, limitedBy: i) // OK
  _ = s.distance(from: i, to: i) // OK
}

func test_CharacterView(s: String, i: String.Index, d: Int) {
  _ = s.index(after: i) // OK
  _ = s.index(before: i) // OK
  _ = s.index(i, offsetBy: d) // OK
  _ = s.index(i, offsetBy: d, limitedBy: i) // OK
  _ = s.distance(from: i, to: i) // OK
}
