@@ -930,6 +930,192 @@ module MemberAppOrder =
930930 check" cwkneccewi" state[ 3 ; 2 ; 5 ; 4 ]
931931 check" nvroirv" ( sprintf" %d %d %d %d %d " foo.A foo.B foo.X foo.Y foo.Z) " 4 5 3 2 99"
932932
933+ type RecordWithInts =
934+ { A: int
935+ B: int
936+ C: int }
937+
938+ module OrderOfRecordInitialisation =
939+
940+ let expected =
941+ { A= 1
942+ B= 2
943+ C= 3 }
944+
945+ let ShouldInitialzeInGivenOrder1 =
946+ let order = ref" "
947+ let actual =
948+ { A= let _ = order:= ! order + "1 " in 1
949+ B= let _ = order:= ! order + "2 " in 2
950+ C= let _ = order:= ! order + "3 " in 3 }
951+
952+ check" cnclewlecp2" expected actual
953+ check" ceiewoi" " 123" ! order
954+
955+ let ShouldInitialzeInGivenOrder2 =
956+ let order = ref" "
957+ let actual =
958+ { A= let _ = order:= ! order + "1 " in 1
959+ C= let _ = order:= ! order + "2 " in 3
960+ B= let _ = order:= ! order + "3 " in 2 }
961+
962+ check" cd33289e0ewn1" expected actual
963+ check" ewlknewv90we2" " 123" ! order
964+
965+ let ShouldInitialzeInGivenOrder3 =
966+ let order = ref" "
967+ let actual =
968+ { B= let _ = order:= ! order + "1 " in 2
969+ A= let _ = order:= ! order + "2 " in 1
970+ C= let _ = order:= ! order + "3 " in 3 }
971+
972+ check" cewekcjnwe3" expected actual
973+ check" cewekcjnwe4" " 123" ! order
974+
975+
976+ let ShouldInitialzeInGivenOrder4 =
977+ let order = ref" "
978+ let actual =
979+ { B= let _ = order:= ! order + "1 " in 2
980+ C= let _ = order:= ! order + "2 " in 3
981+ A= let _ = order:= ! order + "3 " in 1 }
982+
983+ check" cewekcjnwe5" expected actual
984+ check" cewekcjnwe6" " 123" ! order
985+
986+
987+ let ShouldInitialzeInGivenOrder5 =
988+ let order = ref" "
989+ let actual =
990+ { C= let _ = order:= ! order + "1 " in 3
991+ A= let _ = order:= ! order + "2 " in 1
992+ B= let _ = order:= ! order + "3 " in 2 }
993+
994+ check" cewekcjnwe7" expected actual
995+ check" cewekcjnwe8" " 123" ! order
996+
997+
998+ let ShouldInitialzeInGivenOrder6 =
999+ let order = ref" "
1000+ let actual =
1001+ { C= let _ = order:= ! order + "1 " in 3
1002+ B= let _ = order:= ! order + "2 " in 2
1003+ A= let _ = order:= ! order + "3 " in 1 }
1004+
1005+ check" cewekcjnwe9" expected actual
1006+ check" cewekcjnwe10" " 123" ! order
1007+
1008+
1009+ type RecordWithDifferentTypes =
1010+ { A: int
1011+ B: string
1012+ C: float
1013+ D: RecordWithInts }
1014+
1015+
1016+ module RecordInitialisationWithDifferentTxpes =
1017+
1018+ let expected =
1019+ { A= 1
1020+ B= " 2"
1021+ C= 3.0
1022+ D=
1023+ { A= 4
1024+ B= 5
1025+ C= 6 }}
1026+
1027+
1028+ let ShouldInitialzeInGivenOrder1 =
1029+ let order = ref" "
1030+ let actual =
1031+ { A= let _ = order:= ! order + "1 " in 1
1032+ B= let _ = order:= ! order + "2 " in "2 "
1033+ C= let _ = order:= ! order + "3 " in 3 .0
1034+ D= let _ = order:= ! order + "4 " in
1035+ { A= let _ = order:= ! order + "5 " in 4
1036+ B= let _ = order:= ! order + "6 " in 5
1037+ C= let _ = order:= ! order + "7 " in 6 } }
1038+
1039+ check" cewekcjnwe11" expected actual
1040+ check" cewekcjnwe12" " 1234567" ! order
1041+
1042+
1043+ let ShouldInitialzeInGivenOrder2 =
1044+ let order = ref" "
1045+ let actual =
1046+ { A= let _ = order:= ! order + "1 " in 1
1047+ C= let _ = order:= ! order + "2 " in 3 .0
1048+ D= let _ = order:= ! order + "3 " in
1049+ { A= let _ = order:= ! order + "4 " in 4
1050+ B= let _ = order:= ! order + "5 " in 5
1051+ C= let _ = order:= ! order + "6 " in 6 }
1052+
1053+ B= let _ = order:= ! order+ " 7" in " 2" }
1054+
1055+ check" cewekcjnwe13" expected actual
1056+ check" cewekcjnwe14" " 1234567" ! order
1057+
1058+
1059+ let ShouldInitialzeInGivenOrder3 =
1060+ let order = ref" "
1061+ let actual =
1062+ { A= let _ = order:= ! order + "1 " in 1
1063+ C= let _ = order:= ! order + "2 " in 3 .0
1064+ B= let _ = order:= ! order + "3 " in "2 "
1065+ D= let _ = order:= ! order + "4 " in
1066+ { A= let _ = order:= ! order + "5 " in 4
1067+ B= let _ = order:= ! order + "6 " in 5
1068+ C= let _ = order:= ! order + "7 " in 6 } }
1069+
1070+ check" cewekcjnwe15" expected actual
1071+ check" cewekcjnwe16" " 1234567" ! order
1072+
1073+
1074+
1075+ let ShouldInitialzeInGivenOrder4 =
1076+ let order = ref" "
1077+ let actual =
1078+ { B= let _ = order:= ! order + "1 " in "2 "
1079+ A= let _ = order:= ! order + "2 " in 1
1080+ C= let _ = order:= ! order + "3 " in 3 .0
1081+ D= let _ = order:= ! order + "4 " in
1082+ { A= let _ = order:= ! order + "5 " in 4
1083+ B= let _ = order:= ! order + "6 " in 5
1084+ C= let _ = order:= ! order + "7 " in 6 } }
1085+
1086+ check" cewekcjnwe17" expected actual
1087+ check" cewekcjnwe18" " 1234567" ! order
1088+
1089+
1090+ let ShouldInitialzeInGivenOrder5 =
1091+ let order = ref" "
1092+ let actual =
1093+ { D= let _ = order:= ! order + "1 " in
1094+ { A= let _ = order:= ! order + "2 " in 4
1095+ B= let _ = order:= ! order + "3 " in 5
1096+ C= let _ = order:= ! order + "4 " in 6 }
1097+ B= let _ = order:= ! order+ " 5" in " 2"
1098+ C= let _ = order:= ! order+ " 6" in 3.0
1099+ A= let _ = order:= ! order+ " 7" in 1 }
1100+
1101+ check" cewekcjnwe19" expected actual
1102+ check" cewekcjnwe20" " 1234567" ! order
1103+
1104+
1105+ let ShouldInitialzeInGivenOrder6 =
1106+ let order = ref" "
1107+ let actual =
1108+ { D= let _ = order:= ! order + "1 " in
1109+ { A= let _ = order:= ! order + "2 " in 4
1110+ B= let _ = order:= ! order + "3 " in 5
1111+ C= let _ = order:= ! order + "4 " in 6 }
1112+ A= let _ = order:= ! order+ " 5" in 1
1113+ B= let _ = order:= ! order+ " 6" in " 2"
1114+ C= let _ = order:= ! order+ " 7" in 3.0 }
1115+
1116+ check" cewekcjnwe21" expected actual
1117+ check" cewekcjnwe22" " 1234567" ! order
1118+
9331119let aa =
9341120if ! failuresthen ( stdout.WriteLine" Test Failed" ; exit1 )
9351121else ( stdout.WriteLine" Test Passed" ;