regress-131964.js (2571B)
1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 /* 7 * 8 * Date: 19 Mar 2002 9 * SUMMARY: Function declarations in global or function scope are {DontDelete}. 10 * Function declarations in eval scope are not {DontDelete}. 11 * 12 * See http://bugzilla.mozilla.org/show_bug.cgi?id=131964 13 * 14 */ 15 //----------------------------------------------------------------------------- 16 var UBound = 0; 17 var BUGNUMBER = 131964; 18 var summary = 'Functions defined in global or function scope are {DontDelete}'; 19 var status = ''; 20 var statusitems = []; 21 var actual = ''; 22 var actualvalues = []; 23 var expect= ''; 24 var expectedvalues = []; 25 26 27 status = inSection(1); 28 function f() 29 { 30 return 'f lives!'; 31 } 32 delete f; 33 34 try 35 { 36 actual = f(); 37 } 38 catch(e) 39 { 40 actual = 'f was deleted'; 41 } 42 43 expect = 'f lives!'; 44 addThis(); 45 46 47 48 /* 49 * Try the same test in function scope - 50 */ 51 status = inSection(2); 52 function g() 53 { 54 function f() 55 { 56 return 'f lives!'; 57 } 58 delete f; 59 60 try 61 { 62 actual = f(); 63 } 64 catch(e) 65 { 66 actual = 'f was deleted'; 67 } 68 69 expect = 'f lives!'; 70 addThis(); 71 } 72 g(); 73 74 75 76 /* 77 * Try the same test in eval scope - here we EXPECT the function to be deleted (?) 78 */ 79 status = inSection(3); 80 var s = ''; 81 s += 'function h()'; 82 s += '{ '; 83 s += ' return "h lives!";'; 84 s += '}'; 85 s += 'delete h;'; 86 87 s += 'try'; 88 s += '{'; 89 s += ' actual = h();'; 90 s += '}'; 91 s += 'catch(e)'; 92 s += '{'; 93 s += ' actual = "h was deleted";'; 94 s += '}'; 95 96 s += 'expect = "h was deleted";'; 97 s += 'addThis();'; 98 eval(s); 99 100 101 /* 102 * Define the function in eval scope, but delete it in global scope - 103 */ 104 status = inSection(4); 105 s = ''; 106 s += 'function k()'; 107 s += '{ '; 108 s += ' return "k lives!";'; 109 s += '}'; 110 eval(s); 111 112 delete k; 113 114 try 115 { 116 actual = k(); 117 } 118 catch(e) 119 { 120 actual = 'k was deleted'; 121 } 122 123 expect = 'k was deleted'; 124 addThis(); 125 126 127 128 129 //----------------------------------------------------------------------------- 130 test(); 131 //----------------------------------------------------------------------------- 132 133 134 135 function wasDeleted(functionName) 136 { 137 return functionName + ' was deleted...'; 138 } 139 140 141 function addThis() 142 { 143 statusitems[UBound] = status; 144 actualvalues[UBound] = actual; 145 expectedvalues[UBound] = expect; 146 UBound++; 147 } 148 149 150 function test() 151 { 152 printBugNumber(BUGNUMBER); 153 printStatus(summary); 154 155 for (var i=0; i<UBound; i++) 156 { 157 reportCompare(expectedvalues[i], actualvalues[i], statusitems[i]); 158 } 159 }