rokucommunity / rokucommunity/brighterscript

Flag max number of local variables

Open
#742 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
208
Forks
68
Avg merge
8h 39m
Merged PRs (30d)
39

Description

There seems to be a limit of 253 variables allowed in a function (including parameters). We should flag this.

image

Here's a piece of test code showing the issue
function testIf()
  var1 = 1
  var2 = 2
  var3 = 3
  var4 = 4
  var5 = 5
  var6 = 6
  var7 = 7
  var8 = 8
  var9 = 9
  var10 = 10
  var11 = 11
  var12 = 12
  var13 = 13
  var14 = 14
  var15 = 15
  var16 = 16
  var17 = 17
  var18 = 18
  var19 = 19
  var20 = 20
  var21 = 21
  var22 = 22
  var23 = 23
  var24 = 24
  var25 = 25
  var26 = 26
  var27 = 27
  var28 = 28
  var29 = 29
  var30 = 30
  var31 = 31
  var32 = 32
  var33 = 33
  var34 = 34
  var35 = 35
  var36 = 36
  var37 = 37
  var38 = 38
  var39 = 39
  var40 = 40
  var41 = 41
  var42 = 42
  var43 = 43
  var44 = 44
  var45 = 45
  var46 = 46
  var47 = 47
  var48 = 48
  var49 = 49
  var50 = 50
  var51 = 51
  var52 = 52
  var53 = 53
  var54 = 54
  var55 = 55
  var56 = 56
  var57 = 57
  var58 = 58
  var59 = 59
  var60 = 60
  var61 = 61
  var62 = 62
  var63 = 63
  var64 = 64
  var65 = 65
  var66 = 66
  var67 = 67
  var68 = 68
  var69 = 69
  var70 = 70
  var71 = 71
  var72 = 72
  var73 = 73
  var74 = 74
  var75 = 75
  var76 = 76
  var77 = 77
  var78 = 78
  var79 = 79
  var80 = 80
  var81 = 81
  var82 = 82
  var83 = 83
  var84 = 84
  var85 = 85
  var86 = 86
  var87 = 87
  var88 = 88
  var89 = 89
  var90 = 90
  var91 = 91
  var92 = 92
  var93 = 93
  var94 = 94
  var95 = 95
  var96 = 96
  var97 = 97
  var98 = 98
  var99 = 99
  var100 = 100
  var101 = 101
  var102 = 102
  var103 = 103
  var104 = 104
  var105 = 105
  var106 = 106
  var107 = 107
  var108 = 108
  var109 = 109
  var110 = 110
  var111 = 111
  var112 = 112
  var113 = 113
  var114 = 114
  var115 = 115
  var116 = 116
  var117 = 117
  var118 = 118
  var119 = 119
  var120 = 120
  var121 = 121
  var122 = 122
  var123 = 123
  var124 = 124
  var125 = 125
  var126 = 126
  var127 = 127
  var128 = 128
  var129 = 129
  var130 = 130
  var131 = 131
  var132 = 132
  var133 = 133
  var134 = 134
  var135 = 135
  var136 = 136
  var137 = 137
  var138 = 138
  var139 = 139
  var140 = 140
  var141 = 141
  var142 = 142
  var143 = 143
  var144 = 144
  var145 = 145
  var146 = 146
  var147 = 147
  var148 = 148
  var149 = 149
  var150 = 150
  var151 = 151
  var152 = 152
  var153 = 153
  var154 = 154
  var155 = 155
  var156 = 156
  var157 = 157
  var158 = 158
  var159 = 159
  var160 = 160
  var161 = 161
  var162 = 162
  var163 = 163
  var164 = 164
  var165 = 165
  var166 = 166
  var167 = 167
  var168 = 168
  var169 = 169
  var170 = 170
  var171 = 171
  var172 = 172
  var173 = 173
  var174 = 174
  var175 = 175
  var176 = 176
  var177 = 177
  var178 = 178
  var179 = 179
  var180 = 180
  var181 = 181
  var182 = 182
  var183 = 183
  var184 = 184
  var185 = 185
  var186 = 186
  var187 = 187
  var188 = 188
  var189 = 189
  var190 = 190
  var191 = 191
  var192 = 192
  var193 = 193
  var194 = 194
  var195 = 195
  var196 = 196
  var197 = 197
  var198 = 198
  var199 = 199
  var200 = 200
  var201 = 201
  var202 = 202
  var203 = 203
  var204 = 204
  var205 = 205
  var206 = 206
  var207 = 207
  var208 = 208
  var209 = 209
  var210 = 210
  var211 = 211
  var212 = 212
  var213 = 213
  var214 = 214
  var215 = 215
  var216 = 216
  var217 = 217
  var218 = 218
  var219 = 219
  var220 = 220
  var221 = 221
  var222 = 222
  var223 = 223
  var224 = 224
  var225 = 225
  var226 = 226
  var227 = 227
  var228 = 228
  var229 = 229
  var230 = 230
  var231 = 231
  var232 = 232
  var233 = 233
  var234 = 234
  var235 = 235
  var236 = 236
  var237 = 237
  var238 = 238
  var239 = 239
  var240 = 240
  var241 = 241
  var242 = 242
  var243 = 243
  var244 = 244
  var245 = 245
  var246 = 246
  var247 = 247
  var248 = 248
  var249 = 249
  var250 = 250
  var251 = 251
  var252 = 252
  var253 = 253
  var254 = 254
end function

Variable names are hoisted into the symbol table at compile-time, so even variables defined in will-never-be-executed if blocks will count against this limit.
image

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with the BrightScript function shown in the report, then trace the compiler's symbol-table handling and diagnostic path. Done means functions exceeding 253 variables, including parameters and variables in unreachable branches, produce a clear compiler diagnostic instead of compiling silently.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
compilers
Issue type
Feature
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.