Compilation error for generic NSObject: Required init

オープン
#885 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
48/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
静か
技術スタック
swift
領域
compilers

調査の方向性

提供された汎用 NSObject 再現コードから始め、記録された Swift 6.3.3 環境を使って実行します。Xcode での動作と比較し、Foundation.NSObject.init がなぜ非必須として扱われるのかに焦点を当てます。再現コードが想定される Xcode の動作と一貫してコンパイルできれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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
主要言語
Swift
スター
1.3k
フォーク
127
平均マージ
2日 14時間
マージ済み PR(30日)
5

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

swiftlang/swift-java のほかの issue

swiftlang/swift-java の issue をすべて見る

似ている issue

Swift の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。