Remove redundant match on tuple blueprint generation.

This commit is contained in:
KtorZ 2023-03-08 16:40:03 +01:00
parent 2c987e289d
commit a66c9bd2c3
No known key found for this signature in database
GPG Key ID: 33173CB6F77F4277
2 changed files with 16 additions and 29 deletions

View File

@ -250,36 +250,22 @@ impl Annotated<Schema> {
Err(Error::new(ErrorContext::UnboundTypeVariable, type_info)) Err(Error::new(ErrorContext::UnboundTypeVariable, type_info))
} }
}, },
Type::Tuple { elems } => match &elems[..] { Type::Tuple { elems } => {
[left, right] => { let elems = elems
let left = Annotated::from_type(modules, left, type_parameters)? .iter()
.into_data(left) .map(|e| {
.map_err(|e| e.backtrack(type_info))?; Annotated::from_type(modules, e, type_parameters)
let right = Annotated::from_type(modules, right, type_parameters)? .and_then(|s| s.into_data(e).map(|s| s.annotated))
.into_data(right)
.map_err(|e| e.backtrack(type_info))?;
Ok(Schema::Data(Data::List(Items::Many(vec![
left.annotated,
right.annotated,
])))
.into())
}
_ => {
let elems = elems
.iter()
.map(|e| {
Annotated::from_type(modules, e, type_parameters)
.and_then(|s| s.into_data(e).map(|s| s.annotated))
})
.collect::<Result<Vec<_>, _>>()
.map_err(|e| e.backtrack(type_info))?;
Ok(Annotated {
title: Some("Tuple".to_owned()),
description: None,
annotated: Schema::Data(Data::List(Items::Many(elems))),
}) })
} .collect::<Result<Vec<_>, _>>()
}, .map_err(|e| e.backtrack(type_info))?;
Ok(Annotated {
title: Some("Tuple".to_owned()),
description: None,
annotated: Schema::Data(Data::List(Items::Many(elems))),
})
}
Type::Fn { .. } => Err(Error::new(ErrorContext::UnexpectedFunction, type_info)), Type::Fn { .. } => Err(Error::new(ErrorContext::UnexpectedFunction, type_info)),
} }
} }

View File

@ -470,6 +470,7 @@ mod test {
"title": "test_module.spend", "title": "test_module.spend",
"hash": "3c6766e7a36df2aa13c0e9e6e071317ed39d05f405771c4f1a81c6cc", "hash": "3c6766e7a36df2aa13c0e9e6e071317ed39d05f405771c4f1a81c6cc",
"datum": { "datum": {
"title": "Tuple",
"schema": { "schema": {
"dataType": "list", "dataType": "list",
"items": [ "items": [