LuaLS / LuaLS/lua-language-server

Feature request: Opaque/nominal types

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

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

enhancement
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 integer depends on a potentially unstable implementation detail
  • typing it as any is 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

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.

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

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.