Skip to content

Update ember-eslint-parser to 0.11#2735

Merged
NullVoxPopuli merged 1 commit intomasterfrom
nvp/update-parser
Apr 25, 2026
Merged

Update ember-eslint-parser to 0.11#2735
NullVoxPopuli merged 1 commit intomasterfrom
nvp/update-parser

Conversation

@NullVoxPopuli
Copy link
Copy Markdown
Contributor

bugfixes!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 24, 2026

🏎️ Benchmark Comparison

Benchmark Control (p50) Experiment (p50) Δ
js small 13.47 ms 13.54 ms +0.5%
🟢 js medium 6.80 ms 6.45 ms -5.2%
🟢 js large 2.64 ms 2.58 ms -2.2%
gjs small 1.11 ms 1.10 ms -0.6%
gjs medium 550.73 µs 549.58 µs -0.2%
gjs large 217.72 µs 217.20 µs -0.2%
gts small 1.10 ms 1.10 ms -0.1%
gts medium 551.53 µs 551.50 µs -0.0%
gts large 219.19 µs 217.68 µs -0.7%

🟢 faster · 🔴 slower · 🟠 slightly slower · ⚪ within 2%

Full mitata output
clk: ~2.74 GHz
cpu: AMD EPYC 9V74 80-Core Processor
runtime: node 24.14.1 (x64-linux)

benchmark                   avg (min … max) p75 / p99    (min … top 1%)
------------------------------------------- -------------------------------
js small (control)            16.65 ms/iter  18.12 ms █                    
                      (11.56 ms … 31.64 ms)  29.23 ms █▆▆    ▃             
                    (  6.23 mb …  10.46 mb)   7.26 mb ███▁█▄▄█▆▁▄▁▄▁▄▁▁▄▄▄▄

js small (experiment)         14.21 ms/iter  14.73 ms    █                 
                      (12.01 ms … 19.50 ms)  18.74 ms    █▃ ▃▃             
                    (  6.16 mb …   8.38 mb)   6.83 mb █▆███▆██▄▁▆▄▄▆▁▆▁▁▁▄▄

                             ┌                                            ┐
                             ╷ ┌──────────┬───┐                           ╷
          js small (control) ├─┤          │   ├───────────────────────────┤
                             ╵ └──────────┴───┘                           ╵
                              ╷  ┌──┬┐         ╷
       js small (experiment)  ├──┤  │├─────────┤
                              ╵  └──┴┘         ╵
                             └                                            ┘
                             11.56 ms           20.40 ms           29.23 ms

summary
  js small (experiment)
   1.17x faster than js small (control)

------------------------------------------- -------------------------------
js medium (control)            7.53 ms/iter   8.01 ms  █                   
                       (6.14 ms … 14.46 ms)  14.18 ms ▇██                  
                    (  2.99 mb …   4.62 mb)   3.55 mb ███▄▅█▅▂▁▂▃▁▂▃▁▃▁▁▁▁▂

js medium (experiment)         7.20 ms/iter   7.34 ms  █                   
                       (6.02 ms … 13.80 ms)  13.20 ms ▂█                   
                    (  2.34 mb …   4.68 mb)   3.51 mb ██▆▆▂▄▄▄▂▁▂▂▁▂▁▁▂▁▂▁▂

                             ┌                                            ┐
                              ╷┌─────┬──┐                                 ╷
         js medium (control)  ├┤     │  ├─────────────────────────────────┤
                              ╵└─────┴──┘                                 ╵
                             ╷┌─────┬                                ╷
      js medium (experiment) ├┤     │────────────────────────────────┤
                             ╵└─────┴                                ╵
                             └                                            ┘
                             6.02 ms           10.10 ms            14.18 ms

summary
  js medium (experiment)
   1.05x faster than js medium (control)

------------------------------------------- -------------------------------
js large (control)             3.12 ms/iter   2.99 ms  █                   
                       (2.21 ms … 12.34 ms)   8.01 ms ███                  
                    (351.85 kb …   3.27 mb)   1.45 mb ███▄▄▃▃▂▁▁▁▃▂▃▁▁▂▁▁▁▁

js large (experiment)          2.85 ms/iter   2.71 ms  █                   
                        (2.35 ms … 7.10 ms)   5.91 ms ▅█▃                  
                    (357.07 kb …   2.69 mb)   1.43 mb ███▃▃▃▃▂▂▁▂▂▂▁▁▁▁▂▂▁▂

                             ┌                                            ┐
                             ╷ ┌────┬                                     ╷
          js large (control) ├─┤    │─────────────────────────────────────┤
                             ╵ └────┴                                     ╵
                              ╷┌──┬                       ╷
       js large (experiment)  ├┤  │───────────────────────┤
                              ╵└──┴                       ╵
                             └                                            ┘
                             2.21 ms            5.11 ms             8.01 ms

summary
  js large (experiment)
   1.09x faster than js large (control)

------------------------------------------- -------------------------------
gjs small (control)            1.23 ms/iter   1.14 ms █                    
                        (1.08 ms … 6.94 ms)   5.66 ms █                    
                    (577.32 kb …   1.89 mb)   1.06 mb █▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

gjs small (experiment)         1.22 ms/iter   1.12 ms █                    
                        (1.08 ms … 6.74 ms)   5.56 ms █                    
                    (221.08 kb …   1.59 mb)   1.05 mb █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

                             ┌                                            ┐
                             ┌┬                                           ╷
         gjs small (control) ││───────────────────────────────────────────┤
                             └┴                                           ╵
                             ┌┬                                          ╷
      gjs small (experiment) ││──────────────────────────────────────────┤
                             └┴                                          ╵
                             └                                            ┘
                             1.08 ms            3.37 ms             5.66 ms

summary
  gjs small (experiment)
   1.01x faster than gjs small (control)

------------------------------------------- -------------------------------
gjs medium (control)         603.68 µs/iter 559.03 µs █                    
                      (531.88 µs … 6.24 ms)   3.00 ms █                    
                    (104.38 kb …   1.26 mb) 542.61 kb █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

gjs medium (experiment)      598.03 µs/iter 555.94 µs █                    
                      (531.57 µs … 6.66 ms)   1.43 ms █▂                   
                    (126.64 kb …   0.99 mb) 540.68 kb ██▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

                             ┌                                            ┐
                             ┌┬                                           ╷
        gjs medium (control) ││───────────────────────────────────────────┤
                             └┴                                           ╵
                             ┌┬              ╷
     gjs medium (experiment) ││──────────────┤
                             └┴              ╵
                             └                                            ┘
                             531.57 µs           1.76 ms            3.00 ms

summary
  gjs medium (experiment)
   1.01x faster than gjs medium (control)

------------------------------------------- -------------------------------
gjs large (control)          239.29 µs/iter 224.61 µs  █                   
                      (211.18 µs … 5.37 ms) 297.39 µs  █▅                  
                    ( 81.17 kb … 836.75 kb) 217.26 kb ▅██▄▇▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁

gjs large (experiment)       238.64 µs/iter 224.16 µs  █                   
                      (211.02 µs … 5.23 ms) 294.41 µs  █▄                  
                    (215.70 kb … 868.02 kb) 216.69 kb ▅██▄▇▄▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁

                             ┌                                            ┐
                             ╷ ┌────────────┬                             ╷
         gjs large (control) ├─┤            │─────────────────────────────┤
                             ╵ └────────────┴                             ╵
                             ╷ ┌───────────┬                            ╷
      gjs large (experiment) ├─┤           │────────────────────────────┤
                             ╵ └───────────┴                            ╵
                             └                                            ┘
                             211.02 µs         254.20 µs          297.39 µs

summary
  gjs large (experiment)
   1x faster than gjs large (control)

------------------------------------------- -------------------------------
gts small (control)            1.21 ms/iter   1.11 ms █                    
                        (1.08 ms … 6.93 ms)   6.24 ms █                    
                    (197.89 kb …   2.08 mb)   1.06 mb █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

gts small (experiment)         1.19 ms/iter   1.11 ms █                    
                        (1.07 ms … 6.51 ms)   5.33 ms █                    
                    (163.95 kb …   1.60 mb)   1.05 mb █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

                             ┌                                            ┐
                             ┌┬                                           ╷
         gts small (control) ││───────────────────────────────────────────┤
                             └┴                                           ╵
                             ┌┬                                   ╷
      gts small (experiment) ││───────────────────────────────────┤
                             └┴                                   ╵
                             └                                            ┘
                             1.07 ms            3.66 ms             6.24 ms

summary
  gts small (experiment)
   1.02x faster than gts small (control)

------------------------------------------- -------------------------------
gts medium (control)         609.92 µs/iter 558.09 µs █                    
                      (532.22 µs … 6.51 ms)   2.95 ms █                    
                    (  8.52 kb …   1.17 mb) 541.60 kb █▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

gts medium (experiment)      603.49 µs/iter 560.14 µs █                    
                      (530.01 µs … 6.56 ms)   1.99 ms █                    
                    (262.70 kb …   1.33 mb) 541.49 kb █▄▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

                             ┌                                            ┐
                             ┌┬                                           ╷
        gts medium (control) ││───────────────────────────────────────────┤
                             └┴                                           ╵
                             ┌┬                         ╷
     gts medium (experiment) ││─────────────────────────┤
                             └┴                         ╵
                             └                                            ┘
                             530.01 µs           1.74 ms            2.95 ms

summary
  gts medium (experiment)
   1.01x faster than gts medium (control)

------------------------------------------- -------------------------------
gts large (control)          242.66 µs/iter 225.50 µs  █                   
                      (211.95 µs … 6.21 ms) 296.66 µs  ██                  
                    (184.89 kb … 966.18 kb) 217.17 kb ▄██▆▇▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁

gts large (experiment)       240.29 µs/iter 225.22 µs  █                   
                      (211.89 µs … 5.52 ms) 288.55 µs  █▄                  
                    ( 16.88 kb … 808.48 kb) 216.41 kb ▄██▄▆▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁

                             ┌                                            ┐
                             ╷ ┌─────────────┬                            ╷
         gts large (control) ├─┤             │────────────────────────────┤
                             ╵ └─────────────┴                            ╵
                             ╷ ┌────────────┬                         ╷
      gts large (experiment) ├─┤            │─────────────────────────┤
                             ╵ └────────────┴                         ╵
                             └                                            ┘
                             211.89 µs         254.27 µs          296.66 µs

summary
  gts large (experiment)
   1.01x faster than gts large (control)

NullVoxPopuli pushed a commit that referenced this pull request Apr 24, 2026
The rule flagged yield-only templates by asserting
`templateNodes.length === 1 && isYieldOnly(templateNodes[0])`. That
works only while the parser strips template comments out of the body,
which ember-estree 0.4.2 happened to do. Upstream ember-estree 0.4.3
(#31) began keeping MustacheCommentStatement nodes in the body, so a
template like

    <template>{{! some comment }}{{yield}}</template>

now yields a body of length 2 and silently stops being flagged — which
is also why PR #2735 (upgrade to ember-eslint-parser 0.11) fails this
rule's CI.

Ignoring comment and whitespace-only text nodes before the length check
aligns with:

- upstream ember-template-lint's `no-yield-only.js` (unchanged there
  since comments-in-body is the native Glimmer AST shape anyway)
- the sibling rule `template-no-bare-yield.js`, which already uses the
  same `isEmptyNode` filter

The fix is a no-op on the currently-pinned [email protected] and
fixes the rule under any parser version that preserves comment nodes in
the template body. The rule also now correctly catches yield-only
templates that contain HTML comments (`<!-- x -->{{yield}}`), which it
was silently missing before.
@NullVoxPopuli-ai-agent

This comment was marked as outdated.

@johanrd
Copy link
Copy Markdown
Contributor

johanrd commented Apr 25, 2026

This looks good to me.

Recap:
ember-eslint-parser v0.11.0 ships with [email protected], which restores the Program.comments mirror that briefly broke in [email protected]. Regression tests added in #2733 and ember-tooling/ember-eslint-parser#198 cover this and pass.

The bugfixes above made the CI on this PR red a short while, as it surfaced an unrelated template-no-yield-only rule bug now fixed in #2736.

@NullVoxPopuli NullVoxPopuli merged commit 2e7eea1 into master Apr 25, 2026
10 checks passed
@NullVoxPopuli NullVoxPopuli deleted the nvp/update-parser branch April 25, 2026 12:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants