javascript 0.3.0

A JavaScript engine implementation in Rust
Documentation
"use strict";


function assert(mustBeTrue, message) {
    if (!mustBeTrue) {
        throw new Error(message || 'Assertion failed');
    }
}

{
    console.log('==== test S12.6.4_A7_T2 for-in ====');

    // Properties of the object being enumerated may be deleted during enumeration
    // Checking "for (var VariableDeclarationNoIn in Expression) Statement" case

    var __obj, __accum;

    __obj = Object.create(null);
    __obj.aa = 1;
    __obj.ba = 2;
    __obj.ca = 3;

    __accum="";

    for (var __key in __obj){
        erasator_T_1000(__obj,"b");
        __accum+=(__key+__obj[__key]);
    }

    assert( __accum === "aa1ca3" || __accum === "ca3aa1", "Unexpected value: '" + __accum + "'" );

    // erasator is the hash map terminator
    function erasator_T_1000(hash_map, charactr){
        for (var key in hash_map){
            if (key.indexOf(charactr)===0) {
                delete hash_map[key];
            };
        }
    }
}