fix(aiken-lang): assignment as last expr in when and if
This commit is contained in:
@@ -204,6 +204,85 @@ fn anonymous_function_dupicate_args() {
|
||||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignement_last_expr_when() {
|
||||
let source_code = r#"
|
||||
pub fn foo() {
|
||||
let bar = None
|
||||
|
||||
when bar is {
|
||||
Some(_) -> {
|
||||
let wow = 1
|
||||
}
|
||||
None -> {
|
||||
2
|
||||
}
|
||||
}
|
||||
}
|
||||
"#;
|
||||
|
||||
assert!(matches!(
|
||||
check(parse(source_code)),
|
||||
Err((_, Error::LastExpressionIsAssignment { .. }))
|
||||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignement_last_expr_if_first_branch() {
|
||||
let source_code = r#"
|
||||
pub fn foo() {
|
||||
if True {
|
||||
let thing = 1
|
||||
} else {
|
||||
1
|
||||
}
|
||||
}
|
||||
"#;
|
||||
|
||||
assert!(matches!(
|
||||
check(parse(source_code)),
|
||||
Err((_, Error::LastExpressionIsAssignment { .. }))
|
||||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignement_last_expr_if_branches() {
|
||||
let source_code = r#"
|
||||
pub fn foo() {
|
||||
if True {
|
||||
2
|
||||
} else if False {
|
||||
let thing = 1
|
||||
} else {
|
||||
1
|
||||
}
|
||||
}
|
||||
"#;
|
||||
|
||||
assert!(matches!(
|
||||
check(parse(source_code)),
|
||||
Err((_, Error::LastExpressionIsAssignment { .. }))
|
||||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn assignement_last_expr_if_final_else() {
|
||||
let source_code = r#"
|
||||
pub fn foo() {
|
||||
if True {
|
||||
1
|
||||
} else {
|
||||
let thing = 1
|
||||
}
|
||||
}
|
||||
"#;
|
||||
|
||||
assert!(matches!(
|
||||
check(parse(source_code)),
|
||||
Err((_, Error::LastExpressionIsAssignment { .. }))
|
||||
))
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn if_scoping() {
|
||||
let source_code = r#"
|
||||
|
||||
Reference in New Issue
Block a user