File: left_associativity.rs

package info (click to toggle)
thunderbird 1%3A91.13.0-1~deb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,953,400 kB
  • sloc: cpp: 6,084,049; javascript: 4,790,441; ansic: 3,341,496; python: 862,958; asm: 366,542; xml: 204,277; java: 152,477; sh: 111,436; makefile: 21,388; perl: 15,312; yacc: 4,583; objc: 3,026; lex: 1,720; exp: 762; pascal: 635; awk: 564; sql: 453; php: 436; lisp: 432; ruby: 99; sed: 69; csh: 45
file content (49 lines) | stat: -rw-r--r-- 1,429 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use glsl::parser::Parse;
use glsl::syntax;

#[test]
fn left_associativity() {
  let r = syntax::TranslationUnit::parse(
    "
    void main() {
      x = a + b + c;
    }
  ",
  );

  let expected = syntax::TranslationUnit::from_non_empty_iter(vec![
    syntax::ExternalDeclaration::FunctionDefinition(syntax::FunctionDefinition {
      prototype: syntax::FunctionPrototype {
        ty: syntax::FullySpecifiedType {
          qualifier: None,
          ty: syntax::TypeSpecifier {
            ty: syntax::TypeSpecifierNonArray::Void,
            array_specifier: None,
          },
        },
        name: "main".into(),
        parameters: Vec::new(),
      },
      statement: syntax::CompoundStatement {
        statement_list: vec![syntax::Statement::Simple(Box::new(
          syntax::SimpleStatement::Expression(Some(syntax::Expr::Assignment(
            Box::new(syntax::Expr::Variable("x".into())),
            syntax::AssignmentOp::Equal,
            Box::new(syntax::Expr::Binary(
              syntax::BinaryOp::Add,
              Box::new(syntax::Expr::Binary(
                syntax::BinaryOp::Add,
                Box::new(syntax::Expr::Variable("a".into())),
                Box::new(syntax::Expr::Variable("b".into())),
              )),
              Box::new(syntax::Expr::Variable("c".into())),
            )),
          ))),
        ))],
      },
    }),
  ])
  .unwrap();

  assert_eq!(r, Ok(expected));
}