### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
[debug/ast-final] # [HILTI] Foo: Final AST (round 2)
[debug/ast-final]   - Module %10 (coercion.hlt:5:1-31:1) [@m:XXX]
[debug/ast-final]       | A -> declaration::GlobalVariable %1 <linkage="private"> [canon-id: Foo::A] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | B -> declaration::GlobalVariable %2 <linkage="private"> [canon-id: Foo::B] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | C -> declaration::GlobalVariable %3 <linkage="private"> [canon-id: Foo::C] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | D -> declaration::GlobalVariable %4 <linkage="private"> [canon-id: Foo::D] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | E -> declaration::GlobalVariable %9 <linkage="private"> [canon-id: Foo::E] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | Foo -> declaration::Module %13 <id="Foo"> [canon-id: Foo] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | x -> declaration::Function %5 <linkage="private" parent_type="%???"> [canon-id: Foo::x] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | y -> declaration::Function %6 <linkage="private" parent_type="%???"> [canon-id: Foo::y] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | z -> declaration::Function %7 <linkage="private" parent_type="%???"> [canon-id: Foo::z] [@d:XXX] ([@d:XXX])
[debug/ast-final]       | z2 -> declaration::Function %8 <linkage="private" parent_type="%???"> [canon-id: Foo::z2] [@d:XXX] ([@d:XXX])
[debug/ast-final]     - ID <name="Foo"> (coercion.hlt:5:8-5:10) [@i:XXX]
[debug/ast-final]     - statement::Block (coercion.hlt:5:1-31:1) [@s:XXX]
[debug/ast-final]     - declaration::GlobalVariable %1 <linkage="private"> (coercion.hlt:7:1-7:18) [canon-id: Foo::A] [@d:XXX]
[debug/ast-final]       - ID <name="A"> (coercion.hlt:7:13-7:13) [@i:XXX]
[debug/ast-final]       - type::Real (coercion.hlt:7:8-7:11) (const) (resolved) [@t:XXX]
[debug/ast-final]       - expression::Ctor (coercion.hlt:7:17-7:17) (const) (resolved) [@e:XXX]
[debug/ast-final]         - ctor::Coerced (coercion.hlt:7:17-7:17) [@c:XXX]
[debug/ast-final]           - ctor::UnsignedInteger <value="3" width="64"> (coercion.hlt:7:17-7:17) [@c:XXX]
[debug/ast-final]             - type::UnsignedInteger <width="64"> (coercion.hlt:7:17-7:17) (const) (resolved) [@t:XXX]
[debug/ast-final]           - ctor::Real <value="3.000000"> (coercion.hlt:7:17-7:17) [@c:XXX]
[debug/ast-final]             - type::Real (const) (resolved) [@t:XXX]
[debug/ast-final]     - declaration::GlobalVariable %2 <linkage="private"> (coercion.hlt:8:1-8:19) [canon-id: Foo::B] [@d:XXX]
[debug/ast-final]       - ID <name="B"> (coercion.hlt:8:13-8:13) [@i:XXX]
[debug/ast-final]       - type::Real (coercion.hlt:8:8-8:11) (const) (resolved) [@t:XXX]
[debug/ast-final]       - expression::Ctor (coercion.hlt:8:17-8:18) (const) (resolved) [@e:XXX]
[debug/ast-final]         - ctor::Coerced (coercion.hlt:8:17-8:18) [@c:XXX]
[debug/ast-final]           - ctor::SignedInteger <value="-5" width="64"> (coercion.hlt:8:17-8:18) [@c:XXX]
[debug/ast-final]             - type::SignedInteger <width="64"> (coercion.hlt:8:17-8:18) (const) (resolved) [@t:XXX]
[debug/ast-final]           - ctor::Real <value="-5.000000"> (coercion.hlt:8:17-8:18) [@c:XXX]
[debug/ast-final]             - type::Real (const) (resolved) [@t:XXX]
[debug/ast-final]     - declaration::GlobalVariable %3 <linkage="private"> (coercion.hlt:9:1-9:23) [canon-id: Foo::C] [@d:XXX]
[debug/ast-final]       - ID <name="C"> (coercion.hlt:9:15-9:15) [@i:XXX]
[debug/ast-final]       - type::Stream (coercion.hlt:9:8-9:13) (non-const) (resolved) [@t:XXX]
[debug/ast-final]         - type::stream::View (coercion.hlt:9:8-9:13) (const) (resolved) [@t:XXX]
[debug/ast-final]           - type::stream::Iterator (coercion.hlt:9:8-9:13) (non-const) (resolved) [@t:XXX]
[debug/ast-final]             - type::UnsignedInteger <width="8"> (coercion.hlt:9:8-9:13) (const) (resolved) [@t:XXX]
[debug/ast-final]       - expression::Coerced (coercion.hlt:9:19-9:22) (non-const) (resolved) [@e:XXX]
[debug/ast-final]         - expression::Ctor (coercion.hlt:9:19-9:22) (non-const) (resolved) [@e:XXX]
[debug/ast-final]           - ctor::Bytes <value="X"> (coercion.hlt:9:19-9:22) [@c:XXX]
[debug/ast-final]             - type::Bytes (coercion.hlt:9:19-9:22) (non-const) (resolved) [@t:XXX]
[debug/ast-final]               - type::UnsignedInteger <width="8"> (coercion.hlt:9:19-9:22) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::bytes::Iterator (coercion.hlt:9:19-9:22) (non-const) (resolved) [@t:XXX]
[debug/ast-final]                 - type::UnsignedInteger <width="8"> (coercion.hlt:9:19-9:22) (const) (resolved) [@t:XXX]
[debug/ast-final]         - type::Stream (coercion.hlt:9:8-9:13) (non-const) (resolved) [@t:XXX]
[debug/ast-final]           - type::stream::View (coercion.hlt:9:8-9:13) (const) (resolved) [@t:XXX]
[debug/ast-final]             - type::stream::Iterator (coercion.hlt:9:8-9:13) (non-const) (resolved) [@t:XXX]
[debug/ast-final]               - type::UnsignedInteger <width="8"> (coercion.hlt:9:8-9:13) (const) (resolved) [@t:XXX]
[debug/ast-final]     - declaration::GlobalVariable %4 <linkage="private"> (coercion.hlt:10:1-10:23) [canon-id: Foo::D] [@d:XXX]
[debug/ast-final]       - ID <name="D"> (coercion.hlt:10:15-10:15) [@i:XXX]
[debug/ast-final]       - type::String (coercion.hlt:10:8-10:13) (const) (resolved) [@t:XXX]
[debug/ast-final]       - expression::Ctor (coercion.hlt:10:19-10:22) (const) (resolved) [@e:XXX]
[debug/ast-final]         - ctor::String <is_literal="false" value="42"> (coercion.hlt:10:19-10:22) [@c:XXX]
[debug/ast-final]           - type::String (coercion.hlt:10:19-10:22) (const) (resolved) [@t:XXX]
[debug/ast-final]     - declaration::Function %5 <linkage="private" parent_type="%???"> (coercion.hlt:12:1-14:1) [canon-id: Foo::x] [@d:XXX]
[debug/ast-final]       - Function <cc="<standard>"> (coercion.hlt:12:10-14:1) [@f:XXX]
[debug/ast-final]         - ID <name="x"> (coercion.hlt:12:15-12:15) [@i:XXX]
[debug/ast-final]         - type::Function <flavor="standard"> (coercion.hlt:12:10-14:1) (const) (resolved) [@t:XXX]
[debug/ast-final]           - type::function::Result (coercion.hlt:12:10-12:13) [@t:XXX]
[debug/ast-final]             - type::Bool (coercion.hlt:12:10-12:13) (const) (resolved) [@t:XXX]
[debug/ast-final]         - statement::Block (coercion.hlt:12:19-14:1) [@s:XXX]
[debug/ast-final]           - statement::Return (coercion.hlt:13:5-13:16) [@s:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:13:12-13:15) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::Bool <value="true"> (coercion.hlt:13:12-13:15) [@c:XXX]
[debug/ast-final]                 - type::Bool (coercion.hlt:13:12-13:15) (const) (resolved) [@t:XXX]
[debug/ast-final]         - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]     - declaration::Function %6 <linkage="private" parent_type="%???"> (coercion.hlt:16:1-18:1) [canon-id: Foo::y] [@d:XXX]
[debug/ast-final]       - Function <cc="<standard>"> (coercion.hlt:16:10-18:1) [@f:XXX]
[debug/ast-final]         - ID <name="y"> (coercion.hlt:16:15-16:15) [@i:XXX]
[debug/ast-final]         - type::Function <flavor="standard"> (coercion.hlt:16:10-18:1) (const) (resolved) [@t:XXX]
[debug/ast-final]           - type::function::Result (coercion.hlt:16:10-16:13) [@t:XXX]
[debug/ast-final]             - type::Real (coercion.hlt:16:10-16:13) (const) (resolved) [@t:XXX]
[debug/ast-final]         - statement::Block (coercion.hlt:16:19-18:1) [@s:XXX]
[debug/ast-final]           - statement::Return (coercion.hlt:17:5-17:13) [@s:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:17:12-17:12) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::Coerced (coercion.hlt:17:12-17:12) [@c:XXX]
[debug/ast-final]                 - ctor::UnsignedInteger <value="1" width="64"> (coercion.hlt:17:12-17:12) [@c:XXX]
[debug/ast-final]                   - type::UnsignedInteger <width="64"> (coercion.hlt:17:12-17:12) (const) (resolved) [@t:XXX]
[debug/ast-final]                 - ctor::Real <value="1.000000"> (coercion.hlt:17:12-17:12) [@c:XXX]
[debug/ast-final]                   - type::Real (const) (resolved) [@t:XXX]
[debug/ast-final]         - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]     - declaration::Function %7 <linkage="private" parent_type="%???"> (coercion.hlt:20:1-22:1) [canon-id: Foo::z] [@d:XXX]
[debug/ast-final]       - Function <cc="<standard>"> (coercion.hlt:20:10-22:1) [@f:XXX]
[debug/ast-final]         - ID <name="z"> (coercion.hlt:20:23-20:23) [@i:XXX]
[debug/ast-final]         - type::Function <flavor="standard"> (coercion.hlt:20:10-22:1) (const) (resolved) [@t:XXX]
[debug/ast-final]           - type::function::Result (coercion.hlt:20:10-20:21) [@t:XXX]
[debug/ast-final]             - type::stream::View (coercion.hlt:20:15-20:20) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::stream::Iterator (coercion.hlt:20:15-20:20) (non-const) (resolved) [@t:XXX]
[debug/ast-final]                 - type::UnsignedInteger <width="8"> (coercion.hlt:20:15-20:20) (const) (resolved) [@t:XXX]
[debug/ast-final]         - statement::Block (coercion.hlt:20:27-22:1) [@s:XXX]
[debug/ast-final]           - statement::Return (coercion.hlt:21:5-21:13) [@s:XXX]
[debug/ast-final]             - expression::Coerced (coercion.hlt:21:12-21:12) (non-const) (resolved) [@e:XXX]
[debug/ast-final]               - expression::ResolvedID <rid="3"> (type: stream [@t:XXX]) (coercion.hlt:21:12-21:12) (non-const) (resolved) [@e:XXX]
[debug/ast-final]                 - ID <name="Foo::C"> (coercion.hlt:21:12-21:12) [@i:XXX]
[debug/ast-final]               - type::stream::View (coercion.hlt:20:15-20:20) (const) (resolved) [@t:XXX]
[debug/ast-final]                 - type::stream::Iterator (coercion.hlt:20:15-20:20) (non-const) (resolved) [@t:XXX]
[debug/ast-final]                   - type::UnsignedInteger <width="8"> (coercion.hlt:20:15-20:20) (const) (resolved) [@t:XXX]
[debug/ast-final]         - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]     - declaration::Function %8 <linkage="private" parent_type="%???"> (coercion.hlt:24:1-26:1) [canon-id: Foo::z2] [@d:XXX]
[debug/ast-final]       - Function <cc="<standard>"> (coercion.hlt:24:10-26:1) [@f:XXX]
[debug/ast-final]         - ID <name="z2"> (coercion.hlt:24:15-24:16) [@i:XXX]
[debug/ast-final]         - type::Function <flavor="standard"> (coercion.hlt:24:10-26:1) (const) (resolved) [@t:XXX]
[debug/ast-final]           - type::function::Result (coercion.hlt:24:10-24:13) [@t:XXX]
[debug/ast-final]             - type::Void (<singleton>) (const) (resolved) [@t:XXX]
[debug/ast-final]         - statement::Block (coercion.hlt:24:20-26:1) [@s:XXX]
[debug/ast-final]           - statement::Return (coercion.hlt:25:5-25:11) [@s:XXX]
[debug/ast-final]             - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]         - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]     - declaration::GlobalVariable %9 <linkage="private"> (coercion.hlt:28:1-28:54) [canon-id: Foo::E] [@d:XXX]
[debug/ast-final]       - ID <name="E"> (coercion.hlt:28:37-28:37) [@i:XXX]
[debug/ast-final]       - type::Tuple <wildcard="false"> (coercion.hlt:28:8-28:35) (const) (resolved) [@t:XXX]
[debug/ast-final]         - type::tuple::Element (coercion.hlt:28:14-28:17) [@t:XXX]
[debug/ast-final]           - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]           - type::Real (coercion.hlt:28:14-28:17) (const) (resolved) [@t:XXX]
[debug/ast-final]         - type::tuple::Element (coercion.hlt:28:20-28:26) [@t:XXX]
[debug/ast-final]           - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]           - type::SignedInteger <width="32"> (coercion.hlt:28:20-28:26) (const) (resolved) [@t:XXX]
[debug/ast-final]         - type::tuple::Element (coercion.hlt:28:29-28:34) [@t:XXX]
[debug/ast-final]           - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]           - type::String (coercion.hlt:28:29-28:34) (const) (resolved) [@t:XXX]
[debug/ast-final]       - expression::Ctor (coercion.hlt:28:41-28:53) (const) (resolved) [@e:XXX]
[debug/ast-final]         - ctor::Coerced (coercion.hlt:28:41-28:53) [@c:XXX]
[debug/ast-final]           - ctor::Tuple (coercion.hlt:28:41-28:53) [@c:XXX]
[debug/ast-final]             - type::Tuple <wildcard="false"> (coercion.hlt:28:41-28:53) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::tuple::Element (coercion.hlt:28:42-28:42) [@t:XXX]
[debug/ast-final]                 - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]                 - type::UnsignedInteger <width="64"> (coercion.hlt:28:42-28:42) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::tuple::Element (coercion.hlt:28:45-28:45) [@t:XXX]
[debug/ast-final]                 - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]                 - type::UnsignedInteger <width="64"> (coercion.hlt:28:45-28:45) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::tuple::Element (coercion.hlt:28:48-28:52) [@t:XXX]
[debug/ast-final]                 - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]                 - type::String (coercion.hlt:28:48-28:52) (const) (resolved) [@t:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:28:42-28:42) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::UnsignedInteger <value="1" width="64"> (coercion.hlt:28:42-28:42) [@c:XXX]
[debug/ast-final]                 - type::UnsignedInteger <width="64"> (coercion.hlt:28:42-28:42) (const) (resolved) [@t:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:28:45-28:45) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::UnsignedInteger <value="2" width="64"> (coercion.hlt:28:45-28:45) [@c:XXX]
[debug/ast-final]                 - type::UnsignedInteger <width="64"> (coercion.hlt:28:45-28:45) (const) (resolved) [@t:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:28:48-28:52) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::String <is_literal="false" value="xyz"> (coercion.hlt:28:48-28:52) [@c:XXX]
[debug/ast-final]                 - type::String (coercion.hlt:28:48-28:52) (const) (resolved) [@t:XXX]
[debug/ast-final]           - ctor::Tuple (coercion.hlt:28:41-28:53) [@c:XXX]
[debug/ast-final]             - type::Tuple <wildcard="false"> (coercion.hlt:28:41-28:53) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::tuple::Element [@t:XXX]
[debug/ast-final]                 - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]                 - type::Real (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::tuple::Element (coercion.hlt:28:45-28:45) [@t:XXX]
[debug/ast-final]                 - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]                 - type::SignedInteger <width="32"> (coercion.hlt:28:45-28:45) (const) (resolved) [@t:XXX]
[debug/ast-final]               - type::tuple::Element (coercion.hlt:28:48-28:52) [@t:XXX]
[debug/ast-final]                 - node::None (coercion.hlt:12:10-14:1) [@n:XXX]
[debug/ast-final]                 - type::String (coercion.hlt:28:48-28:52) (const) (resolved) [@t:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:28:42-28:42) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::Coerced (coercion.hlt:28:42-28:42) [@c:XXX]
[debug/ast-final]                 - ctor::UnsignedInteger <value="1" width="64"> (coercion.hlt:28:42-28:42) [@c:XXX]
[debug/ast-final]                   - type::UnsignedInteger <width="64"> (coercion.hlt:28:42-28:42) (const) (resolved) [@t:XXX]
[debug/ast-final]                 - ctor::Real <value="1.000000"> (coercion.hlt:28:42-28:42) [@c:XXX]
[debug/ast-final]                   - type::Real (const) (resolved) [@t:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:28:45-28:45) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::Coerced (coercion.hlt:28:45-28:45) [@c:XXX]
[debug/ast-final]                 - ctor::UnsignedInteger <value="2" width="64"> (coercion.hlt:28:45-28:45) [@c:XXX]
[debug/ast-final]                   - type::UnsignedInteger <width="64"> (coercion.hlt:28:45-28:45) (const) (resolved) [@t:XXX]
[debug/ast-final]                 - ctor::SignedInteger <value="2" width="32"> (coercion.hlt:28:45-28:45) [@c:XXX]
[debug/ast-final]                   - type::SignedInteger <width="32"> (coercion.hlt:28:45-28:45) (const) (resolved) [@t:XXX]
[debug/ast-final]             - expression::Ctor (coercion.hlt:28:48-28:52) (const) (resolved) [@e:XXX]
[debug/ast-final]               - ctor::String <is_literal="false" value="xyz"> (coercion.hlt:28:48-28:52) [@c:XXX]
[debug/ast-final]                 - type::String (coercion.hlt:28:48-28:52) (const) (resolved) [@t:XXX]
module Foo {

global real A = 3;
global real B = -5;
global stream C = b"X";
global string D = "42";
global tuple<real, int<32>, string> E = (1, 2, "xyz");

function bool x() {
    return True;
}

function real y() {
    return 1;
}

function view<stream> z() {
    return C;
}

function void z2() {
    return;
}

}
