assert 11 === var d, z, a=3, b = a,
  c = 1,
  e,
  g = 1+7+3;
assert 3 === const f = 3;

assert 3===a;
assert a===b;
assert a!=c;
assert 1===c;
assert undefined===d;
assert d===e;
assert 3 === f;

//const fail

// must syntax err:
//var w, y,, x
 // must throw (var already defined):
//var a

assert 8 === scope {var a = 7; assert 10 === a + b; a} + 1;

assert scope{5} === scope scope {
  scope {
    assert 3 === a;
    var u = 1+2+3-1;
  };
};

assert 'undefined' === typename u;

scope {
  var a2 = 'aaa', b2 = 'aaa', c2 = 'aaa',
   d2 = ('aaa','aaa','aaa','aaa','aaa');
  // just checking the interning stats

   assert 'string' === typename a2;
   assert 'string' === typename b2;
   assert 'string' === typename c2;
   assert undefined === unset a2, b2;
   assert 'undefined' === typename a2;
   assert 'undefined' === typename b2;
   assert 'string' === typename c2;

  ;;
};

var zz = scope {
  var z = "the end";
  //var z; // must throw (z already defined)
  //"abc";
};

//assert 'the end' === zz;
//zz;
