binaryage / binaryage/dirac

Macros inferring in new cljs (CLJS-1507)

Aperta
#39 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement
Lingua principale
Clojure
Stelle
776
Fork
29
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Currently we use [cljs.analyzer/analyze](https://github.com/binaryage/dirac/blob/f7e140336dd76c125aa91611e4e313ced123a1d1/src/implant/dirac/implant/analyzer.cljs#L9) to parse ns forms. We trust it to tell us which symbols/namespace references are macros. But new macros inference [CLJS-1507](http://dev.clojure.org/jira/browse/CLJS-1507) can make this unreliable when someone relies on inferring.

I think a way how to work around this is to treat everything as a function and check for runtime presence. If it is not present at runtime, we treat it as a macro (but this can have performance implications because runtime presence checks must go over wire).

Other idea is just to leave it as is and our code completion hints will report wrong types.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia da src/implant/dirac/implant/analyzer.cljs, in corrispondenza della chiamata a cljs.analyzer/analyze, e traccia il modo in cui le forme di namespace identificano le macro. Confronta le metadati delle macro inferiti con l’approccio basato sulla presenza a runtime descritto nell’issue, quindi verifica che i suggerimenti per il completamento del codice non riportino più tipi errati. L’issue non indica un file di test, quindi individua i test rilevanti dell’analyzer o della completion prima di apportare la modifica.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
clojure
Ambito
devtools
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.