Commit Graph
321 Commits
Author SHA1 Message Date
Barna Kovacs 9158e33883 Optimize EEx fn block detection (#15738)
Scan reversed tokens once to identify whether a stab expression starts an anonymous function block.

Assisted-by: Codex:GPT-5
2026-08-12 23:41:12 +02:00
Alexander Gubarev 1db0a0c3fd Fix EEx.tokenize/2 missing comment token in result doc (#15605) 2026-07-14 11:29:44 +02:00
Alexander Gubarev 1a4a91a1f3 Fix EEx.eval_string/3 and EEx.eval_file/3 specs (#15599) 2026-07-12 17:51:23 +02:00
Jean Klingler bec8d39796 Add :migrate_atom_interpolations option to formatter (#15531) 2026-07-02 08:04:25 +09:00
José Valim 600b7c63d3 Support split EEx clause middle expressions
Allow clause-introducing middle expressions
such as else, rescue, and catch to be followed
by a whitespace-only template segment and
another middle expression. This supports EEx
like with/try else clauses written as separate
tags, for example <% else %> followed by <% _ -> %>.

Keep whitespace-only bodies for ordinary arrow
clauses, so adjacent empty case/cond clauses
continue to compile as before.
2026-06-10 15:15:41 +02:00
Peter Ullrich a0e1604fe6 In EEX Compiler, flatten expr list only once, not on every iteration (#15331) 2026-05-01 18:13:52 +02:00
Łukasz Samson 81dc36568b Enrich EEx.SyntaxError with error metadata (#15297)
Fixes #15296
2026-04-22 16:58:24 +02:00
Michał Łępicki 6d5f43318c Allow specifying SEED when running tests (#15111)
this is helpful when reproducing flaky test failures
2026-02-25 09:12:15 +01:00
Michał Łępicki 31ec8cc703 Fix dialyzer warnings on EEx.eval_string (#14971) 2025-11-29 12:10:30 +01:00
Daniil Kulchenko 53fb96c808 Fix EEx.compile_string passing invalid options to tokenize (#14835)
EEx.compile_string/2 was passing all options to tokenize/2, but
tokenize/2 only accepts tokenize_opt (:file, :line, :column,
:indentation, :trim). This caused dialyzer to correctly flag calls
with :engine or :parser_options as type errors in Elixir 1.19+.

The fix filters options before passing to tokenize/2, keeping only
the valid tokenize_opt keys, while still passing the full options
list to EEx.Compiler.compile/3 which needs :engine, :parser_options,
and custom engine options.

Fixes #14834
2025-10-16 23:48:33 +02:00
José Valim 6fccf34e6b Engines may return any AST which may return any value, closes #14770 2025-09-15 16:18:25 +02:00
José Valim 2474303f93 Do not use private APIs in EEx 2025-09-14 10:27:03 +02:00
José Valim cf8689e498 Remove specs which are pass through and from private modules 2025-07-01 10:44:03 +02:00
Łukasz Samson e3f7759fde Replace keyword with concrete keyword lists in specs (#14611) 2025-06-30 17:24:28 +02:00
Jonatan Männchen f3e8ceb5aa Implement Test Coverage Reporting (#14343) 2025-04-07 22:37:01 +02:00
José Valim 468228a236 Add :indentation to Code.string_to_quoted/2 (#14406) 2025-04-07 16:02:01 +02:00
Jonatan Männchen 980500551c Inline Licence Info & Copyright for non-test files (#14256) 2025-02-07 21:11:09 +01:00
Jonatan Männchen f7bbe81ea7 Inline licence info & copyright for test files (#14257) 2025-02-07 20:54:14 +01:00
José Valim a39f469a76 Do not warn for assignment with blocks in EEx 2024-06-15 11:04:53 +02:00
José Valim a64f28c8dd Only emit deprecation warning for EEx if handle_text/3 is missing 2024-05-28 21:12:09 +02:00
José Valim 25e6ce4271 Add pending deprecations 2024-05-24 13:11:29 +02:00
José Valim d7ea2fa2e4 Handle cursor completion inside fn/rescue/catch/else/after 2024-05-14 17:04:57 +02:00
José Valim 43e029cbb4 Do not reset column state in tests 2023-12-21 16:17:05 +01:00
José Valim 14f3a1e372 Deprecate single quotes as charlists 2023-10-29 13:30:03 +01:00
José Valim c7bd0fe7e7 Do not emit duplicate warnings from tokenizer, closes #12961 2023-09-25 12:55:23 +02:00
José Valim c8c4ec5155 Properly print warnings from tokenizer in EEx, closes #12926 2023-09-13 09:17:36 +02:00
José Valim c365eac5dc Return relative file in EEx, closes #12927 2023-09-13 09:02:42 +02:00
Benjamin Milde afb2c8c1f0 Document default EEx Engine (#12302) 2022-12-16 10:08:38 +01:00
José Valim cb90301c4c Store and consider indentation in code snippets 2022-12-05 11:17:09 +01:00
Felipe Renan 524d917222 Fix line number padding for code snippet on EEx errors (#12283) 2022-12-04 17:07:52 +01:00
José Valim 5cf8811033 Align pointers to beginning of expression except for blocks 2022-12-04 16:50:27 +01:00
Felipe Renan bb08692c96 Add snippet when <%-- is not closed (#12218) 2022-10-28 15:32:29 +02:00
José Valim 20d603653e mix format 2022-10-27 23:29:46 +02:00
José Valim ef5916bb67 Refactor and normalize format 2022-10-27 23:29:09 +02:00
Felipe Renan 17d34d06fe Include snippets in EEx errors (#12170) 2022-10-27 23:17:39 +02:00
sabiwara 8908334041 Inspect charlists as ~c sigils (#12074) 2022-08-13 09:08:17 +02:00
sabiwara 29bf449f3f Evaluate formating charlists as ~c sigils (#12064) 2022-08-10 06:47:00 +02:00
José Valim 1b60acbe9e Allow LINE to be set for tests 2022-07-18 09:58:14 +02:00
José Valim 9b312ac046 Mention module docs for EEx options 2022-05-09 10:28:32 +02:00
Kurtis Rainbolt-GreeneandAndrea Leopardi 5d4e357418 Add docs for the "options" argument in EEx.eval_string/3 (#11805)
Co-authored-by: Andrea Leopardi <an.leopardi@gmail.com>
2022-05-09 09:56:49 +02:00
Wojtek Mach 55c8776071 Fix EEx.tokenize/2 docs (#11694) 2022-03-10 13:23:54 +01:00
Aaron Tinio 5f7176450d Fix EEx.tokenize/2 CaseClauseError (#11677) 2022-03-02 07:57:55 +01:00
Aaron Tinio f5b8ce197d Update EEx.token() type (#11678) 2022-03-02 07:57:24 +01:00
Felipe Renan 2f21080243 Expose EEx comments as tokens in EEx.tokenize/2 (#11674) 2022-03-01 21:55:11 +01:00
Michał Łępicki 187d09e672 Fix spec for EEx.tokenize/2 and EEx.Compiler.compile/2 (#11670) 2022-02-28 09:59:15 +01:00
Wojtek MachandJosé Valim 0d621f6309 Add doc since to EEx.tokenize/2 (#11669)
Co-authored-by: José Valim <jose.valim@dashbit.co>
2022-02-27 10:35:09 +01:00
José Valim 55f6a78fb5 Use main EEx tokenize API 2022-02-27 10:23:21 +01:00
Felipe Renan f9d0e702c6 Add EEx.tokenize/2 (#11667) 2022-02-27 10:01:42 +01:00
José Valim f08646b85c Remove TODO 2022-02-25 20:34:24 +01:00
José Valim 9097a16bee Move some EEx syntax errors to tokenizer 2022-02-25 20:33:14 +01:00