diff options
Diffstat (limited to 'test/tclient/tests')
-rw-r--r-- | test/tclient/tests/jump-source.lua | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/test/tclient/tests/jump-source.lua b/test/tclient/tests/jump-source.lua new file mode 100644 index 00000000..ff679826 --- /dev/null +++ b/test/tclient/tests/jump-source.lua @@ -0,0 +1,76 @@ +local lclient = require 'lclient' +local util = require 'utility' +local ws = require 'workspace' +local files = require 'files' +local furi = require 'file-uri' +local fs = require 'bee.filesystem' + +---@async +lclient():start(function (client) + client:registerFakers() + client:initialize() + + ws.awaitReady() + + client:notify('textDocument/didOpen', { + textDocument = { + uri = furi.encode('1.lua'), + languageId = 'lua', + version = 0, + text = [[ +---@class AAA +---@source file:///xxx.lua:50 +---@field x number +local mt = {} + +---@source file:///yyy.lua:30 +function mt:ff() end +]] + } + }) + + client:notify('textDocument/didOpen', { + textDocument = { + uri = furi.encode('main.lua'), + languageId = 'lua', + version = 0, + text = [[ +---@type AAA +local a + +print(a.x) +print(a.ff) +]] + } + }) + + local locations = client:awaitRequest('textDocument/definition', { + textDocument = { uri = furi.encode('main.lua') }, + position = { line = 3, character = 9 }, + }) + + assert(util.equal(locations, { + { + uri = 'file:///xxx.lua', + range = { + start = { line = 49, character = 0 }, + ['end'] = { line = 49, character = 0 }, + } + } + })) + + local locations = client:awaitRequest('textDocument/definition', { + textDocument = { uri = furi.encode('main.lua') }, + position = { line = 4, character = 9 }, + }) + + assert(util.equal(locations, { + { + uri = 'file:///yyy.lua', + range = { + start = { line = 29, character = 0 }, + ['end'] = { line = 29, character = 0 }, + } + } + })) +end) |