Skip to content

Latest commit

 

History

History
360 lines (257 loc) · 34.1 KB

File metadata and controls

360 lines (257 loc) · 34.1 KB

Changelog

0.3.13 (2026-06-06)

Bug Fixes

  • attach do-blocks to dot calls with unary names (e9d0b8f)
  • cap operator newlines by gap to RHS (52f4a45)
  • classify map update pipe with binding ops (6f4d2ed)
  • consume semicolons in bare stab body (ca367cd)
  • don't advance past ) in empty call parens (dee5ef6)
  • empty parens as a function call (0d38212)
  • escaped \ operator as match in fn args (70ed091)
  • greedy alias chain in parse_alias (a996978)
  • handle {} in struct dot expression (1363ceb)
  • handle all struct type expressions (a9a2161)
  • handle do/end after dot-call expressions (871e059)
  • handle in_match_op on comma LHS in fn args (6ee2f2a)
  • handle newlines in empty call parens (3f530b7)
  • handle newlines in empty struct type parens (9730cc4)
  • handle nil/true/false in struct module attrs (9b27166)
  • handle open paren in lone module attribute (d013fe5)
  • handle semicolons in bare stab expression bodies (0cc8403)
  • handle tuple literal in struct type after @ operator (e1ee310)
  • handle unary ops in map update call skip (516496f)
  • include bracket access in outer module attr (5b0df75)
  • infinite loop in malformed tuples (e036e83)
  • infix operator newlines metadata computation (e9b2535)
  • low precedence operator as rhs of pipe in map (16f3898)
  • make ellipsis standalone before dot and dot_call (cd9eef5)
  • parse remote calls with args in struct types (0729b6f)
  • parse sigil after @ in struct literal (1525aba)
  • parse struct type calls like %@foo(){ (2502744)
  • parse struct types with @ attr call args like %@t(o){} (b81fcaa)
  • parse struct types with remote calls (00b4bf2)
  • precedence inside map key (9067e06)
  • push do-blocks into rightmost call for operator expressions (5f94955)
  • raise left_paren precedence above unary (1252a58)
  • range operator attribute in struct type (4e60123)
  • semicolon separated arrow in try body (7e15ea5)
  • semicolon separated arrows in case clause (5f09e66)
  • semicolon separated arrows in case clause with arg in second (7e0f982)
  • separate cond clauses after bare -> with ; (85cbf1c)
  • skip consecutive eol/semi in grouped expressions (d3e7fd2)
  • skip eoe tokens in parse_dot_expression (c3c1330)
  • stop bare stab body at semicolons (26f42eb)
  • stop filtering nil values from map update pairs (32be63f)
  • stop map update pipe scan at closing delimiter (5b7eef7)
  • struct with dynamic module via call + access (476dfef)
  • ternary operatorin struct argument (8a790d0)
  • treat pipe in map as map update when binding ops appear inside function call args (efbe6cf)
  • widen stab_state through infix operators (c264b35)

0.3.12 (2026-05-16)

Bug Fixes

  • don't crash on charlist with pure interpolation (#133) (7ca4ccb), closes #132

0.3.11 (2026-04-23)

Performance Improvements

  • prefer recursion over multiple Keyword.has_key? (#129) (47fad18)
  • replace list length-checks with pattern matching (#128) (883764e)

0.3.10 (2026-03-05)

Bug Fixes

  • don't crash on unclosed brace in tuple inside map inside anonymous function (#125) (44702ce)

0.3.9 (2026-03-04)

Bug Fixes

  • prevent infinite loop when typing out anonymous function (#122) (8334932)

0.3.8 (2026-03-04)

Bug Fixes

  • handle ellipsis before <-, ::, and when (#114) (221fe49)
  • parse newline ternary continuation after ellipsis (#115) (708da64)
  • preserve fn newline metadata after semicolons (#112) (52099ff)
  • preserve leading nil in stab clause body (#120) (f0a79a0), closes #113

0.3.7 (2026-02-19)

Bug Fixes

  • allow list literals in struct type parsing (#111) (f2eabee)
  • parse assoc-map values outside key context (#102) (6751c15)
  • parse nested struct/map targets in struct literals (#105) (3d1cc61)
  • support dot-call struct targets like %e.(){} (#110) (706f0b0)

0.3.6 (2026-02-16)

Bug Fixes

  • parity with elixir parser based on property tests (#79) (8ca3746)

0.3.5 (2026-02-10)

Bug Fixes

0.3.4 (2026-02-09)

Bug Fixes

  • align ellipsis operator precedence with elixir (#96) (b4f94c9)

0.3.3 (2026-02-08)

Bug Fixes

  • add :eof to the terminator list in parse_stab_expression/1 (#92) (8f976ef)
  • better align parsing with elixir's matched/unmatched/no-parens (#93) (808783e)

0.3.2 (2026-02-01)

Bug Fixes

  • associativity in bracketless kw list (#89) (91b5d5b)
  • extract newlines only from newline carrying tokens (#86) (edba800)
  • improve handling of matched/unmatched expressions (#88) (dd45cb1)
  • keyword list associativity (#85) (a7d2a54)
  • parse ellipsis_op as unary operator (#83) (e86f1f4)
  • rearrange !(left) in right (#91) (fae2579)

0.3.1 (2026-01-20)

Bug Fixes

  • handle unexpected tokens when parsing stabs (#76) (365007b)

0.3.0 (2026-01-19)

Features

  • Handle atom_safe and kw_identifier_safe tokens (#72) (c4fd161)

Bug Fixes

  • handle eof inside list-esque constructs (#67) (14a2bf3)
  • handle no_fuel_remaining in parse_with_comments (#73) (f777bb4)
  • improve recovery from unexpected semicolons (#70) (792e9c9)
  • infinite loop parsing incomplete struct (#66) (bebd845)
  • parsing crashes on code with errors (#65) (b6bbdb4)
  • recover from incomplete keyword lists (#71) (0513a5d)

0.2.1 (2025-06-03)

Bug Fixes

  • make spitfire compile on elixir 1.13 (#62) (5eda84e)

0.2.0 (2025-03-07)

Features

Bug Fixes

  • correctly match on successful tokenize (f937a7a)
  • parse do blocks after paren_identifiers (2320bd4)
  • reset nesting inside parameterless right stab expressions (1bf80bc)

0.1.5 (2025-02-07)

Bug Fixes

0.1.4 (2024-12-20)

Bug Fixes

  • address warnings found by elixir 1.18 (#50) (434521e)

0.1.3 (2024-06-19)

Bug Fixes

  • match error case from Macro.Env.expand_import/5 (#45) (ebd5ba6)

0.1.2 (2024-06-17)

Bug Fixes

0.1.1 (2024-06-14)

Bug Fixes

0.1.0 (2024-06-14)

Features

Bug Fixes

  • 0-arity anon function type spec (586c087)
  • access syntax on dot call (d2bfb45)
  • add eoe metadata to 0-arity anon functions (444b9a2)
  • aliases can start with non alias tokens (7c557cc), closes #5
  • ambiguous_op meta (b3e8ea4)
  • bin: create tmp dir (#1) (39cc50b)
  • block identifiers that take right stabs (1dbf037)
  • blocks inside paren function calls (7e61ec2), closes #11
  • bracketless kw list with new line between key and value (6089f71)
  • consume fuel in infix loop (#24) (555b977)
  • do blocks inside grouped expressions (e219362)
  • don't encode errors directly into AST (#27) (df7732f)
  • don't include closing meta when paren identifier has error (0580d2c)
  • don't include closing meta when paren identifier has error (c3e1b1d)
  • elixir-makeup/makeup (#17) (db80ec4)
  • ellipsis op (4577b8c)
  • empty block_identifiers (#20) (5953bed)
  • env: reset pdict after expansion (#36) (d1db691)
  • error handling (26e68d4)
  • fix binding power of when_op (77db668)
  • function calls with multi line args (8888a71)
  • handle code that begins with comments (f549fb4)
  • handle op_identifier (f5b9ba0)
  • handle prefix operator with newline (#22) (4a2fcb6)
  • in match op precedence (c8ebe2a)
  • initialize error field in interpolation parser (8f991b8)
  • list as only expr in stab (5712150)
  • literal encoding for kw_identifier and capture ints (c6b206f)
  • lone do blocks inside other expressions (8b47e3a)
  • lone range op (9d631ff)
  • more access syntax (d3ed437)
  • more robust multi aliases (fb1e213)
  • multiline lists (b36cbf5)
  • nested access syntax (#15) (7af1625), closes #14
  • new line after fn keyword (bbcf66a)
  • newlines in bitstring (a585cb2)
  • newlines in call expression (52ec090)
  • newlines inside interpolation (99eb9ab)
  • newlines on map dot syntax (3a6b8fe)
  • newlines on tuples (774f5c5)
  • parse list-like syntax error with a single item (#21) (d39f91d)
  • parsing right stabs (8587642)
  • pin operator in struct type (8e53932)
  • pipe operator precedence (07fab38)
  • precedence for prefix style dual_op (620ada5)
  • precedence of access syntax (8111a21)
  • remaining differences between string_to_quoted (c67d644)
  • remove dbg and some comments (3ab807e)
  • rest nestings in compound data structures (957da86)
  • semicolons (#28) (f913c60)
  • single element lists (e655d88)
  • special case capture_int (bd03ac6)
  • special case pipe op for maps (c05af09)
  • stab collection, also more syntax (e98ed66)
  • stabs within grouped expressions (b94706f)
  • struct literal with module attr as type (1a0a6af)
  • struct types (#16) (1000574), closes #13
  • trailing commas (f260f97), closes #7
  • trailing commas in lists (149c774)
  • turn grouped !/not expressions into blocks (6a37c61)
  • type/assoc precedence (62aa23e)
  • unary operator (9faf653)
  • unary operator for real (0be0f08)
  • unquote in struct type (ea6dc48)
  • unquote_splicing quirks (a9bce8a)
  • unsafe keywords (da37dfd)
  • upstream changes to the tokenizer (#34) (178b00b)
  • various changes from testing elixir codebase (6312312)
  • when operator in normal usage (bd7f244)

Performance Improvements

Miscellaneous Chores