mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 15:51:12 +00:00
most of Num
This commit is contained in:
parent
65b1b3fcce
commit
0107d78ea0
3 changed files with 218 additions and 175 deletions
|
@ -135,10 +135,10 @@ impl Default for ModuleCache<'_> {
|
||||||
PQModuleName::Unqualified(ModuleName::from(ModuleName::BOOL)),
|
PQModuleName::Unqualified(ModuleName::from(ModuleName::BOOL)),
|
||||||
);
|
);
|
||||||
|
|
||||||
// module_names.insert(
|
module_names.insert(
|
||||||
// ModuleId::NUM,
|
ModuleId::NUM,
|
||||||
// PQModuleName::Unqualified(ModuleName::from(ModuleName::NUM)),
|
PQModuleName::Unqualified(ModuleName::from(ModuleName::NUM)),
|
||||||
// );
|
);
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
module_names,
|
module_names,
|
||||||
|
@ -1734,7 +1734,6 @@ fn update<'a>(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if ![ModuleId::NUM, ModuleId::BOOL, ModuleId::RESULT].contains(&header.module_id) {
|
if ![ModuleId::NUM, ModuleId::BOOL, ModuleId::RESULT].contains(&header.module_id) {
|
||||||
header
|
header
|
||||||
.package_qualified_imported_modules
|
.package_qualified_imported_modules
|
||||||
|
@ -1744,11 +1743,32 @@ fn update<'a>(
|
||||||
.imported_modules
|
.imported_modules
|
||||||
.insert(ModuleId::NUM, Region::zero());
|
.insert(ModuleId::NUM, Region::zero());
|
||||||
|
|
||||||
|
let prelude_types = [
|
||||||
|
Symbol::NUM_NUM,
|
||||||
|
Symbol::NUM_INT,
|
||||||
|
Symbol::NUM_FLOAT,
|
||||||
|
Symbol::NUM_NAT,
|
||||||
|
Symbol::NUM_I8,
|
||||||
|
Symbol::NUM_I16,
|
||||||
|
Symbol::NUM_I32,
|
||||||
|
Symbol::NUM_I64,
|
||||||
|
Symbol::NUM_I128,
|
||||||
|
Symbol::NUM_U8,
|
||||||
|
Symbol::NUM_U16,
|
||||||
|
Symbol::NUM_U32,
|
||||||
|
Symbol::NUM_U64,
|
||||||
|
Symbol::NUM_U128,
|
||||||
|
Symbol::NUM_F32,
|
||||||
|
Symbol::NUM_F64,
|
||||||
|
Symbol::NUM_DEC,
|
||||||
|
];
|
||||||
|
|
||||||
|
for symbol in prelude_types {
|
||||||
header
|
header
|
||||||
.exposed_imports
|
.exposed_imports
|
||||||
.insert(Ident::from("Num"), (Symbol::NUM_NUM, Region::zero()));
|
.insert(Ident::from("Num"), (symbol, Region::zero()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
if header.module_id != ModuleId::BOOL {
|
if header.module_id != ModuleId::BOOL {
|
||||||
header
|
header
|
||||||
|
@ -1765,14 +1785,15 @@ fn update<'a>(
|
||||||
}
|
}
|
||||||
|
|
||||||
if !header.module_id.is_builtin() {
|
if !header.module_id.is_builtin() {
|
||||||
header
|
// header
|
||||||
.package_qualified_imported_modules
|
// .package_qualified_imported_modules
|
||||||
.insert(PackageQualified::Unqualified(ModuleId::STR));
|
// .insert(PackageQualified::Unqualified(ModuleId::STR));
|
||||||
|
//
|
||||||
header
|
// header
|
||||||
.imported_modules
|
// .imported_modules
|
||||||
.insert(ModuleId::STR, Region::zero());
|
// .insert(ModuleId::STR, Region::zero());
|
||||||
|
|
||||||
|
/*
|
||||||
header
|
header
|
||||||
.package_qualified_imported_modules
|
.package_qualified_imported_modules
|
||||||
.insert(PackageQualified::Unqualified(ModuleId::DICT));
|
.insert(PackageQualified::Unqualified(ModuleId::DICT));
|
||||||
|
@ -1796,6 +1817,7 @@ fn update<'a>(
|
||||||
header
|
header
|
||||||
.imported_modules
|
.imported_modules
|
||||||
.insert(ModuleId::LIST, Region::zero());
|
.insert(ModuleId::LIST, Region::zero());
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
state
|
state
|
||||||
|
@ -2574,10 +2596,10 @@ fn load_module<'a>(
|
||||||
roc_parse::header::ModuleName::new("Bool"),
|
roc_parse::header::ModuleName::new("Bool"),
|
||||||
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Bool")))]),
|
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Bool")))]),
|
||||||
)),
|
)),
|
||||||
// Loc::at_zero(ImportsEntry::Module(
|
Loc::at_zero(ImportsEntry::Module(
|
||||||
// roc_parse::header::ModuleName::new("Num"),
|
roc_parse::header::ModuleName::new("Num"),
|
||||||
// Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Nat")))]),
|
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Nat")))]),
|
||||||
// )),
|
)),
|
||||||
];
|
];
|
||||||
|
|
||||||
const GENERATES_WITH: &[Symbol] = &[];
|
const GENERATES_WITH: &[Symbol] = &[];
|
||||||
|
@ -2682,14 +2704,15 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("repeat")),
|
Loc::at_zero(ExposedName::new("repeat")),
|
||||||
Loc::at_zero(ExposedName::new("countGraphemes")),
|
Loc::at_zero(ExposedName::new("countGraphemes")),
|
||||||
Loc::at_zero(ExposedName::new("startsWithCodePt")),
|
Loc::at_zero(ExposedName::new("startsWithCodePt")),
|
||||||
Loc::at_zero(ExposedName::new("toUtf8")),
|
// Loc::at_zero(ExposedName::new("toUtf8")),
|
||||||
Loc::at_zero(ExposedName::new("fromUtf8")),
|
// Loc::at_zero(ExposedName::new("fromUtf8")),
|
||||||
Loc::at_zero(ExposedName::new("fromUtf8Range")),
|
// Loc::at_zero(ExposedName::new("fromUtf8Range")),
|
||||||
Loc::at_zero(ExposedName::new("startsWith")),
|
Loc::at_zero(ExposedName::new("startsWith")),
|
||||||
Loc::at_zero(ExposedName::new("endsWith")),
|
Loc::at_zero(ExposedName::new("endsWith")),
|
||||||
Loc::at_zero(ExposedName::new("trim")),
|
Loc::at_zero(ExposedName::new("trim")),
|
||||||
Loc::at_zero(ExposedName::new("trimLeft")),
|
Loc::at_zero(ExposedName::new("trimLeft")),
|
||||||
Loc::at_zero(ExposedName::new("trimRight")),
|
Loc::at_zero(ExposedName::new("trimRight")),
|
||||||
|
/*
|
||||||
Loc::at_zero(ExposedName::new("toDec")),
|
Loc::at_zero(ExposedName::new("toDec")),
|
||||||
Loc::at_zero(ExposedName::new("toF64")),
|
Loc::at_zero(ExposedName::new("toF64")),
|
||||||
Loc::at_zero(ExposedName::new("toF32")),
|
Loc::at_zero(ExposedName::new("toF32")),
|
||||||
|
@ -2704,6 +2727,7 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("toI16")),
|
Loc::at_zero(ExposedName::new("toI16")),
|
||||||
Loc::at_zero(ExposedName::new("toU8")),
|
Loc::at_zero(ExposedName::new("toU8")),
|
||||||
Loc::at_zero(ExposedName::new("toI8")),
|
Loc::at_zero(ExposedName::new("toI8")),
|
||||||
|
*/
|
||||||
];
|
];
|
||||||
|
|
||||||
const IMPORTS: &[Loc<ImportsEntry>] = &[
|
const IMPORTS: &[Loc<ImportsEntry>] = &[
|
||||||
|
@ -2717,31 +2741,33 @@ fn load_module<'a>(
|
||||||
roc_parse::header::ModuleName::new("Bool"),
|
roc_parse::header::ModuleName::new("Bool"),
|
||||||
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Bool")))]),
|
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Bool")))]),
|
||||||
)),
|
)),
|
||||||
|
/*
|
||||||
Loc::at_zero(ImportsEntry::Module(
|
Loc::at_zero(ImportsEntry::Module(
|
||||||
roc_parse::header::ModuleName::new("List"),
|
roc_parse::header::ModuleName::new("List"),
|
||||||
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("List")))]),
|
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("List")))]),
|
||||||
)),
|
)),
|
||||||
// Loc::at_zero(ImportsEntry::Module(
|
*/
|
||||||
// roc_parse::header::ModuleName::new("Num"),
|
Loc::at_zero(ImportsEntry::Module(
|
||||||
// Collection::with_items(&[
|
roc_parse::header::ModuleName::new("Num"),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("Int"))), // needed because used by the aliases below
|
Collection::with_items(&[
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("Float"))), // needed because used by the aliases below
|
Loc::at_zero(Spaced::Item(ExposedName::new("Int"))), // needed because used by the aliases below
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("Dec"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("Float"))), // needed because used by the aliases below
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("F64"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("Dec"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("F32"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("F64"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("Nat"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("F32"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("U128"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("Nat"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("I128"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("U128"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("U64"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("I128"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("I64"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("U64"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("U32"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("I64"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("I32"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("U32"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("U16"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("I32"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("I16"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("U16"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("U8"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("I16"))),
|
||||||
// Loc::at_zero(Spaced::Item(ExposedName::new("I8"))),
|
Loc::at_zero(Spaced::Item(ExposedName::new("U8"))),
|
||||||
// ]),
|
Loc::at_zero(Spaced::Item(ExposedName::new("I8"))),
|
||||||
// )),
|
]),
|
||||||
|
)),
|
||||||
];
|
];
|
||||||
|
|
||||||
const GENERATES_WITH: &[Symbol] = &[];
|
const GENERATES_WITH: &[Symbol] = &[];
|
||||||
|
@ -2773,23 +2799,24 @@ fn load_module<'a>(
|
||||||
EncodesSurrogateHalf,
|
EncodesSurrogateHalf,
|
||||||
]
|
]
|
||||||
|
|
||||||
Utf8Problem : { byteIndex : Nat, problem : Utf8ByteProblem }
|
# Utf8Problem : { byteIndex : Nat, problem : Utf8ByteProblem }
|
||||||
|
|
||||||
isEmpty : Str -> Bool
|
isEmpty : Str -> Bool
|
||||||
concat : Str, Str -> Str
|
concat : Str, Str -> Str
|
||||||
|
|
||||||
joinWith : List Str, Str -> Str
|
joinWith : List Str, Str -> Str
|
||||||
split : Str, Str -> List Str
|
split : Str, Str -> List Str
|
||||||
repeat : Str, Nat -> Str
|
repeat : Str, Nat -> Str
|
||||||
countGraphemes : Str -> Nat
|
countGraphemes : Str -> Nat
|
||||||
startsWithCodePt : Str, U32 -> Bool
|
startsWithCodePt : Str, U32 -> Bool
|
||||||
|
|
||||||
toUtf8 : Str -> List U8
|
# toUtf8 : Str -> List U8
|
||||||
|
|
||||||
# fromUtf8 : List U8 -> Result Str [ BadUtf8 Utf8Problem ]*
|
# fromUtf8 : List U8 -> Result Str [ BadUtf8 Utf8Problem ]*
|
||||||
# fromUtf8Range : List U8 -> Result Str [ BadUtf8 Utf8Problem, OutOfBounds ]*
|
# fromUtf8Range : List U8 -> Result Str [ BadUtf8 Utf8Problem, OutOfBounds ]*
|
||||||
|
|
||||||
fromUtf8 : List U8 -> Result Str [ BadUtf8 Utf8ByteProblem Nat ]*
|
# fromUtf8 : List U8 -> Result Str [ BadUtf8 Utf8ByteProblem Nat ]*
|
||||||
fromUtf8Range : List U8 -> Result Str [ BadUtf8 Utf8ByteProblem Nat, OutOfBounds ]*
|
# fromUtf8Range : List U8 -> Result Str [ BadUtf8 Utf8ByteProblem Nat, OutOfBounds ]*
|
||||||
|
|
||||||
startsWith : Str, Str -> Bool
|
startsWith : Str, Str -> Bool
|
||||||
endsWith : Str, Str -> Bool
|
endsWith : Str, Str -> Bool
|
||||||
|
@ -2797,21 +2824,6 @@ fn load_module<'a>(
|
||||||
trim : Str -> Str
|
trim : Str -> Str
|
||||||
trimLeft : Str -> Str
|
trimLeft : Str -> Str
|
||||||
trimRight : Str -> Str
|
trimRight : Str -> Str
|
||||||
|
|
||||||
toDec : Str -> Result Dec [ InvalidNumStr ]*
|
|
||||||
toF64 : Str -> Result F64 [ InvalidNumStr ]*
|
|
||||||
toF32 : Str -> Result F32 [ InvalidNumStr ]*
|
|
||||||
toNat : Str -> Result Nat [ InvalidNumStr ]*
|
|
||||||
toU128 : Str -> Result U128 [ InvalidNumStr ]*
|
|
||||||
toI128 : Str -> Result I128 [ InvalidNumStr ]*
|
|
||||||
toU64 : Str -> Result U64 [ InvalidNumStr ]*
|
|
||||||
toI64 : Str -> Result I64 [ InvalidNumStr ]*
|
|
||||||
toU32 : Str -> Result U32 [ InvalidNumStr ]*
|
|
||||||
toI32 : Str -> Result I32 [ InvalidNumStr ]*
|
|
||||||
toU16 : Str -> Result U16 [ InvalidNumStr ]*
|
|
||||||
toI16 : Str -> Result I16 [ InvalidNumStr ]*
|
|
||||||
toU8 : Str -> Result U8 [ InvalidNumStr ]*
|
|
||||||
toI8 : Str -> Result I8 [ InvalidNumStr ]*
|
|
||||||
"#;
|
"#;
|
||||||
|
|
||||||
let parse_state = roc_parse::state::State::new(src_bytes.as_bytes());
|
let parse_state = roc_parse::state::State::new(src_bytes.as_bytes());
|
||||||
|
@ -2939,10 +2951,10 @@ fn load_module<'a>(
|
||||||
roc_parse::header::ModuleName::new("List"),
|
roc_parse::header::ModuleName::new("List"),
|
||||||
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("List")))]),
|
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("List")))]),
|
||||||
)),
|
)),
|
||||||
// Loc::at_zero(ImportsEntry::Module(
|
Loc::at_zero(ImportsEntry::Module(
|
||||||
// roc_parse::header::ModuleName::new("Num"),
|
roc_parse::header::ModuleName::new("Num"),
|
||||||
// Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Nat")))]),
|
Collection::with_items(&[Loc::at_zero(Spaced::Item(ExposedName::new("Nat")))]),
|
||||||
// )),
|
)),
|
||||||
];
|
];
|
||||||
|
|
||||||
const GENERATES_WITH: &[Symbol] = &[];
|
const GENERATES_WITH: &[Symbol] = &[];
|
||||||
|
@ -3004,6 +3016,9 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("Int")),
|
Loc::at_zero(ExposedName::new("Int")),
|
||||||
Loc::at_zero(ExposedName::new("Float")),
|
Loc::at_zero(ExposedName::new("Float")),
|
||||||
//
|
//
|
||||||
|
Loc::at_zero(ExposedName::new("Integer")),
|
||||||
|
Loc::at_zero(ExposedName::new("FloatingPoint")),
|
||||||
|
//
|
||||||
Loc::at_zero(ExposedName::new("I128")),
|
Loc::at_zero(ExposedName::new("I128")),
|
||||||
Loc::at_zero(ExposedName::new("I64")),
|
Loc::at_zero(ExposedName::new("I64")),
|
||||||
Loc::at_zero(ExposedName::new("I32")),
|
Loc::at_zero(ExposedName::new("I32")),
|
||||||
|
@ -3016,9 +3031,30 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("U16")),
|
Loc::at_zero(ExposedName::new("U16")),
|
||||||
Loc::at_zero(ExposedName::new("U8")),
|
Loc::at_zero(ExposedName::new("U8")),
|
||||||
//
|
//
|
||||||
|
Loc::at_zero(ExposedName::new("Signed128")),
|
||||||
|
Loc::at_zero(ExposedName::new("Signed64")),
|
||||||
|
Loc::at_zero(ExposedName::new("Signed32")),
|
||||||
|
Loc::at_zero(ExposedName::new("Signed16")),
|
||||||
|
Loc::at_zero(ExposedName::new("Signed8")),
|
||||||
|
//
|
||||||
|
Loc::at_zero(ExposedName::new("Unsigned128")),
|
||||||
|
Loc::at_zero(ExposedName::new("Unsigned64")),
|
||||||
|
Loc::at_zero(ExposedName::new("Unsigned32")),
|
||||||
|
Loc::at_zero(ExposedName::new("Unsigned16")),
|
||||||
|
Loc::at_zero(ExposedName::new("Unsigned8")),
|
||||||
|
//
|
||||||
Loc::at_zero(ExposedName::new("Nat")),
|
Loc::at_zero(ExposedName::new("Nat")),
|
||||||
Loc::at_zero(ExposedName::new("Dec")),
|
Loc::at_zero(ExposedName::new("Dec")),
|
||||||
//
|
//
|
||||||
|
Loc::at_zero(ExposedName::new("F32")),
|
||||||
|
Loc::at_zero(ExposedName::new("F64")),
|
||||||
|
//
|
||||||
|
Loc::at_zero(ExposedName::new("Natural")),
|
||||||
|
Loc::at_zero(ExposedName::new("Decimal")),
|
||||||
|
//
|
||||||
|
Loc::at_zero(ExposedName::new("Binary32")),
|
||||||
|
Loc::at_zero(ExposedName::new("Binary64")),
|
||||||
|
//
|
||||||
// Loc::at_zero(ExposedName::new("maxFloat")),
|
// Loc::at_zero(ExposedName::new("maxFloat")),
|
||||||
// Loc::at_zero(ExposedName::new("minFloat")),
|
// Loc::at_zero(ExposedName::new("minFloat")),
|
||||||
Loc::at_zero(ExposedName::new("abs")),
|
Loc::at_zero(ExposedName::new("abs")),
|
||||||
|
@ -3030,13 +3066,16 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("isLte")),
|
Loc::at_zero(ExposedName::new("isLte")),
|
||||||
Loc::at_zero(ExposedName::new("isGt")),
|
Loc::at_zero(ExposedName::new("isGt")),
|
||||||
Loc::at_zero(ExposedName::new("isGte")),
|
Loc::at_zero(ExposedName::new("isGte")),
|
||||||
Loc::at_zero(ExposedName::new("toFloat")),
|
|
||||||
Loc::at_zero(ExposedName::new("sin")),
|
Loc::at_zero(ExposedName::new("sin")),
|
||||||
Loc::at_zero(ExposedName::new("cos")),
|
Loc::at_zero(ExposedName::new("cos")),
|
||||||
Loc::at_zero(ExposedName::new("tan")),
|
Loc::at_zero(ExposedName::new("tan")),
|
||||||
|
Loc::at_zero(ExposedName::new("atan")),
|
||||||
|
Loc::at_zero(ExposedName::new("acos")),
|
||||||
|
Loc::at_zero(ExposedName::new("asin")),
|
||||||
Loc::at_zero(ExposedName::new("isZero")),
|
Loc::at_zero(ExposedName::new("isZero")),
|
||||||
Loc::at_zero(ExposedName::new("isEven")),
|
Loc::at_zero(ExposedName::new("isEven")),
|
||||||
Loc::at_zero(ExposedName::new("isOdd")),
|
Loc::at_zero(ExposedName::new("isOdd")),
|
||||||
|
Loc::at_zero(ExposedName::new("toFloat")),
|
||||||
Loc::at_zero(ExposedName::new("isPositive")),
|
Loc::at_zero(ExposedName::new("isPositive")),
|
||||||
Loc::at_zero(ExposedName::new("isNegative")),
|
Loc::at_zero(ExposedName::new("isNegative")),
|
||||||
Loc::at_zero(ExposedName::new("rem")),
|
Loc::at_zero(ExposedName::new("rem")),
|
||||||
|
@ -3047,17 +3086,14 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("sqrt")),
|
Loc::at_zero(ExposedName::new("sqrt")),
|
||||||
Loc::at_zero(ExposedName::new("log")),
|
Loc::at_zero(ExposedName::new("log")),
|
||||||
Loc::at_zero(ExposedName::new("round")),
|
Loc::at_zero(ExposedName::new("round")),
|
||||||
|
Loc::at_zero(ExposedName::new("ceiling")),
|
||||||
|
Loc::at_zero(ExposedName::new("floor")),
|
||||||
Loc::at_zero(ExposedName::new("compare")),
|
Loc::at_zero(ExposedName::new("compare")),
|
||||||
Loc::at_zero(ExposedName::new("pow")),
|
Loc::at_zero(ExposedName::new("pow")),
|
||||||
Loc::at_zero(ExposedName::new("ceiling")),
|
|
||||||
Loc::at_zero(ExposedName::new("powInt")),
|
Loc::at_zero(ExposedName::new("powInt")),
|
||||||
Loc::at_zero(ExposedName::new("floor")),
|
|
||||||
Loc::at_zero(ExposedName::new("addWrap")),
|
Loc::at_zero(ExposedName::new("addWrap")),
|
||||||
Loc::at_zero(ExposedName::new("addChecked")),
|
Loc::at_zero(ExposedName::new("addChecked")),
|
||||||
Loc::at_zero(ExposedName::new("addSaturated")),
|
Loc::at_zero(ExposedName::new("addSaturated")),
|
||||||
Loc::at_zero(ExposedName::new("atan")),
|
|
||||||
Loc::at_zero(ExposedName::new("acos")),
|
|
||||||
Loc::at_zero(ExposedName::new("asin")),
|
|
||||||
Loc::at_zero(ExposedName::new("bitwiseAnd")),
|
Loc::at_zero(ExposedName::new("bitwiseAnd")),
|
||||||
Loc::at_zero(ExposedName::new("bitwiseXor")),
|
Loc::at_zero(ExposedName::new("bitwiseXor")),
|
||||||
Loc::at_zero(ExposedName::new("bitwiseOr")),
|
Loc::at_zero(ExposedName::new("bitwiseOr")),
|
||||||
|
@ -3069,30 +3105,33 @@ fn load_module<'a>(
|
||||||
Loc::at_zero(ExposedName::new("subSaturated")),
|
Loc::at_zero(ExposedName::new("subSaturated")),
|
||||||
Loc::at_zero(ExposedName::new("mulWrap")),
|
Loc::at_zero(ExposedName::new("mulWrap")),
|
||||||
Loc::at_zero(ExposedName::new("mulChecked")),
|
Loc::at_zero(ExposedName::new("mulChecked")),
|
||||||
|
/*
|
||||||
Loc::at_zero(ExposedName::new("intCast")),
|
Loc::at_zero(ExposedName::new("intCast")),
|
||||||
Loc::at_zero(ExposedName::new("isMultipleOf")),
|
|
||||||
Loc::at_zero(ExposedName::new("bytesToU16")),
|
Loc::at_zero(ExposedName::new("bytesToU16")),
|
||||||
Loc::at_zero(ExposedName::new("bytesToU32")),
|
Loc::at_zero(ExposedName::new("bytesToU32")),
|
||||||
Loc::at_zero(ExposedName::new("divCeil")),
|
Loc::at_zero(ExposedName::new("divCeil")),
|
||||||
Loc::at_zero(ExposedName::new("toStr")),
|
Loc::at_zero(ExposedName::new("toStr")),
|
||||||
Loc::at_zero(ExposedName::new("minI8")),
|
*/
|
||||||
Loc::at_zero(ExposedName::new("maxI8")),
|
Loc::at_zero(ExposedName::new("isMultipleOf")),
|
||||||
Loc::at_zero(ExposedName::new("minU8")),
|
// Loc::at_zero(ExposedName::new("minI8")),
|
||||||
Loc::at_zero(ExposedName::new("maxU8")),
|
// Loc::at_zero(ExposedName::new("maxI8")),
|
||||||
Loc::at_zero(ExposedName::new("minI16")),
|
// Loc::at_zero(ExposedName::new("minU8")),
|
||||||
Loc::at_zero(ExposedName::new("maxI16")),
|
// Loc::at_zero(ExposedName::new("maxU8")),
|
||||||
Loc::at_zero(ExposedName::new("minU16")),
|
// Loc::at_zero(ExposedName::new("minI16")),
|
||||||
Loc::at_zero(ExposedName::new("maxU16")),
|
// Loc::at_zero(ExposedName::new("maxI16")),
|
||||||
Loc::at_zero(ExposedName::new("minI32")),
|
// Loc::at_zero(ExposedName::new("minU16")),
|
||||||
Loc::at_zero(ExposedName::new("maxI32")),
|
// Loc::at_zero(ExposedName::new("maxU16")),
|
||||||
Loc::at_zero(ExposedName::new("minU32")),
|
// Loc::at_zero(ExposedName::new("minI32")),
|
||||||
Loc::at_zero(ExposedName::new("maxU32")),
|
// Loc::at_zero(ExposedName::new("maxI32")),
|
||||||
Loc::at_zero(ExposedName::new("minI64")),
|
// Loc::at_zero(ExposedName::new("minU32")),
|
||||||
Loc::at_zero(ExposedName::new("maxI64")),
|
// Loc::at_zero(ExposedName::new("maxU32")),
|
||||||
Loc::at_zero(ExposedName::new("minU64")),
|
// Loc::at_zero(ExposedName::new("minI64")),
|
||||||
Loc::at_zero(ExposedName::new("maxU64")),
|
// Loc::at_zero(ExposedName::new("maxI64")),
|
||||||
Loc::at_zero(ExposedName::new("minI128")),
|
// Loc::at_zero(ExposedName::new("minU64")),
|
||||||
Loc::at_zero(ExposedName::new("maxI128")),
|
// Loc::at_zero(ExposedName::new("maxU64")),
|
||||||
|
// Unimplemented
|
||||||
|
// Loc::at_zero(ExposedName::new("minI128")),
|
||||||
|
// Loc::at_zero(ExposedName::new("maxI128")),
|
||||||
Loc::at_zero(ExposedName::new("toI8")),
|
Loc::at_zero(ExposedName::new("toI8")),
|
||||||
Loc::at_zero(ExposedName::new("toI8Checked")),
|
Loc::at_zero(ExposedName::new("toI8Checked")),
|
||||||
Loc::at_zero(ExposedName::new("toI16")),
|
Loc::at_zero(ExposedName::new("toI16")),
|
||||||
|
@ -3135,65 +3174,67 @@ fn load_module<'a>(
|
||||||
};
|
};
|
||||||
|
|
||||||
let src_bytes = r#"
|
let src_bytes = r#"
|
||||||
|
|
||||||
Num range : [ @Num range ]
|
Num range : [ @Num range ]
|
||||||
Integer range : [ @Integer range ]
|
Int range : Num (Integer range)
|
||||||
Float range : [ @Float range ]
|
Float range : Num (FloatingPoint range)
|
||||||
|
|
||||||
Natural : [ @Natural ]
|
|
||||||
Nat : Int Natural
|
|
||||||
|
|
||||||
Signed128 : [ @Signed128 ]
|
Signed128 : [ @Signed128 ]
|
||||||
I128 : Int Signed128
|
Signed64 : [ @Signed64 ]
|
||||||
|
Signed32 : [ @Signed32 ]
|
||||||
|
Signed16 : [ @Signed16 ]
|
||||||
|
Signed8 : [ @Signed8 ]
|
||||||
|
|
||||||
Unsigned128 : [ @Unsigned128 ]
|
Unsigned128 : [ @Unsigned128 ]
|
||||||
U128 : Int Unsigned128
|
|
||||||
|
|
||||||
Signed64 : [ @Signed64 ]
|
|
||||||
I64 : Int Signed64
|
|
||||||
|
|
||||||
Unsigned64 : [ @Unsigned64 ]
|
Unsigned64 : [ @Unsigned64 ]
|
||||||
U64 : Int Unsigned64
|
|
||||||
|
|
||||||
Signed32 : [ @Signed32 ]
|
|
||||||
I32 : Int Signed32
|
|
||||||
|
|
||||||
Unsigned32 : [ @Unsigned32 ]
|
Unsigned32 : [ @Unsigned32 ]
|
||||||
U32 : Int Unsigned32
|
|
||||||
|
|
||||||
Signed16 : [ @Signed16 ]
|
|
||||||
I16 : Int Signed16
|
|
||||||
|
|
||||||
Unsigned16 : [ @Unsigned16 ]
|
Unsigned16 : [ @Unsigned16 ]
|
||||||
U16 : Int Unsigned16
|
Unsigned8 : [ @Unsigned8 ]
|
||||||
|
|
||||||
Signed8 : [ @Signed8 ]
|
Natural : [ @Natural ]
|
||||||
|
|
||||||
|
Integer range : [ @Integer range ]
|
||||||
|
|
||||||
|
I128 : Num (Integer Signed128)
|
||||||
|
I64 : Num (Integer Signed64)
|
||||||
|
I32 : Num (Integer Signed32)
|
||||||
|
I16 : Num (Integer Signed16)
|
||||||
I8 : Int Signed8
|
I8 : Int Signed8
|
||||||
|
|
||||||
Unsigned8 : [ @Unsigned8 ]
|
U128 : Num (Integer Unsigned128)
|
||||||
U8 : Int Unsigned8
|
U64 : Num (Integer Unsigned64)
|
||||||
|
U32 : Num (Integer Unsigned32)
|
||||||
|
U16 : Num (Integer Unsigned16)
|
||||||
|
U8 : Num (Integer Unsigned8)
|
||||||
|
|
||||||
|
Nat : Num (Integer Natural)
|
||||||
|
|
||||||
Decimal : [ @Decimal ]
|
Decimal : [ @Decimal ]
|
||||||
Dec : Float Decimal
|
|
||||||
|
|
||||||
Binary64 : [ @Binary64 ]
|
Binary64 : [ @Binary64 ]
|
||||||
F64 : Float Binary64
|
|
||||||
|
|
||||||
Binary32 : [ @Binary32 ]
|
Binary32 : [ @Binary32 ]
|
||||||
F32 : Float Binary32
|
|
||||||
|
FloatingPoint range : [ @FloatingPoint range ]
|
||||||
|
|
||||||
|
F64 : Num (FloatingPoint Binary64)
|
||||||
|
F32 : Num (FloatingPoint Binary32)
|
||||||
|
Dec : Num (FloatingPoint Decimal)
|
||||||
|
|
||||||
|
# ------- Functions
|
||||||
|
|
||||||
compare : Num a, Num a -> [ LT, EQ, GT ]
|
compare : Num a, Num a -> [ LT, EQ, GT ]
|
||||||
|
|
||||||
isLt : Num a, Num a -> Bool
|
isLt : Num a, Num a -> Bool
|
||||||
isGt : Num a, Num a -> Bool
|
isGt : Num a, Num a -> Bool
|
||||||
isLte : Num a, Num a -> Bool
|
isLte : Num a, Num a -> Bool
|
||||||
isLte : Num a, Num a -> Bool
|
isGte : Num a, Num a -> Bool
|
||||||
|
|
||||||
isZero : Num a -> Bool
|
isZero : Num a -> Bool
|
||||||
|
|
||||||
isEven : Int a -> Bool
|
isEven : Int a -> Bool
|
||||||
isOdd : Int a -> Bool
|
isOdd : Int a -> Bool
|
||||||
|
|
||||||
|
isPositive : Num a -> Bool
|
||||||
|
isNegative : Num a -> Bool
|
||||||
|
|
||||||
toFloat : Num * -> Float *
|
toFloat : Num * -> Float *
|
||||||
|
|
||||||
abs : Num a -> Num a
|
abs : Num a -> Num a
|
||||||
|
@ -3203,9 +3244,6 @@ fn load_module<'a>(
|
||||||
sub : Num a, Num a -> Num a
|
sub : Num a, Num a -> Num a
|
||||||
mul : Num a, Num a -> Num a
|
mul : Num a, Num a -> Num a
|
||||||
|
|
||||||
# maxFloat : Float a
|
|
||||||
# minFloat : Float a
|
|
||||||
|
|
||||||
sin : Float a -> Float a
|
sin : Float a -> Float a
|
||||||
cos : Float a -> Float a
|
cos : Float a -> Float a
|
||||||
tan : Float a -> Float a
|
tan : Float a -> Float a
|
||||||
|
@ -3214,14 +3252,22 @@ fn load_module<'a>(
|
||||||
acos : Float a -> Float a
|
acos : Float a -> Float a
|
||||||
atan : Float a -> Float a
|
atan : Float a -> Float a
|
||||||
|
|
||||||
sqrt : Float a -> Float a
|
sqrt : Float a -> Result (Float a) [ SqrtOfNegative ]*
|
||||||
log : Float a, Float a -> Float a
|
log : Float a, Float a -> Result (Float a) [ LogNeedsPositive ]*
|
||||||
mod : Float a, Float a -> Result (Float a) [ DivByZero ]*
|
div : Float a -> Result (Float a) [ DivByZero ]*
|
||||||
|
# mod : Float a, Float a -> Result (Float a) [ DivByZero ]*
|
||||||
|
|
||||||
rem : Int a, Int a -> Result (Int a) [ DivByZero ]*
|
rem : Int a, Int a -> Result (Int a) [ DivByZero ]*
|
||||||
mod : Int a, Int a -> Result (Int a) [ DivByZero ]*
|
# mod : Int a, Int a -> Result (Int a) [ DivByZero ]*
|
||||||
isMultipleOf : Int a, Int a -> Bool
|
isMultipleOf : Int a, Int a -> Bool
|
||||||
|
|
||||||
|
bitwiseAnd : Int a, Int a -> Int a
|
||||||
|
bitwiseXor : Int a, Int a -> Int a
|
||||||
|
bitwiseOr : Int a, Int a -> Int a
|
||||||
|
shiftLeftBy : Int a, Int a -> Int a
|
||||||
|
shiftRightBy : Int a, Int a -> Int a
|
||||||
|
shiftRightZfBy : Int a, Int a -> Int a
|
||||||
|
|
||||||
round : Float a -> Int b
|
round : Float a -> Int b
|
||||||
floor : Float a -> Int b
|
floor : Float a -> Int b
|
||||||
ceiling : Float a -> Int b
|
ceiling : Float a -> Int b
|
||||||
|
@ -3241,31 +3287,27 @@ fn load_module<'a>(
|
||||||
# mulSaturated : Num a, Num a -> Num a
|
# mulSaturated : Num a, Num a -> Num a
|
||||||
mulChecked : Num a, Num a -> Result (Num a) [ Overflow ]*
|
mulChecked : Num a, Num a -> Result (Num a) [ Overflow ]*
|
||||||
|
|
||||||
bitwiseAnd : Int a, Int a -> Int a
|
# minI8 : I8
|
||||||
bitwiseXor : Int a, Int a -> Int a
|
# maxI8 : I8
|
||||||
bitwiseOr : Int a, Int a -> Int a
|
# minU8 : U8
|
||||||
shiftLeftBy : Int a, Int a -> Int a
|
# maxU8 : U8
|
||||||
shiftRightBy : Int a, Int a -> Int a
|
# minI16 : I16
|
||||||
shiftRightZfBy : Int a, Int a -> Int a
|
# maxI16 : I16
|
||||||
|
# minU16 : U16
|
||||||
|
# maxU16 : U16
|
||||||
|
# minI32 : I32
|
||||||
|
# maxI32 : I32
|
||||||
|
# minU32 : U32
|
||||||
|
# maxU32 : U32
|
||||||
|
# minI64 : I64
|
||||||
|
# maxI64 : I64
|
||||||
|
# minU64 : U64
|
||||||
|
# maxU64 : U64
|
||||||
|
|
||||||
intCast : Int a -> Int b
|
# minI128 : I128
|
||||||
|
# maxI128 : I128
|
||||||
minI8 : I8
|
# minU128 : U128
|
||||||
maxI8 : I8
|
# maxU128 : U128
|
||||||
minU8 : U8
|
|
||||||
maxU8 : U8
|
|
||||||
minI16 : I16
|
|
||||||
maxI16 : I16
|
|
||||||
minU16 : U16
|
|
||||||
maxU16 : U16
|
|
||||||
minI32 : I32
|
|
||||||
maxI32 : I32
|
|
||||||
minU32 : U32
|
|
||||||
maxU32 : U32
|
|
||||||
minI64 : I64
|
|
||||||
maxI64 : I64
|
|
||||||
minU64 : U64
|
|
||||||
maxU64 : U64
|
|
||||||
|
|
||||||
toI8 : Int * -> I8
|
toI8 : Int * -> I8
|
||||||
toI16 : Int * -> I16
|
toI16 : Int * -> I16
|
||||||
|
@ -4243,6 +4285,7 @@ fn run_solve<'a>(
|
||||||
// Finish constraining the module by wrapping the existing Constraint
|
// Finish constraining the module by wrapping the existing Constraint
|
||||||
// in the ones we just computed. We can do this off the main thread.
|
// in the ones we just computed. We can do this off the main thread.
|
||||||
let constraint = constrain_imports(imported_symbols, constraint, &mut var_store);
|
let constraint = constrain_imports(imported_symbols, constraint, &mut var_store);
|
||||||
|
dbg!(&constraint);
|
||||||
|
|
||||||
let constrain_end = SystemTime::now();
|
let constrain_end = SystemTime::now();
|
||||||
|
|
||||||
|
|
|
@ -885,22 +885,22 @@ define_builtins! {
|
||||||
26 DEV_TMP: "#dev_tmp"
|
26 DEV_TMP: "#dev_tmp"
|
||||||
}
|
}
|
||||||
1 NUM: "Num" => {
|
1 NUM: "Num" => {
|
||||||
0 NUM_NUM: "Num" imported // the Num.Num type alias
|
0 NUM_NUM: "Num" // the Num.Num type alias
|
||||||
1 NUM_AT_NUM: "@Num" // the Num.@Num private tag
|
1 NUM_AT_NUM: "@Num" // the Num.@Num private tag
|
||||||
2 NUM_I128: "I128" imported // the Num.I128 type alias
|
2 NUM_I128: "I128" // the Num.I128 type alias
|
||||||
3 NUM_U128: "U128" imported // the Num.U128 type alias
|
3 NUM_U128: "U128" // the Num.U128 type alias
|
||||||
4 NUM_I64: "I64" imported // the Num.I64 type alias
|
4 NUM_I64: "I64" // the Num.I64 type alias
|
||||||
5 NUM_U64: "U64" imported // the Num.U64 type alias
|
5 NUM_U64: "U64" // the Num.U64 type alias
|
||||||
6 NUM_I32: "I32" imported // the Num.I32 type alias
|
6 NUM_I32: "I32" // the Num.I32 type alias
|
||||||
7 NUM_U32: "U32" imported // the Num.U32 type alias
|
7 NUM_U32: "U32" // the Num.U32 type alias
|
||||||
8 NUM_I16: "I16" imported // the Num.I16 type alias
|
8 NUM_I16: "I16" // the Num.I16 type alias
|
||||||
9 NUM_U16: "U16" imported // the Num.U16 type alias
|
9 NUM_U16: "U16" // the Num.U16 type alias
|
||||||
10 NUM_I8: "I8" imported // the Num.I8 type alias
|
10 NUM_I8: "I8" // the Num.I8 type alias
|
||||||
11 NUM_U8: "U8" imported // the Num.U8 type alias
|
11 NUM_U8: "U8" // the Num.U8 type alias
|
||||||
12 NUM_INTEGER: "Integer" // Int : Num Integer
|
12 NUM_INTEGER: "Integer" // Int : Num Integer
|
||||||
13 NUM_AT_INTEGER: "@Integer" // the Int.@Integer private tag
|
13 NUM_AT_INTEGER: "@Integer" // the Int.@Integer private tag
|
||||||
14 NUM_F64: "F64" imported // the Num.F64 type alias
|
14 NUM_F64: "F64" // the Num.F64 type alias
|
||||||
15 NUM_F32: "F32" imported // the Num.F32 type alias
|
15 NUM_F32: "F32" // the Num.F32 type alias
|
||||||
16 NUM_FLOATINGPOINT: "FloatingPoint" // Float : Num FloatingPoint
|
16 NUM_FLOATINGPOINT: "FloatingPoint" // Float : Num FloatingPoint
|
||||||
17 NUM_AT_FLOATINGPOINT: "@FloatingPoint" // the Float.@FloatingPoint private tag
|
17 NUM_AT_FLOATINGPOINT: "@FloatingPoint" // the Float.@FloatingPoint private tag
|
||||||
18 NUM_MAX_FLOAT: "maxFloat"
|
18 NUM_MAX_FLOAT: "maxFloat"
|
||||||
|
@ -977,16 +977,16 @@ define_builtins! {
|
||||||
89 NUM_SUB_SATURATED: "subSaturated"
|
89 NUM_SUB_SATURATED: "subSaturated"
|
||||||
90 NUM_MUL_WRAP: "mulWrap"
|
90 NUM_MUL_WRAP: "mulWrap"
|
||||||
91 NUM_MUL_CHECKED: "mulChecked"
|
91 NUM_MUL_CHECKED: "mulChecked"
|
||||||
92 NUM_INT: "Int" imported
|
92 NUM_INT: "Int"
|
||||||
93 NUM_FLOAT: "Float" imported
|
93 NUM_FLOAT: "Float"
|
||||||
94 NUM_AT_NATURAL: "@Natural"
|
94 NUM_AT_NATURAL: "@Natural"
|
||||||
95 NUM_NATURAL: "Natural"
|
95 NUM_NATURAL: "Natural"
|
||||||
96 NUM_NAT: "Nat" imported
|
96 NUM_NAT: "Nat"
|
||||||
97 NUM_INT_CAST: "intCast"
|
97 NUM_INT_CAST: "intCast"
|
||||||
98 NUM_IS_MULTIPLE_OF: "isMultipleOf"
|
98 NUM_IS_MULTIPLE_OF: "isMultipleOf"
|
||||||
99 NUM_AT_DECIMAL: "@Decimal"
|
99 NUM_AT_DECIMAL: "@Decimal"
|
||||||
100 NUM_DECIMAL: "Decimal"
|
100 NUM_DECIMAL: "Decimal"
|
||||||
101 NUM_DEC: "Dec" imported // the Num.Dectype alias
|
101 NUM_DEC: "Dec" // the Num.Dectype alias
|
||||||
102 NUM_BYTES_TO_U16: "bytesToU16"
|
102 NUM_BYTES_TO_U16: "bytesToU16"
|
||||||
103 NUM_BYTES_TO_U32: "bytesToU32"
|
103 NUM_BYTES_TO_U32: "bytesToU32"
|
||||||
104 NUM_CAST_TO_NAT: "#castToNat"
|
104 NUM_CAST_TO_NAT: "#castToNat"
|
||||||
|
|
|
@ -19,7 +19,7 @@ fn nat_alias() {
|
||||||
assert_evals_to!(
|
assert_evals_to!(
|
||||||
indoc!(
|
indoc!(
|
||||||
r#"
|
r#"
|
||||||
i : Nat
|
i : Num.Nat
|
||||||
i = 1
|
i = 1
|
||||||
|
|
||||||
i
|
i
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue