Compilation error for generic NSObject: Required init

Ouverte
#885 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
48/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
swift
Domaine
compilers

Piste de recherche

Commencez avec le reproducteur générique NSObject fourni et exécutez-le à l’aide de l’environnement Swift 6.3.3 enregistré. Comparez son comportement avec celui de Xcode, en vous concentrant sur la raison pour laquelle Foundation.NSObject.init est considéré comme non requis. Le travail est terminé lorsque le reproducteur compile systématiquement comme attendu avec Xcode.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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
Langage dominant
Swift
Étoiles
1.3k
Forks
127
Merge moyen
2 j 14 h
PR mergées (30 j)
5

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de swiftlang/swift-java

Toutes les issues de swiftlang/swift-java

Issues similaires

Plus d'issues Swift

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.