mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-04 05:33:50 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright (C) 2016 the V8 project authors. All rights reserved.
 | 
						|
// This code is governed by the BSD license found in the LICENSE file.
 | 
						|
/*---
 | 
						|
esid: sec-globaldeclarationinstantiation
 | 
						|
es6id: 15.1.8
 | 
						|
description: >
 | 
						|
  Declaration of variable when there is no corresponding global property and
 | 
						|
  the global object is non-extensible
 | 
						|
info: |
 | 
						|
  [...]
 | 
						|
  11. Let declaredVarNames be a new empty List.
 | 
						|
  12. For each d in varDeclarations, do
 | 
						|
      a. If d is a VariableDeclaration or a ForBinding, then
 | 
						|
         i. For each String vn in the BoundNames of d, do
 | 
						|
            1. If vn is not an element of declaredFunctionNames, then
 | 
						|
               a. Let vnDefinable be ? envRec.CanDeclareGlobalVar(vn).
 | 
						|
               b. If vnDefinable is false, throw a TypeError exception.
 | 
						|
               c. If vn is not an element of declaredVarNames, then
 | 
						|
                  i. Append vn to declaredVarNames.
 | 
						|
 | 
						|
  8.1.1.4.15 CanDeclareGlobalVar
 | 
						|
 | 
						|
  1. Let envRec be the global Environment Record for which the method was
 | 
						|
     invoked.
 | 
						|
  2. Let ObjRec be envRec.[[ObjectRecord]].
 | 
						|
  3. Let globalObject be the binding object for ObjRec.
 | 
						|
  4. Let hasProperty be ? HasOwnProperty(globalObject, N).
 | 
						|
  5. If hasProperty is true, return true.
 | 
						|
  6. Return ? IsExtensible(globalObject). 
 | 
						|
---*/
 | 
						|
 | 
						|
var executed = false;
 | 
						|
 | 
						|
Object.preventExtensions(this);
 | 
						|
 | 
						|
assert.throws(TypeError, function() {
 | 
						|
  $262.evalScript('executed = true; var test262;');
 | 
						|
});
 | 
						|
 | 
						|
assert.sameValue(executed, false);
 |