 I.use "f:/node-utils/src/utils:   dict, assert"
 
 il = interlang = exports
-il.toString = () -> 'interlang'
+il.toString  = () -> 'interlang'
 
 #true == 1
 #false==0
 il.unknown = -1
 
-il.element = (exp) ->
+il.element  = (exp) ->
   if (exp instanceof il.Element) then exp
   else
     maker = type_map[typeof(exp)]
     if maker? then maker(exp)
     else throw new dao.CompileTypeError(exp)
 
-no_side_effects = (exp) ->
-  exp.side_effects = ( ) ->  false
+no_side_effects  = (exp) ->
+  exp.side_effects  = ( ) ->  false
   exp
 
-optimize_args = (args, env, compiler) ->
+optimize_args  = (args, env, compiler) ->
   result = []
   for arg in args
     arg = arg.optimize(env, compiler)


il.RaiseException = vop2('RaiseException', 1, 'throw new %s', true)

QuoteItem_to_code = (compiler) ->  "#{@args[0]}"
il.QuoteItem = vop('QuoteItem', 1, QuoteItem_to_code, false)

il.UnquoteSplice = vop('UnquoteSplice', 1, "UnquoteSplice(%s)", false)

il.MakeTuple = vop('MakeTuple', 1, '(%s)', false)

il.Cle = vop('Cle', 3, '(%s) <= (%s) <= (%s)', false)

il.Cge = vop('Cge', 3, '(%s) >= (%s) >= (%s)', false)

il.failcont = new il.SolverVar('fail_cont')

il.SetFailCont = (cont) ->  new il.Assign(failcont, cont)

append_failcont = (compiler, exps...) ->
  v =  compiler.new_var(ConstLocalVar('v'))
  fc = compiler.new_var(ConstLocalVar('fc'))
  return Begin(

    has_side_effects: has_side_effects
  return Vop

il.AddAssign = (var1, value) ->  Assign(var1, BinaryOperationApply(add, [var1, value]))

Call_to_code  = (compiler) ->  "(#{@args[0].to_code(compiler)})(#{join(', ', [x.to_code(compiler) for x in @args[1..]])})"
il.Call = vop('Call', -1, Call_to_code, true)

il.Attr = vop('Attr', 2, '%s.%s', false)

AttrCall_to_code  = (compiler) ->  "#{@args[0].to_code(compiler)}(#{join(', ', [x.to_code(compiler) for x in @args[1..]])})"
il.AttrCall = vop('AttrCall', -1, AttrCall_to_code, true)

il.SetItem = vop2('SetItem', 3, '(%s)[%s] = %s', true)
