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 // 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,

View file

@ -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,

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 { 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)
} }

View file

@ -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

View file

@ -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);
} }

View file

@ -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),