Skip to content

Commit 3db8cad

Browse files
committed
Unroll sequences (a=1, b=2, c=3;).
1 parent afba9ca commit 3db8cad

File tree

1 file changed

+25
-6
lines changed

1 file changed

+25
-6
lines changed

src/JSLint.coffee

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,24 @@ walk = (ast) ->
172172
ast[2]
173173
]
174174
else if type is 'block'
175+
unrollSeqs = (ast, seqs = []) ->
176+
if ast[0] isnt 'seq'
177+
throw "INVALID!!"
178+
seqs.push ast[1]
179+
if ast[2][0] is 'seq'
180+
unrollSeqs ast[2], seqs
181+
else
182+
seqs.push ast[2]
183+
return seqs
184+
185+
if ast[1].length
186+
for i in [ast[1].length-1..0]
187+
if ast[1][i][0] is 'stat' and ast[1][i][1][0] is 'seq'
188+
seqs = unrollSeqs ast[1][i][1]
189+
stats = []
190+
for seq in seqs
191+
stats.push ['stat',seq]
192+
ast[1].splice(i,1,stats...)
175193
for ast2, i in ast[1]
176194
ast[1][i] = walk ast2
177195
else if type is 'function'
@@ -288,12 +306,13 @@ unless ok
288306
else
289307
out = {errors:[]}
290308
for error in result.errors
291-
out.errors.push
292-
raw:error.raw
293-
reason:error.reason
294-
line:error.line
295-
character:error.character
296-
evidence:error.evidence
309+
if error?
310+
out.errors.push
311+
raw:error.raw
312+
reason:error.reason
313+
line:error.line
314+
character:error.character
315+
evidence:error.evidence
297316
console.error JSON.stringify out
298317
process.exit 1
299318
else

0 commit comments

Comments
 (0)