mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 14:24:45 +00:00
Remove FLOAT_ADD and similar
This commit is contained in:
parent
ddf980e475
commit
32b9b1ea60
6 changed files with 60 additions and 93 deletions
|
@ -313,18 +313,6 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
||||||
|
|
||||||
// Float module
|
// 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
|
// div : Float, Float -> Float
|
||||||
add_type(
|
add_type(
|
||||||
Symbol::FLOAT_DIV,
|
Symbol::FLOAT_DIV,
|
||||||
|
|
|
@ -403,18 +403,6 @@ pub fn types() -> MutMap<Symbol, (SolvedType, Region)> {
|
||||||
|
|
||||||
// Float module
|
// 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
|
// div : Float, Float -> Float
|
||||||
add_type(
|
add_type(
|
||||||
Symbol::FLOAT_DIV,
|
Symbol::FLOAT_DIV,
|
||||||
|
|
|
@ -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 {
|
fn float_is_zero(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
use crate::expr::Expr::*;
|
use crate::expr::Expr::*;
|
||||||
|
|
||||||
let body = call(
|
let body = RunLowLevel {
|
||||||
Symbol::FLOAT_EQ,
|
op: LowLevel::Eq,
|
||||||
vec![
|
args: vec![
|
||||||
Float(var_store.fresh(), 0.0),
|
(var_store.fresh(), Float(var_store.fresh(), 0.0)),
|
||||||
Var(Symbol::FLOAT_IS_ZERO_ARG),
|
(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)
|
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 {
|
fn float_is_negative(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
use crate::expr::Expr::*;
|
use crate::expr::Expr::*;
|
||||||
|
|
||||||
let body = call(
|
let body = RunLowLevel {
|
||||||
Symbol::FLOAT_GT,
|
op: LowLevel::NumGt,
|
||||||
vec![
|
args: vec![
|
||||||
Float(var_store.fresh(), 0.0),
|
(var_store.fresh(), Float(var_store.fresh(), 0.0)),
|
||||||
Var(Symbol::FLOAT_IS_NEGATIVE_ARG),
|
(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)
|
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 {
|
fn float_is_positive(symbol: Symbol, var_store: &mut VarStore) -> Def {
|
||||||
use crate::expr::Expr::*;
|
use crate::expr::Expr::*;
|
||||||
|
|
||||||
let body = call(
|
let body = RunLowLevel {
|
||||||
Symbol::FLOAT_GT,
|
op: LowLevel::NumGt,
|
||||||
vec![
|
args: vec![
|
||||||
Var(Symbol::FLOAT_IS_POSITIVE_ARG),
|
(var_store.fresh(), Var(Symbol::FLOAT_IS_NEGATIVE_ARG)),
|
||||||
Float(var_store.fresh(), 0.0),
|
(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)
|
defn(symbol, vec![Symbol::FLOAT_IS_POSITIVE_ARG], var_store, body)
|
||||||
}
|
}
|
||||||
|
|
|
@ -606,31 +606,29 @@ define_builtins! {
|
||||||
4 INT_MOD: "mod"
|
4 INT_MOD: "mod"
|
||||||
5 INT_HIGHEST: "highest"
|
5 INT_HIGHEST: "highest"
|
||||||
6 INT_LOWEST: "lowest"
|
6 INT_LOWEST: "lowest"
|
||||||
7 INT_ADD: "#add"
|
7 INT_DIV_UNSAFE: "divUnsafe" // TODO remove once we can code gen Result
|
||||||
8 INT_SUB: "#sub"
|
8 INT_LT: "#lt"
|
||||||
9 INT_DIV_UNSAFE: "divUnsafe" // TODO remove once we can code gen Result
|
9 INT_LTE: "#lte"
|
||||||
10 INT_LT: "#lt"
|
10 INT_GT: "#gt"
|
||||||
11 INT_LTE: "#lte"
|
11 INT_GTE: "#gte"
|
||||||
12 INT_GT: "#gt"
|
12 INT_DIV_ARG_NUMERATOR: "div#numerator" // The first argument to `//`, the numerator
|
||||||
13 INT_GTE: "#gte"
|
13 INT_DIV_ARG_DENOMINATOR: "div#denominator" // The first argument to `//`, the denominator
|
||||||
14 INT_DIV_ARG_NUMERATOR: "div#numerator" // The first argument to `//`, the numerator
|
14 INT_ABS: "abs"
|
||||||
15 INT_DIV_ARG_DENOMINATOR: "div#denominator" // The first argument to `//`, the denominator
|
15 INT_ABS_ARG: "abs#arg"
|
||||||
16 INT_ABS: "abs"
|
16 INT_REM_UNSAFE: "remUnsafe"
|
||||||
17 INT_ABS_ARG: "abs#arg"
|
17 INT_REM: "rem"
|
||||||
18 INT_REM_UNSAFE: "remUnsafe"
|
18 INT_REM_ARG_0: "rem#arg0"
|
||||||
19 INT_REM: "rem"
|
19 INT_REM_ARG_1: "rem#arg1"
|
||||||
20 INT_REM_ARG_0: "rem#arg0"
|
20 INT_IS_ODD: "isOdd"
|
||||||
21 INT_REM_ARG_1: "rem#arg1"
|
21 INT_IS_ODD_ARG: "isOdd#arg"
|
||||||
22 INT_IS_ODD: "isOdd"
|
22 INT_IS_EVEN: "isEven"
|
||||||
23 INT_IS_ODD_ARG: "isOdd#arg"
|
23 INT_IS_EVEN_ARG: "isEven#arg"
|
||||||
24 INT_IS_EVEN: "isEven"
|
24 INT_IS_ZERO: "isZero"
|
||||||
25 INT_IS_EVEN_ARG: "isEven#arg"
|
25 INT_IS_ZERO_ARG: "isZero#arg"
|
||||||
26 INT_IS_ZERO: "isZero"
|
26 INT_IS_POSITIVE: "isPositive"
|
||||||
27 INT_IS_ZERO_ARG: "isZero#arg"
|
27 INT_IS_POSITIVE_ARG: "isPositive#arg"
|
||||||
28 INT_IS_POSITIVE: "isPositive"
|
28 INT_IS_NEGATIVE: "isNegative"
|
||||||
29 INT_IS_POSITIVE_ARG: "isPositive#arg"
|
29 INT_IS_NEGATIVE_ARG: "isNegative#arg"
|
||||||
30 INT_IS_NEGATIVE: "isNegative"
|
|
||||||
31 INT_IS_NEGATIVE_ARG: "isNegative#arg"
|
|
||||||
}
|
}
|
||||||
3 FLOAT: "Float" => {
|
3 FLOAT: "Float" => {
|
||||||
0 FLOAT_FLOAT: "Float" imported // the Float.Float type alias
|
0 FLOAT_FLOAT: "Float" imported // the Float.Float type alias
|
||||||
|
@ -641,25 +639,18 @@ define_builtins! {
|
||||||
5 FLOAT_SQRT: "sqrt"
|
5 FLOAT_SQRT: "sqrt"
|
||||||
6 FLOAT_HIGHEST: "highest"
|
6 FLOAT_HIGHEST: "highest"
|
||||||
7 FLOAT_LOWEST: "lowest"
|
7 FLOAT_LOWEST: "lowest"
|
||||||
8 FLOAT_ADD: "#add"
|
8 FLOAT_ROUND: "round"
|
||||||
9 FLOAT_SUB: "#sub"
|
9 FLOAT_ABS: "abs"
|
||||||
10 FLOAT_EQ: "eq"
|
10 FLOAT_IS_POSITIVE: "isPositive"
|
||||||
11 FLOAT_ROUND: "round"
|
11 FLOAT_IS_POSITIVE_ARG: "isPositive#arg"
|
||||||
12 FLOAT_LT: "#lt"
|
12 FLOAT_IS_NEGATIVE: "isNegative"
|
||||||
13 FLOAT_LTE: "#lte"
|
13 FLOAT_IS_NEGATIVE_ARG: "isNegative#arg"
|
||||||
14 FLOAT_GT: "gt"
|
14 FLOAT_IS_ZERO: "isZero"
|
||||||
15 FLOAT_GTE: "#gte"
|
15 FLOAT_IS_ZERO_ARG: "isZero#arg"
|
||||||
16 FLOAT_ABS: "abs"
|
16 FLOAT_SIN: "sin"
|
||||||
17 FLOAT_IS_POSITIVE: "isPositive"
|
17 FLOAT_COS: "cos"
|
||||||
18 FLOAT_IS_POSITIVE_ARG: "isPositive#arg"
|
18 FLOAT_TAN: "tan"
|
||||||
19 FLOAT_IS_NEGATIVE: "isNegative"
|
19 FLOAT_TAN_ARG: "tan#arg"
|
||||||
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"
|
|
||||||
}
|
}
|
||||||
4 BOOL: "Bool" => {
|
4 BOOL: "Bool" => {
|
||||||
0 BOOL_BOOL: "Bool" imported // the Bool.Bool type alias
|
0 BOOL_BOOL: "Bool" imported // the Bool.Bool type alias
|
||||||
|
|
|
@ -48,7 +48,7 @@ impl<'a> Layout<'a> {
|
||||||
) -> Result<Self, ()> {
|
) -> Result<Self, ()> {
|
||||||
use roc_types::subs::Content::*;
|
use roc_types::subs::Content::*;
|
||||||
|
|
||||||
match content {
|
match dbg!(content) {
|
||||||
var @ FlexVar(_) | var @ RigidVar(_) => {
|
var @ FlexVar(_) | var @ RigidVar(_) => {
|
||||||
panic!("Layout::new encountered an unresolved {:?}", var);
|
panic!("Layout::new encountered an unresolved {:?}", var);
|
||||||
}
|
}
|
||||||
|
|
|
@ -122,7 +122,7 @@ mod test_mono {
|
||||||
compiles_to(
|
compiles_to(
|
||||||
"3.0 + 4",
|
"3.0 + 4",
|
||||||
CallByName {
|
CallByName {
|
||||||
name: Symbol::FLOAT_ADD,
|
name: Symbol::NUM_ADD,
|
||||||
layout: Layout::FunctionPointer(
|
layout: Layout::FunctionPointer(
|
||||||
&[
|
&[
|
||||||
Layout::Builtin(Builtin::Float64),
|
Layout::Builtin(Builtin::Float64),
|
||||||
|
@ -143,7 +143,7 @@ mod test_mono {
|
||||||
compiles_to(
|
compiles_to(
|
||||||
"0xDEADBEEF + 4",
|
"0xDEADBEEF + 4",
|
||||||
CallByName {
|
CallByName {
|
||||||
name: Symbol::INT_ADD,
|
name: Symbol::NUM_ADD,
|
||||||
layout: Layout::FunctionPointer(
|
layout: Layout::FunctionPointer(
|
||||||
&[
|
&[
|
||||||
Layout::Builtin(Builtin::Int64),
|
Layout::Builtin(Builtin::Int64),
|
||||||
|
@ -165,7 +165,7 @@ mod test_mono {
|
||||||
compiles_to(
|
compiles_to(
|
||||||
"3 + 5",
|
"3 + 5",
|
||||||
CallByName {
|
CallByName {
|
||||||
name: Symbol::INT_ADD,
|
name: Symbol::NUM_ADD,
|
||||||
layout: Layout::FunctionPointer(
|
layout: Layout::FunctionPointer(
|
||||||
&[
|
&[
|
||||||
Layout::Builtin(Builtin::Int64),
|
Layout::Builtin(Builtin::Int64),
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue