porffor 0.2.0-c1ed50d → 0.2.0-c56b8bf
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -9
- package/compiler/builtins/date.ts +721 -85
- package/compiler/builtins.js +2 -5
- package/compiler/codegen.js +34 -0
- package/compiler/generated_builtins.js +288 -0
- package/compiler/index.js +1 -2
- package/compiler/prefs.js +1 -1
- package/fib.js +7 -0
- package/package.json +1 -1
- package/runner/index.js +10 -0
@@ -582,153 +582,789 @@ export const ___date_prototype_getDate = (_this: Date) => {
|
|
582
582
|
};
|
583
583
|
|
584
584
|
// 21.4.4.3 Date.prototype.getDay ()
|
585
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getday
|
586
|
+
export const ___date_prototype_getDay = (_this: Date) => {
|
587
|
+
// 1. Let dateObject be the this value.
|
588
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
589
|
+
// 3. Let t be dateObject.[[DateValue]].
|
590
|
+
const t: number = __Porffor_date_read(_this);
|
585
591
|
|
592
|
+
// 4. If t is NaN, return NaN.
|
593
|
+
if (Number.isNaN(t)) return NaN;
|
586
594
|
|
587
|
-
//
|
588
|
-
|
589
|
-
|
590
|
-
// 4. If t is NaN, return NaN.
|
591
|
-
// 5. Return WeekDay(LocalTime(t)).
|
595
|
+
// 5. Return WeekDay(LocalTime(t)).
|
596
|
+
return __ecma262_WeekDay(__ecma262_LocalTime(t));
|
597
|
+
};
|
592
598
|
|
593
599
|
// 21.4.4.4 Date.prototype.getFullYear ()
|
600
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getfullyear
|
601
|
+
export const ___date_prototype_getFullYear = (_this: Date) => {
|
602
|
+
// 1. Let dateObject be the this value.
|
603
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
604
|
+
// 3. Let t be dateObject.[[DateValue]].
|
605
|
+
const t: number = __Porffor_date_read(_this);
|
594
606
|
|
607
|
+
// 4. If t is NaN, return NaN.
|
608
|
+
if (Number.isNaN(t)) return NaN;
|
595
609
|
|
596
|
-
//
|
597
|
-
|
598
|
-
|
599
|
-
// 4. If t is NaN, return NaN.
|
600
|
-
// 5. Return YearFromTime(LocalTime(t)).
|
610
|
+
// 5. Return YearFromTime(LocalTime(t)).
|
611
|
+
return __ecma262_YearFromTime(__ecma262_LocalTime(t));
|
612
|
+
};
|
601
613
|
|
602
614
|
// 21.4.4.5 Date.prototype.getHours ()
|
615
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.gethours
|
616
|
+
export const ___date_prototype_getHours = (_this: Date) => {
|
617
|
+
// 1. Let dateObject be the this value.
|
618
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
619
|
+
// 3. Let t be dateObject.[[DateValue]].
|
620
|
+
const t: number = __Porffor_date_read(_this);
|
603
621
|
|
622
|
+
// 4. If t is NaN, return NaN.
|
623
|
+
if (Number.isNaN(t)) return NaN;
|
604
624
|
|
605
|
-
//
|
606
|
-
|
607
|
-
|
608
|
-
// 4. If t is NaN, return NaN.
|
609
|
-
// 5. Return HourFromTime(LocalTime(t)).
|
625
|
+
// 5. Return HourFromTime(LocalTime(t)).
|
626
|
+
return __ecma262_HourFromTime(__ecma262_LocalTime(t));
|
627
|
+
};
|
610
628
|
|
611
629
|
// 21.4.4.6 Date.prototype.getMilliseconds ()
|
630
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getmilliseconds
|
631
|
+
export const ___date_prototype_getMilliseconds = (_this: Date) => {
|
632
|
+
// 1. Let dateObject be the this value.
|
633
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
634
|
+
// 3. Let t be dateObject.[[DateValue]].
|
635
|
+
const t: number = __Porffor_date_read(_this);
|
612
636
|
|
637
|
+
// 4. If t is NaN, return NaN.
|
638
|
+
if (Number.isNaN(t)) return NaN;
|
613
639
|
|
614
|
-
//
|
615
|
-
|
616
|
-
|
617
|
-
// 4. If t is NaN, return NaN.
|
618
|
-
// 5. Return msFromTime(LocalTime(t)).
|
640
|
+
// 5. Return msFromTime(LocalTime(t)).
|
641
|
+
return __ecma262_msFromTime(__ecma262_LocalTime(t));
|
642
|
+
};
|
619
643
|
|
620
644
|
// 21.4.4.7 Date.prototype.getMinutes ()
|
645
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getminutes
|
646
|
+
export const ___date_prototype_getMinutes = (_this: Date) => {
|
647
|
+
// 1. Let dateObject be the this value.
|
648
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
649
|
+
// 3. Let t be dateObject.[[DateValue]].
|
650
|
+
const t: number = __Porffor_date_read(_this);
|
621
651
|
|
652
|
+
// 4. If t is NaN, return NaN.
|
653
|
+
if (Number.isNaN(t)) return NaN;
|
622
654
|
|
623
|
-
//
|
624
|
-
|
625
|
-
|
626
|
-
// 4. If t is NaN, return NaN.
|
627
|
-
// 5. Return MinFromTime(LocalTime(t)).
|
655
|
+
// 5. Return MinFromTime(LocalTime(t)).
|
656
|
+
return __ecma262_MinFromTime(__ecma262_LocalTime(t));
|
657
|
+
};
|
628
658
|
|
629
659
|
// 21.4.4.8 Date.prototype.getMonth ()
|
660
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getmonth
|
661
|
+
export const ___date_prototype_getMonth = (_this: Date) => {
|
662
|
+
// 1. Let dateObject be the this value.
|
663
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
664
|
+
// 3. Let t be dateObject.[[DateValue]].
|
665
|
+
const t: number = __Porffor_date_read(_this);
|
630
666
|
|
667
|
+
// 4. If t is NaN, return NaN.
|
668
|
+
if (Number.isNaN(t)) return NaN;
|
631
669
|
|
632
|
-
//
|
633
|
-
|
634
|
-
|
635
|
-
// 4. If t is NaN, return NaN.
|
636
|
-
// 5. Return MonthFromTime(LocalTime(t)).
|
670
|
+
// 5. Return MonthFromTime(LocalTime(t)).
|
671
|
+
return __ecma262_MonthFromTime(__ecma262_LocalTime(t));
|
672
|
+
};
|
637
673
|
|
638
674
|
// 21.4.4.9 Date.prototype.getSeconds ()
|
675
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getseconds
|
676
|
+
export const ___date_prototype_getSeconds = (_this: Date) => {
|
677
|
+
// 1. Let dateObject be the this value.
|
678
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
679
|
+
// 3. Let t be dateObject.[[DateValue]].
|
680
|
+
const t: number = __Porffor_date_read(_this);
|
639
681
|
|
682
|
+
// 4. If t is NaN, return NaN.
|
683
|
+
if (Number.isNaN(t)) return NaN;
|
640
684
|
|
641
|
-
//
|
642
|
-
|
643
|
-
|
644
|
-
// 4. If t is NaN, return NaN.
|
645
|
-
// 5. Return SecFromTime(LocalTime(t)).
|
685
|
+
// 5. Return SecFromTime(LocalTime(t)).
|
686
|
+
return __ecma262_SecFromTime(__ecma262_LocalTime(t));
|
687
|
+
};
|
646
688
|
|
647
689
|
// 21.4.4.10 Date.prototype.getTime ()
|
648
|
-
|
649
|
-
|
650
|
-
// 1. Let dateObject be the this value.
|
651
|
-
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
652
|
-
// 3. Return dateObject.[[DateValue]].
|
690
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.gettime
|
691
|
+
export const ___date_prototype_getTime = (_this: Date) => {
|
692
|
+
// 1. Let dateObject be the this value.
|
693
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
694
|
+
// 3. Return dateObject.[[DateValue]].
|
695
|
+
return __Porffor_date_read(_this);
|
696
|
+
};
|
653
697
|
|
654
698
|
// 21.4.4.11 Date.prototype.getTimezoneOffset ()
|
699
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.gettimezoneoffset
|
700
|
+
export const ___date_prototype_getTimezoneOffset = (_this: Date) => {
|
701
|
+
// 1. Let dateObject be the this value.
|
702
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
703
|
+
// 3. Let t be dateObject.[[DateValue]].
|
704
|
+
const t: number = __Porffor_date_read(_this);
|
655
705
|
|
706
|
+
// 4. If t is NaN, return NaN.
|
707
|
+
if (Number.isNaN(t)) return NaN;
|
656
708
|
|
657
|
-
//
|
658
|
-
|
659
|
-
|
660
|
-
// 4. If t is NaN, return NaN.
|
661
|
-
// 5. Return (t - LocalTime(t)) / msPerMinute.
|
709
|
+
// 5. Return (t - LocalTime(t)) / msPerMinute.
|
710
|
+
return (t - __ecma262_LocalTime(t)) / 60000;
|
711
|
+
};
|
662
712
|
|
663
713
|
// 21.4.4.12 Date.prototype.getUTCDate ()
|
714
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcdate
|
715
|
+
export const ___date_prototype_getUTCDate = (_this: Date) => {
|
716
|
+
// 1. Let dateObject be the this value.
|
717
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
718
|
+
// 3. Let t be dateObject.[[DateValue]].
|
719
|
+
const t: number = __Porffor_date_read(_this);
|
664
720
|
|
721
|
+
// 4. If t is NaN, return NaN.
|
722
|
+
if (Number.isNaN(t)) return NaN;
|
665
723
|
|
666
|
-
//
|
667
|
-
|
668
|
-
|
669
|
-
// 4. If t is NaN, return NaN.
|
670
|
-
// 5. Return DateFromTime(t).
|
724
|
+
// 5. Return DateFromTime(t).
|
725
|
+
return __ecma262_DateFromTime(t);
|
726
|
+
};
|
671
727
|
|
672
728
|
// 21.4.4.13 Date.prototype.getUTCDay ()
|
729
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcday
|
730
|
+
export const ___date_prototype_getUTCDay = (_this: Date) => {
|
731
|
+
// 1. Let dateObject be the this value.
|
732
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
733
|
+
// 3. Let t be dateObject.[[DateValue]].
|
734
|
+
const t: number = __Porffor_date_read(_this);
|
673
735
|
|
736
|
+
// 4. If t is NaN, return NaN.
|
737
|
+
if (Number.isNaN(t)) return NaN;
|
674
738
|
|
675
|
-
//
|
676
|
-
|
677
|
-
|
678
|
-
// 4. If t is NaN, return NaN.
|
679
|
-
// 5. Return WeekDay(t).
|
739
|
+
// 5. Return WeekDay(t).
|
740
|
+
return __ecma262_WeekDay(t);
|
741
|
+
};
|
680
742
|
|
681
743
|
// 21.4.4.14 Date.prototype.getUTCFullYear ()
|
744
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcfullyear
|
745
|
+
export const ___date_prototype_getUTCFullYear = (_this: Date) => {
|
746
|
+
// 1. Let dateObject be the this value.
|
747
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
748
|
+
// 3. Let t be dateObject.[[DateValue]].
|
749
|
+
const t: number = __Porffor_date_read(_this);
|
682
750
|
|
751
|
+
// 4. If t is NaN, return NaN.
|
752
|
+
if (Number.isNaN(t)) return NaN;
|
683
753
|
|
684
|
-
//
|
685
|
-
|
686
|
-
|
687
|
-
// 4. If t is NaN, return NaN.
|
688
|
-
// 5. Return YearFromTime(t).
|
754
|
+
// 5. Return YearFromTime(t).
|
755
|
+
return __ecma262_YearFromTime(t);
|
756
|
+
};
|
689
757
|
|
690
758
|
// 21.4.4.15 Date.prototype.getUTCHours ()
|
759
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutchours
|
760
|
+
export const ___date_prototype_getUTCHours = (_this: Date) => {
|
761
|
+
// 1. Let dateObject be the this value.
|
762
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
763
|
+
// 3. Let t be dateObject.[[DateValue]].
|
764
|
+
const t: number = __Porffor_date_read(_this);
|
691
765
|
|
766
|
+
// 4. If t is NaN, return NaN.
|
767
|
+
if (Number.isNaN(t)) return NaN;
|
692
768
|
|
693
|
-
//
|
694
|
-
|
695
|
-
|
696
|
-
// 4. If t is NaN, return NaN.
|
697
|
-
// 5. Return HourFromTime(t).
|
769
|
+
// 5. Return HourFromTime(t).
|
770
|
+
return __ecma262_HourFromTime(t);
|
771
|
+
};
|
698
772
|
|
699
773
|
// 21.4.4.16 Date.prototype.getUTCMilliseconds ()
|
774
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcmilliseconds
|
775
|
+
export const ___date_prototype_getUTCMilliseconds = (_this: Date) => {
|
776
|
+
// 1. Let dateObject be the this value.
|
777
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
778
|
+
// 3. Let t be dateObject.[[DateValue]].
|
779
|
+
const t: number = __Porffor_date_read(_this);
|
700
780
|
|
781
|
+
// 4. If t is NaN, return NaN.
|
782
|
+
if (Number.isNaN(t)) return NaN;
|
701
783
|
|
702
|
-
//
|
703
|
-
|
704
|
-
|
705
|
-
// 4. If t is NaN, return NaN.
|
706
|
-
// 5. Return msFromTime(t).
|
784
|
+
// 5. Return msFromTime(t).
|
785
|
+
return __ecma262_msFromTime(t);
|
786
|
+
};
|
707
787
|
|
708
788
|
// 21.4.4.17 Date.prototype.getUTCMinutes ()
|
789
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcminutes
|
790
|
+
export const ___date_prototype_getUTCMinutes = (_this: Date) => {
|
791
|
+
// 1. Let dateObject be the this value.
|
792
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
793
|
+
// 3. Let t be dateObject.[[DateValue]].
|
794
|
+
const t: number = __Porffor_date_read(_this);
|
709
795
|
|
796
|
+
// 4. If t is NaN, return NaN.
|
797
|
+
if (Number.isNaN(t)) return NaN;
|
710
798
|
|
711
|
-
//
|
712
|
-
|
713
|
-
|
714
|
-
// 4. If t is NaN, return NaN.
|
715
|
-
// 5. Return MinFromTime(t).
|
799
|
+
// 5. Return MinFromTime(t).
|
800
|
+
return __ecma262_MinFromTime(t);
|
801
|
+
};
|
716
802
|
|
717
803
|
// 21.4.4.18 Date.prototype.getUTCMonth ()
|
804
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcmonth
|
805
|
+
export const ___date_prototype_getUTCMonth = (_this: Date) => {
|
806
|
+
// 1. Let dateObject be the this value.
|
807
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
808
|
+
// 3. Let t be dateObject.[[DateValue]].
|
809
|
+
const t: number = __Porffor_date_read(_this);
|
718
810
|
|
811
|
+
// 4. If t is NaN, return NaN.
|
812
|
+
if (Number.isNaN(t)) return NaN;
|
719
813
|
|
720
|
-
//
|
721
|
-
|
722
|
-
|
723
|
-
// 4. If t is NaN, return NaN.
|
724
|
-
// 5. Return MonthFromTime(t).
|
814
|
+
// 5. Return MonthFromTime(t).
|
815
|
+
return __ecma262_MonthFromTime(t);
|
816
|
+
};
|
725
817
|
|
726
818
|
// 21.4.4.19 Date.prototype.getUTCSeconds ()
|
819
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.getutcseconds
|
820
|
+
export const ___date_prototype_getUTCSeconds = (_this: Date) => {
|
821
|
+
// 1. Let dateObject be the this value.
|
822
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
823
|
+
// 3. Let t be dateObject.[[DateValue]].
|
824
|
+
const t: number = __Porffor_date_read(_this);
|
825
|
+
|
826
|
+
// 4. If t is NaN, return NaN.
|
827
|
+
if (Number.isNaN(t)) return NaN;
|
828
|
+
|
829
|
+
// 5. Return SecFromTime(t).
|
830
|
+
return __ecma262_SecFromTime(t);
|
831
|
+
};
|
832
|
+
|
833
|
+
|
834
|
+
// 21.4.4.20 Date.prototype.setDate (date)
|
835
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setdate
|
836
|
+
export const ___date_prototype_setDate = (_this: Date, date: any) => {
|
837
|
+
// 1. Let dateObject be the this value.
|
838
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
839
|
+
// 3. Let t be dateObject.[[DateValue]].
|
840
|
+
let t: number = __Porffor_date_read(_this);
|
841
|
+
|
842
|
+
// 4. Let dt be ? ToNumber(date).
|
843
|
+
const dt: number = Number(date);
|
844
|
+
|
845
|
+
// 5. If t is NaN, return NaN.
|
846
|
+
if (Number.isNaN(t)) return NaN;
|
847
|
+
|
848
|
+
// 6. Set t to LocalTime(t).
|
849
|
+
t = __ecma262_LocalTime(t);
|
850
|
+
|
851
|
+
// 7. Let newDate be MakeDate(MakeDay(YearFromTime(t), MonthFromTime(t), dt), TimeWithinDay(t)).
|
852
|
+
const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), __ecma262_MonthFromTime(t), dt), __ecma262_TimeWithinDay(t));
|
853
|
+
|
854
|
+
// 8. Let u be TimeClip(UTC(newDate)).
|
855
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(newDate));
|
856
|
+
|
857
|
+
// 9. Set dateObject.[[DateValue]] to u.
|
858
|
+
__Porffor_date_write(_this, u);
|
859
|
+
|
860
|
+
// 10. Return u.
|
861
|
+
return u;
|
862
|
+
};
|
863
|
+
|
864
|
+
// 21.4.4.21 Date.prototype.setFullYear (year [, month [, date ]])
|
865
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setfullyear
|
866
|
+
export const ___date_prototype_setFullYear = (_this: Date, year: any, month: any, date: any) => {
|
867
|
+
// 1. Let dateObject be the this value.
|
868
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
869
|
+
// 3. Let t be dateObject.[[DateValue]].
|
870
|
+
let t: number = __Porffor_date_read(_this);
|
871
|
+
|
872
|
+
// 4. Let y be ? ToNumber(year).
|
873
|
+
const y: number = Number(year);
|
874
|
+
|
875
|
+
// 5. If t is NaN, set t to +0𝔽; otherwise, set t to LocalTime(t).
|
876
|
+
if (Number.isNaN(t)) t = 0;
|
877
|
+
else t = __ecma262_LocalTime(t);
|
878
|
+
|
879
|
+
// 6. If month is not present, let m be MonthFromTime(t); otherwise, let m be ? ToNumber(month).
|
880
|
+
let m: number;
|
881
|
+
if (Porffor.rawType(month) == Porffor.TYPES.undefined) m = __ecma262_MonthFromTime(t);
|
882
|
+
else m = Number(month);
|
883
|
+
|
884
|
+
// 7. If date is not present, let dt be DateFromTime(t); otherwise, let dt be ? ToNumber(date).
|
885
|
+
let dt: number;
|
886
|
+
if (Porffor.rawType(date) == Porffor.TYPES.undefined) dt = __ecma262_DateFromTime(t);
|
887
|
+
else dt = Number(date);
|
888
|
+
|
889
|
+
// 8. Let newDate be MakeDate(MakeDay(y, m, dt), TimeWithinDay(t)).
|
890
|
+
const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(y, m, dt), __ecma262_TimeWithinDay(t));
|
891
|
+
|
892
|
+
// 9. Let u be TimeClip(UTC(newDate)).
|
893
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(newDate));
|
894
|
+
|
895
|
+
// 10. Set dateObject.[[DateValue]] to u.
|
896
|
+
__Porffor_date_write(_this, u);
|
897
|
+
|
898
|
+
// 11. Return u.
|
899
|
+
return u;
|
900
|
+
};
|
901
|
+
|
902
|
+
// 21.4.4.22 Date.prototype.setHours (hour [, min [, sec [, ms ]]])
|
903
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.sethours
|
904
|
+
export const ___date_prototype_setHours = (_this: Date, hour: any, min: any, sec: any, ms: any) => {
|
905
|
+
// 1. Let dateObject be the this value.
|
906
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
907
|
+
// 3. Let t be dateObject.[[DateValue]].
|
908
|
+
let t: number = __Porffor_date_read(_this);
|
909
|
+
|
910
|
+
// 4. Let h be ? ToNumber(hour).
|
911
|
+
const h: number = Number(hour);
|
912
|
+
|
913
|
+
// we reorder the spec steps in this func for easier arg handling
|
914
|
+
|
915
|
+
// 8. If t is NaN, return NaN.
|
916
|
+
if (Number.isNaN(t)) return NaN;
|
917
|
+
|
918
|
+
// 9. Set t to LocalTime(t).
|
919
|
+
t = __ecma262_LocalTime(t);
|
920
|
+
|
921
|
+
// 5. If min is present, let m be ? ToNumber(min).
|
922
|
+
let m: number;
|
923
|
+
if (Porffor.rawType(min) != Porffor.TYPES.undefined) m = Number(min);
|
924
|
+
// 10. If min is not present, let m be MinFromTime(t).
|
925
|
+
else m = __ecma262_MinFromTime(t);
|
926
|
+
|
927
|
+
// 6. If sec is present, let s be ? ToNumber(sec).
|
928
|
+
let s: number;
|
929
|
+
if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
|
930
|
+
// 11. If sec is not present, let s be SecFromTime(t).
|
931
|
+
else s = __ecma262_SecFromTime(t);
|
932
|
+
|
933
|
+
// 7. If ms is present, let milli be ? ToNumber(ms).
|
934
|
+
let milli: number;
|
935
|
+
if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
|
936
|
+
// 12. If ms is not present, let milli be msFromTime(t).
|
937
|
+
else milli = __ecma262_msFromTime(t);
|
938
|
+
|
939
|
+
// 13. Let date be MakeDate(Day(t), MakeTime(h, m, s, milli)).
|
940
|
+
const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(h, m, s, milli));
|
941
|
+
|
942
|
+
// 14. Let u be TimeClip(UTC(date)).
|
943
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(date));
|
944
|
+
|
945
|
+
// 15. Set dateObject.[[DateValue]] to u.
|
946
|
+
__Porffor_date_write(_this, u);
|
947
|
+
|
948
|
+
// 16. Return u.
|
949
|
+
return u;
|
950
|
+
};
|
951
|
+
|
952
|
+
// 21.4.4.23 Date.prototype.setMilliseconds (ms)
|
953
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setmilliseconds
|
954
|
+
export const ___date_prototype_setMilliseconds = (_this: Date, ms: any) => {
|
955
|
+
// 1. Let dateObject be the this value.
|
956
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
957
|
+
// 3. Let t be dateObject.[[DateValue]].
|
958
|
+
let t: number = __Porffor_date_read(_this);
|
959
|
+
|
960
|
+
// ignore old-style spec setting arg instead of having let
|
961
|
+
// 4. Set ms to ? ToNumber(ms).
|
962
|
+
const milli: number = Number(ms);
|
963
|
+
|
964
|
+
// 5. If t is NaN, return NaN.
|
965
|
+
if (Number.isNaN(t)) return NaN;
|
966
|
+
|
967
|
+
// 6. Set t to LocalTime(t).
|
968
|
+
t = __ecma262_LocalTime(t);
|
969
|
+
|
970
|
+
// 7. Let time be MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), ms).
|
971
|
+
const time: number = __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), __ecma262_SecFromTime(t), milli);
|
972
|
+
|
973
|
+
// 8. Let u be TimeClip(UTC(MakeDate(Day(t), time))).
|
974
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(__ecma262_MakeDate(__ecma262_Day(t), time)));
|
975
|
+
|
976
|
+
// 9. Set dateObject.[[DateValue]] to u.
|
977
|
+
__Porffor_date_write(_this, u);
|
978
|
+
|
979
|
+
// 10. Return u.
|
980
|
+
return u;
|
981
|
+
};
|
982
|
+
|
983
|
+
// 21.4.4.24 Date.prototype.setMinutes (min [, sec [, ms ]])
|
984
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setminutes
|
985
|
+
export const ___date_prototype_setMinutes = (_this: Date, min: any, sec: any, ms: any) => {
|
986
|
+
// 1. Let dateObject be the this value.
|
987
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
988
|
+
// 3. Let t be dateObject.[[DateValue]].
|
989
|
+
let t: number = __Porffor_date_read(_this);
|
990
|
+
|
991
|
+
// 4. Let m be ? ToNumber(min).
|
992
|
+
const m: number = Number(min);
|
993
|
+
|
994
|
+
// we reorder the spec steps in this func for easier arg handling
|
995
|
+
|
996
|
+
// 7. If t is NaN, return NaN.
|
997
|
+
if (Number.isNaN(t)) return NaN;
|
998
|
+
|
999
|
+
// 8. Set t to LocalTime(t).
|
1000
|
+
t = __ecma262_LocalTime(t);
|
1001
|
+
|
1002
|
+
// 5. If sec is present, let s be ? ToNumber(sec).
|
1003
|
+
let s: number;
|
1004
|
+
if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
|
1005
|
+
// 9. If sec is not present, let s be SecFromTime(t).
|
1006
|
+
else s = __ecma262_SecFromTime(t);
|
1007
|
+
|
1008
|
+
// 6. If ms is present, let milli be ? ToNumber(ms).
|
1009
|
+
let milli: number;
|
1010
|
+
if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
|
1011
|
+
// 10. If ms is not present, let milli be msFromTime(t).
|
1012
|
+
else milli = __ecma262_msFromTime(t);
|
1013
|
+
|
1014
|
+
// 11. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), m, s, milli)).
|
1015
|
+
const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), m, s, milli));
|
1016
|
+
|
1017
|
+
// 12. Let u be TimeClip(UTC(date)).
|
1018
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(date));
|
1019
|
+
|
1020
|
+
// 13. Set dateObject.[[DateValue]] to u.
|
1021
|
+
__Porffor_date_write(_this, u);
|
1022
|
+
|
1023
|
+
// 14. Return u.
|
1024
|
+
return u;
|
1025
|
+
};
|
1026
|
+
|
1027
|
+
// 21.4.4.25 Date.prototype.setMonth (month [, date ])
|
1028
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setmonth
|
1029
|
+
export const ___date_prototype_setMonth = (_this: Date, month: any, date: any) => {
|
1030
|
+
// 1. Let dateObject be the this value.
|
1031
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1032
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1033
|
+
let t: number = __Porffor_date_read(_this);
|
1034
|
+
|
1035
|
+
// 4. Let m be ? ToNumber(month).
|
1036
|
+
const m: number = Number(month);
|
1037
|
+
|
1038
|
+
// we reorder the spec steps in this func for easier arg handling
|
1039
|
+
|
1040
|
+
// 6. If t is NaN, return NaN.
|
1041
|
+
if (Number.isNaN(t)) return NaN;
|
1042
|
+
|
1043
|
+
// 7. Set t to LocalTime(t).
|
1044
|
+
t = __ecma262_LocalTime(t);
|
1045
|
+
|
1046
|
+
// 5. If date is present, let dt be ? ToNumber(date).
|
1047
|
+
let dt: number;
|
1048
|
+
if (Porffor.rawType(date) != Porffor.TYPES.undefined) dt = Number(date);
|
1049
|
+
// 8. If date is not present, let dt be DateFromTime(t).
|
1050
|
+
else dt = __ecma262_DateFromTime(t);
|
1051
|
+
|
1052
|
+
// 9. Let newDate be MakeDate(MakeDay(YearFromTime(t), m, dt), TimeWithinDay(t)).
|
1053
|
+
const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), m, dt), __ecma262_TimeWithinDay(t));
|
1054
|
+
|
1055
|
+
// 10. Let u be TimeClip(UTC(newDate)).
|
1056
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(newDate));
|
1057
|
+
|
1058
|
+
// 11. Set dateObject.[[DateValue]] to u.
|
1059
|
+
__Porffor_date_write(_this, u);
|
1060
|
+
|
1061
|
+
// 12. Return u.
|
1062
|
+
return u;
|
1063
|
+
};
|
1064
|
+
|
1065
|
+
// 21.4.4.26 Date.prototype.setSeconds (sec [, ms ])
|
1066
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setseconds
|
1067
|
+
export const ___date_prototype_setSeconds = (_this: Date, sec: any, ms: any) => {
|
1068
|
+
// 1. Let dateObject be the this value.
|
1069
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1070
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1071
|
+
let t: number = __Porffor_date_read(_this);
|
1072
|
+
|
1073
|
+
// 4. Let s be ? ToNumber(sec).
|
1074
|
+
const s: number = Number(sec);
|
1075
|
+
|
1076
|
+
// we reorder the spec steps in this func for easier arg handling
|
1077
|
+
|
1078
|
+
// 6. If t is NaN, return NaN.
|
1079
|
+
if (Number.isNaN(t)) return NaN;
|
1080
|
+
|
1081
|
+
// 7. Set t to LocalTime(t).
|
1082
|
+
t = __ecma262_LocalTime(t);
|
1083
|
+
|
1084
|
+
// 5. If ms is present, let milli be ? ToNumber(ms).
|
1085
|
+
let milli: number;
|
1086
|
+
if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
|
1087
|
+
// 8. If ms is not present, let milli be msFromTime(t).
|
1088
|
+
else milli = __ecma262_msFromTime(t);
|
1089
|
+
|
1090
|
+
// 9. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), MinFromTime(t), s, milli)).
|
1091
|
+
const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), s, milli));
|
1092
|
+
|
1093
|
+
// 10. Let u be TimeClip(UTC(date)).
|
1094
|
+
const u: number = __ecma262_TimeClip(__ecma262_UTC(date));
|
1095
|
+
|
1096
|
+
// 11. Set dateObject.[[DateValue]] to u.
|
1097
|
+
__Porffor_date_write(_this, u);
|
1098
|
+
|
1099
|
+
// 12. Return u.
|
1100
|
+
return u;
|
1101
|
+
};
|
1102
|
+
|
1103
|
+
|
1104
|
+
// 21.4.4.27 Date.prototype.setTime (time)
|
1105
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.settime
|
1106
|
+
export const ___date_prototype_setTime = (_this: Date, time: any) => {
|
1107
|
+
// 1. Let dateObject be the this value.
|
1108
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1109
|
+
// 3. Let t be ? ToNumber(time).
|
1110
|
+
const t: number = Number(time);
|
1111
|
+
|
1112
|
+
// 4. Let v be TimeClip(t).
|
1113
|
+
const v: number = __ecma262_TimeClip(t);
|
1114
|
+
|
1115
|
+
// 5. Set dateObject.[[DateValue]] to v
|
1116
|
+
__Porffor_date_write(_this, v);
|
1117
|
+
|
1118
|
+
// 6. Return v.
|
1119
|
+
return v;
|
1120
|
+
};
|
1121
|
+
|
1122
|
+
// 21.4.4.28 Date.prototype.setUTCDate (date)
|
1123
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcdate
|
1124
|
+
export const ___date_prototype_setUTCDate = (_this: Date, date: any) => {
|
1125
|
+
// 1. Let dateObject be the this value.
|
1126
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1127
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1128
|
+
const t: number = __Porffor_date_read(_this);
|
1129
|
+
|
1130
|
+
// 4. Let dt be ? ToNumber(date).
|
1131
|
+
const dt: number = Number(date);
|
1132
|
+
|
1133
|
+
// 5. If t is NaN, return NaN.
|
1134
|
+
if (Number.isNaN(t)) return NaN;
|
1135
|
+
|
1136
|
+
// 6. Let newDate be MakeDate(MakeDay(YearFromTime(t), MonthFromTime(t), dt), TimeWithinDay(t)).
|
1137
|
+
const newDate = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), __ecma262_MonthFromTime(t), dt), __ecma262_TimeWithinDay(t));
|
1138
|
+
|
1139
|
+
// 7. Let v be TimeClip(newDate).
|
1140
|
+
const v: number = __ecma262_TimeClip(newDate);
|
1141
|
+
|
1142
|
+
// 8. Set dateObject.[[DateValue]] to v.
|
1143
|
+
__Porffor_date_write(_this, v);
|
1144
|
+
|
1145
|
+
// 9. Return v.
|
1146
|
+
return v;
|
1147
|
+
};
|
1148
|
+
|
1149
|
+
// 21.4.4.29 Date.prototype.setUTCFullYear (year [, month [, date ]])
|
1150
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcfullyear
|
1151
|
+
export const ___date_prototype_setUTCFullYear = (_this: Date, year: any, month: any, date: any) => {
|
1152
|
+
// 1. Let dateObject be the this value.
|
1153
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1154
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1155
|
+
let t: number = __Porffor_date_read(_this);
|
1156
|
+
|
1157
|
+
// 4. If t is NaN, set t to +0𝔽.
|
1158
|
+
if (Number.isNaN(t)) t = 0;
|
1159
|
+
|
1160
|
+
// 5. Let y be ? ToNumber(year).
|
1161
|
+
const y: number = Number(year);
|
1162
|
+
|
1163
|
+
// 6. If month is not present, let m be MonthFromTime(t); otherwise, let m be ? ToNumber(month).
|
1164
|
+
let m: number;
|
1165
|
+
if (Porffor.rawType(month) == Porffor.TYPES.undefined) m = __ecma262_MonthFromTime(t);
|
1166
|
+
else m = Number(month);
|
1167
|
+
|
1168
|
+
// 7. If date is not present, let dt be DateFromTime(t); otherwise, let dt be ? ToNumber(date).
|
1169
|
+
let dt: number;
|
1170
|
+
if (Porffor.rawType(date) == Porffor.TYPES.undefined) dt = __ecma262_DateFromTime(t);
|
1171
|
+
else dt = Number(date);
|
1172
|
+
|
1173
|
+
// 8. Let newDate be MakeDate(MakeDay(y, m, dt), TimeWithinDay(t)).
|
1174
|
+
const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(y, m, dt), __ecma262_TimeWithinDay(t));
|
1175
|
+
|
1176
|
+
// 9. Let v be TimeClip(newDate).
|
1177
|
+
const v: number = __ecma262_TimeClip(newDate);
|
1178
|
+
|
1179
|
+
// 10. Set dateObject.[[DateValue]] to v.
|
1180
|
+
__Porffor_date_write(_this, v);
|
1181
|
+
|
1182
|
+
// 11. Return v.
|
1183
|
+
return v;
|
1184
|
+
};
|
1185
|
+
|
1186
|
+
// 21.4.4.30 Date.prototype.setUTCHours (hour [, min [, sec [, ms ]]])
|
1187
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutchours
|
1188
|
+
export const ___date_prototype_setUTCHours = (_this: Date, hour: any, min: any, sec: any, ms: any) => {
|
1189
|
+
// 1. Let dateObject be the this value.
|
1190
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1191
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1192
|
+
let t: number = __Porffor_date_read(_this);
|
1193
|
+
|
1194
|
+
// 4. Let h be ? ToNumber(hour).
|
1195
|
+
const h: number = Number(hour);
|
1196
|
+
|
1197
|
+
// we reorder the spec steps in this func for easier arg handling
|
1198
|
+
|
1199
|
+
// 8. If t is NaN, return NaN.
|
1200
|
+
if (Number.isNaN(t)) return NaN;
|
1201
|
+
|
1202
|
+
// 5. If min is present, let m be ? ToNumber(min).
|
1203
|
+
let m: number;
|
1204
|
+
if (Porffor.rawType(min) != Porffor.TYPES.undefined) m = Number(min);
|
1205
|
+
// 9. If min is not present, let m be MinFromTime(t).
|
1206
|
+
else m = __ecma262_MinFromTime(t);
|
1207
|
+
|
1208
|
+
// 6. If sec is present, let s be ? ToNumber(sec).
|
1209
|
+
let s: number;
|
1210
|
+
if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
|
1211
|
+
// 10. If sec is not present, let s be SecFromTime(t).
|
1212
|
+
else s = __ecma262_SecFromTime(t);
|
1213
|
+
|
1214
|
+
// 7. If ms is present, let milli be ? ToNumber(ms).
|
1215
|
+
let milli: number;
|
1216
|
+
if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
|
1217
|
+
// 11. If ms is not present, let milli be msFromTime(t).
|
1218
|
+
else milli = __ecma262_msFromTime(t);
|
1219
|
+
|
1220
|
+
// 12. Let date be MakeDate(Day(t), MakeTime(h, m, s, milli)).
|
1221
|
+
const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(h, m, s, milli));
|
1222
|
+
|
1223
|
+
// 13. Let v be TimeClip(date).
|
1224
|
+
const v: number = __ecma262_TimeClip(date);
|
1225
|
+
|
1226
|
+
// 14. Set dateObject.[[DateValue]] to v.
|
1227
|
+
__Porffor_date_write(_this, v);
|
1228
|
+
|
1229
|
+
// 15. Return v.
|
1230
|
+
return v;
|
1231
|
+
};
|
1232
|
+
|
1233
|
+
// 21.4.4.31 Date.prototype.setUTCMilliseconds (ms)
|
1234
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcmilliseconds
|
1235
|
+
export const ___date_prototype_setUTCMilliseconds = (_this: Date, ms: any) => {
|
1236
|
+
// 1. Let dateObject be the this value.
|
1237
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1238
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1239
|
+
let t: number = __Porffor_date_read(_this);
|
1240
|
+
|
1241
|
+
// ignore old-style spec setting arg instead of having let
|
1242
|
+
// 4. Set ms to ? ToNumber(ms).
|
1243
|
+
const milli: number = Number(ms);
|
1244
|
+
|
1245
|
+
// 5. If t is NaN, return NaN.
|
1246
|
+
if (Number.isNaN(t)) return NaN;
|
1247
|
+
|
1248
|
+
// 6. Let time be MakeTime(HourFromTime(t), MinFromTime(t), SecFromTime(t), ms).
|
1249
|
+
const time: number = __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), __ecma262_SecFromTime(t), milli);
|
1250
|
+
|
1251
|
+
// 7. Let v be TimeClip(MakeDate(Day(t), time)).
|
1252
|
+
const v: number = __ecma262_TimeClip(__ecma262_MakeDate(__ecma262_Day(t), time));
|
1253
|
+
|
1254
|
+
// 8. Set dateObject.[[DateValue]] to v.
|
1255
|
+
__Porffor_date_write(_this, v);
|
1256
|
+
|
1257
|
+
// 10. Return v.
|
1258
|
+
return v;
|
1259
|
+
};
|
1260
|
+
|
1261
|
+
// 21.4.4.32 Date.prototype.setUTCMinutes (min [, sec [, ms ]])
|
1262
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcminutes
|
1263
|
+
export const ___date_prototype_setUTCMinutes = (_this: Date, min: any, sec: any, ms: any) => {
|
1264
|
+
// 1. Let dateObject be the this value.
|
1265
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1266
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1267
|
+
let t: number = __Porffor_date_read(_this);
|
1268
|
+
|
1269
|
+
// 4. Let m be ? ToNumber(min).
|
1270
|
+
const m: number = Number(min);
|
1271
|
+
|
1272
|
+
// we reorder the spec steps in this func for easier arg handling
|
1273
|
+
|
1274
|
+
// 7. If t is NaN, return NaN.
|
1275
|
+
if (Number.isNaN(t)) return NaN;
|
1276
|
+
|
1277
|
+
// 5. If sec is present, let s be ? ToNumber(sec).
|
1278
|
+
let s: number;
|
1279
|
+
if (Porffor.rawType(sec) != Porffor.TYPES.undefined) s = Number(sec);
|
1280
|
+
// 8. If sec is not present, let s be SecFromTime(t).
|
1281
|
+
else s = __ecma262_SecFromTime(t);
|
1282
|
+
|
1283
|
+
// 6. If ms is present, let milli be ? ToNumber(ms).
|
1284
|
+
let milli: number;
|
1285
|
+
if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
|
1286
|
+
// 9. If ms is not present, let milli be msFromTime(t).
|
1287
|
+
else milli = __ecma262_msFromTime(t);
|
1288
|
+
|
1289
|
+
// 10. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), m, s, milli)).
|
1290
|
+
const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), m, s, milli));
|
1291
|
+
|
1292
|
+
// 11. Let v be TimeClip(date).
|
1293
|
+
const v: number = __ecma262_TimeClip(date);
|
1294
|
+
|
1295
|
+
// 12. Set dateObject.[[DateValue]] to v.
|
1296
|
+
__Porffor_date_write(_this, v);
|
1297
|
+
|
1298
|
+
// 13. Return v.
|
1299
|
+
return v;
|
1300
|
+
};
|
1301
|
+
|
1302
|
+
// 21.4.4.33 Date.prototype.setUTCMonth (month [, date ])
|
1303
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcmonth
|
1304
|
+
export const ___date_prototype_setUTCMonth = (_this: Date, month: any, date: any) => {
|
1305
|
+
// 1. Let dateObject be the this value.
|
1306
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1307
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1308
|
+
let t: number = __Porffor_date_read(_this);
|
1309
|
+
|
1310
|
+
// 4. Let m be ? ToNumber(month).
|
1311
|
+
const m: number = Number(month);
|
1312
|
+
|
1313
|
+
// we reorder the spec steps in this func for easier arg handling
|
1314
|
+
|
1315
|
+
// 6. If t is NaN, return NaN.
|
1316
|
+
if (Number.isNaN(t)) return NaN;
|
1317
|
+
|
1318
|
+
// 5. If date is present, let dt be ? ToNumber(date).
|
1319
|
+
let dt: number;
|
1320
|
+
if (Porffor.rawType(date) != Porffor.TYPES.undefined) dt = Number(date);
|
1321
|
+
// 7. If date is not present, let dt be DateFromTime(t).
|
1322
|
+
else dt = __ecma262_DateFromTime(t);
|
1323
|
+
|
1324
|
+
// 8. Let newDate be MakeDate(MakeDay(YearFromTime(t), m, dt), TimeWithinDay(t)).
|
1325
|
+
const newDate: number = __ecma262_MakeDate(__ecma262_MakeDay(__ecma262_YearFromTime(t), m, dt), __ecma262_TimeWithinDay(t));
|
1326
|
+
|
1327
|
+
// 9. Let v be TimeClip(newDate).
|
1328
|
+
const v: number = __ecma262_TimeClip(newDate);
|
1329
|
+
|
1330
|
+
// 10. Set dateObject.[[DateValue]] to v.
|
1331
|
+
__Porffor_date_write(_this, v);
|
1332
|
+
|
1333
|
+
// 11. Return v.
|
1334
|
+
return v;
|
1335
|
+
};
|
1336
|
+
|
1337
|
+
// 21.4.4.34 Date.prototype.setUTCSeconds (sec [, ms ])
|
1338
|
+
// https://tc39.es/ecma262/multipage/numbers-and-dates.html#sec-date.prototype.setutcseconds
|
1339
|
+
export const ___date_prototype_setUTCSeconds = (_this: Date, sec: any, ms: any) => {
|
1340
|
+
// 1. Let dateObject be the this value.
|
1341
|
+
// 2. Perform ? RequireInternalSlot(dateObject, [[DateValue]]).
|
1342
|
+
// 3. Let t be dateObject.[[DateValue]].
|
1343
|
+
let t: number = __Porffor_date_read(_this);
|
1344
|
+
|
1345
|
+
// 4. Let s be ? ToNumber(sec).
|
1346
|
+
const s: number = Number(sec);
|
1347
|
+
|
1348
|
+
// we reorder the spec steps in this func for easier arg handling
|
1349
|
+
|
1350
|
+
// 6. If t is NaN, return NaN.
|
1351
|
+
if (Number.isNaN(t)) return NaN;
|
1352
|
+
|
1353
|
+
// 5. If ms is present, let milli be ? ToNumber(ms).
|
1354
|
+
let milli: number;
|
1355
|
+
if (Porffor.rawType(ms) != Porffor.TYPES.undefined) milli = Number(ms);
|
1356
|
+
// 7. If ms is not present, let milli be msFromTime(t).
|
1357
|
+
else milli = __ecma262_msFromTime(t);
|
1358
|
+
|
1359
|
+
// 8. Let date be MakeDate(Day(t), MakeTime(HourFromTime(t), MinFromTime(t), s, milli)).
|
1360
|
+
const date: number = __ecma262_MakeDate(__ecma262_Day(t), __ecma262_MakeTime(__ecma262_HourFromTime(t), __ecma262_MinFromTime(t), s, milli));
|
727
1361
|
|
1362
|
+
// 9. Let v be TimeClip(date).
|
1363
|
+
const v: number = __ecma262_TimeClip(date);
|
728
1364
|
|
729
|
-
//
|
730
|
-
|
731
|
-
// 3. Let t be dateObject.[[DateValue]].
|
732
|
-
// 4. If t is NaN, return NaN.
|
733
|
-
// 5. Return SecFromTime(t).
|
1365
|
+
// 10. Set dateObject.[[DateValue]] to v.
|
1366
|
+
__Porffor_date_write(_this, v);
|
734
1367
|
|
1368
|
+
// 11. Return v.
|
1369
|
+
return v;
|
1370
|
+
};
|