@@ -127,10 +127,11 @@ export namespace BuiltinNames {
127
127
export const trace = "~lib/builtins/trace" ;
128
128
export const seed = "~lib/builtins/seed" ;
129
129
130
- export const isInteger = "~lib/builtins/isInteger" ;
131
- export const isFloat = "~lib/builtins/isFloat" ;
132
130
export const isBoolean = "~lib/builtins/isBoolean" ;
131
+ export const isInteger = "~lib/builtins/isInteger" ;
133
132
export const isSigned = "~lib/builtins/isSigned" ;
133
+ export const isFloat = "~lib/builtins/isFloat" ;
134
+ export const isVector = "~lib/builtins/isVector" ;
134
135
export const isReference = "~lib/builtins/isReference" ;
135
136
export const isString = "~lib/builtins/isString" ;
136
137
export const isArray = "~lib/builtins/isArray" ;
@@ -758,6 +759,17 @@ export const function_builtins = new Map<string,(ctx: BuiltinContext) => Express
758
759
759
760
// === Static type evaluation =================================================================
760
761
762
+ // isBoolean<T!>() / isBoolean<T?>(value: T) -> bool
763
+ function builtin_isBoolean ( ctx : BuiltinContext ) : ExpressionRef {
764
+ var compiler = ctx . compiler ;
765
+ var module = compiler . module ;
766
+ var type = checkConstantType ( ctx ) ;
767
+ compiler . currentType = Type . bool ;
768
+ if ( ! type ) return module . unreachable ( ) ;
769
+ return reifyConstantType ( ctx , module . i32 ( type . isBooleanValue ? 1 : 0 ) ) ;
770
+ }
771
+ builtins . set ( BuiltinNames . isBoolean , builtin_isBoolean ) ;
772
+
761
773
// isInteger<T!>() / isInteger<T?>(value: T) -> bool
762
774
function builtin_isInteger ( ctx : BuiltinContext ) : ExpressionRef {
763
775
var compiler = ctx . compiler ;
@@ -769,38 +781,38 @@ function builtin_isInteger(ctx: BuiltinContext): ExpressionRef {
769
781
}
770
782
builtins . set ( BuiltinNames . isInteger , builtin_isInteger ) ;
771
783
772
- // isFloat <T!>() / isFloat <T?>(value: T) -> bool
773
- function builtin_isFloat ( ctx : BuiltinContext ) : ExpressionRef {
784
+ // isSigned <T!>() / isSigned <T?>(value: T) -> bool
785
+ function builtin_isSigned ( ctx : BuiltinContext ) : ExpressionRef {
774
786
var compiler = ctx . compiler ;
775
787
var module = compiler . module ;
776
788
var type = checkConstantType ( ctx ) ;
777
789
compiler . currentType = Type . bool ;
778
790
if ( ! type ) return module . unreachable ( ) ;
779
- return reifyConstantType ( ctx , module . i32 ( type . isFloatValue ? 1 : 0 ) ) ;
791
+ return reifyConstantType ( ctx , module . i32 ( type . isSignedIntegerValue ? 1 : 0 ) ) ;
780
792
}
781
- builtins . set ( BuiltinNames . isFloat , builtin_isFloat ) ;
793
+ builtins . set ( BuiltinNames . isSigned , builtin_isSigned ) ;
782
794
783
- // isBoolean <T!>() / isBoolean <T?>(value: T) -> bool
784
- function builtin_isBoolean ( ctx : BuiltinContext ) : ExpressionRef {
795
+ // isFloat <T!>() / isFloat <T?>(value: T) -> bool
796
+ function builtin_isFloat ( ctx : BuiltinContext ) : ExpressionRef {
785
797
var compiler = ctx . compiler ;
786
798
var module = compiler . module ;
787
799
var type = checkConstantType ( ctx ) ;
788
800
compiler . currentType = Type . bool ;
789
801
if ( ! type ) return module . unreachable ( ) ;
790
- return reifyConstantType ( ctx , module . i32 ( type . isBooleanValue ? 1 : 0 ) ) ;
802
+ return reifyConstantType ( ctx , module . i32 ( type . isFloatValue ? 1 : 0 ) ) ;
791
803
}
792
- builtins . set ( BuiltinNames . isBoolean , builtin_isBoolean ) ;
804
+ builtins . set ( BuiltinNames . isFloat , builtin_isFloat ) ;
793
805
794
- // isSigned <T!>() / isSigned <T?>(value: T) -> bool
795
- function builtin_isSigned ( ctx : BuiltinContext ) : ExpressionRef {
806
+ // isVector <T!>() / isVector <T?>(value: T) -> bool
807
+ function builtin_isVector ( ctx : BuiltinContext ) : ExpressionRef {
796
808
var compiler = ctx . compiler ;
797
809
var module = compiler . module ;
798
810
var type = checkConstantType ( ctx ) ;
799
811
compiler . currentType = Type . bool ;
800
812
if ( ! type ) return module . unreachable ( ) ;
801
- return reifyConstantType ( ctx , module . i32 ( type . isSignedIntegerValue ? 1 : 0 ) ) ;
813
+ return reifyConstantType ( ctx , module . i32 ( type . isVectorValue ? 1 : 0 ) ) ;
802
814
}
803
- builtins . set ( BuiltinNames . isSigned , builtin_isSigned ) ;
815
+ builtins . set ( BuiltinNames . isVector , builtin_isVector ) ;
804
816
805
817
// isReference<T!>() / isReference<T?>(value: T) -> bool
806
818
function builtin_isReference ( ctx : BuiltinContext ) : ExpressionRef {
0 commit comments