let s = "Hello"
let ss = s[s.startIndex..<s.endIndex]

// CTP_Initialization
do {
  let s1: String = String({ return ss }())
  _ = s1
}

// CTP_ReturnStmt
do {
  func returnsAString() -> String {
    return String(ss)
  }
}

// CTP_ThrowStmt
// Doesn't really make sense for this fix-it - see case in diagnoseContextualConversionError:
// The conversion destination of throw is always ErrorType (at the moment)
// if this ever expands, this should be a specific form like () is for
// return.

// CTP_EnumCaseRawValue
// Substrings can't be raw values because they aren't literals.

// CTP_DefaultParameter
do {
  func foo(x: String = String(ss)) {}
}

// CTP_CalleeResult
do {
  func getSubstring() -> Substring { return ss }
  let gottenString : String = String(getSubstring())
  _ = gottenString
}

// CTP_CallArgument
do {
  func takesAString(_ s: String) {}
  takesAString(String(ss))
}

// CTP_ClosureResult
do {
  [ss].map { (x: Substring) -> String in String(x) }
}

// CTP_ArrayElement
do {
  let a: [String] = [ String(ss) ]
  _ = a
}

// CTP_DictionaryKey
do {
  let d: [ String : String ] = [ String(ss) : s ]
  _ = d
}

// CTP_DictionaryValue
do {
  let d: [ String : String ] = [ s : String(ss) ]
  _ = d
}

// CTP_CoerceOperand
do {
  let s1: String = String(ss) as String
  _ = s1
}

// CTP_AssignSource
do {
  let s1: String = String(ss)
  _ = s1
}

