LuaLS / LuaLS/lua-language-server

---@class with function return question

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

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ả

so I have this (as a mockup):

do
    ---@class a
    local a = {}

    ---@generic T
    ---@param self a
    ---@param new T
    ---@return T
    a.extend = function(self, new)
        --...
        return new
    end
end

and it's supposed to be inheritance for prototypes, right, but I'm trying to make the LS think that it returns the second parameter new and it does that and the LS thinks that, so far so good. So this

    local b = a:extend{
        n = 1
    }

will make it like this:
p1
but the problem is, that if I use ---@class b here, then it will ignore what the function returns and I get this:
p2
am I missing something or is it just not possible? Though, if I separate it into two statements like this,

    ---@class b
    local b = {
        n = 1
    }

    b = a:extend(b)

then I get what I want:
p3
but it's not ideal, since it's two statements now and I can't use the fun{} syntactic sugar this way, which would be the whole reason, right. Is there a way to make it work? Also I'm unsure about how to properly word the title here

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 mã nguồn hoặc bài kiểm thử nào được nêu tên. Hãy tái hiện hai đoạn mã Lua một dòng và hai đoạn mã Lua hai câu lệnh, sau đó theo dõi quá trình suy luận kiểu của LuaLS đối với các khai báo cục bộ, chú thích lớp, generic và giá trị trả về của hàm. Được xem là hoàn tất khi hành vi được hỗ trợ đã được triển khai và bao phủ bằng một bài kiểm thử hồi quy, hoặc khi giới hạn này được ghi rõ trong tài liệ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
devtools
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
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.