swiftlang/swift

Bad diagnostic about memberwise `init` not being public

Aberta

#78.362 aberto em 24 de dez. de 2024

 (21 comentários) (0 reação) (1 responsável)Swift (10.719 forks)batch import
access controlcompilerconformancesdiagnostics qualityfix-itsgood first issuememberwise initswift 6.2type checker

Métricas do repositório

Stars
 (69.989 estrelas)
Métricas de merge de PR
 (Mesclagem média 8d 17h) (510 fundiu PRs em 30d)

Description

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

Guia do colaborador