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

Đang mở
#57,437 13 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
32/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Đình trệ
Công nghệ
swift
Lĩnh vực
compilers

Hướng nghiên cứu

Chạy ví dụ Swift được cung cấp trong môi trường Xcode đã nêu và so sánh các chẩn đoán cho đối số thành viên optional trực tiếp và biến trung gian. Điều tra hành vi kiểm tra kiểu của trình biên dịch được mô tả bởi các label Compiler và TypeChecker; hoàn tất khi lời gọi trực tiếp báo cáo cùng chẩn đoán không khớp kiểu như lời gọi thứ hai.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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?'

Ngôn ngữ chính
Swift
Star
70.4k
Fork
10.8k
Merge trung bình
2 ngày 2 giờ
Pull request đã merge (30 ngày)
461

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của swiftlang/swift

Tất cả issue của swiftlang/swift

Issue tương tự

Thêm issue về Swift

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.