zls icon indicating copy to clipboard operation
zls copied to clipboard

Inlay hints do not recognize the self parameter

Open vadim-za opened this issue 1 year ago • 0 comments

Zig Version

0.12.0

Zig Language Server Version

0.12.0

Client / Code Editor / Extensions

VS Code 1.86.1 (Windows), extension: Zig Language v0.5.7

Steps to Reproduce and Observed Behavior

Create the two following files in a VS Code project (this is a stripped down version of Windows COM interfaces implementation)

///! main.zig
const other = @import("other.zig");

pub fn main() void {
    const interface = other.IDerivedInterface{};
    interface.method(0, 1);
}
///! other.zig
pub const IUnknown = extern struct {
    pub usingnamespace Methods(@This());
    pub fn Methods(comptime T: type) type {
        _ = T; // autofix
        return struct {};
    }
};

pub const IBaseInterface = extern struct {
    pub usingnamespace Methods(@This());
    const Base = IUnknown;
    pub fn Methods(comptime T: type) type {
        return struct {
            pub usingnamespace Base.Methods(T);
            pub fn method(self: *T, arg1: i32, arg2: i32) void {
                _ = self; // autofix
                _ = arg1; // autofix
                _ = arg2; // autofix
            }
        };
    }
};

pub const IDerivedInterface = extern struct {
    pub usingnamespace Methods(@This());
    const Base = IBaseInterface;
    pub fn Methods(comptime T: type) type {
        return struct {
            pub usingnamespace Base.Methods(T);
        };
    }
};

Observed inlay hints in main.zig:

    interface.method(self: 0, arg1: 1);

Expected Behavior

Expected inlay hints in main.zig:

    interface.method(arg1: 0, arg2: 1);

Further info: if instead of other.zig the interface types are defined directly in main.zig, then there are no inlay hints at all.

Relevant log output

No response

vadim-za avatar May 04 '24 08:05 vadim-za