Elixir Wizards S5E11 Yair Flicker on SmartLogic’s Origin, Evolution, and Elixir Adoption Process
Elixir Wizards Livestream: Brewing a Love Potion 2/12
IntellIJ Elixir v11.10.0
Changelog
Enhancements
-
Simplify
onlyTemplateDateFileType
-
Add missing opcodes to
Code
disassembler-
OTP 23 opcode
bs_start_match4
-
Current (in-development) OTP 24 opcodes
-
make_fun3
-
init_yregs
-
recv_marker_bind
-
recv_marker_clear
-
recv_marker_clear
-
recv_marker_user
-
-
OTP 23 opcode
-
Log
PsiElement
ifCall#finalArguments
contain anull
. -
Suggest ASDF directories as
homepath
s for both Elixir and Erlang for Elixir SDKs. -
Run ‘Dialyzer based inspections (Elixir)’ using Elixir SDK running
mix dialyzer
or any customizedmix
command.
Bug Fixes
-
Use
VirtualFile#fileType
instead of EEx Type::INSTANCE when looking up extensions. Since LEEx fileType
is a subclass of EEx’s fileType
, it callstemplateDataFileTypeSet
in EEx’sType
, buttemplateDataFileTypeSet
usesINSTANCE
from EEx. By using theVirtualFile#fileType
instead, it will properly be EEx or LEEx based on the actual file extension and then it can be used to strip that off and find the DataTemplateLanguage, such asHTMLLanguage
for.html.leex
. -
Compare max opcode in to file to max opcode number, not ordinal.
Opcodes are 1-based, but the ordinal of the Kotlin
Enum
s are 0-based, so the comparison was off-by-1 when a file had the max opcode and would be incorrectly marked as too new. -
Don’t return null left or right infix operands in
primaryArguments
operation.infix.Normalized.leftOperand
and.rightOperand
ensures thatPsiErrorElement
is not returned: they can returnnull
when there is no left or right operand.Infix.primaryArguments
was not taking this into account and so could return anull
as one of theprimaryArguments
, which brokeCall.finalArguments
. -
Don’t attempt to execute
elixir -e “System.version |> IO.puts”
to get the version number as it requires too much of a full SDK to be built and from the Erlang paths to be correct too, which was rarely the case for ASDF. Since for Homebrew and ASDF, the directory name is the version name, this shouldn’t be a loss in naming ability. If the directory name is not a parseable version it will be of the formatElixir at <path>
. This is probably more correct for installs directories that aren’t versioned as SDK versions aren’t updated if the version installed at the path changes, such as/usr/local/elixir
or/opt/elixir
, etc.
Read next Elixir Wizards Livestream: Brewing a Love Potion 2/12