Macros inferring in new cljs (CLJS-1507)
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
Research direction
Start with src/implant/dirac/implant/analyzer.cljs at the cljs.analyzer/analyze call and trace how namespace forms identify macros. Compare the inferred macro information with the runtime-presence approach described in the issue, then verify that code-completion hints no longer report incorrect types. The issue does not name a test file, so identify the relevant analyzer or completion tests before making the change.
Written by the indexing model from the issue text.
Description
Currently we use cljs.analyzer/analyze to parse ns forms. We trust it to tell us which symbols/namespace references are macros. But new macros inference 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.
- Dominant language
- Clojure
- Stars
- 775
- Forks
- 29
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from binaryage/dirac
-
Difficulty 3/5 1-2 days Newbie friendliness 38/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 30/100
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
-
Difficulty 3/5 1-2 days Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
clojure-emacs/cider#4203 ·
-
.Team/QueryingPlatform Priority:P2
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
clj-commons/antq#329 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100