Macros inferring in new cljs (CLJS-1507)
- Vorherrschende Sprache
- Clojure
- Sterne
- 776
- Forks
- 29
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Beschreibung
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.
Beitragsleitfaden
Für dieses Repository ist kein Beitragsleitfaden indexiert
Rechercherichtung
Beginne mit src/implant/dirac/implant/analyzer.cljs beim cljs.analyzer/analyze-Aufruf und verfolge, wie Namespace-Formen Makros identifizieren. Vergleiche die abgeleiteten Makroinformationen mit dem im Issue beschriebenen Ansatz zur Laufzeitpräsenz und überprüfe anschließend, dass Code-Vervollständigungshinweise keine falschen Typen mehr melden. Das Issue nennt keine Testdatei, ermittle daher vor der Änderung die relevanten Analyzer- oder Completion-Tests.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- clojure
- Bereich
- devtools
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 25/100