Changeset 290209 in webkit
- Timestamp:
- Feb 19, 2022 9:43:14 AM (5 months ago)
- Location:
- trunk
- Files:
-
- 7 added
- 16 edited
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/stress/temporal-plaindate.js (added)
-
Source/JavaScriptCore/CMakeLists.txt (modified) (1 diff)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/DerivedSources-input.xcfilelist (modified) (1 diff)
-
Source/JavaScriptCore/DerivedSources-output.xcfilelist (modified) (1 diff)
-
Source/JavaScriptCore/DerivedSources.make (modified) (1 diff)
-
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (modified) (10 diffs)
-
Source/JavaScriptCore/Sources.txt (modified) (1 diff)
-
Source/JavaScriptCore/heap/Heap.h (modified) (1 diff)
-
Source/JavaScriptCore/heap/HeapSubspaceTypes.h (modified) (1 diff)
-
Source/JavaScriptCore/runtime/ISO8601.cpp (modified) (2 diffs)
-
Source/JavaScriptCore/runtime/ISO8601.h (modified) (1 diff)
-
Source/JavaScriptCore/runtime/JSGlobalObject.cpp (modified) (3 diffs)
-
Source/JavaScriptCore/runtime/JSGlobalObject.h (modified) (2 diffs)
-
Source/JavaScriptCore/runtime/TemporalObject.cpp (modified) (3 diffs)
-
Source/JavaScriptCore/runtime/TemporalObject.h (modified) (2 diffs)
-
Source/JavaScriptCore/runtime/TemporalPlainDate.cpp (added)
-
Source/JavaScriptCore/runtime/TemporalPlainDate.h (added)
-
Source/JavaScriptCore/runtime/TemporalPlainDateConstructor.cpp (added)
-
Source/JavaScriptCore/runtime/TemporalPlainDateConstructor.h (added)
-
Source/JavaScriptCore/runtime/TemporalPlainDatePrototype.cpp (added)
-
Source/JavaScriptCore/runtime/TemporalPlainDatePrototype.h (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r290079 r290209 1 2022-02-19 Dean Jackson <dino@apple.com> 2 3 [JSC] Implement Temporal.PlainDate 4 https://bugs.webkit.org/show_bug.cgi?id=230033 5 <rdar://problem/83127747> 6 7 Reviewed by Yusuke Suzuki. 8 9 Some basic tests for PlainDate. 10 11 * stress/temporal-plaindate.js: Added. 12 (shouldBe): 13 (shouldThrow): 14 (shouldBe.String.Temporal.PlainDate.from): 15 (let.text.of.failures.shouldThrow): 16 1 17 2022-02-17 Mikhail R. Gadelha <mikhail@igalia.com> 2 18 -
trunk/Source/JavaScriptCore/CMakeLists.txt
r289819 r290209 118 118 runtime/TemporalNow.cpp 119 119 runtime/TemporalObject.cpp 120 runtime/TemporalPlainDateConstructor.cpp 121 runtime/TemporalPlainDatePrototype.cpp 120 122 runtime/TemporalPlainTimeConstructor.cpp 121 123 runtime/TemporalPlainTimePrototype.cpp -
trunk/Source/JavaScriptCore/ChangeLog
r290194 r290209 1 2022-02-19 Dean Jackson <dino@apple.com> 2 3 [JSC] Implement Temporal.PlainDate 4 https://bugs.webkit.org/show_bug.cgi?id=230033 5 <rdar://problem/83127747> 6 7 Reviewed by Yusuke Suzuki. 8 9 Implement the constructor, `from` and `compare` for Temporal.PlainDate. 10 This is only a partial implementation, because `from` doesn't 11 support object parameters, and the `compare` function creates some 12 internally. However, it is a start! 13 14 * DerivedSources-input.xcfilelist: Add new files. 15 * DerivedSources-output.xcfilelist: 16 * DerivedSources.make: 17 * JavaScriptCore.xcodeproj/project.pbxproj: 18 * Sources.txt: 19 20 * heap/Heap.cpp: Create the temporalPlainDateSpace. 21 * heap/Heap.h: 22 * heap/HeapSubspaceTypes.h: 23 24 * runtime/ISO8601.cpp: 25 (JSC::ISO8601::daysInMonth): Make this publicly visible. 26 (JSC::ISO8601::temporalDateToString): New method for printing a date. 27 * runtime/ISO8601.h: 28 29 * runtime/JSGlobalObject.cpp: Make the m_plainDateStructure object. 30 (JSC::JSGlobalObject::init): 31 * runtime/JSGlobalObject.h: 32 (JSC::JSGlobalObject::plainDateStructure): 33 34 * runtime/TemporalObject.cpp: Add the PlainDate constructor. 35 (JSC::createPlainDateConstructor): 36 * runtime/TemporalObject.h: 37 38 * runtime/TemporalPlainDate.cpp: Added. 39 (JSC::TemporalPlainDate::create): 40 (JSC::TemporalPlainDate::createStructure): 41 (JSC::TemporalPlainDate::TemporalPlainDate): 42 (JSC::TemporalPlainDate::finishCreation): 43 (JSC::TemporalPlainDate::visitChildrenImpl): 44 (JSC::toPlainDate): 45 (JSC::TemporalPlainDate::tryCreateIfValid): 46 (JSC::TemporalPlainDate::toString const): 47 (JSC::TemporalPlainDate::from): 48 (JSC::TemporalPlainDate::compare): 49 * runtime/TemporalPlainDate.h: Added. 50 * runtime/TemporalPlainDateConstructor.cpp: Added. 51 (JSC::TemporalPlainDateConstructor::create): 52 (JSC::TemporalPlainDateConstructor::createStructure): 53 (JSC::TemporalPlainDateConstructor::TemporalPlainDateConstructor): 54 (JSC::TemporalPlainDateConstructor::finishCreation): 55 (JSC::JSC_DEFINE_HOST_FUNCTION): 56 * runtime/TemporalPlainDateConstructor.h: Added. 57 * runtime/TemporalPlainDatePrototype.cpp: Added. 58 (JSC::TemporalPlainDatePrototype::create): 59 (JSC::TemporalPlainDatePrototype::createStructure): 60 (JSC::TemporalPlainDatePrototype::TemporalPlainDatePrototype): 61 (JSC::TemporalPlainDatePrototype::finishCreation): 62 (JSC::JSC_DEFINE_HOST_FUNCTION): 63 (JSC::JSC_DEFINE_CUSTOM_GETTER): 64 * runtime/TemporalPlainDatePrototype.h: Added. 65 66 * runtime/VM.h: Define the temporalPlainDateSpace. 67 1 68 2022-02-18 Yusuke Suzuki <ysuzuki@apple.com> 2 69 -
trunk/Source/JavaScriptCore/DerivedSources-input.xcfilelist
r287510 r290209 192 192 $(PROJECT_DIR)/runtime/TemporalNow.cpp 193 193 $(PROJECT_DIR)/runtime/TemporalObject.cpp 194 $(PROJECT_DIR)/runtime/TemporalPlainDateConstructor.cpp 195 $(PROJECT_DIR)/runtime/TemporalPlainDatePrototype.cpp 194 196 $(PROJECT_DIR)/runtime/TemporalPlainTimeConstructor.cpp 195 197 $(PROJECT_DIR)/runtime/TemporalPlainTimePrototype.cpp -
trunk/Source/JavaScriptCore/DerivedSources-output.xcfilelist
r287510 r290209 77 77 $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalNow.lut.h 78 78 $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalObject.lut.h 79 $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainDateConstructor.lut.h 80 $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainDatePrototype.lut.h 79 81 $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainTimeConstructor.lut.h 80 82 $(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/TemporalPlainTimePrototype.lut.h -
trunk/Source/JavaScriptCore/DerivedSources.make
r288146 r290209 208 208 TemporalNow.lut.h \ 209 209 TemporalObject.lut.h \ 210 TemporalPlainDateConstructor.lut.h \ 211 TemporalPlainDatePrototype.lut.h \ 210 212 TemporalPlainTimeConstructor.lut.h \ 211 213 TemporalPlainTimePrototype.lut.h \ -
trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
r289823 r290209 850 850 2AD8932B17E3868F00668276 /* HeapIterationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD8932917E3868F00668276 /* HeapIterationScope.h */; }; 851 851 2D342F36F7244096804ADB24 /* SourceOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = 425BA1337E4344E1B269A671 /* SourceOrigin.h */; settings = {ATTRIBUTES = (Private, ); }; }; 852 31770C5527B94CE600308091 /* TemporalPlainDateConstructor.h in Headers */ = {isa = PBXBuildFile; fileRef = 31770C4F27B94CE400308091 /* TemporalPlainDateConstructor.h */; }; 853 31770C5727B94CE600308091 /* TemporalPlainDatePrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = 31770C5127B94CE400308091 /* TemporalPlainDatePrototype.h */; }; 854 31770C5827B94CE600308091 /* TemporalPlainDate.h in Headers */ = {isa = PBXBuildFile; fileRef = 31770C5227B94CE500308091 /* TemporalPlainDate.h */; }; 852 855 33111B8B2397256500AA34CE /* Scribble.h in Headers */ = {isa = PBXBuildFile; fileRef = 33111B8A2397256500AA34CE /* Scribble.h */; settings = {ATTRIBUTES = (Private, ); }; }; 853 856 3395C70722555F6D00BDBFAD /* B3EliminateDeadCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 3395C70522555F6D00BDBFAD /* B3EliminateDeadCode.h */; }; … … 3720 3723 3032175DF1AD47D8998B34E1 /* JSSourceCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSSourceCode.h; sourceTree = "<group>"; }; 3721 3724 30A5F403F11C4F599CD596D5 /* WasmSignatureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmSignatureInlines.h; sourceTree = "<group>"; }; 3725 31770C4F27B94CE400308091 /* TemporalPlainDateConstructor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporalPlainDateConstructor.h; sourceTree = "<group>"; }; 3726 31770C5027B94CE400308091 /* TemporalPlainDateConstructor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemporalPlainDateConstructor.cpp; sourceTree = "<group>"; }; 3727 31770C5127B94CE400308091 /* TemporalPlainDatePrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporalPlainDatePrototype.h; sourceTree = "<group>"; }; 3728 31770C5227B94CE500308091 /* TemporalPlainDate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemporalPlainDate.h; sourceTree = "<group>"; }; 3729 31770C5327B94CE500308091 /* TemporalPlainDate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemporalPlainDate.cpp; sourceTree = "<group>"; }; 3730 31770C5427B94CE500308091 /* TemporalPlainDatePrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemporalPlainDatePrototype.cpp; sourceTree = "<group>"; }; 3722 3731 33111B8A2397256500AA34CE /* Scribble.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Scribble.h; sourceTree = "<group>"; }; 3723 3732 33743649224D79EF00C8C227 /* B3OptimizeAssociativeExpressionTrees.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = B3OptimizeAssociativeExpressionTrees.cpp; path = b3/B3OptimizeAssociativeExpressionTrees.cpp; sourceTree = "<group>"; }; … … 5932 5941 7B98D1331B60CD1E0023B1A4 /* wasm */, 5933 5942 86EAC48C0F93E8B9008EC948 /* yarr */, 5934 533699AF27A306F600C9561D /* Recovered References */,5935 5943 ); 5936 5944 name = JavaScriptCore; … … 7327 7335 isa = PBXGroup; 7328 7336 children = ( 7329 37AAC091279F124200D64842 /* WasmBranchHints.h */,7330 37AAC090279F124100D64842 /* WasmBranchHintsSectionParser.cpp */,7331 37AAC092279F124200D64842 /* WasmBranchHintsSectionParser.h */,7332 7337 AD2FCB8A1DB5840000B3E736 /* js */, 7333 7338 52847AD921FFB8630061A9DB /* WasmAirIRGenerator.cpp */, … … 7339 7344 AD4B1DF71DF244D70071AE32 /* WasmBinding.cpp */, 7340 7345 AD4B1DF81DF244D70071AE32 /* WasmBinding.h */, 7346 37AAC091279F124200D64842 /* WasmBranchHints.h */, 7347 37AAC090279F124100D64842 /* WasmBranchHintsSectionParser.cpp */, 7348 37AAC092279F124200D64842 /* WasmBranchHintsSectionParser.h */, 7341 7349 525C0DD71E935847002184CD /* WasmCallee.cpp */, 7342 7350 525C0DD81E935847002184CD /* WasmCallee.h */, … … 8260 8268 F6F150192693D33E004B98EF /* TemporalObject.cpp */, 8261 8269 F6F1501A2693D33E004B98EF /* TemporalObject.h */, 8270 31770C5327B94CE500308091 /* TemporalPlainDate.cpp */, 8271 31770C5227B94CE500308091 /* TemporalPlainDate.h */, 8272 31770C5027B94CE400308091 /* TemporalPlainDateConstructor.cpp */, 8273 31770C4F27B94CE400308091 /* TemporalPlainDateConstructor.h */, 8274 31770C5427B94CE500308091 /* TemporalPlainDatePrototype.cpp */, 8275 31770C5127B94CE400308091 /* TemporalPlainDatePrototype.h */, 8262 8276 E386FD7726E867B700E4C28B /* TemporalPlainTime.cpp */, 8263 8277 E386FD7826E867B800E4C28B /* TemporalPlainTime.h */, … … 10979 10993 0FE0502B1AA9095600D33B33 /* ScopeOffset.h in Headers */, 10980 10994 0F24E55217EE274900ABB217 /* ScratchRegisterAllocator.h in Headers */, 10981 37AAC094279F1C0500D64842 /* WasmBranchHints.h in Headers */,10982 10995 33111B8B2397256500AA34CE /* Scribble.h in Headers */, 10983 10996 A5FD0068189AFE9C00633231 /* ScriptArguments.h in Headers */, … … 11097 11110 F6D67D4826F9130C006E0349 /* TemporalInstantPrototype.lut.h in Headers */, 11098 11111 F6F150212693D450004B98EF /* TemporalObject.lut.h in Headers */, 11112 31770C5827B94CE600308091 /* TemporalPlainDate.h in Headers */, 11113 31770C5527B94CE600308091 /* TemporalPlainDateConstructor.h in Headers */, 11114 31770C5727B94CE600308091 /* TemporalPlainDatePrototype.h in Headers */, 11099 11115 E386FD7E26E867B800E4C28B /* TemporalPlainTime.h in Headers */, 11100 11116 E386FD7B26E867B800E4C28B /* TemporalPlainTimeConstructor.h in Headers */, … … 11109 11125 0F572D4F16879FDD00E57FBD /* ThunkGenerator.h in Headers */, 11110 11126 A7386556118697B400540279 /* ThunkGenerators.h in Headers */, 11111 37AAC093279F1BFC00D64842 /* WasmBranchHintsSectionParser.h in Headers */,11112 11127 141448CD13A1783700F5BA1A /* TinyBloomFilter.h in Headers */, 11113 11128 0F55989817C86C5800A1E543 /* ToNativeFromValue.h in Headers */, … … 11166 11181 53CA730A1EA533D80076049D /* WasmBBQPlan.h in Headers */, 11167 11182 AD4B1DFA1DF244E20071AE32 /* WasmBinding.h in Headers */, 11183 37AAC094279F1C0500D64842 /* WasmBranchHints.h in Headers */, 11184 37AAC093279F1BFC00D64842 /* WasmBranchHintsSectionParser.h in Headers */, 11168 11185 525C0DDA1E935847002184CD /* WasmCallee.h in Headers */, 11169 11186 526AC4B71E977C5D003500E1 /* WasmCalleeGroup.h in Headers */, -
trunk/Source/JavaScriptCore/Sources.txt
r289417 r290209 1021 1021 runtime/TemporalNow.cpp 1022 1022 runtime/TemporalObject.cpp 1023 runtime/TemporalPlainDate.cpp 1024 runtime/TemporalPlainDateConstructor.cpp 1025 runtime/TemporalPlainDatePrototype.cpp 1023 1026 runtime/TemporalPlainTime.cpp 1024 1027 runtime/TemporalPlainTimeConstructor.cpp -
trunk/Source/JavaScriptCore/heap/Heap.h
r290129 r290209 256 256 v(temporalDurationSpace, cellHeapCellType, TemporalDuration) \ 257 257 v(temporalInstantSpace, cellHeapCellType, TemporalInstant) \ 258 v(temporalPlainDateSpace, cellHeapCellType, TemporalPlainDate) \ 258 259 v(temporalPlainTimeSpace, cellHeapCellType, TemporalPlainTime) \ 259 260 v(temporalTimeZoneSpace, cellHeapCellType, TemporalTimeZone) \ -
trunk/Source/JavaScriptCore/heap/HeapSubspaceTypes.h
r286347 r290209 110 110 #include "TemporalDuration.h" 111 111 #include "TemporalInstant.h" 112 #include "TemporalPlainDate.h" 112 113 #include "TemporalPlainTime.h" 113 114 #include "TemporalTimeZone.h" -
trunk/Source/JavaScriptCore/runtime/ISO8601.cpp
r288272 r290209 683 683 684 684 // https://tc39.es/proposal-temporal/#sec-temporal-isodaysinmonth 685 static inlineunsigned daysInMonth(int32_t year, unsigned month)685 unsigned daysInMonth(int32_t year, unsigned month) 686 686 { 687 687 switch (month) { … … 988 988 } 989 989 990 String temporalDateToString(PlainDate plainDate) 991 { 992 return makeString(pad('0', 4, plainDate.year()), '-', pad('0', 2, plainDate.month()), '-', pad('0', 2, plainDate.day())); 993 } 994 990 995 // IsValidDuration ( years, months, weeks, days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds ) 991 996 // https://tc39.es/proposal-temporal/#sec-temporal-isvalidduration -
trunk/Source/JavaScriptCore/runtime/ISO8601.h
r288272 r290209 285 285 String formatTimeZoneOffsetString(int64_t); 286 286 String temporalTimeToString(PlainTime, std::tuple<Precision, unsigned> precision); 287 String temporalDateToString(PlainDate); 288 unsigned daysInMonth(int32_t year, unsigned month); 287 289 288 290 bool isValidDuration(const Duration&); -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
r289417 r290209 215 215 #include "TemporalInstantPrototype.h" 216 216 #include "TemporalObject.h" 217 #include "TemporalPlainDate.h" 218 #include "TemporalPlainDatePrototype.h" 217 219 #include "TemporalPlainTime.h" 218 220 #include "TemporalPlainTimePrototype.h" … … 1268 1270 TemporalInstantPrototype* instantPrototype = TemporalInstantPrototype::create(init.vm, TemporalInstantPrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype())); 1269 1271 init.set(TemporalInstant::createStructure(init.vm, globalObject, instantPrototype)); 1272 }); 1273 1274 m_plainDateStructure.initLater( 1275 [] (const Initializer<Structure>& init) { 1276 auto* globalObject = jsCast<JSGlobalObject*>(init.owner); 1277 auto* plainDatePrototype = TemporalPlainDatePrototype::create(init.vm, globalObject, TemporalPlainDatePrototype::createStructure(init.vm, globalObject, globalObject->objectPrototype())); 1278 init.set(TemporalPlainDate::createStructure(init.vm, globalObject, plainDatePrototype)); 1270 1279 }); 1271 1280 … … 2197 2206 thisObject->m_durationStructure.visit(visitor); 2198 2207 thisObject->m_instantStructure.visit(visitor); 2208 thisObject->m_plainDateStructure.visit(visitor); 2199 2209 thisObject->m_plainTimeStructure.visit(visitor); 2200 2210 thisObject->m_timeZoneStructure.visit(visitor); -
trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h
r290129 r290209 339 339 LazyProperty<JSGlobalObject, Structure> m_durationStructure; 340 340 LazyProperty<JSGlobalObject, Structure> m_instantStructure; 341 LazyProperty<JSGlobalObject, Structure> m_plainDateStructure; 341 342 LazyProperty<JSGlobalObject, Structure> m_plainTimeStructure; 342 343 LazyProperty<JSGlobalObject, Structure> m_timeZoneStructure; … … 909 910 Structure* durationStructure() { return m_durationStructure.get(this); } 910 911 Structure* instantStructure() { return m_instantStructure.get(this); } 912 Structure* plainDateStructure() { return m_plainDateStructure.get(this); } 911 913 Structure* plainTimeStructure() { return m_plainTimeStructure.get(this); } 912 914 Structure* timeZoneStructure() { return m_timeZoneStructure.get(this); } -
trunk/Source/JavaScriptCore/runtime/TemporalObject.cpp
r285730 r290209 36 36 #include "TemporalInstantPrototype.h" 37 37 #include "TemporalNow.h" 38 #include "TemporalPlainDateConstructor.h" 39 #include "TemporalPlainDatePrototype.h" 38 40 #include "TemporalPlainTimeConstructor.h" 39 41 #include "TemporalPlainTimePrototype.h" … … 76 78 } 77 79 80 static JSValue createPlainDateConstructor(VM& vm, JSObject* object) 81 { 82 TemporalObject* temporalObject = jsCast<TemporalObject*>(object); 83 auto* globalObject = temporalObject->globalObject(vm); 84 return TemporalPlainDateConstructor::create(vm, TemporalPlainDateConstructor::createStructure(vm, globalObject, globalObject->functionPrototype()), jsCast<TemporalPlainDatePrototype*>(globalObject->plainDateStructure()->storedPrototypeObject())); 85 } 86 78 87 static JSValue createPlainTimeConstructor(VM& vm, JSObject* object) 79 88 { … … 102 111 Instant createInstantConstructor DontEnum|PropertyCallback 103 112 Now createNowObject DontEnum|PropertyCallback 113 PlainDate createPlainDateConstructor DontEnum|PropertyCallback 104 114 PlainTime createPlainTimeConstructor DontEnum|PropertyCallback 105 115 TimeZone createTimeZoneConstructor DontEnum|PropertyCallback -
trunk/Source/JavaScriptCore/runtime/TemporalObject.h
r290129 r290209 28 28 namespace JSC { 29 29 30 #define JSC_TEMPORAL_PLAIN_DATE_UNITS(macro) \ 31 macro(year, Year) \ 32 macro(month, Month) \ 33 macro(day, Day) \ 34 35 30 36 #define JSC_TEMPORAL_PLAIN_TIME_UNITS(macro) \ 31 37 macro(hour, Hour) \ … … 52 58 #define JSC_COUNT_TEMPORAL_UNITS(name, capitalizedName) + 1 53 59 static constexpr unsigned numberOfTemporalUnits = 0 JSC_TEMPORAL_UNITS(JSC_COUNT_TEMPORAL_UNITS); 60 static constexpr unsigned numberOfTemporalPlainDateUnits = 0 JSC_TEMPORAL_PLAIN_DATE_UNITS(JSC_COUNT_TEMPORAL_UNITS); 54 61 static constexpr unsigned numberOfTemporalPlainTimeUnits = 0 JSC_TEMPORAL_PLAIN_TIME_UNITS(JSC_COUNT_TEMPORAL_UNITS); 55 62 #undef JSC_COUNT_TEMPORAL_UNITS
Note: See TracChangeset
for help on using the changeset viewer.