Compilation error for generic NSObject: Required init

Aberta
#885 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
48/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
swift
Domínio
compilers

Direção de pesquisa

Comece com o reprodutor genérico de NSObject fornecido e execute-o usando o ambiente registrado do Swift 6.3.3. Compare o comportamento dele com o do Xcode, concentrando-se em por que Foundation.NSObject.init é tratado como não obrigatório. O trabalho estará concluído quando o reprodutor compilar consistentemente com o comportamento esperado do Xcode.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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
Linguagem predominante
Swift
Estrelas
1.3k
Forks
127
Merge médio
1h 6min
PRs com merge (30d)
3

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de swiftlang/swift-java

Todas as issues de swiftlang/swift-java

Issues semelhantes

Mais issues de Swift

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.