swiftlang/swift

Bad diagnostic about memberwise `init` not being public

Open

#78.362 aberto em 24 de dez. de 2024

Ver no GitHub
 (21 comments) (0 reactions) (1 assignee)Swift (10.719 forks)batch import
access controlcompilerconformancesdiagnostics qualityfix-itsgood first issuememberwise initswift 6.2type checker

Métricas do repositório

Stars
 (69.989 stars)
Métricas de merge de PR
 (Mesclagem média 7d 6h) (556 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