Project

Profile

Help

Bug #4787

closed

Map failures with temporal keys using timezones under advanced closure compilation.

Added by John Lumley over 3 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Category:
XPath Conformance
Sprint/Milestone:
-
Start date:
2020-10-07
Due date:
% Done:

100%

Estimated time:
Applies to JS Branch:
2
Fix Committed on JS Branch:
2
Fixed in JS Release:
SEF Generated with:
Platforms:
Company:
-
Contact person:
-
Additional contact persons:
-

Description

When maps are merged with keys involving timezone-adjusted values, under advanced closure compiler optimisation, duplicate key errors can be raised, which are not under simple optimisation (i.e. SaxonJS2.debug.js). map-size-014 is an example. The issue is in HashTrie/stdOptions/sameKey#41:

 return ("timezoneOffset" in n) && n.timezoneOffset !== null;

where under CC advanced optimisation the property timezoneOffset has been renamed, and thus the "timezoneOffset" in n check fails. The intention seems to be to only check if there is a timezoneOffset defined, and it is not null. Simply changing to

timezoneOffset.n && n.timezoneOffset !== null;

corrects these faults but introduces three others, in same-key-02[67] and MapConstructor-042.

This might be rather tricky without 'reserving' the timezoneOffset property - trying to determine the existence of renamed properties.

Actions #1

Updated by John Lumley over 3 years ago

Should be

n.timezoneOffset && n.timezoneOffset !== null;
Actions #2

Updated by Michael Kay over 3 years ago

The potential gotcha here is when timezoneOffset is present but equal to zero.

Actions #3

Updated by Debbie Lockett over 3 years ago

  • Category set to XPath Conformance
  • Status changed from In Progress to Resolved
  • Assignee set to Debbie Lockett
  • Applies to JS Branch 2.0 added
  • Fix Committed on JS Branch 2.0 added

Code fix was committed on 2021-02-03 to pass the tests (but I hadn't actually realised this bug existed):

n.timezoneOffset !== undefined && n.timezoneOffset !== null;

Actions #4

Updated by Community Admin over 3 years ago

  • Applies to JS Branch 2 added
  • Applies to JS Branch deleted (2.0)
Actions #5

Updated by Community Admin over 3 years ago

  • Fix Committed on JS Branch 2 added
  • Fix Committed on JS Branch deleted (2.0)
Actions #6

Updated by Debbie Lockett over 3 years ago

  • Status changed from Resolved to Closed
  • % Done changed from 0 to 100
  • Fixed in JS Release set to Saxon-JS 2.1

Bug fix applied in the Saxon-JS 2.1 maintenance release.

Please register to edit this issue

Also available in: Atom PDF Tracking page