Chemanalysis: Dialyzing Elixir
summary
Dialyzer catches real bugs in Elixir by inferring success types and comparing them to specs; there are three concrete issues discussed: a spec that claims a boolean but only returns false (fixed by changing generated specs), consolidation rewriting that turned a broad module list into a precise union (fixed in Elixir 1.6), and a guard that calls tuple_size on a map (silenced by marking generated AST, fixed in Elixir 1.8). Covers integrations dialyxir, mix dialyzer and persistent lookup tables (PLTs), warning classes like unmatched_returns and unknown, and practical PLT and warning-filtering tradeoffs.
AI-written summary · about
chapters (36)
- 0:00Intro
- 0:50What is Dialyzing
- 1:05Quick Quiz
- 1:38Bugs
- 2:02Type annotations
- 3:51Dialyzing
- 6:03Specs
- 6:49Unknown
- 7:35Unmatched Returns
- 9:06Mix Tasks
- 9:38What is PLT
- 10:36Dialyzing Elixir
- 12:23Dialyzing X
- 12:57Peelteas
- 13:47Filtering warnings
- 14:29Drawbacks
- 15:09Mix Dialyzer
- 15:35Dialyzer
- 16:14Code Sample
- 16:50Dialyzing Info
- 17:18Project Applications
- 17:42First bug
- 18:07Protocols
- 20:05Finding the Implementation
- 21:39Finding the Bug
- 23:04Consolidation
- 24:27Under Specification
- 26:21Consolidate
- 27:35Guard Test
- 27:58Elixir Exception
- 29:09Prometheus Elixir Library
- 29:41Prometheus Error Macro
- 30:36Decompiled Elixir Code
- 33:25Generated Code
- 34:18Summary
- 34:38QA
related talks
49mDialyzer: Optimistic Type Checking for Erlang and Elixir
29mSame same but different: A Comparative Analysis of Static Type Checkers in Erlang
10mLightning talk: Typechecking Elixir
40mDebugging Elixir Code - The Tools, The Mindset
36mTypeCheck Effortless Runtime Type Checking
47mTesting the Hard Stuff and Staying Sane
47mHolistically built and tested APIs
33mLets Generate Tests
