Commit ed5162f
authored
fix: std.parseInt accepts + prefix like go-jsonnet (#1030)
## Summary
This PR updates `std.parseInt` to accept a leading `+` sign, matching
go-jsonnet behavior for decimal integer parsing.
## Behavior comparison
Local reference versions used:
- C++ jsonnet `v0.22.0`
- go-jsonnet `v0.21.0` and `v0.22.0`
- jrsonnet `0.5.0-pre99`
| Expression | C++ jsonnet | go-jsonnet | jrsonnet | sjsonnet before |
sjsonnet after |
| --- | --- | --- | --- | --- | --- |
| `std.parseInt("+1")` | error | `1` | error | error | `1` |
| `std.parseInt("+0")` | error | `0` | error | error | `0` |
| `std.parseInt("+01")` | error | `1` | error | error | `1` |
| `std.parseInt("+")` | error | error | error | error | error |
| `std.parseInt("+-1")` | error | error | error | error | error |
| `std.parseInt("-123")` | `-123` | `-123` | `-123` | `-123` | `-123` |
| `std.parseInt("123")` | `123` | `123` | `123` | `123` | `123` |
The intentional compatibility target here is go-jsonnet for
plus-prefixed decimal input. C++ jsonnet and jrsonnet currently reject
the leading `+` cases above.
## Changes
- `StringModule.scala`: handle a leading `+` sign in `std.parseInt`
- `parseInt_positive_sign.jsonnet`: golden regression coverage for
accepted `+` inputs and unchanged positive/negative baselines
## Tests
```bash
rtk ./mill 'sjsonnet.jvm[3.3.7]'.test.testOnly sjsonnet.FileTests
rtk git diff --check upstream/master...HEAD
```
Both passed locally after rebasing onto `upstream/master`.1 parent 442704e commit ed5162f
3 files changed
Lines changed: 12 additions & 1 deletion
File tree
- sjsonnet
- src/sjsonnet/stdlib
- test/resources/new_test_suite
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1013 | 1013 | | |
1014 | 1014 | | |
1015 | 1015 | | |
1016 | | - | |
| 1016 | + | |
1017 | 1017 | | |
1018 | 1018 | | |
1019 | 1019 | | |
1020 | 1020 | | |
1021 | 1021 | | |
| 1022 | + | |
| 1023 | + | |
1022 | 1024 | | |
1023 | 1025 | | |
1024 | 1026 | | |
| |||
Lines changed: 8 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
Lines changed: 1 addition & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
0 commit comments