Remove FLOAT_ADD and similar

This commit is contained in:
Richard Feldman 2020-06-21 15:30:44 -04:00
parent ddf980e475
commit 32b9b1ea60
6 changed files with 60 additions and 93 deletions

View file

@ -313,18 +313,6 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
// Float module
// isGt or (>) : Num a, Num a -> Bool
add_type(
Symbol::FLOAT_GT,
SolvedType::Func(vec![float_type(), float_type()], Box::new(bool_type())),
);
// eq or (==) : Num a, Num a -> Bool
add_type(
Symbol::FLOAT_EQ,
SolvedType::Func(vec![float_type(), float_type()], Box::new(bool_type())),
);
// div : Float, Float -> Float
add_type(
Symbol::FLOAT_DIV,

View file

@ -403,18 +403,6 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
// Float module
// isGt or (>) : Num a, Num a -> Bool
add_type(
Symbol::FLOAT_GT,
unique_function(vec![float_type(UVAR1), float_type(UVAR2)], bool_type(UVAR3)),
);
// eq or (==) : Num a, Num a -> Bool
add_type(
Symbol::FLOAT_EQ,
unique_function(vec![float_type(UVAR1), float_type(UVAR2)], bool_type(UVAR3)),
);
// div : Float, Float -> Float
add_type(
Symbol::FLOAT_DIV,

View file

@ -251,14 +251,14 @@ fn float_tan(symbol: Symbol, var_store: &mut VarStore) -> Def {
fn float_is_zero(symbol: Symbol, var_store: &mut VarStore) -> Def {
use crate::expr::Expr::*;
let body = call(
Symbol::FLOAT_EQ,
vec![
Float(var_store.fresh(), 0.0),
Var(Symbol::FLOAT_IS_ZERO_ARG),
let body = RunLowLevel {
op: LowLevel::Eq,
args: vec![
(var_store.fresh(), Float(var_store.fresh(), 0.0)),
(var_store.fresh(), Var(Symbol::FLOAT_IS_ZERO_ARG)),
],
var_store,
);
ret_var: var_store.fresh(),
};
defn(symbol, vec![Symbol::FLOAT_IS_ZERO_ARG], var_store, body)
}
@ -267,14 +267,14 @@ fn float_is_zero(symbol: Symbol, var_store: &mut VarStore) -> Def {
fn float_is_negative(symbol: Symbol, var_store: &mut VarStore) -> Def {
use crate::expr::Expr::*;
let body = call(
Symbol::FLOAT_GT,
vec![
Float(var_store.fresh(), 0.0),
Var(Symbol::FLOAT_IS_NEGATIVE_ARG),
let body = RunLowLevel {
op: LowLevel::NumGt,
args: vec![
(var_store.fresh(), Float(var_store.fresh(), 0.0)),
(var_store.fresh(), Var(Symbol::FLOAT_IS_NEGATIVE_ARG)),
],
var_store,
);
ret_var: var_store.fresh(),
};
defn(symbol, vec![Symbol::FLOAT_IS_NEGATIVE_ARG], var_store, body)
}
@ -283,14 +283,14 @@ fn float_is_negative(symbol: Symbol, var_store: &mut VarStore) -> Def {
fn float_is_positive(symbol: Symbol, var_store: &mut VarStore) -> Def {
use crate::expr::Expr::*;
let body = call(
Symbol::FLOAT_GT,
vec![
Var(Symbol::FLOAT_IS_POSITIVE_ARG),
Float(var_store.fresh(), 0.0),
let body = RunLowLevel {
op: LowLevel::NumGt,
args: vec![
(var_store.fresh(), Var(Symbol::FLOAT_IS_NEGATIVE_ARG)),
(var_store.fresh(), Float(var_store.fresh(), 0.0)),
],
var_store,
);
ret_var: var_store.fresh(),
};
defn(symbol, vec![Symbol::FLOAT_IS_POSITIVE_ARG], var_store, body)
}

View file

@ -606,31 +606,29 @@ define_builtins! {
4 INT_MOD: "mod"
5 INT_HIGHEST: "highest"
6 INT_LOWEST: "lowest"
7 INT_ADD: "#add"
8 INT_SUB: "#sub"
9 INT_DIV_UNSAFE: "divUnsafe" // TODO remove once we can code gen Result
10 INT_LT: "#lt"
11 INT_LTE: "#lte"
12 INT_GT: "#gt"
13 INT_GTE: "#gte"
14 INT_DIV_ARG_NUMERATOR: "div#numerator" // The first argument to `//`, the numerator
15 INT_DIV_ARG_DENOMINATOR: "div#denominator" // The first argument to `//`, the denominator
16 INT_ABS: "abs"
17 INT_ABS_ARG: "abs#arg"
18 INT_REM_UNSAFE: "remUnsafe"
19 INT_REM: "rem"
20 INT_REM_ARG_0: "rem#arg0"
21 INT_REM_ARG_1: "rem#arg1"
22 INT_IS_ODD: "isOdd"
23 INT_IS_ODD_ARG: "isOdd#arg"
24 INT_IS_EVEN: "isEven"
25 INT_IS_EVEN_ARG: "isEven#arg"
26 INT_IS_ZERO: "isZero"
27 INT_IS_ZERO_ARG: "isZero#arg"
28 INT_IS_POSITIVE: "isPositive"
29 INT_IS_POSITIVE_ARG: "isPositive#arg"
30 INT_IS_NEGATIVE: "isNegative"
31 INT_IS_NEGATIVE_ARG: "isNegative#arg"
7 INT_DIV_UNSAFE: "divUnsafe" // TODO remove once we can code gen Result
8 INT_LT: "#lt"
9 INT_LTE: "#lte"
10 INT_GT: "#gt"
11 INT_GTE: "#gte"
12 INT_DIV_ARG_NUMERATOR: "div#numerator" // The first argument to `//`, the numerator
13 INT_DIV_ARG_DENOMINATOR: "div#denominator" // The first argument to `//`, the denominator
14 INT_ABS: "abs"
15 INT_ABS_ARG: "abs#arg"
16 INT_REM_UNSAFE: "remUnsafe"
17 INT_REM: "rem"
18 INT_REM_ARG_0: "rem#arg0"
19 INT_REM_ARG_1: "rem#arg1"
20 INT_IS_ODD: "isOdd"
21 INT_IS_ODD_ARG: "isOdd#arg"
22 INT_IS_EVEN: "isEven"
23 INT_IS_EVEN_ARG: "isEven#arg"
24 INT_IS_ZERO: "isZero"
25 INT_IS_ZERO_ARG: "isZero#arg"
26 INT_IS_POSITIVE: "isPositive"
27 INT_IS_POSITIVE_ARG: "isPositive#arg"
28 INT_IS_NEGATIVE: "isNegative"
29 INT_IS_NEGATIVE_ARG: "isNegative#arg"
}
3 FLOAT: "Float" => {
0 FLOAT_FLOAT: "Float" imported // the Float.Float type alias
@ -641,25 +639,18 @@ define_builtins! {
5 FLOAT_SQRT: "sqrt"
6 FLOAT_HIGHEST: "highest"
7 FLOAT_LOWEST: "lowest"
8 FLOAT_ADD: "#add"
9 FLOAT_SUB: "#sub"
10 FLOAT_EQ: "eq"
11 FLOAT_ROUND: "round"
12 FLOAT_LT: "#lt"
13 FLOAT_LTE: "#lte"
14 FLOAT_GT: "gt"
15 FLOAT_GTE: "#gte"
16 FLOAT_ABS: "abs"
17 FLOAT_IS_POSITIVE: "isPositive"
18 FLOAT_IS_POSITIVE_ARG: "isPositive#arg"
19 FLOAT_IS_NEGATIVE: "isNegative"
20 FLOAT_IS_NEGATIVE_ARG: "isNegative#arg"
21 FLOAT_IS_ZERO: "isZero"
22 FLOAT_IS_ZERO_ARG: "isZero#arg"
23 FLOAT_SIN: "sin"
24 FLOAT_COS: "cos"
25 FLOAT_TAN: "tan"
26 FLOAT_TAN_ARG: "tan#arg"
8 FLOAT_ROUND: "round"
9 FLOAT_ABS: "abs"
10 FLOAT_IS_POSITIVE: "isPositive"
11 FLOAT_IS_POSITIVE_ARG: "isPositive#arg"
12 FLOAT_IS_NEGATIVE: "isNegative"
13 FLOAT_IS_NEGATIVE_ARG: "isNegative#arg"
14 FLOAT_IS_ZERO: "isZero"
15 FLOAT_IS_ZERO_ARG: "isZero#arg"
16 FLOAT_SIN: "sin"
17 FLOAT_COS: "cos"
18 FLOAT_TAN: "tan"
19 FLOAT_TAN_ARG: "tan#arg"
}
4 BOOL: "Bool" => {
0 BOOL_BOOL: "Bool" imported // the Bool.Bool type alias

View file

@ -48,7 +48,7 @@ impl<'a> Layout<'a> {
) -> Result<Self, ()> {
use roc_types::subs::Content::*;
match content {
match dbg!(content) {
var @ FlexVar(_) | var @ RigidVar(_) => {
panic!("Layout::new encountered an unresolved {:?}", var);
}

View file

@ -122,7 +122,7 @@ mod test_mono {
compiles_to(
"3.0 + 4",
CallByName {
name: Symbol::FLOAT_ADD,
name: Symbol::NUM_ADD,
layout: Layout::FunctionPointer(
&[
Layout::Builtin(Builtin::Float64),
@ -143,7 +143,7 @@ mod test_mono {
compiles_to(
"0xDEADBEEF + 4",
CallByName {
name: Symbol::INT_ADD,
name: Symbol::NUM_ADD,
layout: Layout::FunctionPointer(
&[
Layout::Builtin(Builtin::Int64),
@ -165,7 +165,7 @@ mod test_mono {
compiles_to(
"3 + 5",
CallByName {
name: Symbol::INT_ADD,
name: Symbol::NUM_ADD,
layout: Layout::FunctionPointer(
&[
Layout::Builtin(Builtin::Int64),