Compilation error for generic NSObject: Required init

Aperta
#885 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
swift
Ambito
compilers

Direzione di ricerca

Inizia con il riproduttore generico NSObject fornito ed eseguilo usando l’ambiente Swift 6.3.3 registrato. Confronta il suo comportamento con Xcode, concentrandoti sul motivo per cui Foundation.NSObject.init viene trattato come non richiesto. Il lavoro è completato quando il riproduttore compila in modo coerente con il comportamento previsto di Xcode.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Commit hash: 0dd772b8fcae9efd5bda701f1a0be95f9deb2836

Context:
While testing swiftly's support of existing Swift code, noticed that a code using generic NSObject (or NSObject subclass) is not compiling. The same code is compiling just fine in Xcode, is it because Foundation library in Xcode treats NSObject as having a required init?

import Foundation

protocol Test: NSObject /* or an NSObject subclass */ { }

func test<T: Test>() -> T {
    return T()
}

Results in the following compilation error:

.../Sample.swift:21:12: error: constructing an object of class type 'T' with a metatype value must use a 'required' initializer
19 | 
20 | func test<T: Test>() -> T {
21 |     return T()
   |            `- error: constructing an object of class type 'T' with a metatype value must use a 'required' initializer
22 | }
23 | 

Foundation.NSObject.init:2:8: note: selected non-required initializer 'init()'
1 | class NSObject {
2 | public init()}
  |        `- note: selected non-required initializer 'init()'

Environment: Swift 6.3.3 on macOS.

$ swiftly run swift --version
Apple Swift version 6.3.3 (swift-6.3.3-RELEASE)
Target: arm64-apple-macosx26.0

$ uname -a
Darwin it-C01241 25.6.0 Darwin Kernel Version 25.6.0: Sat Jul 11 15:26:21 PDT 2026; root:xnu-12377.161.13~4/RELEASE_ARM64_T6000 arm64
Lingua principale
Swift
Stelle
1.3k
Fork
127
Merge medio
2g 14h
PR unite (30g)
5

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di swiftlang/swift-java

Tutte le issue di swiftlang/swift-java

Issue simili

Altre issue su Swift

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.