mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-03 21:24:30 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 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.
 | 
						|
/*---
 | 
						|
es6id: 14.1.6
 | 
						|
description: >
 | 
						|
  Default parameters' effect on function length
 | 
						|
info: |
 | 
						|
  Function length is counted by the non initialized parameters in the left.
 | 
						|
 | 
						|
  9.2.4 FunctionInitialize (F, kind, ParameterList, Body, Scope)
 | 
						|
 | 
						|
  [...]
 | 
						|
  2. Let len be the ExpectedArgumentCount of ParameterList.
 | 
						|
  3. Perform ! DefinePropertyOrThrow(F, "length", PropertyDescriptor{[[Value]]:
 | 
						|
     len, [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: true}).
 | 
						|
  [...]
 | 
						|
 | 
						|
  FormalsList : FormalParameter
 | 
						|
 | 
						|
    1. If HasInitializer of FormalParameter is true return 0
 | 
						|
    2. Return 1.
 | 
						|
 | 
						|
  FormalsList : FormalsList , FormalParameter
 | 
						|
 | 
						|
    1. Let count be the ExpectedArgumentCount of FormalsList.
 | 
						|
    2. If HasInitializer of FormalsList is true or HasInitializer of
 | 
						|
    FormalParameter is true, return count.
 | 
						|
    3. Return count+1.
 | 
						|
features: [default-parameters]
 | 
						|
includes: [propertyHelper.js]
 | 
						|
---*/
 | 
						|
 | 
						|
var m1 = class { m(x = 42) {} }.prototype.m;
 | 
						|
 | 
						|
assert.sameValue(m1.length, 0, 'formalslist: x = 42');
 | 
						|
verifyNotEnumerable(m1, 'length');
 | 
						|
verifyNotWritable(m1, 'length');
 | 
						|
verifyConfigurable(m1, 'length');
 | 
						|
 | 
						|
var m2 = class { m(x = 42, y) {} }.prototype.m;
 | 
						|
 | 
						|
assert.sameValue(m2.length, 0, 'formalslist: x = 42, y');
 | 
						|
verifyNotEnumerable(m2, 'length');
 | 
						|
verifyNotWritable(m2, 'length');
 | 
						|
verifyConfigurable(m2, 'length');
 | 
						|
 | 
						|
var m3 = class { m(x, y = 42) {} }.prototype.m;
 | 
						|
 | 
						|
assert.sameValue(m3.length, 1, 'formalslist: x, y = 42');
 | 
						|
verifyNotEnumerable(m3, 'length');
 | 
						|
verifyNotWritable(m3, 'length');
 | 
						|
verifyConfigurable(m3, 'length');
 | 
						|
 | 
						|
var m4 = class { m(x, y = 42, z) {} }.prototype.m;
 | 
						|
 | 
						|
assert.sameValue(m4.length, 1, 'formalslist: x, y = 42, z');
 | 
						|
verifyNotEnumerable(m4, 'length');
 | 
						|
verifyNotWritable(m4, 'length');
 | 
						|
verifyConfigurable(m4, 'length');
 |