Register types for Num.pow

This commit is contained in:
Dimitar Apostolov 2020-09-11 14:39:25 +02:00
parent ad0a214dbf
commit d0864608fd
3 changed files with 27 additions and 0 deletions

View file

@ -412,6 +412,12 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
// minFloat : Float
add_type(Symbol::NUM_MIN_FLOAT, float_type());
// pow : Float, Float -> Float
add_type(
Symbol::NUM_POW,
SolvedType::Func(vec![float_type(), float_type()], Box::new(float_type())),
);
// Bool module
// and : Bool, Bool -> Bool

View file

@ -448,6 +448,15 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
unique_function(vec![num_type(star1, a)], bool_type(star2))
});
// pow : Float, Float -> Float
add_type(Symbol::NUM_POW, {
let_tvars! { star1, star2, star3 };
unique_function(
vec![float_type(star1), float_type(star2)],
float_type(star3),
)
});
// Bool module
// isEq or (==) : Attr * a, Attr * a -> Attr * Bool

View file

@ -2382,6 +2382,18 @@ mod solve_expr {
);
}
#[test]
fn pow() {
infer_eq_without_problem(
indoc!(
r#"
Num.pow
"#
),
"Float, Float -> Float",
);
}
#[test]
fn reconstruct_path() {
infer_eq_without_problem(