rokucommunity / rokucommunity/brighterscript
Flag max number of if statements per function
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 208
- Forks
- 68
- Avg merge
- 8h 39m
- Merged PRs (30d)
- 39
Description
There's a maximum number of if/elseif items per if statement. This github repo mentions that it's 279, but from our internal testing, the number has increased slightly to 307.

Here's a piece of test code showing the issue
function testIf()
if false
'uncomment this line to reproduce the issue
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else
return true
end if
if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else
return true
end if
if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else if false
else
return true
end if
end function
And then, interestingly, any additional if statements in the same function are restricted to 52 if/elseif/else sections. Additional quirks: if you start nesting large if blocks inside of large if blocks, the number changes again, sometimes the outer if limit restricting the inner if limit.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the supplied testIf reproducer and verify the reported limits for large if/elseif chains, additional if statements, and nesting. Trace the relevant compiler or diagnostic entry point, then add coverage showing that the applicable limit is reported consistently and that the reproducer's invalid cases are flagged.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100