
precedencegroup High {
  associativity: left
  higherThan: BitwiseShiftPrecedence
}

infix operator %%% : High

postfix operator =->

postfix operator =>

func %%%(lhs: Int, rhs: Int) -> Int

postfix func =->(lhs: Int) -> Int

postfix func =>(lhs: Int) -> Int

struct BarGenericSwiftStruct1<T> {
  init(t: T)
  func bar1InstanceFunc()
}

struct BarGenericSwiftStruct2<T : BarProtocol, U> {
  init(t: T, u: U)
  func bar2InstanceFunc()
}

protocol BarProtocol {
  func instanceFunc()
}

/// FooSwiftStruct Aaa.
/**
 * Bbb.
 * Ccc.
 */
struct FooSwiftStruct {
  /// fooInstanceFunc Aaa.
  /**
   * Bbb
   */
  /**
   * Ccc.
   */
  func fooInstanceFunc()
  init()
}

/// rdar://18457785
enum MyQuickLookObject {
  /// A rectangle.
  ///
  /// Uses explicit coordinates to avoid coupling a particular Cocoa type.
  case Rectangle(Float64, Float64, Float64, Float64)
}

var globalVar: Int

func hiddenImport()

func overlayedFoo()

func visibleImport()

