FIX: Better error reporting for copy calls

This commit is contained in:
Jeremy Wall 2019-02-08 19:01:16 -06:00
parent c3025c710e
commit a1bc81ee89
2 changed files with 24 additions and 2 deletions

View File

@ -507,3 +507,25 @@ fn test_let_missing_semicolon_compile_failure() {
],
)
}
#[test]
fn test_copy_expression_not_a_tuple_compile_failure() {
assert_build_failure(
"let foo = 1;\nfoo{};",
vec![
Regex::new(r"Expected Tuple or Module but got \(1\)").unwrap(),
Regex::new(r"at <eval> line: 2, column: 1").unwrap(),
],
)
}
#[test]
fn test_copy_expression_wrong_field_type_compile_failure() {
assert_build_failure(
"let foo = {bar=1};\nfoo{bar=[]};",
vec![
Regex::new(r"Expected type Integer for field bar but got \(List\)").unwrap(),
Regex::new(r"at <eval> line: 2, column: 5").unwrap(),
],
)
}

View File

@ -1042,7 +1042,7 @@ impl<'a> FileBuilder<'a> {
} else {
return Err(Box::new(error::BuildError::new(
format!(
"Expected type {} for field {} but got {}",
"Expected type {} for field {} but got ({})",
src_val.1.type_name(),
key.fragment,
expr_result.type_name()
@ -1130,7 +1130,7 @@ impl<'a> FileBuilder<'a> {
}
}
Err(Box::new(error::BuildError::new(
format!("Expected Tuple or Module got {}", v),
format!("Expected Tuple or Module but got ({})", v),
error::ErrorType::TypeFail,
def.selector.pos().clone(),
)))