Add Ordering data-type definition to prelude known constructors.

This commit is contained in:
KtorZ 2023-02-09 14:36:39 +01:00
parent 6be2a9ed80
commit b5cf8c78a5
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
2 changed files with 45 additions and 0 deletions

View File

@ -145,6 +145,41 @@ pub struct TypeAlias<T> {
pub type TypedDataType = DataType<Arc<Type>>; pub type TypedDataType = DataType<Arc<Type>>;
impl TypedDataType { impl TypedDataType {
pub fn ordering() -> Self {
DataType {
constructors: vec![
RecordConstructor {
location: Span::empty(),
name: "Less".to_string(),
arguments: vec![],
doc: None,
sugar: false,
},
RecordConstructor {
location: Span::empty(),
name: "Equal".to_string(),
arguments: vec![],
doc: None,
sugar: false,
},
RecordConstructor {
location: Span::empty(),
name: "Greater".to_string(),
arguments: vec![],
doc: None,
sugar: false,
},
],
doc: None,
location: Span::empty(),
name: "Ordering".to_string(),
opaque: false,
parameters: vec![],
public: true,
typed_parameters: vec![],
}
}
pub fn option(tipo: Arc<Type>) -> Self { pub fn option(tipo: Arc<Type>) -> Self {
DataType { DataType {
constructors: vec![ constructors: vec![

View File

@ -877,6 +877,16 @@ pub fn prelude_functions(id_gen: &IdGenerator) -> IndexMap<FunctionAccessKey, Ty
pub fn prelude_data_types(id_gen: &IdGenerator) -> IndexMap<DataTypeKey, TypedDataType> { pub fn prelude_data_types(id_gen: &IdGenerator) -> IndexMap<DataTypeKey, TypedDataType> {
let mut data_types = IndexMap::new(); let mut data_types = IndexMap::new();
// Ordering
let ordering_data_type = TypedDataType::ordering();
data_types.insert(
DataTypeKey {
module_name: "".to_string(),
defined_type: "Ordering".to_string(),
},
ordering_data_type,
);
// Option // Option
let option_data_type = TypedDataType::option(generic_var(id_gen.next())); let option_data_type = TypedDataType::option(generic_var(id_gen.next()));
data_types.insert( data_types.insert(