LuaLS / LuaLS/lua-language-server
Feature request: Opaque/nominal types
Chưa có ai nhận issue này.
- Ngôn ngữ chính
- Lua
- Star
- 4.4k
- Fork
- 442
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
The problem
It often happens that library functions return objects the type of which is an implementation detail. For example an identifier may be an integer but could suddenly be changed to a string, and the client code shouldn't fail because of that.
Safely typing such an identifier in LLS is currently impossible:
- typing it as
integerdepends on a potentially unstable implementation detail - typing it as
anyis unsound
In other words, structural typing fails when the structure isn't stable or known.
Feature request
An annotations that declares a completely opaque/nominal type. It could be --@opaque typename, --@alias typename without any arguments, or anything else. Values belonging of such a type cannot be inspected in any way and can only be passed around. Values of different opaque types cannot be mixed up (so this is stronger than unknown in typescript)
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Không có tệp, kiểm thử hay điểm vào nào được nêu tên. Hãy bắt đầu bằng cách tìm mã chú thích và kiểm tra kiểu cho các bí danh và kiểu không xác định, sau đó lần theo cách các giá trị được kiểm tra hoặc trộn lẫn. Hoàn thành có nghĩa là language server hỗ trợ các kiểu opaque riêng biệt chỉ có thể được truyền qua, với độ bao phủ cho hành vi được yêu cầu.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- lua
- Lĩnh vực
- compilers
- Loại issue
- Tính năng
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100