Commit ffd100c
fix: prototype parsing, signature defaults, and utf8::upgrade regression
- isNamedUnaryPrototype: only match exactly "$" or "_" (length 1).
Prototypes like ($;), (_;), ($;$) are list operators, not named unary.
Fixes comp/proto.t tests 208-209 regression.
- _ prototype: allow zero arguments and default to $_ when no arg given.
Fixes comp/uproto.t (0/32 -> 29/32).
- SignatureParser: parse default values at comma precedence instead of
named-unary precedence. Allows ternary/comparison/logical ops in
signature defaults like ($c = $x > 0 ? foo() : "").
Fixes op/signatures.t (0/0 -> 643/908).
- utf8::upgrade: remove ($) prototype to match Perl 5 (no prototype).
Without this, "utf8::upgrade my $x = ..." parsed incorrectly as
named unary, taking only "my $x" as argument.
Fixes op/index.t test 122.
Generated with [Devin](https://cli.devin.ai/docs)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>1 parent 3a0d8d5 commit ffd100c
5 files changed
Lines changed: 23 additions & 17 deletions
File tree
- src/main/java/org/perlonjava
- backend/bytecode
- core
- frontend/parser
- runtime/perlmodule
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2066 | 2066 | | |
2067 | 2067 | | |
2068 | 2068 | | |
2069 | | - | |
2070 | | - | |
2071 | | - | |
| 2069 | + | |
| 2070 | + | |
| 2071 | + | |
2072 | 2072 | | |
2073 | 2073 | | |
2074 | 2074 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| |||
Lines changed: 14 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
92 | | - | |
| 92 | + | |
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
96 | 96 | | |
97 | | - | |
| 97 | + | |
98 | 98 | | |
| 99 | + | |
| 100 | + | |
99 | 101 | | |
100 | 102 | | |
101 | | - | |
| 103 | + | |
102 | 104 | | |
103 | 105 | | |
104 | | - | |
| 106 | + | |
105 | 107 | | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
| 108 | + | |
111 | 109 | | |
112 | 110 | | |
113 | 111 | | |
| |||
168 | 166 | | |
169 | 167 | | |
170 | 168 | | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
171 | 176 | | |
172 | 177 | | |
173 | 178 | | |
| |||
Lines changed: 4 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
339 | 339 | | |
340 | 340 | | |
341 | 341 | | |
342 | | - | |
343 | | - | |
344 | | - | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
345 | 346 | | |
346 | 347 | | |
347 | 348 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
39 | 39 | | |
40 | 40 | | |
41 | 41 | | |
42 | | - | |
| 42 | + | |
43 | 43 | | |
44 | 44 | | |
45 | 45 | | |
| |||
0 commit comments