tiny.choir.Location
Defined in tiny.choir.
API (18)
Actions
Public operations.
Types and contracts
Public types and contracts.
Fields and members
Public fields and members.
Source
Source: lib/choir/src/core/location.zig:3
zig
pub const Location = union(enum) { unknown: void, file: FileLocation, file_range: FileRangeLocation, name: NameLocation, fused: FusedLocation, call_site: CallSiteLocation, pub const FileLocation = struct { filename: []const u8, line: u32, column: u32, }; pub const FilePosition = struct { byte: u64, line: u32, column: u32, }; pub const FileRangeLocation = struct { filename: []const u8, start: FilePosition, end: FilePosition, }; pub const NameLocation = struct { name: []const u8, child: ?*const Location, }; pub const FusedLocation = struct { locations: []const Location, metadata: ?*const anyopaque, }; pub const CallSiteLocation = struct { callee: *const Location, caller: *const Location, }; pub fn getUnknown() Location { return .{ .unknown = {} }; } pub fn getFile(filename: []const u8, line: u32, column: u32) Location { return .{ .file = .{ .filename = filename, .line = line, .column = column, } }; } pub fn getFileRange( filename: []const u8, start: FilePosition, end: FilePosition, ) Location { std.debug.assert(start.byte <= end.byte); return .{ .file_range = .{ .filename = filename, .start = start, .end = end, } }; } pub fn getName(n: []const u8, child: ?*const Location) Location { return .{ .name = .{ .name = n, .child = child, } }; } pub fn eql(self: Location, other: Location) bool { const Tag = std.meta.Tag(Location); if (@as(Tag, self) != @as(Tag, other)) return false; return switch (self) { .unknown => true, .file => |f| { const o = other.file; return f.line == o.line and f.column == o.column and std.mem.eql(u8, f.filename, o.filename); }, .file_range => |range| { const o = other.file_range; return range.start.byte == o.start.byte and range.start.line == o.start.line and range.start.column == o.start.column and range.end.byte == o.end.byte and range.end.line == o.end.line and range.end.column == o.end.column and std.mem.eql(u8, range.filename, o.filename); }, .name => |n| { const o = other.name; if (!std.mem.eql(u8, n.name, o.name)) return false; if (n.child == null and o.child == null) return true; if (n.child == null or o.child == null) return false; return n.child.?.eql(o.child.?.*); }, .fused => |f| { const o = other.fused; if (f.locations.len != o.locations.len) return false; for (f.locations, o.locations) |a, b| { if (!a.eql(b)) return false; } return f.metadata == o.metadata; }, .call_site => |c| { const o = other.call_site; return c.callee.eql(o.callee.*) and c.caller.eql(o.caller.*); }, }; } pub fn format(self: Location, writer: *std.Io.Writer) std.Io.Writer.Error!void { switch (self) { .unknown => try writer.writeAll("loc(unknown)"), .file => |f| try writer.print("loc(\"{s}\":{d}:{d})", .{ f.filename, f.line, f.column }), .file_range => |range| try writer.print( "loc(\"{s}\":{d}:{d}-{d}:{d}@{d}..{d})", .{ range.filename, range.start.line, range.start.column, range.end.line, range.end.column, range.start.byte, range.end.byte, }, ), .name => |n| try writer.print("loc(\"{s}\")", .{n.name}), .fused => try writer.writeAll("loc(fused)"), .call_site => try writer.writeAll("loc(callsite)"), } }};Source: lib/choir/src/root.zig:49
zig
pub const Location = ir.Location;Also reachable as
backends.wasm.emission.module_encoding.common.ir.Location, ir.Location.
Complete caller list for Location.getUnknown
61 direct callers.
lib.choir.src.core.block.test_block_detach_operation_preserves_operand_uses[function] — test source atlib/choir/src/core/block.zig:682in nearest public ownerlib.choir.src.core.blocklib.choir.src.core.block.test_block_insert_and_remove_operations[function] — test source atlib/choir/src/core/block.zig:413in nearest public ownerlib.choir.src.core.blocklib.choir.src.core.block.test_block_insertion_rejects_already_parented_operations[function] — test source atlib/choir/src/core/block.zig:576in nearest public ownerlib.choir.src.core.blocklib.choir.src.core.block.test_block_op_order_stays_coherent_through_append,_insert,_and_move[function] — test source atlib/choir/src/core/block.zig:496in nearest public ownerlib.choir.src.core.blocklib.choir.src.core.block.test_block_order_queries_bound_local_scans_before_sealing[function] — test source atlib/choir/src/core/block.zig:548in nearest public ownerlib.choir.src.core.blocklib.choir.src.core.block.test_operation_movement_preserves_operands_and_repairs_successor_predecessors[function] — test source atlib/choir/src/core/block.zig:612in nearest public ownerlib.choir.src.core.blocklib.choir.src.core.dialects.spec.test_operationTemplate_explicit_leaf_mixin_derives_construction_from_one_spec[function] — test source atlib/choir/src/core/dialects/spec.zig:3541in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_explicit_leaf_mixin_derives_optional_and_segment_accessors[function] — test source atlib/choir/src/core/dialects/spec.zig:3666in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_explicit_leaf_mixin_derives_typed_attribute_accessors[function] — test source atlib/choir/src/core/dialects/spec.zig:3604in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_explicit_mixin_derives_non-leaf_construction_from_one_spec[function] — test source atlib/choir/src/core/dialects/spec.zig:3791in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_explicit_terminator_mixin_derives_construction_from_one_spec[function] — test source atlib/choir/src/core/dialects/spec.zig:3857in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_generates_explicit-result_unary_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:4152in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_generates_fixed-result_leaf_operation_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:3961in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_generates_same-type_leaf_operation_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:3910in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_generates_select_same-type_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:4102in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_generates_ternary_same-type_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:4053in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_generates_unary_attr_and_no-result_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:4197in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operationTemplate_nested_definitions_register_custom_wrappers[function] — test source atlib/choir/src/core/dialects/spec.zig:3468in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.dialects.spec.test_operation_descriptor_DSL_builds_dialect_operation_sets[function] — test source atlib/choir/src/core/dialects/spec.zig:3414in nearest public ownerlib.choir.src.core.dialects.speclib.choir.src.core.equivalence.operationWithOperands[function] — private source atlib/choir/src/core/equivalence.zig:301in nearest public ownertiny.choir.ir.equivalencelib.choir.src.core.equivalence.test_OperationEquivalence_commutes_operands[function] — test source atlib/choir/src/core/equivalence.zig:432in nearest public ownertiny.choir.ir.equivalencelib.choir.src.core.equivalence.test_OperationEquivalence_maps_values_before_comparing_operands[function] — test source atlib/choir/src/core/equivalence.zig:508in nearest public ownertiny.choir.ir.equivalencelib.choir.src.core.equivalence.test_OperationEquivalence_matches_same_operation_shape[function] — test source atlib/choir/src/core/equivalence.zig:328in nearest public ownertiny.choir.ir.equivalencelib.choir.src.core.equivalence.test_OperationEquivalence_preserves_multiplicity_for_variadic_commutative_operands[function] — test source atlib/choir/src/core/equivalence.zig:461in nearest public ownertiny.choir.ir.equivalencelib.choir.src.core.parse.test_Choir_parse_round-trips_properties_and_raw_shadows[function] — test source atlib/choir/src/core/parse.zig:733in nearest public ownertiny.choir.ir.parselib.choir.src.core.symbols.test_SymbolTable.Collection_caches_tables_until_invalidated[function] — test source atlib/choir/src/core/symbols.zig:1179in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable.Collection_resolves_nested_symbol_references[function] — test source atlib/choir/src/core/symbols.zig:1220in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable.UserMap_records_and_replaces_nested_symbol_users[function] — test source atlib/choir/src/core/symbols.zig:1349in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable.UserMap_replaces_known_flat_symbol_users[function] — test source atlib/choir/src/core/symbols.zig:1261in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_collects_and_replaces_array_symbol_reference_attributes[function] — test source atlib/choir/src/core/symbols.zig:1624in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_collects_symbol_ops_in_a_region[function] — test source atlib/choir/src/core/symbols.zig:1012in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_collects_symbol_uses_without_crossing_nested_symbol_tables[function] — test source atlib/choir/src/core/symbols.zig:1446in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_ignores_sym_name_attributes_on_non-symbol_operations[function] — test source atlib/choir/src/core/symbols.zig:1045in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_rejects_duplicate_symbols[function] — test source atlib/choir/src/core/symbols.zig:1083in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_rejects_public_declarations[function] — test source atlib/choir/src/core/symbols.zig:1114in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_rejects_replacement_of_read-only_inherent_symbol_references[function] — test source atlib/choir/src/core/symbols.zig:1578in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_rename_rejects_collisions_before_rewriting_uses[function] — test source atlib/choir/src/core/symbols.zig:1765in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_renames_symbols_and_rewrites_scoped_uses[function] — test source atlib/choir/src/core/symbols.zig:1724in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_renames_symbols_through_array_symbol_reference_attributes[function] — test source atlib/choir/src/core/symbols.zig:1676in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_replaces_nested_symbol_reference_prefixes[function] — test source atlib/choir/src/core/symbols.zig:1544in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_replaces_symbol_uses_without_crossing_nested_symbol_tables[function] — test source atlib/choir/src/core/symbols.zig:1497in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_resolves_nested_symbol_reference_attributes[function] — test source atlib/choir/src/core/symbols.zig:1406in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_verifies_discardable_symbol_user_attributes[function] — test source atlib/choir/src/core/symbols.zig:1312in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_SymbolTable_visibility_hides_private_nested_symbol_references[function] — test source atlib/choir/src/core/symbols.zig:1806in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.symbols.test_lookupNearestSymbolFrom_stays_within_nearest_symbol_table[function] — test source atlib/choir/src/core/symbols.zig:1148in nearest public ownertiny.choir.ir.symbolslib.choir.src.core.test.test_operation_successors_update_block_predecessors[function] — test source atlib/choir/src/core/test.zig:1823in nearest public ownerlib.choir.src.core.testlib.choir.src.core.verify.test_NoTerminator_trait_allows_single-block_region_without_terminator[function] — test source atlib/choir/src/core/verify.zig:1568in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_NoTerminator_trait_does_not_exempt_multi-block_regions[function] — test source atlib/choir/src/core/verify.zig:1592in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_NoTerminator_trait_rejects_multi-block_regions_with_terminators[function] — test source atlib/choir/src/core/verify.zig:1620in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_dialect_region_verifier_runs_after_nested_operation_verifier[function] — test source atlib/choir/src/core/verify.zig:2361in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_structural_verification_does_not_run_operation_trait_verifiers[function] — test source atlib/choir/src/core/verify.zig:1725in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_allows_recursive_uses_inside_isolated_operation[function] — test source atlib/choir/src/core/verify.zig:2231in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_implicit_terminator_name[function] — test source atlib/choir/src/core/verify.zig:2070in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_isolation_from_above[function] — test source atlib/choir/src/core/verify.zig:2140in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_operand_counts[function] — test source atlib/choir/src/core/verify.zig:1648in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_recursive_isolation_from_above[function] — test source atlib/choir/src/core/verify.zig:2179in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_region_counts[function] — test source atlib/choir/src/core/verify.zig:2025in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_result_counts[function] — test source atlib/choir/src/core/verify.zig:1690in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_single-block_regions[function] — test source atlib/choir/src/core/verify.zig:2044in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_trait_verification_enforces_terminator_placement[function] — test source atlib/choir/src/core/verify.zig:2106in nearest public ownertiny.choir.ir.verifylib.choir.src.core.verify.test_verify_successor/predecessor_consistency[function] — test source atlib/choir/src/core/verify.zig:1152in nearest public ownertiny.choir.ir.verify
Audit
| Definitions | 13 |
|---|---|
| Public names | 39 |
| Members | 21 |
| Version | 26.7.0 |
| Revision | daab053ee433 |