Version 11.12.0
Sponsor
Historical One-time/Monthly Donations:
| Stat | Amount |
|---|---|
| Minimum | $1.00 |
| Median | $6.25 |
| Mean | $12.52 |
| Maximum | $200.00 |
Thanks
- For reporting that
CallDefinitionHeadcould not be checked if it was decompiled.- Tomoki Odaka (@odk211)
- For reporting that BEAM Chunks tab labels did not render.
- Robin Hilliard (@robinhilliard)
- For reporting
EOFExceptionwhile reading chunks from.beamfiles that were incomplete. - For posting a patch to fix an EEx bug
- Alexandr Evstigneev (@hurricup)
- For posting missing
mix depsoptions for determining dependency paths on disk.- Ian Mikhailov (@yanmhlv)
- Simon McConnell (@simonmcconnell)
- For reporting that there was unhandled element types in
Typescope processor and better error handling was necessary.- Donald Wilson (@donaldww)
- For reporting that MIssing SDK error was not helpful in Dialyzer Service.
- Walter Weinmann (@walter-weinmann)
- Klaus Ferreira (@KlausEverWalkingDev)
- Changyu Geng (@KingMario)
- @snow-dev
- @marcel862
- Ram Kumar (@ramka001)
- For reporting Stack Overflows in
Callable.annotatedue to improper tracking of modular children leading to looping when there is more than oneuse.- @ehayun
- Tomoki Odaka (@odk211)
- Matt Pinkstron (@mpinkston)
- Sergey Snozyk (@nmbrone)
- Kevin Hagel (@kevinhagel)
- Surya Teja Muthyala (@suryatejamuthyala)
- Simon McConnell (@simonmcconnell)
- Daniil Nevdah (@ndan)
- Donald Wilson (@donaldww)
- Walter Weinmann (@walter-weinmann)
- Moein (@amoein)
- Jonathan (JC) Chen (@dijonkitchen)
- For pointing to Yacto as a reproduction repository for a bunch of bugs
- Tomoki Odaka (@odk211)
Changelog
v11.12.0
Bug Fixes
- #1988 - @KronicDeth
- Only descend into modular children of modular for Module scope. Prevents recursion loops on use calls.
- Don’t search for unquoted variable value variable is value for
do:. - Protect from
IndexNotReadyinresolver.Module.multiResolveProject. - Stop walking unquoted variable that resolves to a parameter.
- Walk case in
__using__to find quote in any clause. Fixes resolving test macro fromuse PowerAssert - Resolve functions declared in
quote’s scope whenblockinjected withunquote(block).
Fixes resolvingfield,timestamps, andindexinschemaforuse Yacto.Schemaas it makes theblocksee theimport Yacto.Schemaaboveunquote(block)in thequoteinschema(..., do: block).
- #1990 - @KronicDeth
- Convert MissingSDK errors for Dialyzer into Notifications.
- #1993 - @KronicDeth
- Log element in psi.scope.Type instead of using
TODO()
Error will still be reported, but there will be enough information to triage and sincetrueis returned now it won’t stop the type resolving from working.
- Log element in psi.scope.Type instead of using
- #1994 - @KronicDeth
- Add missing mix deps options to non-path influencing list:
- env
- manager
- repo
- sparse
- submodules
- system_env
- Add missing mix deps options to non-path influencing list:
- #1995 - @hurricup]
- Fix incorrect
OuterElementTypeineex.lexer.TemplateData.
TheEEXIElementTypeneeds to useOuterLanguageElementTypeinstead of the directeex.psi.TokenType.
- Fix incorrect
- #1996 - @KronicDeth
- Run
QualifiedAlias#textinrunReadActionforQualifiedAlias#name
- Run
- #1997 - @KronicDeth
- Return
nullChunkinstead of throwingIOExceptionwhen read incomplete.
Incomplete reads happen often due to incomplete writes to the file system being read in. As such, they shouldn’t generate error reports and instead should be silently ignored.
- Return
- #1999 - @KronicDeth
- Implement
beam.FileEditor#getFileto fixDeprecatedMethodExceptionas the default implementation is now deprecated and requires an explicit implementation. - Use
TabbedPaneWrapper.AsJBTabsinstead ofJBTabbedPanefor “BEAM Chunks” tabs.
I’m not sure whyJBTabbedPanestopped showing its labels sometime in the 2020.X IDE version series, but by debugging when “BEAM Chunks” name was retrieved I found that the bottom tabs usedTabbedPaneWrapper.asJBTabs. Using that, the labels reappeared.
- Implement
- #2000 - @KronicDeth
- Don’t require Alias qualifier to be a
PsiNamedElement.
It can be anElixirAtomand getting the reference will still work.
- Don’t require Alias qualifier to be a
- #2001 - @KronicDeth
Any.isDecompiledforCallDefinitionHead.
Enhancements
- #1988 - @KronicDeth
-
Find
Deps in function calls in thedeps()list. -
Dep.putPathfrom a variable. -
Treat
Memoizedefmemoasdefanddefmemopasdefp. -
Resolve
exception/1andmessage/1todefexception. -
Resolve to callbacks when searching in any module.
-
Support arity intervals for unquote_splicing in parameters
Functions defined with unquote_splicing, such as
Ecto.Schema.__schema/2:for clauses <- Ecto.Schema.__schema__(fields, field_sources, assocs, embeds), {args, body} <- clauses do def __schema__(unquote_splicing(args)), do: unquote(body) endNeed to have their arity not be the number of PsiElements in the parentheses. Any call to
unquote_splicing(...)can end up have 0 to infinite parameters, so it means when one is saw, the range ofminimum...maximumshould change to an open interval ofminimum.... This required changingIntRange resolvedFinalArityChange()toArityInterval resolvedFinalArityInterval()on allCalls, which was a large change. It also meant changing a lot of ArityRange types to ArityInterval, and NameArityRange to NameArityInterval, which influenced the variable names.Since all Calls support ArityIntervals now and not just special forms and Ecto DSLs, exportArity is changed to always state the ResolveState, so that the special form changes can be integrated for all callers.
The actual implementation of CallImpl.resolvedFinalArityRange is changes to fold over the ArityInterval:
- Normal arguments increase the minimum and maximum.
- Default arguments increase only the maximum.
- unquote_splicing changes the maximum to null to indicate the interval is half open.
-






















