Fixing literals that should be statements, and adding failed compilation tests.

This commit is contained in:
Jeremy Ashkenas
2010-12-23 09:33:12 -08:00
parent b56b08387d
commit 8fd78d3819
3 changed files with 31 additions and 15 deletions

View File

@@ -271,22 +271,26 @@ exports.Literal = class Literal extends Base
constructor: (@value) ->
makeReturn: ->
if @jumps() then this else new Return this
new Return this
isAssignable: ->
IDENTIFIER.test @value
isStatement: ->
@value in ['break', 'continue', 'debugger']
isComplex: NO
assigns: (name) ->
name is @value
jumps: (o) ->
return no unless @value in ['break', 'continue', 'debugger']
return no unless @isStatement()
if not (o and (o.loop or o.block and (@value isnt 'continue'))) then this else no
compile: ->
if @value.reserved then "\"#{@value}\"" else @value
compileNode: (o) ->
code = if @value.reserved then "\"#{@value}\"" else @value
if @isStatement() then "#{@tab}#{code};" else code
toString: ->
' "' + @value + '"'