@@ -919,10 +919,17 @@ CapJitAddTypeSignature( "ListWithIdenticalEntries", [ IsInt, IsObject ], functio
919
919
end );
920
920
921
921
CapJitAddTypeSignature( " Concatenation" , [ IsList ] , function ( input_types )
922
+ local filter;
922
923
923
- Assert ( 0 , input_types[ 1 ] .element_type.filter = IsList );
924
+ if input_types[ 1 ] .element_type.filter = IsList then
925
+ filter := IsList;
926
+ elif input_types[ 1 ] .element_type.filter = IsLazyArray then
927
+ filter := IsLazyArray;
928
+ else
929
+ Error( input_types[ 1 ] .element_type.filter, " is not in [ IsList, IsLazyArray ]\n " );
930
+ fi ;
924
931
925
- return rec ( filter := IsList , element_type := input_types[ 1 ] .element_type.element_type );
932
+ return rec ( filter := filter , element_type := input_types[ 1 ] .element_type.element_type );
926
933
927
934
end );
928
935
@@ -1101,6 +1108,42 @@ CapJitAddTypeSignature( "MatElm", [ IsList, IsInt, IsInt ], function ( input_typ
1101
1108
1102
1109
end );
1103
1110
1111
+ CapJitAddTypeSignature( " LazyArray" , [ IsInt, IsFunction ] , function ( input_types )
1112
+
1113
+ return rec ( filter := IsLazyArray, element_type := rec ( filter := IsInt ) );
1114
+
1115
+ end );
1116
+
1117
+ CapJitAddTypeSignature( " LazyStandardInterval" , [ IsInt ] , function ( input_types )
1118
+
1119
+ return rec ( filter := IsLazyArray, element_type := rec ( filter := IsInt ) );
1120
+
1121
+ end );
1122
+
1123
+ CapJitAddTypeSignature( " LazyInterval" , [ IsInt, IsInt ] , function ( input_types )
1124
+
1125
+ return rec ( filter := IsLazyInterval, element_type := rec ( filter := IsInt ) );
1126
+
1127
+ end );
1128
+
1129
+ CapJitAddTypeSignature( " LazyConstantArray" , [ IsInt, IsInt ] , function ( input_types )
1130
+
1131
+ return rec ( filter := IsLazyConstantArray, element_type := rec ( filter := IsInt ) );
1132
+
1133
+ end );
1134
+
1135
+ CapJitAddTypeSignature( " LazyArrayFromList" , [ IsList ] , function ( input_types )
1136
+
1137
+ return rec ( filter := IsLazyArrayFromList, element_type := rec ( filter := IsInt ) );
1138
+
1139
+ end );
1140
+
1141
+ CapJitAddTypeSignature( " ListOfValues" , [ IsLazyArray ] , function ( input_types )
1142
+
1143
+ return rec ( filter := IsList, element_type := rec ( filter := IsInt ) );
1144
+
1145
+ end );
1146
+
1104
1147
CapJitAddTypeSignature( " LazyHList" , [ IsList, IsFunction ] , function ( args, func_stack )
1105
1148
1106
1149
args := ShallowCopy( args );
0 commit comments