diff --git a/src/build/compile_test.rs b/src/build/compile_test.rs index 2e9433d..3ae7298 100644 --- a/src/build/compile_test.rs +++ b/src/build/compile_test.rs @@ -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 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 line: 2, column: 5").unwrap(), + ], + ) +} diff --git a/src/build/mod.rs b/src/build/mod.rs index e9f83d1..0b3198f 100644 --- a/src/build/mod.rs +++ b/src/build/mod.rs @@ -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(), )))