swiftlang/swift

Bad diagnostic about memberwise `init` not being public

Open

#78.362 aperta il 24 dic 2024

Vedi su GitHub
 (21 commenti) (0 reazioni) (1 assegnatario)Swift (10.719 fork)batch import
access controlcompilerconformancesdiagnostics qualityfix-itsgood first issuememberwise initswift 6.2type checker

Metriche repository

Star
 (69.989 star)
Metriche merge PR
 (Merge medio 7g 6h) (556 PR mergiate in 30 g)

Descrizione

Description

No response

Reproduction

public struct Number: RawRepresentable {
  public let rawValue: Int
}
398 | public struct Number: RawRepresentable {
    |               `- error: initializer 'init(rawValue:)' must be declared public because it matches a requirement in public protocol 'RawRepresentable' [witness_not_accessible_proto]
399 |   public let rawValue: Int
400 | }

Expected behavior

This diagnostic is not great:

  1. What initializer? (The implicit memberwise initializer).
  2. How do I or can I at all declare it public? (An implicit memberwise initializer cannot be public).
  3. What should I do to make this work? (Declare an explicit initializer + fix-it).

Environment

Swift version 6.2-dev (LLVM 1a588e5b044c46f, Swift 55189bae8e55169)

Additional information

No response

Guida contributor