Commit Graph

122 Commits

Author SHA1 Message Date
XeroOl
944f57cc08 No duplicate scope completions 2024-04-30 21:42:00 -05:00
XeroOl
343777d301 eglot completion quirk tests 2024-04-30 21:40:07 -05:00
XeroOl
311ce2645e fix fennel-ls#22
This is getting messy, but now the same sym can reference multiple
places. (. file references mysym) only holds the last one, but
(. file definitions <x> :referenced-by) could still hold older
references.
2024-04-07 23:18:14 -05:00
XeroOl
59b966a25f Add a bunch of tests for compiler recovery
Ideally, any time you write:

(local x (<some form with compiler error>))
(print x)

I don't want it to say "unknown variable x". To make sure that's the
case, I need to do as much error recovery as possible. I don't have full
error recovery, but I've got the common cases, and I'm working down the
fennel.friends list
2024-03-28 23:51:22 -05:00
XeroOl
3bc530e11b in tests, separate compile error diagnostics from lints 2024-03-28 23:04:25 -05:00
XeroOl
b5750b1a8a rename diagnostic to lint 2024-03-28 23:01:20 -05:00
XeroOl
0fd6a48ed2 basic code action test for the (+) -> 0 lint 2024-03-28 22:41:23 -05:00
XeroOl
e81920585d add more tests for error recovery 2024-03-28 22:39:13 -05:00
XeroOl
e47ee55784 shuffle around how encoding works in the tests 2024-03-28 22:38:01 -05:00
XeroOl
7c81ffcbb3 First attempt at code actions, no tests yet 2024-03-26 14:12:34 -05:00
XeroOl
cc05d7089f final attempt at fixing builds.sr.ht 2024-03-04 00:38:47 -06:00
XeroOl
80d0e297a1 more likely pass builds.sr.ht tests 2024-03-04 00:36:53 -06:00
XeroOl
65ea473197 new rockspec to make the luarocks rock work 2024-03-04 00:30:06 -06:00
XeroOl
888689a3a1 Make tests pass on old lua versions 2024-03-03 23:14:22 -06:00
XeroOl
f14d91b9c4
add test for hover over modules 2024-03-03 23:03:31 -06:00
XeroOl
0a766c6425 Finally, documentation for table.insert 2024-03-02 20:12:27 -06:00
XeroOl
308f7d9930 fix broken test 2024-03-02 10:55:15 -06:00
XeroOl
1eb4a770dd Make the multisym splitter tiebreak the right way 2024-03-01 21:36:00 -06:00
XeroOl
cb8dc29bed Analyze (include) the same way as (require) 2024-03-01 17:37:32 -06:00
XeroOl
be997dc7fb add diagnostic test for unknown module field 2024-03-01 17:32:51 -06:00
XeroOl
0dd9c0ff65 improved formatting for destructure 2024-03-01 17:29:01 -06:00
XeroOl
cab3bbc49d remove the dummy test project files 2024-03-01 17:01:10 -06:00
XeroOl
25375715c7 Restore hovering to globals 2024-03-01 16:48:07 -06:00
XeroOl
66bcfc65e5 fix completions for M style modules 2024-03-01 16:39:46 -06:00
XeroOl
45ab692db4 don't warn for symbols hidden in macros 2024-03-01 14:52:23 -06:00
XeroOl
284983657f continue compilation in broken let statements 2024-03-01 14:51:18 -06:00
XeroOl
186c388344 Change tests to faith 2024-03-01 14:43:26 -06:00
XeroOl
418e04edff fix tests to work again 2024-02-24 00:00:33 -06:00
XeroOl
a7d6122670 Fix completion problem in (if) conditions with no body 2024-02-23 23:52:27 -06:00
XeroOl
44805cd675 Add lint for (values) in non-tail position of a call 2024-02-23 12:25:51 -06:00
XeroOl
6152bed8a6 Move json dependency to fennel-ls/json, to represent that it's a modified version 2024-02-19 21:32:38 -06:00
XeroOl
b8565bd146 More language.fnl changes 2024-02-12 21:41:14 -06:00
XeroOl
d3f6d95c09 change the names to be more different 2024-02-11 23:55:05 -06:00
XeroOl
6f9935a781 Fix renames that cover method calls
That was a tough one to debug! I almost thought it was a bug in fennel,
but it, of course, turned out to be a fennel-ls problem.

When you have a symbol like (foo:bar), fennel compiles it by
"macroexpanding" it to (: foo :bar). When fennel macroexpands a macro,
it tries to clean up the output by giving it a best-guess
bytestart/byteend. Fennel-ls was picking up *both* the accurate
`foo:bar` sym and the best-guess virtual `foo` sym as separate
references to `foo`. When computing the renames, the best-guess values
were getting used, which made the replacement range inaccurate.
2024-02-11 23:45:08 -06:00
XeroOl
be5e167d67 very minor fix for completions 2024-02-11 23:11:45 -06:00
XeroOl
3a3b5d38d6 better multisym search, and hover tests to prove it
The search code is getting messy again. I may have to refactor it at
some point.
2024-02-10 01:07:43 -06:00
XeroOl
0e47eee5a4 test: completion edit range testing 2024-02-09 14:15:38 -06:00
XeroOl
3da1e6304b test: add check for unused diagnostic 2024-02-08 12:26:22 -06:00
XeroOl
b6b51698c4 added "セ" character to unicode tests
Although it was properly handled it before, there were no tests for
the unicode offset conversions that used characters that are 3 bytes
in utf8 and 2 bytes in utf16, so I added one. Now, every single
""type"" of charater is tested.
2024-02-03 01:34:41 -06:00
XeroOl
c1f9d43687 added a test for hovering over multival destructure 2024-02-03 01:31:46 -06:00
XeroOl
25e279eda3 completions textEdit initial code 2024-02-03 01:31:27 -06:00
XeroOl
8b6d905450 make multival definition tracking much better
there should now be no cases where multivals and table destructures are
confused. ie, (local [_ x] (values 1 2)) and (local (_ x) [1 2]) are recognized
as nonsense.
2024-02-02 02:12:30 -06:00
XeroOl
297f6c4fa9 fix set rename issue ~xerool/fennel-ls#8
Now unused variables and var-not-set lints use a different system.

References are now of type:
{:symbol sym :target ast :ref-type (or :read :write :mutate)}
instead of ast.

unused var will warn if all the references are :write references.
2024-01-25 00:06:59 -06:00
XeroOl
01035980b0 factoring 2024-01-25 00:06:59 -06:00
XeroOl
b2ec7e5a3a Add debug info to the test 2024-01-25 00:06:51 -06:00
Phil Hagelberg
5055fd31ef Add diagnostic for var-never-set.
This uses the isvar field from the opts map of the destructure hook.
2023-12-06 17:59:26 -06:00
adjuvant
e4ec4dc9c4 Configuration of extra allowed globals 2023-12-03 16:25:54 -06:00
XeroOl
6329fb6ea3 bad-unpack lint warns about (+ (unpack t))
Also, there's a special message for the .. operator to let people know
about table.concat
2023-12-01 14:13:34 -06:00
Phil Hagelberg
5acaac966e Ensure that defining a function on an arg counts as a reference.
Otherwise you get a warning here saying that t is unused:

    (fn f [t x] (fn t.f []) x)
2023-11-26 13:40:20 -06:00
XeroOl
b861812b24 Re-enable the : lint, but with better checks 2023-11-26 12:38:20 -06:00