================== generic_const_inference ================== program() type ConstAlias = const ^Word8 BasePtr = ^Word8 NestedConst = const BasePtr var slice: []const Word8 aliased: ConstAlias := nil nested: NestedConst := nil direct_const: const ^Word8 := nil proc write#[T](fd: Int; buf: ^T; count: Int) -> Int return 0 proc write_const#[T](fd: Int; buf: ^const T; count: Int) -> Int return 0 begin write(1, slice.ptr, cast(slice.length: Int)); write(1, aliased, 0); write(1, nested, 0); write(1, direct_const, 0); write_const(1, slice.ptr, cast(slice.length: Int)); write_const(1, aliased, 0); write_const(1, nested, 0); write_const(1, direct_const, 0) end. --- (source_file (program_declaration (type_section (type_declaration (identifier_definition (identifier)) (const_type (pointer_type (identifier)))) (type_declaration (identifier_definition (identifier)) (pointer_type (identifier))) (type_declaration (identifier_definition (identifier)) (const_type (identifier)))) (var_section (variable_declaration (identifier_definition (identifier)) (slice_type (const_type (identifier)))) (variable_declaration (identifier_definition (identifier)) (identifier) (literal (nil))) (variable_declaration (identifier_definition (identifier)) (identifier) (literal (nil))) (variable_declaration (identifier_definition (identifier)) (const_type (pointer_type (identifier))) (literal (nil)))) (procedure_declaration (identifier_definition (identifier)) (type_parameters (identifier)) (parameter_list (field_declaration (identifier_definition (identifier)) (identifier)) (field_declaration (identifier_definition (identifier)) (pointer_type (identifier))) (field_declaration (identifier_definition (identifier)) (identifier))) (identifier) (procedure_body (return_clause (literal (integer))))) (procedure_declaration (identifier_definition (identifier)) (type_parameters (identifier)) (parameter_list (field_declaration (identifier_definition (identifier)) (identifier)) (field_declaration (identifier_definition (identifier)) (pointer_type (const_type (identifier)))) (field_declaration (identifier_definition (identifier)) (identifier))) (identifier) (procedure_body (return_clause (literal (integer))))) (call_expression (identifier) (argument_list (literal (integer)) (field_expression (identifier) (identifier)) (cast_expression (field_expression (identifier) (identifier)) (identifier)))) (call_expression (identifier) (argument_list (literal (integer)) (identifier) (literal (integer)))) (call_expression (identifier) (argument_list (literal (integer)) (identifier) (literal (integer)))) (call_expression (identifier) (argument_list (literal (integer)) (identifier) (literal (integer)))) (call_expression (identifier) (argument_list (literal (integer)) (field_expression (identifier) (identifier)) (cast_expression (field_expression (identifier) (identifier)) (identifier)))) (call_expression (identifier) (argument_list (literal (integer)) (identifier) (literal (integer)))) (call_expression (identifier) (argument_list (literal (integer)) (identifier) (literal (integer)))) (call_expression (identifier) (argument_list (literal (integer)) (identifier) (literal (integer))))))