compiler/ kernel/ lib/ scripts/ seed/ sublime/ test/ tests/ import.nominal.order/ wildcard.import.owner/ abi.sizes.rad 3.5 KiB addfn.rad 52 B addfn.ril 76 B aggregate.alignment.rad 6.1 KiB aggregate.alignment.start.ras 285 B aggregate.return.rad 4.1 KiB arith.assignment.rad 631 B arith.basic.rad 191 B arith.modulo.rad 111 B arith.subword.rad 3.9 KiB arith.subword.ril 4.3 KiB arith.sum.rad 192 B arith.w64.rad 4.1 KiB arith.w64.ril 5.2 KiB array.aggregate.stride.rad 759 B array.aggregate.stride.ril 1.1 KiB array.assign.rad 225 B array.assign.ril 528 B array.bounds.check.rad 321 B array.fn.assign.rad 265 B array.index.assign.rad 422 B array.index.rad 280 B array.index.ril 496 B array.len.const.rad 348 B array.len.const.ril 200 B array.length.rad 285 B array.literal.rad 136 B array.literal.ril 329 B array.math.rad 1.2 KiB array.nested.assign.rad 327 B array.nested.rad 325 B array.nested.ril 928 B array.record.elements.rad 1.7 KiB array.repeat.edge.rad 548 B array.repeat.rad 828 B array.repeat.ril 3.0 KiB array.return.rad 345 B array.slice.empty.rad 123 B array.slice.full.rad 110 B array.slice.full.ril 170 B array.slice.gen.end.rad 141 B array.slice.gen.index.rad 154 B array.slice.gen.open.rad 140 B array.slice.gen.start.end.rad 142 B array.slice.gen.start.rad 141 B array.slice.openend.rad 134 B array.slice.openend.ril 353 B array.slice.openstart.rad 134 B array.slice.openstart.ril 291 B array.slice.rad 774 B as.precedence.rad 226 B asm.basic.text.program.ras 187 B asm.branch.comparisons.ras 648 B asm.call.return.flow.ras 203 B asm.compare.set.logic.ras 611 B asm.csr.system.instructions.ras 221 B asm.data.directives.ras 439 B asm.data.symbol.fixup.ras 227 B asm.directive.boundary.values.ras 809 B asm.fence.ras 76 B asm.global.scoped.symbols.ras 207 B asm.instruction.matrix.alu.ras 566 B asm.instruction.matrix.mem.control.ras 355 B asm.instruction.matrix.system.ras 115 B asm.label.fixups.ras 235 B asm.li.expressions.ras 212 B asm.link.rad 103 B asm.link.ras 85 B asm.load.store.widths.ras 711 B asm.mul.div.rem.ras 769 B asm.rodata.prefix.rad 226 B asm.rodata.prefix.ras 163 B asm.scoped.symbols.la.ras 147 B asm.scoped.symbols.tail.ras 157 B asm.section.switching.ras 173 B asm.space.constant.expressions.ras 358 B asm.string.directive.lists.ras 326 B asm.word.dword.constants.ras 372 B asm.word.shift.ops.ras 870 B assert.basic.rad 402 B assert.basic.ril 624 B assert.fail.rad 138 B assert.false.rad 140 B assert.message.rad 123 B assert.message.ril 141 B assert.true.rad 115 B assign.loop.rad 213 B assign.loop.ril 242 B assign.multi.var.rad 194 B assign.multi.var.ril 73 B assign.mutable.rad 6.3 KiB assign.param.rad 150 B assign.param.ril 96 B assign.rad 156 B assign.self.ref.rad 161 B assign.self.ref.ril 92 B assign.sequential.rad 163 B assign.sequential.ril 52 B assign.shadow.mutable.rad 489 B assign.use.intermediate.rad 191 B assign.use.intermediate.ril 99 B average.rad 189 B average.ril 378 B binop.arith.rad 479 B binop.arith.ril 389 B binop.bitwise.rad 1.2 KiB binop.bitwise.ril 1.2 KiB binop.cmp.rad 441 B binop.logical.rad 216 B binop.logical.ril 373 B binop.shift.rad 197 B binop.shift.ril 149 B binop.unsigned.rad 317 B binop.unsigned.ril 236 B bool.comparison.array.rad 688 B bool.comparison.nested.gen.rad 1.0 KiB bool.comparison.opt.rad 905 B bool.comparison.record.gen.rad 1.0 KiB bool.comparison.record.rad 1.1 KiB bool.comparison.slice.gen.rad 157 B bool.comparison.slice.rad 4.1 KiB bool.comparison.slice.record.gen.rad 2.0 KiB bool.comparison.slice.union.gen.rad 2.5 KiB bool.comparison.union.ctor.rad 711 B bool.comparison.union.gen.rad 1.2 KiB bool.comparison.union.record.gen.rad 1.5 KiB bool.comparison.union.simple.gen.rad 302 B bool.operators.complex.rad 384 B bool.operators.rad 831 B bool.short.circuit.rad 2.3 KiB bool.simple.rad 209 B bool.values.rad 787 B builtin.alignof.rad 698 B builtin.alignof.ril 287 B builtin.memory.fence.rad 108 B builtin.size.align.rad 1.2 KiB builtin.sizeof.rad 656 B builtin.sizeof.ril 282 B builtin.sliceof.invalid.cap.rad 250 B builtin.sliceof.mut.rad 653 B builtin.sliceof.rad 521 B byte.load.store.rad 380 B byte.load.store.ril 730 B call.aggregate.arg.snapshot.rad 520 B call.arg.clobber.rad 732 B call.basic.rad 256 B call.clobber.rad 481 B call.tests.rad 764 B call.tests.ril 603 B cast.basic.rad 848 B cast.basic.ril 594 B cast.narrow.rad 583 B cast.narrow.ril 557 B cast.same.size.rad 1.0 KiB cast.same.size.ril 1.1 KiB casting.numbers.rad 1.5 KiB char.literal.rad 180 B cmp.rel.rad 733 B cmp.rel.ril 467 B cmp.unsigned.rad 733 B cmp.unsigned.ril 467 B coercion.implicit.rad 917 B coercion.implicit.ril 1.1 KiB compare.literal.first.u64.rad 301 B compound.assign.field.rad 318 B compound.assign.index.once.rad 431 B compound.assign.rad 1.2 KiB compound.assign.ril 2.0 KiB cond.assign.merge.basic.rad 221 B cond.assign.merge.basic.ril 172 B cond.assign.merge.rad 214 B cond.assign.merge.ril 169 B cond.assign.rad 766 B cond.elseif.rad 204 B cond.elseif.ril 181 B cond.expr.aggregate.rad 1.2 KiB cond.expr.literal-first.rad 326 B cond.expr.rad 1.9 KiB cond.expr.ril 3.5 KiB cond.for.else.break.rad 349 B cond.for.indexed.rad 257 B cond.for.rad 184 B cond.for.range.indexed.rad 549 B cond.for.range.rad 190 B cond.for.unsigned.range.rad 671 B cond.forever.break.continue.rad 201 B cond.forever.break.rad 255 B cond.fused.rad 941 B cond.if.case.rad 2.2 KiB cond.if.else.min.rad 158 B cond.if.else.rad 244 B cond.if.elseif.rad 443 B cond.if.noelse.rad 139 B cond.if.rad 880 B cond.ifelse.rad 104 B cond.ifelse.ril 117 B cond.iflet.case.rad 170 B cond.iflet.case.ril 114 B cond.iflet.guard.rad 182 B cond.iflet.guard.ril 165 B cond.iflet.mut.rad 195 B cond.iflet.mut.ril 219 B cond.iflet.noelse.rad 156 B cond.iflet.noelse.ril 227 B cond.iflet.optional.rad 184 B cond.iflet.optional.ril 118 B cond.iflet.optional.value.rad 194 B cond.iflet.optional.value.ril 208 B cond.letelse.case.rad 146 B cond.letelse.case.ril 149 B cond.letelse.guard.rad 160 B cond.letelse.guard.ril 200 B cond.letelse.mut.rad 185 B cond.letelse.mut.ril 254 B cond.letelse.optional.rad 160 B cond.letelse.optional.ril 153 B cond.match.fallthrough.rad 388 B cond.match.guard.rad 1.4 KiB cond.match.guard.regalloc.rad 1.4 KiB cond.nested.rad 138 B cond.nested.ril 185 B cond.simple.rad 86 B cond.simple.ril 118 B cond.while.else.break.rad 305 B cond.while.rad 138 B const-cast-wrap.rad 450 B const-expr-array-size.rad 365 B const-expr-cast.rad 1.1 KiB const-expr-literal.rad 652 B const-expr-refs.rad 752 B const.array.copy.mutate.rad 397 B const.array.ident.rad 247 B const.array.ident.ril 146 B const.array.rad 217 B const.array.record.ident.rad 396 B const.array.record.ident.ril 353 B const.array.repeat.record.rad 225 B const.array.repeat.record.ril 399 B const.array.repeat.string.slice.rad 303 B const.array.repeat.string.slice.ril 1.1 KiB const.array.ril 392 B const.array.strings.slice.rad 274 B const.array.strings.slice.ril 579 B const.basic.rad 349 B const.char.rad 180 B const.fn.array.rad 670 B const.i32.shift.right.rad 244 B const.local.duplicate.rad 474 B const.local.duplicate.ril 787 B const.negative.rad 331 B const.negative.ril 338 B const.record.array.rad 1.2 KiB const.record.array.simple.rad 559 B const.record.ctor.rad 194 B const.record.ctor.ril 415 B const.record.fn.rad 362 B const.record.mutcopy.rad 466 B const.record.mutcopy.ril 388 B const.record.nested.rad 408 B const.record.nested.ril 474 B const.record.packed.rad 275 B const.record.packed.ril 284 B const.record.padded.rad 275 B const.record.padded.ril 318 B const.record.rad 206 B const.record.ril 221 B const.record.union.rad 608 B const.record.union.ril 673 B const.scalar.rad 105 B const.scalar.ril 82 B const.shift.negative.count.rad 305 B const.slice.of.slices.rad 238 B const.slice.of.slices.ril 956 B const.slice.param.rad 336 B const.string.rad 114 B const.string.ril 309 B const.string.scoped.names.rad 263 B const.string.scoped.names.ril 904 B const.u32.shift.mask.rad 249 B const.u64.compare.rad 188 B const.u64.divide.rad 174 B const.union.payload.ctor.rad 373 B const.union.payload.ctor.ril 509 B const.union.payload.fn.array.rad 1.1 KiB const.union.payload.record.array.rad 1.5 KiB const.union.record.literal.rad 383 B const.union.record.literal.ril 508 B data.array.rad 803 B data.bool.rad 237 B data.i16.rad 288 B data.i32.rad 308 B data.i8.rad 275 B data.record.rad 597 B data.simple.rad 454 B data.u16.rad 244 B data.u32.rad 264 B data.u8.rad 232 B data.union.rad 931 B debug.tag.rad 563 B div.u8.immediate.wrap.rad 213 B ecall.i64.rad 490 B edge.cases.2.rad 361 B edge.cases.3.rad 606 B edge.cases.4.rad 1.3 KiB edge.cases.5.rad 1.1 KiB edge.cases.6.rad 2.6 KiB edge.cases.7.addr.bug.rad 238 B edge.cases.8.bug.rad 539 B edge.cases.rad 247 B error.basic.rad 180 B error.catch.rad 1.6 KiB error.catch.return.rad 409 B error.catch.return.ril 638 B error.division.zero.rad 164 B error.modulo.zero.rad 162 B error.multi.basic.rad 711 B error.multi.catch.rad 819 B error.multi.catch.typed.binding.rad 830 B error.multi.catch.typed.catchall.rad 1.0 KiB error.multi.catch.typed.rad 1.1 KiB error.multi.propagate.multi.rad 1000 B error.multi.propagate.rad 864 B error.multi.try.optional.rad 534 B error.slice.bounds.rad 219 B error.throw.coercion.rad 318 B error.try.bang.success.rad 376 B error.try.catch.binding.rad 2.1 KiB error.try.optional.rad 1.9 KiB error.try.rad 4.1 KiB extern.inferred.rad 70 B externfn.rad 32 B externfn.ril 37 B fibonacci.rad 122 B fibonacci.ril 247 B field.aggregate.rad 823 B field.aggregate.ril 855 B fn.block.scope.rad 508 B fn.callback.nested.rad 1.2 KiB fn.default.rad 146 B fn.local.rad 155 B fn.ptr.assign.rad 277 B fn.ptr.assign.ril 143 B fn.ptr.call.rad 258 B fn.ptr.call.ril 183 B fn.ptr.param.rad 356 B fn.ptr.param.ril 282 B fn.recursion.2.rad 239 B fn.void.rad 165 B for.else.continue.rad 1.1 KiB frame.large.rad 586 B if-let-mut.rad 1.2 KiB iflet.shadow.else.rad 408 B iflet.shadow.leak.rad 317 B import.nominal.order.rad 322 B index.eval.order.rad 368 B index.u8.rad 594 B int.default.i64.rad 1.1 KiB integer.bitwise.basic.rad 708 B integer.overflow.rad 1.8 KiB intrinsic.ebreak.rad 90 B intrinsic.ebreak.ril 76 B intrinsic.ecall.rad 168 B intrinsic.ecall.ril 131 B large.blit.store.rad 2.1 KiB let.copy.semantics.rad 883 B let.copy.semantics.ril 954 B let.guard.rad 1.9 KiB let.placeholder.rad 291 B let.placeholder.ril 220 B linear.let-else.rad 402 B linear.ownership.rad 395 B linear.ownership.ril 357 B linear.reference.rad 663 B linear.reference.ril 627 B linear.unsafe.rad 531 B linear.unsafe.ril 286 B literal.char.rad 209 B literal.char.ril 127 B literal.slice.bytes.rad 124 B literal.slice.bytes.ril 263 B literal.slice.dedup.rad 199 B literal.slice.dedup.ril 434 B literal.slice.empty.rad 100 B literal.slice.empty.ril 157 B literal.slice.multi.rad 170 B literal.slice.multi.ril 496 B literal.slice.rad 123 B literal.slice.record.rad 217 B literal.slice.record.ril 694 B literal.slice.ril 272 B literal.string.dedup.rad 179 B literal.string.dedup.ril 422 B literal.string.empty.rad 93 B literal.string.empty.ril 248 B literal.string.fns.rad 180 B literal.string.fns.ril 470 B literal.string.multi.rad 153 B literal.string.multi.ril 480 B literal.string.rad 108 B literal.string.ril 247 B literal.w64.rad 1.7 KiB load.u32.high.rad 1.8 KiB loc.addr.offset.bug.rad 441 B loc.addr.opt.to.opt.rad 458 B loc.addr.optional.assign.rad 433 B loc.addr.record.assign.rad 478 B local.multi.rad 85 B local.multi.ril 67 B local.mut.rad 79 B local.mut.ril 45 B local.simple.rad 60 B local.simple.ril 45 B loop.break.rad 156 B loop.break.ril 228 B loop.complex.flow.rad 1.0 KiB loop.continue.rad 219 B loop.continue.ril 327 B loop.for.array.rad 223 B loop.for.array.ril 315 B loop.for.break.bound.rad 161 B loop.for.break.bound.ril 264 B loop.for.continue.rad 403 B loop.for.continue.ril 741 B loop.for.indexed.rad 149 B loop.for.indexed.ril 285 B loop.for.placeholder.rad 321 B loop.for.placeholder.ril 457 B loop.for.rad 120 B loop.for.ril 220 B loop.for.slice.rad 216 B loop.for.slice.ril 362 B loop.for.unsigned.range.rad 317 B loop.for.unsigned.range.ril 481 B loop.infinite.rad 41 B loop.infinite.ril 78 B loop.mutable.rad 375 B loop.mutable.ril 617 B loop.nested.break.rad 392 B loop.nested.break.ril 461 B loop.nested.continue.rad 418 B loop.nested.continue.ril 581 B loop.return.rad 141 B loop.return.ril 179 B loop.sealblock.rad 942 B loop.while.false.noparams.rad 175 B loop.while.false.noparams.ril 171 B loop.while.nested.shortcircuit.rad 872 B loop.while.nested.shortcircuit.ril 589 B loop.while.rad 164 B loop.while.ril 241 B loop.whilelet.case.rad 259 B loop.whilelet.case.ril 204 B loop.whilelet.guard.rad 265 B loop.whilelet.guard.ril 256 B loop.whilelet.optional.rad 212 B loop.whilelet.optional.ril 217 B loop.whilelet.union.rad 382 B loop.whilelet.union.ril 388 B lower.const.record.ident.rad 291 B lower.const.record.ident.ril 387 B lower.private.union.const.rad 259 B lower.private.union.const.ril 317 B lower.record.scalar.record.const.rad 244 B lower.record.scalar.record.const.ril 321 B match.array.rad 3.5 KiB match.char.rad 1.6 KiB match.more.rad 647 B match.more.ril 683 B match.multi.seal.rad 1008 B match.multi.seal.ril 924 B match.multi.survive.rad 1.7 KiB match.mutref.push.rad 1.1 KiB match.mutref.union.rad 693 B match.nested.call.rad 1.7 KiB match.nested.deep.rad 2.2 KiB match.nested.deref.rad 3.7 KiB match.nested.guard.rad 1.6 KiB match.nested.iflet.guard.rad 1.6 KiB match.nested.iflet.rad 1.4 KiB match.nested.iflet.ril 2.3 KiB match.nested.letelse.rad 840 B match.nested.letelse.union.rad 1.4 KiB match.nested.literal.rad 3.1 KiB match.nested.multi.rad 2.4 KiB match.nested.pattern.rad 5.3 KiB match.nested.pattern.ril 8.3 KiB match.nested.record.rad 2.1 KiB match.nested.record.ril 3.5 KiB match.nested.union.rad 2.3 KiB match.nested.union.ril 4.5 KiB match.nested.whilelet.rad 2.4 KiB match.optional.aggregate.rad 222 B match.optional.aggregate.ril 580 B match.optional.rad 183 B match.optional.ref.rad 212 B match.optional.ref.ril 232 B match.optional.ril 164 B match.optional.wildcard.rad 282 B match.record.pattern.rad 331 B match.record.pattern.ril 289 B match.simple.rad 367 B match.simple.ril 347 B match.string.rad 1.8 KiB match.switch.rad 217 B match.switch.ril 187 B match.value.copy.rad 2.1 KiB match.void.then.or.rad 1.6 KiB memzero.result.bug.rad 835 B memzero.union.bug.rad 611 B method.basic.rad 568 B method.chain.rad 574 B method.multiple.rad 910 B method.ptr.rad 672 B method.pub.rad 247 B method.return.rad 605 B method.throws.rad 849 B method.union.rad 430 B method.with.trait.rad 650 B mixedtypes.rad 79 B mixedtypes.ril 82 B multi.throw.basic.rad 284 B multi.throw.basic.ril 532 B multi.throw.catch.typed.rad 456 B multi.throw.catch.typed.ril 1021 B multi.throw.propagate.rad 347 B multi.throw.propagate.ril 883 B multiplefns.rad 110 B multiplefns.ril 146 B mutref.call.result.rad 322 B mutref.loop.bug.rad 1.8 KiB mutref.loop.rad 289 B mutref.loop.ril 368 B mutref.scalar.rad 232 B mutref.scalar.ril 324 B nil.cmp.rad 622 B nil.cmp.ril 423 B noparams.rad 38 B noparams.ril 43 B opt.array.hint.rad 951 B opt.assignment.bug.rad 1.3 KiB opt.bug.test.rad 1.4 KiB opt.if.let.complex.rad 6.2 KiB opt.if.let.guard.rad 809 B opt.if.let.rad 956 B opt.nil.check.rad 1.5 KiB opt.ptr.return.nil.rad 85 B opt.ptr.return.nil.ril 51 B opt.record.eq.rad 866 B opt.record.eq.rev.rad 313 B opt.record.eq.rev.ril 641 B opt.record.eq.ril 3.4 KiB opt.record.rad 679 B opt.return.array.rad 289 B opt.return.nested.rad 803 B opt.return.nil.rad 82 B opt.return.nil.ril 116 B opt.return.record.rad 350 B opt.return.value.rad 91 B opt.return.value.ril 140 B opt.slice.npo.rad 2.8 KiB opt.slice.npo.ril 6.9 KiB opt.type.rad 227 B opt.while.let.complex.rad 412 B optional.aggregate.eq.rad 292 B optional.aggregate.eq.ril 695 B optional.eq.rad 131 B optional.eq.ril 253 B optional.ptr.eq.rad 313 B optional.ptr.eq.ril 309 B optional.record.value.match.rad 606 B panic.basic.rad 70 B panic.basic.ril 46 B panic.rad 111 B parser.call.record.argument.rad 209 B parser.condition.array.record.rad 232 B parser.condition.subscript.record.rad 278 B placeholder.basic.rad 148 B placeholder.comprehensive.rad 581 B pointer.copy.edge.case.rad 1.4 KiB pointer.slice.index.rad 290 B pointer.slice.store.rad 934 B pointerfn.rad 50 B pointerfn.ril 54 B prog.ackermann.rad 5.0 KiB prog.bignum.rad 9.7 KiB prog.binsearch.rad 2.5 KiB prog.bubblesort.rad 2.0 KiB prog.cordic.rad 7.0 KiB prog.crc32.rad 2.8 KiB prog.dijkstra.rad 7.9 KiB prog.eval.rad 6.3 KiB prog.hanoi.rad 3.8 KiB prog.huffman.rad 9.5 KiB prog.hybridsort.rad 3.1 KiB prog.linkedlist.rad 6.0 KiB prog.lzw.rad 6.9 KiB prog.matmul.rad 3.0 KiB prog.mersenne.rad 5.4 KiB prog.nqueens.rad 3.5 KiB prog.rbtree.rad 8.5 KiB prog.regex.rad 10.4 KiB prog.sha256.rad 7.2 KiB prog.sieve.rad 2.8 KiB prog.symtab.rad 10.2 KiB prog.tokenizer.rad 14.0 KiB prog.vm.rad 17.9 KiB ptr.addressof.field.rad 138 B ptr.addressof.field.ril 78 B ptr.addressof.local.rad 461 B ptr.addressof.local.ril 280 B ptr.addressof.rad 119 B ptr.addressof.ril 213 B ptr.assign.rad 141 B ptr.assign.ril 130 B ptr.deref.rad 622 B ptr.deref.record.rad 288 B ptr.deref.record.ril 192 B ptr.deref.ril 1.1 KiB ptr.eq.rad 987 B ptr.mutate.rad 256 B ptr.opaque.rad 1.4 KiB ptr.subscript.assign.rad 133 B ptr.subscript.assign.ril 288 B range.arithmetic.rad 723 B record.access.rad 306 B record.alignment.rad 200 B record.array.elements.rad 1.7 KiB record.assign.blit.rad 121 B record.assign.blit.ril 162 B record.copy.rad 2.1 KiB record.ctor.tuple.rad 75 B record.ctor.tuple.ril 192 B record.empty.eq.rad 278 B record.empty.eq.ril 226 B record.eq.rad 229 B record.eq.ril 214 B record.field.assign.rad 217 B record.field.assign.ril 308 B record.literal.labeled.rad 109 B record.literal.labeled.ril 127 B record.mixed.layout.rad 122 B record.mixed.layout.ril 149 B record.nested.calls.2.rad 622 B record.nested.calls.3.rad 755 B record.nested.eq.rad 258 B record.nested.eq.ril 522 B record.nested.lit.rad 182 B record.nested.lit.ril 190 B record.param.lit.rad 380 B record.ptr.access.rad 248 B record.ptr.access.ril 198 B record.ptr.mutate.rad 249 B record.shorthand.rad 1.5 KiB record.unlabeled.deref.rad 1.4 KiB record.unlabeled.rad 419 B ref.if.bug.rad 527 B ref.immut.loop.bug.rad 674 B ref.mut.ptr.rad 263 B reference.array.repeat.rad 135 B reference.array.repeat.ril 262 B regalloc.callee.save.rad 1.5 KiB regalloc.spill.reuse.rad 488 B reserve.loop.rad 421 B reserve.loop.ril 473 B result.void.success.rad 711 B return.lit.rad 45 B return.lit.ril 50 B return.param.rad 48 B return.param.ril 54 B rv64.u32.compare.rad 2.1 KiB set.keyword.rad 448 B simplefn.rad 45 B simplefn.ril 51 B slice.alloc.loop.rad 807 B slice.append.rad 4.1 KiB slice.append.ril 18.4 KiB slice.assign.mismatch.rad 220 B slice.assign.rad 1.4 KiB slice.basic.rad 742 B slice.basic.ril 826 B slice.cap.rad 956 B slice.delete.rad 986 B slice.delete.ril 4.8 KiB slice.empty.suffix.rad 551 B slice.eq.rad 126 B slice.eq.ril 209 B slice.index.rad 104 B slice.index.ril 278 B slice.mutable.rad 297 B slice.mutable.ril 1.5 KiB slice.of.rad 475 B slice.range.bounds.check.rad 285 B slice.range.dynamic.rad 863 B slice.range.order.check.rad 284 B slice.range.rad 606 B slice.range.ril 1.8 KiB slice.runtime.i32.rad 237 B slice.runtime.i32.ril 731 B slice.runtime.literal.rad 243 B slice.runtime.literal.ril 459 B slice.subslice.rad 1.4 KiB spill.blockarg.clobber.rad 3.6 KiB spill.loop.rad 1.6 KiB stack.local.corrupt.rad 335 B start.default.rad 62 B start.default.start.ras 29 B start.exit.rad 54 B start.exit.start.ras 53 B static.array.mutate.rad 427 B static.assign.rad 131 B static.assign.ril 244 B static.basic.rad 347 B static.fn.array.rad 628 B static.local.decl.rad 201 B static.local.decl.ril 420 B static.record.array.rad 532 B static.scalar.rad 109 B static.scalar.ril 135 B static.slice.index.assign.rad 436 B static.slice.offset.rad 715 B static.zero.bss.rad 1.1 KiB string.basic.rad 164 B string.escape.rad 364 B string.index.rad 131 B switch.blockargs.clobber.rad 1.4 KiB trait.aggregate.ret.rad 1.6 KiB trait.array.optional.rad 1.7 KiB trait.basic.rad 590 B trait.control.flow.rad 1.2 KiB trait.dispatch.rad 333 B trait.dispatch.ril 469 B trait.fn.param.rad 1.7 KiB trait.multiple.methods.rad 1.2 KiB trait.multiple.traits.rad 1.2 KiB trait.multiple.types.rad 1.3 KiB trait.object.rad 366 B trait.object.ril 496 B trait.supertrait.forward.rad 623 B trait.supertrait.rad 2.6 KiB trait.supertrait.ril 3.9 KiB trait.throws.rad 1.0 KiB trait.writer.rad 2.6 KiB trivial.phi.rad 1.1 KiB trivial.phi.ril 512 B try.basic.rad 397 B try.basic.ril 889 B try.catch.rad 345 B try.catch.ril 845 B try.optional.rad 369 B try.optional.ril 770 B try.panic.rad 357 B try.panic.ril 643 B type.unify.rad 4.5 KiB undefined.aggregate.rad 158 B undefined.aggregate.ril 84 B undefined.primitive.rad 115 B undefined.primitive.ril 48 B undefined.rad 452 B undefined.record.field.rad 1.6 KiB undefined.record.field.ril 753 B union-tag.rad 932 B union.bitfield.rad 1.2 KiB union.ctor.rad 564 B union.ctor.ril 517 B union.discriminant.cast.rad 395 B union.edge.case.2.rad 700 B union.edge.case.3.rad 639 B union.eq.rad 807 B union.eq.ril 1.4 KiB union.eq.void.ctor.rad 384 B union.eq.void.ctor.ril 131 B union.eq.void.rad 184 B union.eq.void.ril 75 B union.match.bind.rad 265 B union.match.bind.ril 240 B union.match.ref.rad 1.1 KiB union.match.ref.ril 1.2 KiB union.match.tag.rad 870 B union.match.tag.ril 824 B union.mixed.assign.rad 1012 B union.payload.mutref.rad 1.4 KiB union.payload.rad 601 B union.payload.record.eq.rad 304 B union.payload.record.eq.ril 984 B union.record.forward.rad 1.3 KiB union.record.literal.rad 450 B union.record.literal.ril 395 B union.variant.access.rad 743 B union.variant.access.ril 703 B union.void.match.rad 424 B union.void.rad 845 B unop.rad 699 B unop.ril 506 B unsigned.compare.rad 1.9 KiB var.align.rad 1.0 KiB var.infer.rad 574 B var.shadow.rad 244 B var.shadow.ril 145 B void.throw.rad 276 B void.throw.ril 717 B voidfn.rad 18 B voidfn.ril 43 B wildcard.import.owner.rad 198 B run 2.7 KiB runner.rad 9.7 KiB vim/ .gitignore 351 B .gitsigners 112 B CONTRIBUTING 2.1 KiB LICENSE 1.1 KiB Makefile 3.8 KiB README 2.5 KiB STYLE 2.5 KiB std.lib 1.4 KiB std.lib.test 380 B
test/tests/bool.comparison.slice.rad 4.1 KiB raw
1
//! returns: 0
2
fn memEq(a: *[u8], b: *[u8]) -> bool {
3
    if a.len <> b.len {
4
        return false;
5
    }
6
    for i in 0..a.len {
7
        if a[i] <> b[i] {
8
            return false;
9
        }
10
    }
11
    return true;
12
}
13
14
fn sliceU8(input: *[u8]) -> *[u8] {
15
    return input;
16
}
17
18
fn sliceI32(input: *[i32]) -> *[i32] {
19
    return input;
20
}
21
22
fn sliceEqualU32(a: *[u32], b: *[u32]) -> bool {
23
    if a.len <> b.len {
24
        return false;
25
    }
26
    for i in 0..a.len {
27
        if a[i] <> b[i] {
28
            return false;
29
        }
30
    }
31
    return true;
32
}
33
34
fn sliceEqualI32(a: *[i32], b: *[i32]) -> bool {
35
    if a.len <> b.len {
36
        return false;
37
    }
38
    for i in 0..a.len {
39
        if a[i] <> b[i] {
40
            return false;
41
        }
42
    }
43
    return true;
44
}
45
46
fn sliceEqual1() -> bool {
47
    let a1: [u32; 3] = [9, 42, 3];
48
49
    let s1: *[u32] = &a1[..];
50
    let s2: *[u32] = &a1[..];
51
52
    return s1 == s2 and sliceEqualU32(s1, s2);
53
}
54
55
fn sliceEqual2() -> bool {
56
    let a1: [u32; 3] = [9, 42, 3];
57
58
    let s1: *[u32] = &a1[1..];
59
    let s2: *[u32] = &a1[1..];
60
61
    return s1 == s2 and sliceEqualU32(s1, s2);
62
}
63
64
fn sliceEqual3() -> bool {
65
    let a1: [u32; 3] = [9, 42, 3];
66
67
    let s1: *[u32] = &a1[..1];
68
    let s2: *[u32] = &a1[..1];
69
70
    return s1 == s2 and sliceEqualU32(s1, s2);
71
}
72
73
fn sliceEqual4() -> bool {
74
    let a1: [u32; 3] = [9, 42, 3];
75
76
    let s1: *[u32] = &a1[2..];
77
    let s2: *[u32] = &a1[2..];
78
79
    return s1 == s2 and sliceEqualU32(s1, s2);
80
}
81
82
fn sliceNotEqualSameArray1() -> bool {
83
    let a1: [u32; 3] = [42, 8, 3];
84
85
    let s1: *[u32] = &a1[..2];
86
    let s2: *[u32] = &a1[1..3];
87
88
    return s1 <> s2 and not sliceEqualU32(s1, s2);
89
}
90
91
fn sliceNotEqualSameArray2() -> bool {
92
    let a1: [u32; 3] = [42, 8, 3];
93
94
    let s1: *[u32] = &a1[..2];
95
    let s2: *[u32] = &a1[..3];
96
97
    return s1 <> s2 and not sliceEqualU32(s1, s2);
98
}
99
100
fn sliceEqualDifferentArray() -> bool {
101
    let a1: [u32; 3] = [42, 8, 3];
102
    let a2: [u32; 3] = [42, 8, 3];
103
104
    let s1: *[u32] = &a1[..];
105
    let s2: *[u32] = &a2[..];
106
107
    return sliceEqualU32(s1, s2) and s1 <> s2;
108
}
109
110
fn sliceEqualString1() -> bool {
111
    let s1: *[u8] = "ABC";
112
    let s2: *[u8] = "ABC";
113
114
    return memEq(s1, s2);
115
}
116
117
fn sliceEqualString2() -> bool {
118
    let s1: *[u8] = "ABC";
119
    let s2: *[u8] = "DEF";
120
121
    return not memEq(s1, s2);
122
}
123
124
fn sliceEqualString3() -> bool {
125
    let a1: [u8; 3] = ['A', 'B', 'C'];
126
    let s1: *[u8] = &a1[..];
127
    let s2: *[u8] = "ABC";
128
129
    return memEq(s1, s2)
130
       and memEq(s1, "ABC")
131
       and memEq(&a1[..], "ABC");
132
}
133
134
fn sliceEqualString4() -> bool {
135
    let s1: *[u8] = "ABC";
136
    let s2: *[u8] = &['A', 'B', 'C'];
137
138
    return memEq(s1, s2);
139
}
140
141
fn sliceEqualString5() -> bool {
142
    let s1: *[u8] = "ABC";
143
144
    // Sub-slicing a slice currently trips a separate compiler bug.
145
    // Keep this check focused on slice equality behavior itself.
146
    return memEq(s1, "ABC");
147
}
148
149
fn sliceNotEqualU8() -> bool {
150
    let a: [u8; 3] = [1, 2, 3];
151
    let b: [u8; 3] = [1, 2, 4];
152
    let s: *[u8] = &[1, 2, 3];
153
154
    return not memEq(s, &[1, 2, 4])
155
       and not memEq(s, &[1, 0, 3])
156
       and not memEq("ABC", "ABCD")
157
       and not memEq("ABC", "ABD")
158
       and not memEq(&a[..], &a[1..])
159
       and not memEq(&a[..], &b[..])
160
       and not memEq(&a[..], &[1, 3, 3]);
161
}
162
163
fn sliceNotEqualU16() -> bool {
164
    let a: [u16; 3] = [1, 2, 3];
165
    let b: [u16; 3] = [1, 2, 4];
166
    let s: *[u16] = &[1, 2, 3];
167
168
    return s <> &[1, 2, 4]
169
       and s <> &[1, 0, 3]
170
       and &a[..] <> &a[1..]
171
       and &a[..] <> &b[..]
172
       and &a[..] <> &[1, 3, 3];
173
}
174
175
fn sliceReturnEqual() -> bool {
176
    return memEq(sliceU8("ABC"), "ABC")
177
       and sliceEqualI32(sliceI32(&[1, 2, 3]), &[1, 2, 3]);
178
}
179
180
@default fn main() -> i32 {
181
    assert sliceEqual1();
182
    assert sliceEqual2();
183
    assert sliceEqual3();
184
    assert sliceEqual4();
185
    assert sliceEqualString1();
186
    assert sliceEqualString2();
187
    assert sliceEqualString3();
188
    assert sliceEqualString4();
189
    assert sliceEqualString5();
190
    assert sliceNotEqualSameArray1();
191
    assert sliceNotEqualSameArray2();
192
    assert sliceEqualDifferentArray();
193
    assert sliceNotEqualU8();
194
    assert sliceNotEqualU16();
195
    assert sliceReturnEqual();
196
197
    return 0;
198
}