From 6e7336f413e0ca7f471b32878e284b65091520b6 Mon Sep 17 00:00:00 2001 From: Oleksandr Smirnov Date: Thu, 3 Apr 2025 16:45:14 +0300 Subject: [PATCH] fix(impl): handle case with no arguments provided --- lua/gopher/impl.lua | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lua/gopher/impl.lua b/lua/gopher/impl.lua index 702d58e..b8b115a 100644 --- a/lua/gopher/impl.lua +++ b/lua/gopher/impl.lua @@ -44,7 +44,10 @@ function impl.impl(...) local iface, recv = "", "" local bufnr = vim.api.nvim_get_current_buf() - if #args == 1 then -- :GoImpl io.Reader + if #args == 0 then + u.notify("arguments not provided. usage: :GoImpl f *File io.Reader", vim.log.levels.ERROR) + return + elseif #args == 1 then -- :GoImpl io.Reader local st = ts_utils.get_struct_under_cursor(bufnr) iface = args[1] recv = string.lower(st.name) .. " *" .. st.name @@ -57,7 +60,11 @@ function impl.impl(...) iface = args[3] end - local rs = r.sync { c.impl, "-dir", vim.fn.fnameescape(vim.fn.expand "%:p:h"), recv, iface } + assert(iface ~= "", "interface not provided") + assert(recv ~= "", "receiver not provided") + + local dir = vim.fn.fnameescape(vim.fn.expand "%:p:h") + local rs = r.sync { c.impl, "-dir", dir, recv, iface } if rs.code ~= 0 then error("failed to implement interface: " .. rs.stderr) end