Open arkanoid87 opened 2 years ago
this ugly fix solves the problem, as long as you don't build release
cacheDir = querySetting(nimcacheDir).replace("_check","_d")
I wonder why I realized this with vscode but you said to have futhark autocompletion out of the box with vim. Shouldn't both solution be based on nimsuggest?
Hmm, this appears to be something that VSCode does or the plugin passes to nimsuggest. On my machine I don't have any _check
folders in my ~/.cache/nim
folder and as long as I've built the library once I get completion in Vim.
I'm not finding "check" suffix in saem vscode extension, but I see it calling "nim check", so it might be that.
Hmm, this appears to be something that VSCode does or the plugin passes to nimsuggest. On my machine I don't have any
_check
folders in my~/.cache/nim
folder and as long as I've built the library once I get completion in Vim.
I also don't have the myproj_check folder, just myproj_d and myproj_r, not sure if that folder lives for just a moment and then gets deleted, or if it is a different kind of deal
I can confirm that this happens in nim check
import std/[compilesettings]
static:
echo querySetting(nimcacheDir)
nim c -r main.nim
/home/jack/.cache/nim/vscodecache_d
nim check main.nim
/home/jack/.cache/nim/vscodecache_check
I think your experience with nimlsp may help track the issue in https://github.com/saem/vscode-nim
I've created a minimal test to replicate the problem
vscodecache.nim
import std/[os, compilesettings, macros]
const cacheFile = querySetting(nimcacheDir) / "test.nim"
static:
writeFile(cacheFile, "let foo* = 42")
macro loadFromCache: untyped =
return quote do:
include `cacheFile`
loadFromCache()
echo foo
nim c -r vscodecache.nim
42
vscode error == nim check vscodecache.nim
nim check vscodecache.nim
Hint: used config file '/home/jack/.choosenim/toolchains/nim-1.6.0/config/nim.cfg' [Conf]
Hint: used config file '/home/jack/.choosenim/toolchains/nim-1.6.0/config/config.nims' [Conf]
.......................................................................................
/home/jack/nim/vscodecache/vscodecache.nim(13, 14) template/generic instantiation of `loadFromCache` from here
/home/jack/nim/vscodecache/vscodecache.nim(9, 10) Error: cannot open file: /home/jack/.cache/nim/vscodecache_check/test.nim
/home/jack/nim/vscodecache/vscodecache.nim(14, 6) Error: undeclared identifier: 'foo'
candidates (edit distance, scope distance); see '--spellSuggest':
(2, 1): 'os' [module declared in /home/jack/nim/vscodecache/vscodecache.nim(1, 11)]
(2, 3): 'bool' [type declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/basic_types.nim(15, 3)]
(2, 3): 'io' [module declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(3132, 14)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(1584, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(386, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(397, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(408, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(420, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(434, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(445, 6)]
(2, 3): 'low' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(451, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(216, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(225, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(226, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(227, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(228, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(394, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(397, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(398, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(399, 6)]
(2, 3): 'mod' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(400, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(123, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(166, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(173, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(174, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(175, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(176, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(323, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(325, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(326, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(327, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(328, 6)]
(2, 3): 'not' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/basic_types.nim(45, 6)]
(2, 3): 'of' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(917, 6)]
(2, 3): 'on' [const declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/basic_types.nim(19, 3)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(117, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(302, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(307, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(308, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(309, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(310, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(351, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(353, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(354, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(355, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(356, 6)]
(2, 3): 'or' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/basic_types.nim(53, 6)]
(2, 3): 'or' [template declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/core/macros.nim(196, 10)]
(2, 3): 'pop' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system.nim(1854, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(312, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(317, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(318, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(319, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(320, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(358, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(360, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(361, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(362, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/arithmetics.nim(363, 6)]
(2, 3): 'xor' [proc declared in /home/jack/.choosenim/toolchains/nim-1.6.0/lib/system/basic_types.nim(58, 6)]
https://github.com/PMunch/futhark/blob/875a7f5cf727483bc4c4d394f7d3c23699002aa8/src/futhark.nim#L456
querySetting(nimcacheDir)
seems to hold different values:/home/jack/.cache/nim/nimmap_d
/home/jack/.cache/nim/nimmap_check
As a result futhark works at build time and at runtime, but nimsuggest fails and as a result code completion and error checking is not available for all imported C code.
As a workaround, I've been copying the futhark generated nim file into project folder, switching from futhark to import when needed like in: