mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-04 05:33:50 +01:00 
			
		
		
		
	The RegExp named groups specification has changed to not throw
errors in certain cases. This patch updates the test262 tests to match
the new specification, and throws in an additional test that verifies
the interaction between named group syntax and other replacement.
The tests pass on a version of V8 which implements the new semantics.
92ceba518c
		
	
			
		
			
				
	
	
		
			25 lines
		
	
	
		
			900 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			900 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright 2017 the V8 project authors. All rights reserved.
 | 
						|
// This code is governed by the BSD license found in the LICENSE file.
 | 
						|
 | 
						|
/*---
 | 
						|
description: If the group doesn't exist, replace with the empty string
 | 
						|
esid: sec-getsubstitution
 | 
						|
features: [regexp-named-groups]
 | 
						|
---*/
 | 
						|
 | 
						|
let source = "(?<fst>.)(?<snd>.)|(?<thd>x)";
 | 
						|
for (let flags of ["", "u"]) {
 | 
						|
  let re = new RegExp(source, flags);
 | 
						|
  assert.sameValue("cd", "abcd".replace(re, "$<42$1>"));
 | 
						|
  assert.sameValue("cd", "abcd".replace(re, "$<fth>"));
 | 
						|
  assert.sameValue("cd", "abcd".replace(re, "$<$1>"));
 | 
						|
  assert.sameValue("cd", "abcd".replace(re, "$<>"));
 | 
						|
}
 | 
						|
for (let flags of ["g", "gu"]) {
 | 
						|
  let re = new RegExp(source, flags);
 | 
						|
  assert.sameValue("", "abcd".replace(re, "$<42$1>"));
 | 
						|
  assert.sameValue("", "abcd".replace(re, "$<fth>"));
 | 
						|
  assert.sameValue("", "abcd".replace(re, "$<$1>"));
 | 
						|
  assert.sameValue("", "abcd".replace(re, "$<>"));
 | 
						|
}
 |