[SR-15111] “Type of expression is ambiguous” error when initializing a class

Offen
#57,437 13 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
32/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
swift
Bereich
compilers

Rechercherichtung

Führe das bereitgestellte Swift-Beispiel in der angegebenen Xcode-Umgebung aus und vergleiche die Diagnosen für das direkte Argument eines optionalen Members und die Zwischenvariable. Untersuche das Compiler-TypeChecker-Verhalten, das durch die Labels Compiler und TypeChecker beschrieben wird; abgeschlossen ist die Aufgabe, wenn der direkte Aufruf dieselbe Typkonflikt-Diagnose wie der zweite Aufruf meldet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

bug compiler diagnostics quality expressions good first issue optional chaining swift 5.9 type checker type inference
Previous ID SR-15111
Radar rdar://problem/82407752
Original Reporter elidy (JIRA User)
Type Bug
Environment

Xcode Version 13.0 beta 4 (13A5201i)

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, DiagnosticsQoI, StarterBug, TypeChecker
Assignee elidy (JIRA)
Priority Medium

md5: 37c1160eb7b2424ea42b3ec849906fef

Issue Description:

When a class is initialized, passing an argument as a property of an optional class instance of incorrect type results in “Type of expression is ambiguous” error.

 class IntClass {
    var int: Int?
    
    init(int: Int?) {
        self.int = int
    }
}

class StringClass {
    var string: String? = "hello"
}

var stringClass: StringClass? = StringClass()

IntClass(int: stringClass?.string)
//Type of expression is ambiguous without more context
//Expected error: Cannot convert value of type 'String?' to expected argument type 'Int?'

var stringValue = stringClass?.string
IntClass(int: stringValue)
//Cannot convert value of type 'String?' to expected argument type 'Int?'

Vorherrschende Sprache
Swift
Sterne
70.4k
Forks
10.8k
Ø Merge
2 T. 2 Std.
Gemergte PRs (30 T.)
461

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus swiftlang/swift

Alle Issues in swiftlang/swift

Ähnliche Issues

Weitere Issues zu Swift

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.