test(parser): anon binop and ambiguous sequence
This commit is contained in:
		
							parent
							
								
									8a6c81493c
								
							
						
					
					
						commit
						b25db429be
					
				| 
						 | 
					@ -58,4 +58,30 @@ mod tests {
 | 
				
			||||||
            // more comments"#
 | 
					            // more comments"#
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn function_ambiguous_sequence() {
 | 
				
			||||||
 | 
					        assert_module!(
 | 
				
			||||||
 | 
					            r#"
 | 
				
			||||||
 | 
					            fn foo_1() {
 | 
				
			||||||
 | 
					              let a = bar
 | 
				
			||||||
 | 
					              (40)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fn foo_2() {
 | 
				
			||||||
 | 
					              let a = bar
 | 
				
			||||||
 | 
					              {40}
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fn foo_3() {
 | 
				
			||||||
 | 
					              let a = (40+2)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            fn foo_4() {
 | 
				
			||||||
 | 
					              let a = bar(42)
 | 
				
			||||||
 | 
					              (a + 14) * 42
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            "#
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -87,3 +87,28 @@ pub fn parser() -> impl Parser<Token, UntypedExpr, Error = ParseError> {
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#[cfg(test)]
 | 
				
			||||||
 | 
					mod tests {
 | 
				
			||||||
 | 
					    use crate::assert_expr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn first_class_binop() {
 | 
				
			||||||
 | 
					        assert_expr!(
 | 
				
			||||||
 | 
					            r#"
 | 
				
			||||||
 | 
					            compare_with(a, >, b)
 | 
				
			||||||
 | 
					            compare_with(a, >=, b)
 | 
				
			||||||
 | 
					            compare_with(a, <, b)
 | 
				
			||||||
 | 
					            compare_with(a, <=, b)
 | 
				
			||||||
 | 
					            compare_with(a, ==, b)
 | 
				
			||||||
 | 
					            compare_with(a, !=, b)
 | 
				
			||||||
 | 
					            combine_with(a, &&, b)
 | 
				
			||||||
 | 
					            combine_with(a, ||, b)
 | 
				
			||||||
 | 
					            compute_with(a, +, b)
 | 
				
			||||||
 | 
					            compute_with(a, -, b)
 | 
				
			||||||
 | 
					            compute_with(a, /, b)
 | 
				
			||||||
 | 
					            compute_with(a, *, b)
 | 
				
			||||||
 | 
					            compute_with(a, %, b)"#
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
source: crates/aiken-lang/src/tests/parser.rs
 | 
					source: crates/aiken-lang/src/parser.rs
 | 
				
			||||||
description: "Code:\n\nfn foo_1() {\n  let a = bar\n  (40)\n}\n\nfn foo_2() {\n  let a = bar\n  {40}\n}\n\nfn foo_3() {\n  let a = (40+2)\n}\n\nfn foo_4() {\n  let a = bar(42)\n  (a + 14) * 42\n}\n"
 | 
					description: "Code:\n\nfn foo_1() {\n  let a = bar\n  (40)\n}\n\nfn foo_2() {\n  let a = bar\n  {40}\n}\n\nfn foo_3() {\n  let a = (40+2)\n}\n\nfn foo_4() {\n  let a = bar(42)\n  (a + 14) * 42\n}\n"
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
Module {
 | 
					Module {
 | 
				
			||||||
| 
						 | 
					@ -168,15 +168,6 @@ fn base16_bytearray_literals() {
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[test]
 | 
					 | 
				
			||||||
fn function_def() {
 | 
					 | 
				
			||||||
    assert_module!(
 | 
					 | 
				
			||||||
        r#"
 | 
					 | 
				
			||||||
        fn foo() {}
 | 
					 | 
				
			||||||
        "#
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[test]
 | 
					#[test]
 | 
				
			||||||
fn function_invoke() {
 | 
					fn function_invoke() {
 | 
				
			||||||
    assert_module!(
 | 
					    assert_module!(
 | 
				
			||||||
| 
						 | 
					@ -188,55 +179,6 @@ fn function_invoke() {
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#[test]
 | 
					 | 
				
			||||||
fn function_ambiguous_sequence() {
 | 
					 | 
				
			||||||
    assert_module!(
 | 
					 | 
				
			||||||
        r#"
 | 
					 | 
				
			||||||
        fn foo_1() {
 | 
					 | 
				
			||||||
          let a = bar
 | 
					 | 
				
			||||||
          (40)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        fn foo_2() {
 | 
					 | 
				
			||||||
          let a = bar
 | 
					 | 
				
			||||||
          {40}
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        fn foo_3() {
 | 
					 | 
				
			||||||
          let a = (40+2)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        fn foo_4() {
 | 
					 | 
				
			||||||
          let a = bar(42)
 | 
					 | 
				
			||||||
          (a + 14) * 42
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        "#
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[test]
 | 
					 | 
				
			||||||
fn first_class_binop() {
 | 
					 | 
				
			||||||
    assert_module!(
 | 
					 | 
				
			||||||
        r#"
 | 
					 | 
				
			||||||
        fn foo() {
 | 
					 | 
				
			||||||
          compare_with(a, >, b)
 | 
					 | 
				
			||||||
          compare_with(a, >=, b)
 | 
					 | 
				
			||||||
          compare_with(a, <, b)
 | 
					 | 
				
			||||||
          compare_with(a, <=, b)
 | 
					 | 
				
			||||||
          compare_with(a, ==, b)
 | 
					 | 
				
			||||||
          compare_with(a, !=, b)
 | 
					 | 
				
			||||||
          combine_with(a, &&, b)
 | 
					 | 
				
			||||||
          combine_with(a, ||, b)
 | 
					 | 
				
			||||||
          compute_with(a, +, b)
 | 
					 | 
				
			||||||
          compute_with(a, -, b)
 | 
					 | 
				
			||||||
          compute_with(a, /, b)
 | 
					 | 
				
			||||||
          compute_with(a, *, b)
 | 
					 | 
				
			||||||
          compute_with(a, %, b)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    "#
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#[test]
 | 
					#[test]
 | 
				
			||||||
fn parse_unicode_offset_1() {
 | 
					fn parse_unicode_offset_1() {
 | 
				
			||||||
    assert_module!(
 | 
					    assert_module!(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| 
						 | 
					@ -1,36 +0,0 @@
 | 
				
			||||||
---
 | 
					 | 
				
			||||||
source: crates/aiken-lang/src/tests/parser.rs
 | 
					 | 
				
			||||||
description: "Code:\n\nfn foo() {}\n"
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
Module {
 | 
					 | 
				
			||||||
    name: "",
 | 
					 | 
				
			||||||
    docs: [],
 | 
					 | 
				
			||||||
    type_info: (),
 | 
					 | 
				
			||||||
    definitions: [
 | 
					 | 
				
			||||||
        Fn(
 | 
					 | 
				
			||||||
            Function {
 | 
					 | 
				
			||||||
                arguments: [],
 | 
					 | 
				
			||||||
                body: Trace {
 | 
					 | 
				
			||||||
                    kind: Todo,
 | 
					 | 
				
			||||||
                    location: 0..11,
 | 
					 | 
				
			||||||
                    then: ErrorTerm {
 | 
					 | 
				
			||||||
                        location: 0..11,
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                    text: String {
 | 
					 | 
				
			||||||
                        location: 0..11,
 | 
					 | 
				
			||||||
                        value: "aiken::todo",
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                doc: None,
 | 
					 | 
				
			||||||
                location: 0..8,
 | 
					 | 
				
			||||||
                name: "foo",
 | 
					 | 
				
			||||||
                public: false,
 | 
					 | 
				
			||||||
                return_annotation: None,
 | 
					 | 
				
			||||||
                return_type: (),
 | 
					 | 
				
			||||||
                end_position: 10,
 | 
					 | 
				
			||||||
                can_error: true,
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
    kind: Validator,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
		Loading…
	
		Reference in New Issue