// RUN: %target-parse-verify-swift

// -------------------------------------------------------------------------
// Restrictions on where required can appear
// -------------------------------------------------------------------------
required class AC { } // expected-error{{'required' may only be used on 'init' declarations}}

class C {
  required init(string s: String) { } // expected-note{{'required' initializer is declared in superclass here}}

  required var s: String // expected-error{{'required' may only be used on 'init' declarations}}

  required func f() { } // expected-error{{'required' may only be used on 'init' declarations}}
}

struct S {
  required init() { } // expected-error{{'required' initializer in non-class type 'S'}}
}

enum E {
  required init() { } // expected-error{{'required' initializer in non-class type 'E'}}
}

extension C {
  required convenience init(string2 s: String) { self.init(string:s) } // expected-error{{'required' initializer must be declared directly in class 'C' (not in an extension)}}
}

// -------------------------------------------------------------------------
// Subclass requirements for required
// -------------------------------------------------------------------------
class C2 : C { // okay: implicitly defined
}

class C2b : C {
  init() {}
} // expected-error{{'required' initializer 'init(string:)' must be provided by subclass of 'C'}}{{1-1=\n  required init(string s: String) {\n      fatalError("init(string:) has not been implemented")\n  }\n}}

class C3 : C {
  required init(string s: String) { } // expected-note{{overridden required initializer is here}}
}

class C4 : C3 {
  // implicitly required
  init(string s: String) { }
  // expected-error @-1{{'required' modifier must be present on all overrides of a required initializer}}
  // expected-note @-2{{'required' initializer is declared in superclass here}}
}

class C5 : C4 {
}

class C5b : C4 {
  init() {}
  // expected-error{{'required' initializer 'init(string:)' must be provided by subclass of 'C4'}}
  func wibble() { }
}

class Foo {
  required init() { }
  // expected-note@-1{{'required' initializer is declared in superclass here}}
  // expected-note@-2{{overridden required initializer is here}}
}

class Bar : Foo {
}

class Baz : Bar {
  init(i: Int) { super.init() }
} // expected-error{{'required' initializer 'init()' must be provided by subclass of 'Bar'}}

class Baz2 : Bar {
  init() { super.init() } // expected-error {{'required' modifier must be present on all overrides of a required initializer}}
}
