// RUN: %target-typecheck-verify-swift -target x86_64-apple-macosx10.15 -swift-version 5
// REQUIRES: objc_interop
// REQUIRES: OS=macosx

import SwiftUI

enum ColorScheme: CaseIterable, Hashable, Equatable, Identifiable {
// expected-error@-1 {{type 'ColorScheme' does not conform to protocol 'Identifiable'}}
  case `default`
  case pink

  var foreground: Color {
    switch self {
    case .default:
      return .primary
    case .pink:
      return .pink
    }
  }
}

struct IconPicker : View {
  var body: some View {
    Text("hello")
  }
}

struct CountdownEditor : View {
  @State var symbol: String = "timer"
  @State var selectedColor: ColorScheme = ColorScheme.pink

  var body: some View {
    NavigationLink(destination: IconPicker()) {
      Text("Icon")
      Spacer()
      Image(systemName: symbol)
        .foregroundColor(selectedColor.color)
        // expected-error@-1 {{cannot convert value of type 'Binding<Subject>' to expected argument type 'Color?'}}
        // expected-error@-2 {{referencing subscript 'subscript(dynamicMember:)' requires wrapper 'Binding<ColorScheme>'}}
        // expected-error@-3 {{value of type 'ColorScheme' has no dynamic member 'color' using key path from root type 'ColorScheme'}}
    }
  }
}
