// RUN: %target-typecheck-verify-swift -swift-version 4

private struct PrivateStruct {} // expected-note 6{{type declared here}}
internal struct InternalStruct {} // expected-note 2{{type declared here}}
public struct PublicStruct {}

public protocol BaseProtocol {
  associatedtype T
}

public protocol PublicProtocol1 : BaseProtocol where T == PrivateStruct {
  // expected-warning@-1 {{public protocol's 'where' clause should not use a private struct}}

  associatedtype X : BaseProtocol where X.T == PrivateStruct
  // expected-warning@-1 {{associated type in a public protocol uses a private type in its requirement}}
}

public protocol PublicProtocol2 : BaseProtocol where T == InternalStruct {
  // expected-warning@-1 {{public protocol's 'where' clause should not use an internal struct}}

  associatedtype X : BaseProtocol where X.T == InternalStruct
  // expected-warning@-1 {{associated type in a public protocol uses an internal type in its requirement}}
}

public protocol PublicProtocol3 : BaseProtocol where T == PublicStruct {
  associatedtype X : BaseProtocol where X.T == PublicStruct
}

internal protocol InternalProtocol1 : BaseProtocol where T == PrivateStruct {
  // expected-warning@-1 {{internal protocol's 'where' clause should not use a private struct}}

  associatedtype X : BaseProtocol where X.T == PrivateStruct
  // expected-warning@-1 {{associated type in an internal protocol uses a private type in its requirement}}
}

internal protocol InternalProtocol2 : BaseProtocol where T == InternalStruct {
  associatedtype X : BaseProtocol where X.T == InternalStruct
}

internal protocol InternalProtocol3 : BaseProtocol where T == PublicStruct {
  associatedtype X : BaseProtocol where X.T == PublicStruct
}

protocol Protocol1 : BaseProtocol where T == PrivateStruct {
  // expected-warning@-1 {{protocol should be declared fileprivate because its 'where' clause uses a private struct}}

  associatedtype X : BaseProtocol where X.T == PrivateStruct
  // expected-warning@-1 {{associated type in an internal protocol uses a private type in its requirement}}
}

protocol Protocol2 : BaseProtocol where T == InternalStruct {
  associatedtype X : BaseProtocol where X.T == InternalStruct
}

protocol Protocol3 : BaseProtocol where T == PublicStruct {
  associatedtype X : BaseProtocol where X.T == PublicStruct
}
