---
source: crates/aiken-lang/src/parser/expr/when/mod.rs
description: "Code:\n\nwhen a is {\n  2 if x > 1 -> 3\n  1 | 4 | 5 -> {\n    let amazing = 5\n    amazing\n  }\n  3 -> 9\n  _ -> 4\n}\n"
---
When {
    location: 0..102,
    subject: Var {
        location: 5..6,
        name: "a",
    },
    clauses: [
        UntypedClause {
            location: 14..29,
            patterns: [
                Int {
                    location: 14..15,
                    value: "2",
                    base: Decimal {
                        numeric_underscore: false,
                    },
                },
            ],
            guard: Some(
                GtInt {
                    location: 19..24,
                    left: Var {
                        location: 19..20,
                        tipo: (),
                        name: "x",
                    },
                    right: Constant(
                        Int {
                            location: 23..24,
                            value: "1",
                            base: Decimal {
                                numeric_underscore: false,
                            },
                        },
                    ),
                },
            ),
            then: UInt {
                location: 28..29,
                value: "3",
                base: Decimal {
                    numeric_underscore: false,
                },
            },
        },
        UntypedClause {
            location: 32..82,
            patterns: [
                Int {
                    location: 32..33,
                    value: "1",
                    base: Decimal {
                        numeric_underscore: false,
                    },
                },
                Int {
                    location: 36..37,
                    value: "4",
                    base: Decimal {
                        numeric_underscore: false,
                    },
                },
                Int {
                    location: 40..41,
                    value: "5",
                    base: Decimal {
                        numeric_underscore: false,
                    },
                },
            ],
            guard: None,
            then: Sequence {
                location: 51..78,
                expressions: [
                    Assignment {
                        location: 51..66,
                        value: UInt {
                            location: 65..66,
                            value: "5",
                            base: Decimal {
                                numeric_underscore: false,
                            },
                        },
                        patterns: [
                            AssignmentPattern {
                                pattern: Var {
                                    location: 55..62,
                                    name: "amazing",
                                },
                                annotation: None,
                            },
                        ],
                        kind: Let {
                            backpassing: false,
                        },
                    },
                    Var {
                        location: 71..78,
                        name: "amazing",
                    },
                ],
            },
        },
        UntypedClause {
            location: 85..91,
            patterns: [
                Int {
                    location: 85..86,
                    value: "3",
                    base: Decimal {
                        numeric_underscore: false,
                    },
                },
            ],
            guard: None,
            then: UInt {
                location: 90..91,
                value: "9",
                base: Decimal {
                    numeric_underscore: false,
                },
            },
        },
        UntypedClause {
            location: 94..100,
            patterns: [
                Discard {
                    name: "_",
                    location: 94..95,
                },
            ],
            guard: None,
            then: UInt {
                location: 99..100,
                value: "4",
                base: Decimal {
                    numeric_underscore: false,
                },
            },
        },
    ],
}
