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
Codedisassembler-
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
PsiElementifCall#finalArgumentscontain anull. -
Suggest ASDF directories as
homepaths for both Elixir and Erlang for Elixir SDKs. -
Run ‘Dialyzer based inspections (Elixir)’ using Elixir SDK running
mix dialyzeror any customizedmixcommand.
Bug Fixes
-
Use
VirtualFile#fileTypeinstead of EEx Type::INSTANCE when looking up extensions. Since LEEx fileTypeis a subclass of EEx’s fileType, it callstemplateDataFileTypeSetin EEx’sType, buttemplateDataFileTypeSetusesINSTANCEfrom EEx. By using theVirtualFile#fileTypeinstead, 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 asHTMLLanguagefor.html.leex. -
Compare max opcode in to file to max opcode number, not ordinal.
Opcodes are 1-based, but the ordinal of the Kotlin
Enums 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
primaryArgumentsoperation.infix.Normalized.leftOperandand.rightOperandensures thatPsiErrorElementis not returned: they can returnnullwhen there is no left or right operand.Infix.primaryArgumentswas not taking this into account and so could return anullas 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/elixiror/opt/elixir, etc.
Read next Elixir Wizards Livestream: Brewing a Love Potion 2/12
