LuaLS / LuaLS/lua-language-server

require("ffi") returning unknown

Aberta
#1,559 22 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

bug Info Needed
Linguagem predominante
Lua
Estrelas
4.4k
Forks
442
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

### How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

### Which OS are you using?

MacOS

### What is the issue affecting?

Type Checking, Completion, Libraries

### Expected Behaviour

Screen Shot 2022-09-16 at 17 03 10

### Actual Behaviour

Screen Shot 2022-09-16 at 17 02 58

### Reproduction steps

```lua
local ffi = require("ffi")
```

### Additional Notes

_No response_

### Log File

```yaml
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:65]: Lua Lsp startup, root: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:66]: ROOT: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:67]: LOGPATH: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/log
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:68]: METAPATH: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/meta
[17:01:26.979][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:69]: VERSION: 3.5.6
[17:01:27.012][info] [#0:script/service/service.lua:141]:
========= Medical Examination Report =========
--------------- Memory ---------------
Total: 1.489 MB
# 00 : 1.489 MB
# 01 : 0.000 MB
# 02 : 0.000 MB
# 03 : 0.000 MB
# 04 : 0.000 MB
--------------- Coroutine ---------------
Total: 0
Running: 0
Suspended: 0
Normal: 0
Dead: 0
--------------- Cache ---------------
Total: 1
Dead: 0
--------------- RPC ---------------
Holdon: 0
Waiting: 0
==============================================
[17:01:27.023][info] [#0:script/language.lua:137]: VSC language: en-us
[17:01:27.023][info] [#0:script/language.lua:138]: LS language: en-us
[17:01:27.023][info] [#0:script/workspace/workspace.lua:38]: Workspace init root: file:///Users/frityet/Documents/LuaUITest
[17:01:27.023][info] [#0:script/workspace/workspace.lua:42]: Log path: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/log/file_Users_frityet_Documents_LuaUITest.log
[17:01:27.025][info] [#0:script/workspace/workspace.lua:51]: Workspace create: file:///Users/frityet/Documents/LuaUITest
[17:01:27.335][info] [#0:script/provider/provider.lua:41]: Load config from client file:///Users/frityet/Documents/LuaUITest
[17:01:27.336][info] [#0:script/provider/provider.lua:42]: {
Lua = {
IntelliSense = {
traceBeSetted = true,
traceFieldInject = true,
traceLocalSet = true,
traceReturn = true
},
color = {
mode = "SemanticEnhanced"
},
completion = {
autoRequire = true,
callSnippet = "Replace",
displayContext = 0,
enable = true,
keywordSnippet = "Replace",
postfix = "@",
requireSeparator = ".",
showParams = true,
showWord = "Fallback",
workspaceWord = true
},
diagnostics = {
disable = {},
disableScheme = { "git" },
enable = true,
globals = {},
groupFileStatus = {},
groupSeverity = {},
ignoredFiles = "Enable",
libraryFiles = "Opened",
neededFileStatus = {},
severity = {},
unusedLocalExclude = {},
workspaceDelay = 3000,
workspaceRate = 100
},
format = {
defaultConfig = {},
enable = true
},
hint = {
arrayIndex = "Enable",
await = true,
enable = false,
paramName = "All",
paramType = true,
semicolon = "SameLine",
setType = true
},
hover = {
enable = true,
enumsLimit = 5,
expandAlias = true,
previewFields = 50,
viewNumber = true,
viewString = true,
viewStringMax = 1000
},
misc = {
parameters = {}
},
runtime = {
builtin = {},
fileEncoding = "utf8",
meta = "${version} ${language} ${encoding}",
nonstandardSymbol = {},
path = { "?.lua", "?/init.lua", "?/?.lua", "/usr/local/share/lua/?/?.lua" },
pathStrict = false,
plugin = "",
pluginArgs = {},
special = {
['"ffi.load"'] = "require"
},
unicodeName = false,
version = "Lua 5.4"
},
semantic = {
annotation = true,
enable = true,
keyword = false,
variable = true
},
signatureHelp = {
enable = true
},
spell = {
dict = {}
},
telemetry = {
enable = true
},
type = {
castNumberToInteger = true,
weakNilCheck = false,
weakUnionCheck = false
},
typeFormat = {
config = {}
},
window = {
progressBar = true,
statusBar = true
},
workspace = {
checkThirdParty = true,
ignoreDir = { ".vscode" },
ignoreSubmodules = true,
library = { "/usr/local/share/lua/", "/usr/local/lib/lua/", "?/?.so", "?.so", "/Users/frityet/Documents/libCraftOS/" },
maxPreload = 5000,
preloadFileSize = 500,
supportScheme = { "file", "untitled", "git" },
useGitIgnore = true,
userThirdParty = {}
}
},
["editor.acceptSuggestionOnEnter"] = "on",
["editor.semanticHighlighting.enabled"] = true,
["files.associations"] = {
["*.asm"] = "nasm",
["*.h"] = "c",
["*.inc"] = "nasm",
["*.lua"] = "lua",
["*.mpp"] = "cpp",
["*.rockspec"] = "lua"
},
["files.exclude"] = {
["**/.DS_Store"] = true,
["**/.git"] = true,
["**/.hg"] = true,
["**/.svn"] = true,
["**/CVS"] = true,
["**/Thumbs.db"] = true
}
}
[17:01:27.336][info] [#0:script/provider/provider.lua:48]: Load config from .luarc.json/.luarc.jsonc file:///Users/frityet/Documents/LuaUITest
[17:01:27.336][info] [#0:script/provider/provider.lua:49]: {
["diagnostics.groupSeverity"] = {
ambiguity = "Error",
await = "Error",
codestyle = "Error",
duplicate = "Error",
global = "Error",
luadoc = "Error",
redefined = "Error",
strict = "Error",
strong = "Error",
["type-check"] = "Error",
unbalanced = "Error"
},
["runtime.path"] = { "?.lua", "?/init.lua" },
["runtime.pathStrict"] = true,
["runtime.special"] = {
= {}
},
["runtime.version"] = "LuaJIT",
["workspace.ignoreDir"] = {},
["workspace.useGitIgnore"] = false
}
[17:01:27.439][info] [#0:script/provider/provider.lua:56]: Load config from client fallback
[17:01:27.441][info] [#0:script/provider/provider.lua:57]: {
Lua = {
IntelliSense = {
traceBeSetted = true,
traceFieldInject = true,
traceLocalSet = true,
traceReturn = true
},
color = {
mode = "SemanticEnhanced"
},
completion = {
autoRequire = true,
callSnippet = "Replace",
displayContext = 0,
enable = true,
keywordSnippet = "Replace",
postfix = "@",
requireSeparator = ".",
showParams = true,
showWord = "Fallback",
workspaceWord = true
},
diagnostics = {
disable = {},
disableScheme = { "git" },
enable = true,
globals = {},
groupFileStatus = {},
groupSeverity = {},
ignoredFiles = "Enable",
libraryFiles = "Opened",
neededFileStatus = {},
severity = {},
unusedLocalExclude = {},
workspaceDelay = 3000,
workspaceRate = 100
},
format = {
defaultConfig = {},
enable = true
},
hint = {
arrayIndex = "Enable",
await = true,
enable = false,
paramName = "All",
paramType = true,
semicolon = "SameLine",
setType = true
},
hover = {
enable = true,
enumsLimit = 5,
expandAlias = true,
previewFields = 50,
viewNumber = true,
viewString = true,
viewStringMax = 1000
},
misc = {
parameters = {}
},
runtime = {
builtin = {},
fileEncoding = "utf8",
meta = "${version} ${language} ${encoding}",
nonstandardSymbol = {},
path = { "?.lua", "?/init.lua", "?/?.lua", "/usr/local/share/lua/?/?.lua" },
pathStrict = false,
plugin = "",
pluginArgs = {},
special = {
['"ffi.load"'] = "require"
},
unicodeName = false,
version = "Lua 5.4"
},
semantic = {
annotation = true,
enable = true,
keyword = false,
variable = true
},
signatureHelp = {
enable = true
},
spell = {
dict = {}
},
telemetry = {
enable = true
},
type = {
castNumberToInteger = true,
weakNilCheck = false,
weakUnionCheck = false
},
typeFormat = {
config = {}
},
window = {
progressBar = true,
statusBar = true
},
workspace = {
checkThirdParty = true,
ignoreDir = { ".vscode" },
ignoreSubmodules = true,
library = { "/usr/local/share/lua/", "/usr/local/lib/lua/", "?/?.so", "?.so", "/Users/frityet/Documents/libCraftOS/" },
maxPreload = 5000,
preloadFileSize = 500,
supportScheme = { "file", "untitled", "git" },
useGitIgnore = true,
userThirdParty = {}
}
},
["editor.acceptSuggestionOnEnter"] = "on",
["editor.semanticHighlighting.enabled"] = true,
["files.associations"] = {
["*.asm"] = "nasm",
["*.h"] = "c",
["*.inc"] = "nasm",
["*.lua"] = "lua",
["*.mpp"] = "cpp",
["*.rockspec"] = "lua"
},
["files.exclude"] = {
["**/.DS_Store"] = true,
["**/.git"] = true,
["**/.hg"] = true,
["**/.svn"] = true,
["**/CVS"] = true,
["**/Thumbs.db"] = true
}
}
[17:01:27.442][info] [#0:script/provider/completion.lua:43]: Enable completion.
[17:01:27.544][info] [#0:script/library.lua:207]: Init builtin library at: file:///Users/frityet/Documents/LuaUITest
[17:01:27.566][info] [#0:script/plugin.lua:86]: plugin path: /Users/frityet/Documents/LuaUITest
[17:01:27.567][warn] [#0:script/plugin.lua:101]: plugin not found: /Users/frityet/Documents/LuaUITest
[17:01:27.567][info] [#0:script/library.lua:207]: Init builtin library at: nil
[17:01:27.586][info] [#0:script/workspace/workspace.lua:305]: Preload start: file:///Users/frityet/Documents/LuaUITest
[17:01:27.589][info] [#0:script/workspace/workspace.lua:311]: Scan files at: file:///Users/frityet/Documents/LuaUITest
[17:01:27.589][info] [#0:script/workspace/workspace.lua:305]: Preload start:
[17:01:27.593][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///usr/local/lib/lua
[17:01:27.599][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///usr/local/share/lua
[17:01:27.599][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/meta/Lua%205.4%20en-us%20utf8
[17:01:27.600][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///usr/local/lib/lua
[17:01:27.603][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///usr/local/share/lua
[17:01:27.603][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/meta/LuaJIT%20en-us%20utf8
[17:01:27.606][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///Users/frityet/Documents/libCraftOS
[17:01:27.610][info] [#0:script/workspace/workspace.lua:328]: Scan library at: file:///Users/frityet/Documents/libCraftOS
[17:01:28.438][info] [#0:script/workspace/workspace.lua:348]: Found 20 files at:
[17:01:28.439][info] [#0:script/workspace/loading.lua:153]: Load files from disk:
[17:01:28.439][info] [#0:script/workspace/workspace.lua:348]: Found 29 files at: file:///Users/frityet/Documents/LuaUITest
[17:01:28.439][info] [#0:script/workspace/loading.lua:153]: Load files from disk: file:///Users/frityet/Documents/LuaUITest
[17:01:28.888][info] [#0:script/workspace/loading.lua:165]: Loaded files takes [0.145] sec:
[17:01:28.888][info] [#0:script/workspace/loading.lua:174]: Compile files takes [0.000] sec:
[17:01:28.888][info] [#0:script/workspace/loading.lua:175]: Loaded finish:
[17:01:28.888][info] [#0:script/workspace/workspace.lua:350]: Preload finish at:
[17:01:28.902][info] [#0:script/workspace/loading.lua:165]: Loaded files takes [0.157] sec: file:///Users/frityet/Documents/LuaUITest
[17:01:28.902][info] [#0:script/workspace/loading.lua:174]: Compile files takes [0.000] sec: file:///Users/frityet/Documents/LuaUITest
[17:01:28.902][info] [#0:script/workspace/loading.lua:175]: Loaded finish: file:///Users/frityet/Documents/LuaUITest
[17:01:28.902][info] [#0:script/workspace/workspace.lua:350]: Preload finish at: file:///Users/frityet/Documents/LuaUITest
[17:01:28.921][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [], files count:[35]
[17:01:28.921][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest], files count:[24]
[17:01:28.953][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest] finished, takes [0.029] sec.
[17:01:28.953][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [] finished, takes [0.030] sec.
[17:01:39.060][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest], files count:[24]
[17:01:39.066][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest] finished, takes [0.006] sec.
[17:02:14.451][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest], files count:[24]
[17:02:14.456][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest] finished, takes [0.005] sec.
[17:02:14.875][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest], files count:[24]
[17:02:14.881][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest] finished, takes [0.006] sec.
[17:02:16.637][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest], files count:[24]
[17:02:16.643][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest] finished, takes [0.005] sec.
[17:02:18.242][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest], files count:[24]
[17:02:18.248][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [file:///Users/frityet/Documents/LuaUITest] finished, takes [0.006] sec.
[17:05:49.714][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [], files count:[15]
[17:05:49.715][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [] finished, takes [0.001] sec.
[17:05:51.377][info] [#0:script/provider/diagnostic.lua:160]: clearDiagnostics file:///Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/log/middleScript.lua
[17:05:56.820][info] [#0:script/provider/diagnostic.lua:486]: Diagnostics scope [], files count:[15]
[17:05:56.820][info] [#0:script/provider/diagnostic.lua:503]: Diagnostics scope [] finished, takes [0.001] sec.
```

```yaml
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:65]: Lua Lsp startup, root: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:66]: ROOT: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:67]: LOGPATH: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/log
[17:01:26.978][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:68]: METAPATH: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/meta
[17:01:26.979][info] [#0:/Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/main.lua:69]: VERSION: 3.5.6
[17:01:27.012][info] [#0:script/service/service.lua:141]:
========= Medical Examination Report =========
--------------- Memory ---------------
Total: 1.489 MB
# 00 : 1.489 MB
# 01 : 0.000 MB
# 02 : 0.000 MB
# 03 : 0.000 MB
# 04 : 0.000 MB
--------------- Coroutine ---------------
Total: 0
Running: 0
Suspended: 0
Normal: 0
Dead: 0
--------------- Cache ---------------
Total: 1
Dead: 0
--------------- RPC ---------------
Holdon: 0
Waiting: 0
==============================================
[17:01:27.023][info] [#0:script/language.lua:137]: VSC language: en-us
[17:01:27.023][info] [#0:script/language.lua:138]: LS language: en-us
[17:01:27.023][info] [#0:script/workspace/workspace.lua:38]: Workspace init root: file:///Users/frityet/Documents/LuaUITest
[17:01:27.023][info] [#0:script/workspace/workspace.lua:42]: Log path: /Users/frityet/.vscode/extensions/sumneko.lua-3.5.6-darwin-x64/server/log/file_Users_frityet_Documents_LuaUITest.log

```

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece com a reprodução em Lua `local ffi = require("ffi")` e o caminho de carregamento da biblioteca registrado em `script/library.lua`, verificando o comportamento no runtime LuaJIT configurado. Compare a resolução do require de `ffi` com o comportamento esperado de conclusão e verificação de tipos mostrado na issue; considera-se concluído quando ele não for mais reportado como desconhecido.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
lua, vscode
Domínio
devtools
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
42/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.