Add selfcheck make target.

Also cleans up repeated path options in the makefile, and cleans up
warnings where fennel-ls warns on itself.

There were some unused functions; I just put a _ before their name but
that might be a bit silly. Maybe they should be removed? Or just left alone?
This commit is contained in:
Phil Hagelberg 2023-11-25 21:43:08 -08:00
parent b861812b24
commit 4a121f70b0
7 changed files with 20 additions and 21 deletions

View File

@ -10,23 +10,22 @@ DESTDIR ?=
PREFIX ?= /usr/local PREFIX ?= /usr/local
BINDIR ?= $(PREFIX)/bin BINDIR ?= $(PREFIX)/bin
.PHONY: clean test install ci OPTS=--add-package-path "./src/?.lua" --add-fennel-path "./src/?.fnl"
.PHONY: clean test install ci selfcheck
all: $(EXE) all: $(EXE)
$(EXE): $(SRC) $(EXE): $(SRC)
echo "#!/usr/bin/env $(LUA)" > $@ echo "#!/usr/bin/env $(LUA)" > $@
LUA_PATH="./src/?.lua" \ $(FENNEL) $(OPTS) --require-as-include --compile src/fennel-ls.fnl >> $@
FENNEL_PATH="./src/?.fnl" \
$(FENNEL) --require-as-include --compile src/fennel-ls.fnl >> $@
chmod 755 $@ chmod 755 $@
clean: clean:
rm -f $(EXE) rm -f $(EXE)
test: test:
TESTING=1 LUA_PATH="./src/?.lua;./?.lua" FENNEL_PATH="./src/?.fnl;./?.fnl" \ TESTING=1 $(FENNEL) $(OPTS) test/init.fnl
$(FENNEL) test/init.fnl
testall: testall:
$(MAKE) test LUA=lua5.1 $(MAKE) test LUA=lua5.1
@ -39,3 +38,6 @@ install: $(EXE)
mkdir -p $(DESTDIR)$(BINDIR) && cp $< $(DESTDIR)$(BINDIR)/ mkdir -p $(DESTDIR)$(BINDIR) && cp $< $(DESTDIR)$(BINDIR)/
ci: testall $(EXE) ci: testall $(EXE)
selfcheck:
$(FENNEL) $(OPTS) src/fennel-ls.fnl --check $(SRC)

View File

@ -2,7 +2,6 @@
(local json-rpc (require :fennel-ls.json-rpc)) (local json-rpc (require :fennel-ls.json-rpc))
(local state (require :fennel-ls.state)) (local state (require :fennel-ls.state))
(local diagnostics (require :fennel-ls.diagnostics)) (local diagnostics (require :fennel-ls.diagnostics))
(local {: view} (require :fennel))
(λ check [filename] (λ check [filename]
(let [server (doto {} (let [server (doto {}

View File

@ -3,7 +3,7 @@ This file is responsible for the low level tasks of analysis. Its main job
is to recieve a file object and run all of the basic analysis that will be used is to recieve a file object and run all of the basic analysis that will be used
later by fennel-ls.language to answer requests from the client." later by fennel-ls.language to answer requests from the client."
(local {: sym? : list? : sequence? : table? : sym : view &as fennel} (require :fennel)) (local {: sym? : list? : sequence? : table? : sym &as fennel} (require :fennel))
(local message (require :fennel-ls.message)) (local message (require :fennel-ls.message))
(local utils (require :fennel-ls.utils)) (local utils (require :fennel-ls.utils))
(local searcher (require :fennel-ls.searcher)) (local searcher (require :fennel-ls.searcher))
@ -122,7 +122,7 @@ later by fennel-ls.language to answer requests from the client."
(table.remove keys)))))) (table.remove keys))))))
(recurse binding [])) (recurse binding []))
(λ mutate [?definition binding scope] (λ mutate [_?definition binding scope]
;; for now, mutating a field counts as a reference I guess ;; for now, mutating a field counts as a reference I guess
(λ recurse [binding keys] (λ recurse [binding keys]
(if (sym? binding) (if (sym? binding)
@ -196,7 +196,7 @@ later by fennel-ls.language to answer requests from the client."
(define (sym :nil) binding scope)) (define (sym :nil) binding scope))
(λ compile-each [ast bindings scope] (λ compile-each [ast bindings scope]
(each [i binding (ipairs bindings)] (each [_ binding (ipairs bindings)]
(define (sym :nil) binding scope))) (define (sym :nil) binding scope)))
(λ compile-fn [ast scope] (λ compile-fn [ast scope]
@ -270,7 +270,7 @@ later by fennel-ls.language to answer requests from the client."
(table.insert allowed-globals :love) (table.insert allowed-globals :love)
;; TODO clean up this code. It's awful now that there is error handling ;; TODO clean up this code. It's awful now that there is error handling
(let [macro-file? (= (: file.text :sub 1 24) ";; fennel-ls: macro-file") (let [macro-file? (= (file.text:sub 1 24) ";; fennel-ls: macro-file")
plugin plugin
{:name "fennel-ls" {:name "fennel-ls"
:versions ["1.3.2"] :versions ["1.3.2"]

View File

@ -12,8 +12,6 @@ Every time the client sends a message, it gets handled by a function in the corr
(local formatter (require :fennel-ls.formatter)) (local formatter (require :fennel-ls.formatter))
(local utils (require :fennel-ls.utils)) (local utils (require :fennel-ls.utils))
(local {: view} (require :fennel))
(local requests []) (local requests [])
(local notifications []) (local notifications [])
@ -168,7 +166,7 @@ Every time the client sends a message, it gets handled by a function in the corr
_ {: label :kind kinds.Field})))) _ {: label :kind kinds.Field}))))
_ nil)))) _ nil))))
(λ create-completion-item [self file name scope] _create-completion-item [self file name scope]
(let [result (language.search-name-and-scope self file name scope)] (let [result (language.search-name-and-scope self file name scope)]
{:label result.label :kind result.kind})) {:label result.label :kind result.kind}))

View File

@ -2,7 +2,7 @@
The high level analysis system that does deep searches following The high level analysis system that does deep searches following
the data provided by compiler.fnl." the data provided by compiler.fnl."
(local {: sym? : list? : sequence? : varg? : sym : view} (require :fennel)) (local {: sym? : list? : sequence? : varg? : sym} (require :fennel))
(local utils (require :fennel-ls.utils)) (local utils (require :fennel-ls.utils))
(local state (require :fennel-ls.state)) (local state (require :fennel-ls.state))
@ -169,7 +169,7 @@ Returns:
_ (case (find-local-definition file name scope) _ (case (find-local-definition file name scope)
def (search self file def.definition (stack-add-keys! stack def.keys) (or ?opts {}))))))) def (search self file def.definition (stack-add-keys! stack def.keys) (or ?opts {})))))))
(λ past? [?ast byte] _past? [?ast byte]
;; check if a byte is past an ast object ;; check if a byte is past an ast object
(and (= (type ?ast) :table) (and (= (type ?ast) :table)
(get-ast-info ?ast :bytestart) (get-ast-info ?ast :bytestart)
@ -185,7 +185,7 @@ Returns:
byte byte
(+ 1 (utils.get-ast-info ?ast :byteend))))) (+ 1 (utils.get-ast-info ?ast :byteend)))))
(λ does-not-contain? [?ast byte] _does-not-contain? [?ast byte]
;; check if a byte is in range of the ast ;; check if a byte is in range of the ast
(and (= (type ?ast) :table) (and (= (type ?ast) :table)
(get-ast-info ?ast :bytestart) (get-ast-info ?ast :bytestart)
@ -206,7 +206,7 @@ Returns:
(if (if
(or (sequence? ast) (list? ast)) (or (sequence? ast) (list? ast))
(accumulate [(result done) nil (accumulate [(result done) nil
i child (ipairs ast) _ child (ipairs ast)
&until result] &until result]
(if (contains? child byte) (if (contains? child byte)
(recurse child byte))) (recurse child byte)))
@ -219,7 +219,7 @@ Returns:
(contains? value byte) (contains? value byte)
(recurse value byte))))))) (recurse value byte)))))))
(values (values
(accumulate [result nil i top-level-form (ipairs ast) &until result] (accumulate [result nil _ top-level-form (ipairs ast) &until result]
(if (contains? top-level-form byte) (if (contains? top-level-form byte)
(recurse top-level-form byte))) (recurse top-level-form byte)))
(fcollect [i 1 (length parents)] (fcollect [i 1 (length parents)]

View File

@ -21,7 +21,7 @@ in the \"self\" object."
(tset self.files uri file) (tset self.files uri file)
file))) file)))
(λ get-by-path [self path] _get-by-path [self path]
(get-by-uri self (utils.path->uri path))) (get-by-uri self (utils.path->uri path)))
(λ get-by-module [self module] (λ get-by-module [self module]

View File

@ -13,7 +13,7 @@ These functions are all pure functions, which makes me happy."
(λ next-lines [str nlines ?from] (λ next-lines [str nlines ?from]
"Find the start of the next line from a given byte offset, or from the start of the string." "Find the start of the next line from a given byte offset, or from the start of the string."
(faccumulate [from (or ?from 1) (faccumulate [from (or ?from 1)
i 1 nlines] _ 1 nlines]
(next-line str from))) (next-line str from)))
(fn utf [byte] (fn utf [byte]