swiftlang/swift

Passing class-constrained type as AnyObject instance behavior is not matched on Darwin and non-Darwin platform

Open

#70 645 ouverte le 28 déc. 2023

Voir sur GitHub
 (16 commentaires) (0 réactions) (0 assignés)Swift (10 719 forks)batch import
buggood first issueswift 5.9type checker

Métriques du dépôt

Stars
 (69 989 stars)
Métriques de merge PR
 (Merge moyen 8j 17h) (510 PRs mergées en 30 j)

Description

Description

Passing class-constrained type as AnyObject instance behavior is not matched on Darwin and non-Darwin platform

On Darwin platform, we can pass it directly.

On non-Darwin platform, a fatalError will be emitted - "error: argument type 'Self.Type' expected to be an instance of a class or class-constrained type". And we can workaround it by manually adding "as AnyObject"

test1(Self.self as AnyObject)

Reproduction

class X {
    func test1(_ o: AnyObject) {}
    func test12() { test1(Self.self) }
}

Expected behavior

The behavior is matched. (The current Darwin platform behavior is preferred.)

Environment

Linux: swift --version Swift version 5.9.2 (swift-5.9.2-RELEASE) Target: aarch64-unknown-linux-gnu

macOS: swift-driver version: 1.87.1 Apple Swift version 5.9 (swiftlang-5.9.0.128.108 clang-1500.0.40.1) Target: arm64-apple-macosx14.0

Additional information

Forum Post about the issue: https://forums.swift.org/t/69190

Guide contributeur