mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-04 05:33:50 +01:00 
			
		
		
		
	As per the discussion in https://github.com/tc39/proposal-temporal/issues/2379#issuecomment-1248557100 and the PR https://github.com/tc39/proposal-temporal/pull/2398, which is to be presented for consensus to TC39 in the upcoming plenary meeting, UTC offsets and the Z designator should be disallowed after any date-only strings (YYYY-MM-DD, YYYY-MM, and MM-DD). They should only be allowed to follow a time component. Z remains disallowed in any string being parsed into a Plain type. Annotations become allowed after any ISO string, even YYYY-MM and MM-DD where they were previously disallowed.
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
 | 
						|
// This code is governed by the BSD license found in the LICENSE file.
 | 
						|
 | 
						|
/*---
 | 
						|
esid: sec-temporal.instant.compare
 | 
						|
description: UTC offset not valid with format that does not include a time
 | 
						|
features: [Temporal]
 | 
						|
---*/
 | 
						|
 | 
						|
const validStrings = [
 | 
						|
  "1970-01-01T00Z",
 | 
						|
  "1970-01-01T00Z[UTC]",
 | 
						|
  "1970-01-01T00Z[!UTC]",
 | 
						|
  "1970-01-01T00Z[Europe/Vienna]",
 | 
						|
  "1970-01-01T00+00:00",
 | 
						|
  "1970-01-01T00+00:00[UTC]",
 | 
						|
  "1970-01-01T00+00:00[!UTC]",
 | 
						|
  "1969-12-31T16-08:00[America/Vancouver]",
 | 
						|
];
 | 
						|
 | 
						|
for (const arg of validStrings) {
 | 
						|
  const result = Temporal.Instant.compare(arg, arg);
 | 
						|
 | 
						|
  assert.sameValue(
 | 
						|
    result,
 | 
						|
    0,
 | 
						|
    `"${arg}" is a valid UTC offset with time for Instant`
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
const invalidStrings = [
 | 
						|
  "2022-09-15Z",
 | 
						|
  "2022-09-15Z[UTC]",
 | 
						|
  "2022-09-15Z[Europe/Vienna]",
 | 
						|
  "2022-09-15+00:00",
 | 
						|
  "2022-09-15+00:00[UTC]",
 | 
						|
  "2022-09-15-02:30",
 | 
						|
  "2022-09-15-02:30[America/St_Johns]",
 | 
						|
];
 | 
						|
const epoch = new Temporal.Instant(0n);
 | 
						|
 | 
						|
for (const arg of invalidStrings) {
 | 
						|
  assert.throws(
 | 
						|
    RangeError,
 | 
						|
    () => Temporal.Instant.compare(arg, epoch),
 | 
						|
    `"${arg}" UTC offset without time is not valid for Instant (first argument)`
 | 
						|
  );
 | 
						|
  assert.throws(
 | 
						|
    RangeError,
 | 
						|
    () => Temporal.Instant.compare(epoch, arg),
 | 
						|
    `"${arg}" UTC offset without time is not valid for Instant (second argument)`
 | 
						|
  );
 | 
						|
}
 |