strict_on_arguments blocking normalization
Open
component/normalizer
- Dominant language
- F*
- Stars
- 3.1k
- Forks
- 266
- Avg merge
- 21h 1m
- Merged PRs (30d)
- 54
Description
Another issue with the normalizer being stuck on `strict_on_arguments` while it shouldn't:
```
[@(strict_on_arguments [1])]
let f1 (x y : unit) = ()
let f2 = f1 ()
let x = f2 () // Reduces to [f1 () ()] instead of [()]
```
Note that `x` reduces correctly if we define:
```
let f2 y = f1 () y
```
Contributor guide
Research direction
Start by tracing the normalizer behavior for strict_on_arguments using the minimal f1, f2, and x example in the issue. Compare it with the wrapper form that reduces correctly, and verify that the original form reduces to the expected unit value.
Written by the indexing model from the issue text.
Assessment
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100