TypeError (undefined): blah is not a function. (In 'blah()', 'blah' is 1)
TypeError (undefined): 1 is not a constructor (evaluating 'new blah()')
TypeError (undefined): obj.blah is not a function. (In 'obj.blah()', 'obj.blah' is 1)
TypeError (undefined): 1 is not a constructor (evaluating 'new obj.blah()')
TypeError (undefined): null is not a function. (In 'null()', 'null' is null)
TypeError (undefined): null is not a constructor (evaluating 'new null()')
TypeError (undefined): 1 is not a function. (In '1()', '1' is 1)
TypeError (undefined): 1 is not a constructor (evaluating 'new 1()')
TypeError (undefined): f is not a function. (In 'f()', 'f' is 1)
TypeError (undefined): obj[0] is not a function. (In 'obj[0]()', 'obj[0]' is null)
TypeError (undefined): null is not a constructor (evaluating 'new obj[0]()')
TypeError (undefined): obj[1] is not a function. (In 'obj[1]()', 'obj[1]' is 1)
TypeError (undefined): 1 is not a constructor (evaluating 'new obj[1]()')
TypeError (undefined): null is not an object (evaluating 'n[1]')
TypeError (undefined): null is not an object (evaluating 'new n[1]')
TypeError (undefined): null is not an object (evaluating 'n.prop')
TypeError (undefined): null is not an object (evaluating 'new n.prop')
TypeError (undefined): n is not a function. (In 'n()', 'n' is null)
TypeError (undefined): null is not a constructor (evaluating 'new n()')


--- Test case: implicit global, do delete: false ---

safeCall(function(){g0();});
ReferenceError (undefined): Can't find variable: g0

safeCall(function(){g1=undefined;g1();});
TypeError (undefined): g1 is not a function. (In 'g1()', 'g1' is undefined)

safeCall(function(){g2=null;g2();});
TypeError (undefined): g2 is not a function. (In 'g2()', 'g2' is null)

safeCall(function(){g3=1;g3();});
TypeError (undefined): g3 is not a function. (In 'g3()', 'g3' is 1)

safeCall(function(){g4={};g4();});
TypeError (undefined): g4 is not a function. (In 'g4()', 'g4' is an instance of Object)


--- Test case: implicit global, do delete: true ---

safeCall(function(){g6=undefined;delete g6;g6();});
ReferenceError (undefined): Can't find variable: g6

safeCall(function(){g7=null;delete g7;g7();});
ReferenceError (undefined): Can't find variable: g7

safeCall(function(){g8=1;delete g8;g8();});
ReferenceError (undefined): Can't find variable: g8

safeCall(function(){g9={};delete g9;g9();});
ReferenceError (undefined): Can't find variable: g9


--- Test case: global using window, do delete: false ---

Only valid in IE:
safeCall(function(){window.g10();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g11=undefined;window.g11();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g12=null;window.g12();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g13=1;window.g13();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g14={};window.g14();});
ReferenceError (undefined): Can't find variable: window


--- Test case: global using window, do delete: true ---

Only valid in IE:
safeCall(function(){window.g16=undefined;delete window.g16;window.g16();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g17=null;delete window.g17;window.g17();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g18=1;delete window.g18;window.g18();});
ReferenceError (undefined): Can't find variable: window

Only valid in IE:
safeCall(function(){window.g19={};delete window.g19;window.g19();});
ReferenceError (undefined): Can't find variable: window


--- Test case: global using this, do delete: false ---

INCORRECT in JC all versions:
safeCall(function(){this.g20();});
TypeError (undefined): this.g20 is not a function. (In 'this.g20()', 'this.g20' is undefined)

safeCall(function(){this.g21=undefined;this.g21();});
TypeError (undefined): this.g21 is not a function. (In 'this.g21()', 'this.g21' is undefined)

safeCall(function(){this.g22=null;this.g22();});
TypeError (undefined): this.g22 is not a function. (In 'this.g22()', 'this.g22' is null)

safeCall(function(){this.g23=1;this.g23();});
TypeError (undefined): this.g23 is not a function. (In 'this.g23()', 'this.g23' is 1)

safeCall(function(){this.g24={};this.g24();});
TypeError (undefined): this.g24 is not a function. (In 'this.g24()', 'this.g24' is an instance of Object)


--- Test case: global using this, do delete: true ---

INCORRECT in JC all versions:
safeCall(function(){this.g26=undefined;delete this.g26;this.g26();});
TypeError (undefined): this.g26 is not a function. (In 'this.g26()', 'this.g26' is undefined)

INCORRECT in JC all versions:
safeCall(function(){this.g27=null;delete this.g27;this.g27();});
TypeError (undefined): this.g27 is not a function. (In 'this.g27()', 'this.g27' is undefined)

INCORRECT in JC all versions:
safeCall(function(){this.g28=1;delete this.g28;this.g28();});
TypeError (undefined): this.g28 is not a function. (In 'this.g28()', 'this.g28' is undefined)

INCORRECT in JC all versions:
safeCall(function(){this.g29={};delete this.g29;this.g29();});
TypeError (undefined): this.g29 is not a function. (In 'this.g29()', 'this.g29' is undefined)


--- Test case: local, do delete: false ---

safeCall(function(){var v;v();});
TypeError (undefined): v is not a function. (In 'v()', 'v' is undefined)

safeCall(function(){var v=undefined;v();});
TypeError (undefined): v is not a function. (In 'v()', 'v' is undefined)

safeCall(function(){var v=null;v();});
TypeError (undefined): v is not a function. (In 'v()', 'v' is null)

safeCall(function(){var v=1;v();});
TypeError (undefined): v is not a function. (In 'v()', 'v' is 1)

safeCall(function(){var v={};v();});
TypeError (undefined): v is not a function. (In 'v()', 'v' is an instance of Object)


--- Test case: object, do delete: false ---

safeCall(function(){var o={};o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined)

safeCall(function(){var o={p:undefined};o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined)

safeCall(function(){var o={p:null};o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is null)

safeCall(function(){var o={p:1};o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is 1)

safeCall(function(){var o={p:{}};o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is an instance of Object)


--- Test case: object, do delete: true ---

safeCall(function(){var o={p:undefined};delete o.p;o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined)

safeCall(function(){var o={p:null};delete o.p;o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined)

safeCall(function(){var o={p:1};delete o.p;o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined)

safeCall(function(){var o={p:{}};delete o.p;o.p();});
TypeError (undefined): o.p is not a function. (In 'o.p()', 'o.p' is undefined)


--- Test case: array initialized, do delete: false ---

safeCall(function(){var a=[];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

INCORRECT in compat modes:
safeCall(function(){var a=[undefined];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[null];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is null)

safeCall(function(){var a=[1];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is 1)

safeCall(function(){var a=[{}];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is an instance of Object)


--- Test case: array initialized, do delete: true ---

safeCall(function(){var a=[undefined];delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[null];delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[1];delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[{}];delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)


--- Test case: array assigned, do delete: false ---

safeCall(function(){var a=[];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[];a[0]=undefined;a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[];a[0]=null;a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is null)

safeCall(function(){var a=[];a[0]=1;a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is 1)

safeCall(function(){var a=[];a[0]={};a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is an instance of Object)


--- Test case: array assigned, do delete: true ---

safeCall(function(){var a=[];a[0]=undefined;delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[];a[0]=null;delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[];a[0]=1;delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)

safeCall(function(){var a=[];a[0]={};delete a[0];a[0]();});
TypeError (undefined): a[0] is not a function. (In 'a[0]()', 'a[0]' is undefined)


