Skip to content

GROOVY-9192: Implement optional parser error recovery for Parrot parser#2724

Open
daniellansun wants to merge 1 commit into
masterfrom
GROOVY-9192
Open

GROOVY-9192: Implement optional parser error recovery for Parrot parser#2724
daniellansun wants to merge 1 commit into
masterfrom
GROOVY-9192

Conversation

@daniellansun

Copy link
Copy Markdown
Contributor

@daniellansun
daniellansun requested a review from eric-milles July 19, 2026 14:05

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: 1997ba3 Previous: 5751802 Ratio
org.apache.groovy.bench.AckermannBench.groovy ( {"n":"5"} ) 0.12131036260988655 ms/op 0.063002179888076 ms/op 1.93
org.apache.groovy.bench.AckermannBench.groovy ( {"n":"6"} ) 0.5036411988301784 ms/op 0.2563429212462132 ms/op 1.96
org.apache.groovy.bench.AckermannBench.groovy ( {"n":"7"} ) 2.0957136879044524 ms/op 1.0421519312612693 ms/op 2.01
org.apache.groovy.bench.AckermannBench.java ( {"n":"5"} ) 0.052850842276925866 ms/op 0.03414830338586792 ms/op 1.55
org.apache.groovy.bench.AckermannBench.java ( {"n":"6"} ) 0.24027732541807212 ms/op 0.1468907822019508 ms/op 1.64
org.apache.groovy.bench.AckermannBench.java ( {"n":"7"} ) 1.1275067999913673 ms/op 0.6000802324887666 ms/op 1.88
org.apache.groovy.bench.AryBench.groovy ( {"n":"10"} ) 0.004216822044237626 ms/op 0.002724487871394762 ms/op 1.55
org.apache.groovy.bench.AryBench.groovy ( {"n":"100"} ) 0.01140493742684473 ms/op 0.006041998437183653 ms/op 1.89
org.apache.groovy.bench.AryBench.groovy ( {"n":"1000000"} ) 102.427999505 ms/op 64.73213189153225 ms/op 1.58
org.apache.groovy.bench.AryBench.groovyCS ( {"n":"10"} ) 0.00493862251339547 ms/op 0.0026779008198633244 ms/op 1.84
org.apache.groovy.bench.AryBench.groovyCS ( {"n":"100"} ) 0.012298189775068285 ms/op 0.007168356004693699 ms/op 1.72
org.apache.groovy.bench.AryBench.groovyCS ( {"n":"1000000"} ) 102.964045975 ms/op 67.03643774660364 ms/op 1.54
org.apache.groovy.bench.AryBench.java ( {"n":"10"} ) 0.007654466131786383 ms/op 0.0027453734564435116 ms/op 2.79
org.apache.groovy.bench.AryBench.java ( {"n":"100"} ) 0.015613147341510678 ms/op 0.006587041161005459 ms/op 2.37
org.apache.groovy.bench.AryBench.java ( {"n":"1000"} ) 0.08964707157742838 ms/op 0.039948105973112574 ms/op 2.24
org.apache.groovy.bench.AryBench.java ( {"n":"1000000"} ) 102.357096585 ms/op 66.1717264751613 ms/op 1.55
org.apache.groovy.bench.CalibrationBench.memoryPointerChase 1027.6709555341747 us/op 342.1568904021596 us/op 3.00
org.apache.groovy.bench.FiboBench.groovy ( {"n":"30"} ) 7.176965602319103 ms/op 3.6106976606232672 ms/op 1.99
org.apache.groovy.bench.FiboBench.groovy ( {"n":"31"} ) 11.58750264566474 ms/op 5.838830129704209 ms/op 1.98
org.apache.groovy.bench.FiboBench.groovy ( {"n":"32"} ) 18.765543449602266 ms/op 9.453265287038834 ms/op 1.99
org.apache.groovy.bench.FiboBench.groovy ( {"n":"33"} ) 30.311577281117145 ms/op 15.283808291302336 ms/op 1.98
org.apache.groovy.bench.FiboBench.groovy ( {"n":"34"} ) 49.029510046341464 ms/op 24.67889122305029 ms/op 1.99
org.apache.groovy.bench.FiboBench.java ( {"n":"30"} ) 3.5540120431257733 ms/op 1.8178108364396528 ms/op 1.96
org.apache.groovy.bench.FiboBench.java ( {"n":"31"} ) 5.477555015881352 ms/op 2.8379066725330597 ms/op 1.93
org.apache.groovy.bench.FiboBench.java ( {"n":"32"} ) 8.872497982122342 ms/op 4.629778610377975 ms/op 1.92
org.apache.groovy.bench.FiboBench.java ( {"n":"33"} ) 14.087807641477832 ms/op 7.456669660115338 ms/op 1.89
org.apache.groovy.bench.FiboBench.java ( {"n":"34"} ) 22.830152797621007 ms/op 12.483841293642394 ms/op 1.83
org.apache.groovy.bench.DynamicDispatchColdBench.closure_groovy ( {"n":"500"} ) 316671.80496 us/op 177069.90404000005 us/op 1.79
org.apache.groovy.bench.DynamicDispatchColdBench.closure_groovy ( {"n":"20000"} ) 349343.14268 us/op 190482.62348000004 us/op 1.83
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_groovy ( {"n":"500"} ) 325573.13951999997 us/op 181846.19404 us/op 1.79
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_groovy ( {"n":"20000"} ) 331844.55116000003 us/op 187327.21212 us/op 1.77
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_groovyCS ( {"n":"500"} ) 240023.73023999998 us/op 137238.73532 us/op 1.75
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_groovyCS ( {"n":"20000"} ) 244798.06400000007 us/op 137227.42260000005 us/op 1.78
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_groovyColdReflect ( {"n":"500"} ) 325083.44655999995 us/op 182911.54687999998 us/op 1.78
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_groovyColdReflect ( {"n":"20000"} ) 337318.57800000004 us/op 186284.11252 us/op 1.81
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_java ( {"n":"500"} ) 302.16056000000003 us/op 173.32467999999997 us/op 1.74
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicMono_java ( {"n":"20000"} ) 1130.9571600000002 us/op 618.23108 us/op 1.83
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicPoly_groovy ( {"n":"500"} ) 347656.09104 us/op 192484.77135999996 us/op 1.81
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicPoly_groovy ( {"n":"20000"} ) 410501.86084 us/op 227935.65111999997 us/op 1.80
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicPoly_groovyColdReflect ( {"n":"500"} ) 347594.31644 us/op 191972.97884000003 us/op 1.81
org.apache.groovy.bench.DynamicDispatchColdBench.dynamicPoly_groovyColdReflect ( {"n":"20000"} ) 411417.77176 us/op 226216.30228 us/op 1.82
org.apache.groovy.bench.DynamicDispatchColdBench.property_groovy ( {"n":"500"} ) 304456.96432 us/op 170105.97379999998 us/op 1.79
org.apache.groovy.bench.DynamicDispatchColdBench.property_groovy ( {"n":"20000"} ) 321728.8474 us/op 179869.95636000004 us/op 1.79
org.apache.groovy.bench.StaticMethodCallIndyColdBench.instanceSum_groovy ( {"n":"500"} ) 236633.32755 us/op 132744.62953750003 us/op 1.78
org.apache.groovy.bench.StaticMethodCallIndyColdBench.instanceSum_groovy ( {"n":"2000"} ) 237278.13451249996 us/op 132795.52525 us/op 1.79
org.apache.groovy.bench.StaticMethodCallIndyColdBench.instanceSum_groovy ( {"n":"20000"} ) 240357.21957500005 us/op 133433.3200125001 us/op 1.80
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_groovy ( {"n":"500"} ) 5299.582900000001 us/op 3074.26905 us/op 1.72
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_groovy ( {"n":"2000"} ) 5621.903062500002 us/op 3212.9942624999994 us/op 1.75
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_groovy ( {"n":"20000"} ) 7371.83115 us/op 4166.887087500001 us/op 1.77
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_groovyCS ( {"n":"500"} ) 1851.3242499999997 us/op 1027.2535375000002 us/op 1.80
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_groovyCS ( {"n":"2000"} ) 1943.0491374999997 us/op 1054.1093125000002 us/op 1.84
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_groovyCS ( {"n":"20000"} ) 2747.9182375000005 us/op 1527.7231 us/op 1.80
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_java ( {"n":"500"} ) 19.313099999999995 us/op 8.322725000000005 us/op 2.32
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_java ( {"n":"2000"} ) 53.31398749999998 us/op 22.34625 us/op 2.39
org.apache.groovy.bench.StaticMethodCallIndyColdBench.staticSum_java ( {"n":"20000"} ) 435.98687499999994 us/op 169.72167499999995 us/op 2.57

This comment was automatically generated by workflow using github-action-benchmark.

@codecov-commenter

codecov-commenter commented Jul 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 88.33333% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 69.2292%. Comparing base (cb27031) to head (1997ba3).

Files with missing lines Patch % Lines
...va/org/apache/groovy/parser/antlr4/AstBuilder.java 58.8235% 5 Missing and 2 partials ⚠️
Additional details and impacted files

Impacted file tree graph

@@                Coverage Diff                 @@
##               master      #2724        +/-   ##
==================================================
+ Coverage     69.2109%   69.2292%   +0.0182%     
- Complexity      34491      34513        +22     
==================================================
  Files            1539       1541         +2     
  Lines          129913     129938        +25     
  Branches        23669      23673         +4     
==================================================
+ Hits            89914      89955        +41     
+ Misses          31942      31929        -13     
+ Partials         8057       8054         -3     
Files with missing lines Coverage Δ
...antlr4/internal/AbstractFriendlyErrorStrategy.java 100.0000% <100.0000%> (ø)
...rser/antlr4/internal/DescriptiveErrorStrategy.java 100.0000% <100.0000%> (+37.8378%) ⬆️
...4/internal/RecoveringDescriptiveErrorStrategy.java 100.0000% <100.0000%> (ø)
...codehaus/groovy/control/CompilerConfiguration.java 72.8188% <100.0000%> (+0.1837%) ⬆️
...va/org/apache/groovy/parser/antlr4/AstBuilder.java 87.0913% <58.8235%> (+0.1998%) ⬆️

... and 7 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

JMH summary — classic (commit 2185ad0)

Speedup vs trailing 90-day baseline on gh-pages. Higher = faster.
1.00 = in line with history. Per-benchmark ratio, geomean within group.
Time-per-op units inverted so direction is consistent. The calibrated
column divides out this runner's speed vs the baseline hardware, as
measured by Groovy-independent pure-Java ruler benchmarks.

Group Speedup Calibrated n
bench 0.987 × 1.031 × 84
core 1.052 × 1.020 × 77
grails 1.113 × 1.122 × 80

Runner calibration (this run vs baseline hardware): bench 0.96× (26 rulers) · core-ag 0.95× (3 rulers) · core-hz 1.13× (3 rulers) · grails-ad 1.00× (3 rulers) · grails-ez 0.99× (3 rulers)

Baseline: dev/bench/jmh/<part>/classic/data.js on gh-pages, trailing 90 days. Daily dashboard · Per-suite raw data

@github-actions

github-actions Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

JMH summary — indy (commit 2185ad0)

Speedup vs trailing 90-day baseline on gh-pages. Higher = faster.
1.00 = in line with history. Per-benchmark ratio, geomean within group.
Time-per-op units inverted so direction is consistent. The calibrated
column divides out this runner's speed vs the baseline hardware, as
measured by Groovy-independent pure-Java ruler benchmarks.

Group Speedup Calibrated n
bench 0.989 × 0.978 × 84
core 4.000 × 3.177 × 77
grails 2.177 × 2.331 × 80

⚠️ Runner speed differs ≥15% from the historical baseline hardware for: core-hz. Raw speedups are not meaningful for those parts — use the calibrated column.

Runner calibration (this run vs baseline hardware): bench 1.00× (26 rulers) · core-ag 1.12× (3 rulers) · core-hz 1.43× (3 rulers) · grails-ad 0.94× (3 rulers) · grails-ez 0.93× (3 rulers)

Baseline: dev/bench/jmh/<part>/indy/data.js on gh-pages, trailing 90 days. Daily dashboard · Per-suite raw data

@sonarqubecloud

Copy link
Copy Markdown

@testlens-app

testlens-app Bot commented Jul 19, 2026

Copy link
Copy Markdown

✅ All tests passed ✅

🏷️ Commit: 1997ba3
▶️ Tests: 105354 executed
⚪️ Checks: 31/31 completed


Learn more about TestLens at testlens.app.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants