I: pbuilder: network access will be disabled during build I: Current time: Sun Feb 16 21:28:24 +14 2025 I: pbuilder-time-stamp: 1739690904 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [crystal_1.14.0+dfsg-1.dsc] I: copying [./crystal_1.14.0+dfsg.orig.tar.xz] I: copying [./crystal_1.14.0+dfsg-1.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./crystal_1.14.0+dfsg-1.dsc: unsupported subcommand dpkg-source: info: extracting crystal in crystal-1.14.0+dfsg dpkg-source: info: unpacking crystal_1.14.0+dfsg.orig.tar.xz dpkg-source: info: unpacking crystal_1.14.0+dfsg-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying disable-udp-multicast-specs.diff dpkg-source: info: applying remove-check-in-random-failing-test.diff dpkg-source: info: applying update-packaged-javascript-links.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/D01_modify_environment starting debug: Running on ionos11-amd64. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Feb 16 07:28 /bin/sh -> /bin/bash I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='5.2.37(1)-release' BUILDDIR=/build/reproducible-path BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=amd64 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DIRSTACK=() DISTRIBUTION=unstable EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=x86_64 HOST_ARCH=amd64 IFS=' ' INVOCATION_ID=8630b33601374133a70c174dfd4e27fa LANG=C LANGUAGE=et_EE:et LC_ALL=C MACHTYPE=x86_64-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=2461830 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Z15QMKHg/pbuilderrc_O8EH --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Z15QMKHg/b2 --logfile b2/build.log crystal_1.14.0+dfsg-1.dsc' SUDO_GID=111 SUDO_UID=106 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://46.16.76.132:3128 I: uname -a Linux i-capture-the-hostname 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Nov 22 14:40 /bin -> usr/bin I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/D02_print_environment finished -> Attempting to satisfy build-dependencies -> Creating pbuilder-satisfydepends-dummy package Package: pbuilder-satisfydepends-dummy Version: 0.invalid.0 Architecture: amd64 Maintainer: Debian Pbuilder Team <pbuilder-maint@lists.alioth.debian.org> Description: Dummy package to satisfy dependencies with aptitude - created by pbuilder This package was created automatically by pbuilder to satisfy the build-dependencies of the package being currently built. Depends: debhelper-compat (= 13), git, libbsd-dev, libedit-dev, libevent-dev, libgc-dev (>= 1:7.6.0), libgmp-dev, libpcre2-dev, libssl-dev, libtool, libxml2-dev, libyaml-dev, libz-dev, lld-19, llvm-19-dev, pkgconf, crystal (>= 1.6.0) dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19808 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on git; however: Package git is not installed. pbuilder-satisfydepends-dummy depends on libbsd-dev; however: Package libbsd-dev is not installed. pbuilder-satisfydepends-dummy depends on libedit-dev; however: Package libedit-dev is not installed. pbuilder-satisfydepends-dummy depends on libevent-dev; however: Package libevent-dev is not installed. pbuilder-satisfydepends-dummy depends on libgc-dev (>= 1:7.6.0); however: Package libgc-dev is not installed. pbuilder-satisfydepends-dummy depends on libgmp-dev; however: Package libgmp-dev is not installed. pbuilder-satisfydepends-dummy depends on libpcre2-dev; however: Package libpcre2-dev is not installed. pbuilder-satisfydepends-dummy depends on libssl-dev; however: Package libssl-dev is not installed. pbuilder-satisfydepends-dummy depends on libtool; however: Package libtool is not installed. pbuilder-satisfydepends-dummy depends on libxml2-dev; however: Package libxml2-dev is not installed. pbuilder-satisfydepends-dummy depends on libyaml-dev; however: Package libyaml-dev is not installed. pbuilder-satisfydepends-dummy depends on libz-dev; however: Package libz-dev is not installed. pbuilder-satisfydepends-dummy depends on lld-19; however: Package lld-19 is not installed. pbuilder-satisfydepends-dummy depends on llvm-19-dev; however: Package llvm-19-dev is not installed. pbuilder-satisfydepends-dummy depends on pkgconf; however: Package pkgconf is not installed. pbuilder-satisfydepends-dummy depends on crystal (>= 1.6.0); however: Package crystal is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} crystal{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} git{a} git-man{a} groff-base{a} icu-devtools{a} intltool-debian{a} libarchive-zip-perl{a} libbrotli1{a} libbsd-dev{a} libclang-cpp19{a} libcom-err2{a} libcurl3t64-gnutls{a} libcurl4t64{a} libdebhelper-perl{a} libedit-dev{a} libedit2{a} libelf1t64{a} liberror-perl{a} libevent-2.1-7t64{a} libevent-core-2.1-7t64{a} libevent-dev{a} libevent-extra-2.1-7t64{a} libevent-openssl-2.1-7t64{a} libevent-pthreads-2.1-7t64{a} libexpat1{a} libffi-dev{a} libffi8{a} libfile-stripnondeterminism-perl{a} libgc-dev{a} libgc1{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls30t64{a} libgssapi-krb5-2{a} libicu-dev{a} libicu72{a} libidn2-0{a} libjs-codemirror{a} libjs-jquery{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libldap2{a} libllvm19{a} libmagic-mgc{a} libmagic1t64{a} libmd-dev{a} libncurses-dev{a} libncurses6{a} libnghttp2-14{a} libnghttp3-9{a} libngtcp2-16{a} libngtcp2-crypto-gnutls8{a} libp11-kit0{a} libpcre2-16-0{a} libpcre2-32-0{a} libpcre2-dev{a} libpcre2-posix3{a} libpfm4{a} libpipeline1{a} libpkgconf3{a} libpsl5t64{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libreadline8t64{a} librtmp1{a} libsasl2-2{a} libsasl2-modules-db{a} libssh2-1t64{a} libssl-dev{a} libtasn1-6{a} libtool{a} libuchardet0{a} libunistring5{a} libxml2{a} libxml2-dev{a} libyaml-0-2{a} libyaml-dev{a} libz3-4{a} libz3-dev{a} lld-19{a} llvm-19{a} llvm-19-dev{a} llvm-19-linker-tools{a} llvm-19-runtime{a} llvm-19-tools{a} m4{a} man-db{a} media-types{a} netbase{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} python3{a} python3-minimal{a} python3-pygments{a} python3-yaml{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} tzdata{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: binfmt-support ca-certificates curl javascript-common krb5-locales less libarchive-cpio-perl libgpm2 libldap-common libltdl-dev libmail-sendmail-perl libsasl2-modules lynx openssh-client publicsuffix systemd wget 0 packages upgraded, 117 newly installed, 0 to remove and 0 not upgraded. Need to get 181 MB of archives. After unpacking 968 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.2-1 [859 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.2-1 [2205 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.1-2 [27.0 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 11.0.0 [27.6 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2025a-2 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.7-1 [23.9 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.2-1 [1979 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.2-1 [745 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.1-2 [9952 B] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.1-2 [28.0 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-1 [243 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-7 [1185 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.4-3 [92.1 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-5 [294 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-3 [862 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-1 [770 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 libevent-2.1-7t64 amd64 2.1.12-stable-10+b1 [182 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 libgc1 amd64 1:8.2.8-1 [247 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20250104-1 [93.8 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-6 [9421 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [699 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 libz3-4 amd64 4.13.3-1 [8560 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 libllvm19 amd64 1:19.1.7-1+b1 [26.0 MB] Get: 37 http://deb.debian.org/debian unstable/main amd64 libgc-dev amd64 1:8.2.8-1 [416 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libpcre2-16-0 amd64 10.45-1 [281 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 libpcre2-32-0 amd64 10.45-1 [268 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libpcre2-posix3 amd64 10.45-1 [63.5 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libpcre2-dev amd64 10.45-1 [853 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 libevent-core-2.1-7t64 amd64 2.1.12-stable-10+b1 [132 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 libevent-extra-2.1-7t64 amd64 2.1.12-stable-10+b1 [108 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 libevent-pthreads-2.1-7t64 amd64 2.1.12-stable-10+b1 [54.3 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libevent-openssl-2.1-7t64 amd64 2.1.12-stable-10+b1 [61.1 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libevent-dev amd64 2.1.12-stable-10+b1 [305 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 libjs-codemirror all 5.65.0+~cs5.83.9-3 [774 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 crystal amd64 1.14.0+dfsg-1 [4375 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-3 [539 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.1-2 [19.7 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.1-2 [8620 B] Get: 59 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-1 [476 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-1 [1680 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.24.1 [920 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b6 [302 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 libidn2-0 amd64 2.3.7-2+b1 [129 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libp11-kit0 amd64 0.25.5-3 [425 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 libtasn1-6 amd64 4.20.0-2 [49.9 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libgnutls30t64 amd64 3.8.9-2 [1464 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-4 [32.8 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-1 [24.0 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-4 [80.9 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 75 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-4 [326 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-4 [138 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-8+b1 [19.9 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-8+b1 [57.6 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libldap2 amd64 2.6.9+dfsg-1 [192 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libnghttp2-14 amd64 1.64.0-1 [75.5 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libnghttp3-9 amd64 1.6.0-2 [64.8 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 libngtcp2-16 amd64 1.9.1-1 [119 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libngtcp2-crypto-gnutls8 amd64 1.9.1-1 [18.5 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libpsl5t64 amd64 0.21.2-1.1+b1 [57.2 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2+b5 [58.8 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libssh2-1t64 amd64 1.11.1-1 [245 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libcurl3t64-gnutls amd64 8.12.1-2 [365 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 liberror-perl all 0.17029-2 [29.0 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 git-man all 1:2.47.2-0.1 [2205 kB] Get: 90 http://deb.debian.org/debian unstable/main amd64 git amd64 1:2.47.2-0.1 [8788 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 icu-devtools amd64 72.1-6 [210 kB] Get: 92 http://deb.debian.org/debian unstable/main amd64 libmd-dev amd64 1.1.0-2+b1 [55.3 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libbsd-dev amd64 0.12.2-2 [258 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libclang-cpp19 amd64 1:19.1.7-1+b1 [13.2 MB] Get: 95 http://deb.debian.org/debian unstable/main amd64 libcurl4t64 amd64 8.12.1-2 [369 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5+20250125-2 [105 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libncurses-dev amd64 6.5+20250125-2 [353 kB] Get: 98 http://deb.debian.org/debian unstable/main amd64 libedit-dev amd64 3.1-20250104-1 [115 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 libffi-dev amd64 3.4.7-1 [60.8 kB] Get: 100 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-3 [329 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-3 [642 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 libicu-dev amd64 72.1-6 [10.4 MB] Get: 103 http://deb.debian.org/debian unstable/main amd64 libpfm4 amd64 4.13.0+git83-g91970fe-1 [368 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libssl-dev amd64 3.4.1-1 [2787 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libxml2-dev amd64 2.12.7+dfsg+really2.9.14-0.2+b1 [795 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-2 [52.5 kB] Get: 107 http://deb.debian.org/debian unstable/main amd64 libyaml-dev amd64 0.2.5-2 [63.4 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 libz3-dev amd64 4.13.3-1 [107 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 lld-19 amd64 1:19.1.7-1+b1 [1375 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 llvm-19-runtime amd64 1:19.1.7-1+b1 [551 kB] Get: 111 http://deb.debian.org/debian unstable/main amd64 llvm-19-linker-tools amd64 1:19.1.7-1+b1 [1261 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 llvm-19 amd64 1:19.1.7-1+b1 [16.4 MB] Get: 113 http://deb.debian.org/debian unstable/main amd64 python3-pygments all 2.18.0+dfsg-2 [836 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 python3-yaml amd64 6.0.2-1+b1 [178 kB] Get: 115 http://deb.debian.org/debian unstable/main amd64 llvm-19-tools amd64 1:19.1.7-1+b1 [511 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 llvm-19-dev amd64 1:19.1.7-1+b1 [43.2 MB] Get: 117 http://deb.debian.org/debian unstable/main amd64 zlib1g-dev amd64 1:1.3.dfsg+really1.3.1-1+b1 [920 kB] Fetched 181 MB in 14s (12.5 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19808 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.2-1_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.2-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.2-1_amd64.deb ... Unpacking python3.13-minimal (3.13.2-1) ... Setting up libpython3.13-minimal:amd64 (3.13.2-1) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.13-minimal (3.13.2-1) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20142 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.1-2_amd64.deb ... Unpacking python3-minimal (3.13.1-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_11.0.0_all.deb ... Unpacking media-types (11.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-2_all.deb ... Unpacking tzdata (2025a-2) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.7-1_amd64.deb ... Unpacking libffi8:amd64 (3.4.7-1) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.2-1_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.2-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.2-1_amd64.deb ... Unpacking python3.13 (3.13.2-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.1-2_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.1-2) ... Setting up python3-minimal (3.13.1-2) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21152 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.1-2_amd64.deb ... Unpacking python3 (3.13.1-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../001-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../002-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../003-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../004-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../005-gettext-base_0.23.1-1_amd64.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../006-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../007-groff-base_1.23.0-7_amd64.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../008-bsdextrautils_2.40.4-3_amd64.deb ... Unpacking bsdextrautils (2.40.4-3) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../009-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../010-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../011-m4_1.4.19-5_amd64.deb ... Unpacking m4 (1.4.19-5) ... Selecting previously unselected package autoconf. Preparing to unpack .../012-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../013-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../014-automake_1%3a1.17-3_all.deb ... Unpacking automake (1:1.17-3) ... Selecting previously unselected package autopoint. Preparing to unpack .../015-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libevent-2.1-7t64:amd64. Preparing to unpack .../016-libevent-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libgc1:amd64. Preparing to unpack .../017-libgc1_1%3a8.2.8-1_amd64.deb ... Unpacking libgc1:amd64 (1:8.2.8-1) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../018-libedit2_3.1-20250104-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20250104-1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../019-libicu72_72.1-6_amd64.deb ... Unpacking libicu72:amd64 (72.1-6) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../020-libxml2_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../021-libz3-4_4.13.3-1_amd64.deb ... Unpacking libz3-4:amd64 (4.13.3-1) ... Selecting previously unselected package libllvm19:amd64. Preparing to unpack .../022-libllvm19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libllvm19:amd64 (1:19.1.7-1+b1) ... Selecting previously unselected package libgc-dev:amd64. Preparing to unpack .../023-libgc-dev_1%3a8.2.8-1_amd64.deb ... Unpacking libgc-dev:amd64 (1:8.2.8-1) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../024-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../025-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../026-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Selecting previously unselected package libpcre2-16-0:amd64. Preparing to unpack .../027-libpcre2-16-0_10.45-1_amd64.deb ... Unpacking libpcre2-16-0:amd64 (10.45-1) ... Selecting previously unselected package libpcre2-32-0:amd64. Preparing to unpack .../028-libpcre2-32-0_10.45-1_amd64.deb ... Unpacking libpcre2-32-0:amd64 (10.45-1) ... Selecting previously unselected package libpcre2-posix3:amd64. Preparing to unpack .../029-libpcre2-posix3_10.45-1_amd64.deb ... Unpacking libpcre2-posix3:amd64 (10.45-1) ... Selecting previously unselected package libpcre2-dev:amd64. Preparing to unpack .../030-libpcre2-dev_10.45-1_amd64.deb ... Unpacking libpcre2-dev:amd64 (10.45-1) ... Selecting previously unselected package libevent-core-2.1-7t64:amd64. Preparing to unpack .../031-libevent-core-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-core-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-extra-2.1-7t64:amd64. Preparing to unpack .../032-libevent-extra-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-extra-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-pthreads-2.1-7t64:amd64. Preparing to unpack .../033-libevent-pthreads-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-pthreads-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-openssl-2.1-7t64:amd64. Preparing to unpack .../034-libevent-openssl-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-openssl-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-dev. Preparing to unpack .../035-libevent-dev_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-dev (2.1.12-stable-10+b1) ... Selecting previously unselected package libjs-codemirror. Preparing to unpack .../036-libjs-codemirror_5.65.0+~cs5.83.9-3_all.deb ... Unpacking libjs-codemirror (5.65.0+~cs5.83.9-3) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../037-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package crystal. Preparing to unpack .../038-crystal_1.14.0+dfsg-1_amd64.deb ... Unpacking crystal (1.14.0+dfsg-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../039-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../040-libtool_2.5.4-3_all.deb ... Unpacking libtool (2.5.4-3) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../041-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../042-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../043-libfile-stripnondeterminism-perl_1.14.1-2_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../044-dh-strip-nondeterminism_1.14.1-2_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-2) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../045-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../046-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../047-libunistring5_1.3-1_amd64.deb ... Unpacking libunistring5:amd64 (1.3-1) ... Selecting previously unselected package gettext. Preparing to unpack .../048-gettext_0.23.1-1_amd64.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../049-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../050-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../051-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../052-libbrotli1_1.1.0-2+b6_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b6) ... Selecting previously unselected package libidn2-0:amd64. Preparing to unpack .../053-libidn2-0_2.3.7-2+b1_amd64.deb ... Unpacking libidn2-0:amd64 (2.3.7-2+b1) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../054-libp11-kit0_0.25.5-3_amd64.deb ... Unpacking libp11-kit0:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../055-libtasn1-6_4.20.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:amd64. Preparing to unpack .../056-libgnutls30t64_3.8.9-2_amd64.deb ... Unpacking libgnutls30t64:amd64 (3.8.9-2) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../057-libkrb5support0_1.21.3-4_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-4) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../058-libcom-err2_1.47.2-1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../059-libk5crypto3_1.21.3-4_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-4) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../060-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../061-libkrb5-3_1.21.3-4_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-4) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../062-libgssapi-krb5-2_1.21.3-4_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-4) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../063-libsasl2-modules-db_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../064-libsasl2-2_2.1.28+dfsg1-8+b1_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Selecting previously unselected package libldap2:amd64. Preparing to unpack .../065-libldap2_2.6.9+dfsg-1_amd64.deb ... Unpacking libldap2:amd64 (2.6.9+dfsg-1) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../066-libnghttp2-14_1.64.0-1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-9:amd64. Preparing to unpack .../067-libnghttp3-9_1.6.0-2_amd64.deb ... Unpacking libnghttp3-9:amd64 (1.6.0-2) ... Selecting previously unselected package libngtcp2-16:amd64. Preparing to unpack .../068-libngtcp2-16_1.9.1-1_amd64.deb ... Unpacking libngtcp2-16:amd64 (1.9.1-1) ... Selecting previously unselected package libngtcp2-crypto-gnutls8:amd64. Preparing to unpack .../069-libngtcp2-crypto-gnutls8_1.9.1-1_amd64.deb ... Unpacking libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Selecting previously unselected package libpsl5t64:amd64. Preparing to unpack .../070-libpsl5t64_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl5t64:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../071-librtmp1_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssh2-1t64:amd64. Preparing to unpack .../072-libssh2-1t64_1.11.1-1_amd64.deb ... Unpacking libssh2-1t64:amd64 (1.11.1-1) ... Selecting previously unselected package libcurl3t64-gnutls:amd64. Preparing to unpack .../073-libcurl3t64-gnutls_8.12.1-2_amd64.deb ... Unpacking libcurl3t64-gnutls:amd64 (8.12.1-2) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../074-liberror-perl_0.17029-2_all.deb ... Unpacking liberror-perl (0.17029-2) ... Selecting previously unselected package git-man. Preparing to unpack .../075-git-man_1%3a2.47.2-0.1_all.deb ... Unpacking git-man (1:2.47.2-0.1) ... Selecting previously unselected package git. Preparing to unpack .../076-git_1%3a2.47.2-0.1_amd64.deb ... Unpacking git (1:2.47.2-0.1) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../077-icu-devtools_72.1-6_amd64.deb ... Unpacking icu-devtools (72.1-6) ... Selecting previously unselected package libmd-dev:amd64. Preparing to unpack .../078-libmd-dev_1.1.0-2+b1_amd64.deb ... Unpacking libmd-dev:amd64 (1.1.0-2+b1) ... Selecting previously unselected package libbsd-dev:amd64. Preparing to unpack .../079-libbsd-dev_0.12.2-2_amd64.deb ... Unpacking libbsd-dev:amd64 (0.12.2-2) ... Selecting previously unselected package libclang-cpp19. Preparing to unpack .../080-libclang-cpp19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libclang-cpp19 (1:19.1.7-1+b1) ... Selecting previously unselected package libcurl4t64:amd64. Preparing to unpack .../081-libcurl4t64_8.12.1-2_amd64.deb ... Unpacking libcurl4t64:amd64 (8.12.1-2) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../082-libncurses6_6.5+20250125-2_amd64.deb ... Unpacking libncurses6:amd64 (6.5+20250125-2) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../083-libncurses-dev_6.5+20250125-2_amd64.deb ... Unpacking libncurses-dev:amd64 (6.5+20250125-2) ... Selecting previously unselected package libedit-dev:amd64. Preparing to unpack .../084-libedit-dev_3.1-20250104-1_amd64.deb ... Unpacking libedit-dev:amd64 (3.1-20250104-1) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../085-libffi-dev_3.4.7-1_amd64.deb ... Unpacking libffi-dev:amd64 (3.4.7-1) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../086-libgmpxx4ldbl_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../087-libgmp-dev_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libicu-dev:amd64. Preparing to unpack .../088-libicu-dev_72.1-6_amd64.deb ... Unpacking libicu-dev:amd64 (72.1-6) ... Selecting previously unselected package libpfm4:amd64. Preparing to unpack .../089-libpfm4_4.13.0+git83-g91970fe-1_amd64.deb ... Unpacking libpfm4:amd64 (4.13.0+git83-g91970fe-1) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../090-libssl-dev_3.4.1-1_amd64.deb ... Unpacking libssl-dev:amd64 (3.4.1-1) ... Selecting previously unselected package libxml2-dev:amd64. Preparing to unpack .../091-libxml2-dev_2.12.7+dfsg+really2.9.14-0.2+b1_amd64.deb ... Unpacking libxml2-dev:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../092-libyaml-0-2_0.2.5-2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-2) ... Selecting previously unselected package libyaml-dev:amd64. Preparing to unpack .../093-libyaml-dev_0.2.5-2_amd64.deb ... Unpacking libyaml-dev:amd64 (0.2.5-2) ... Selecting previously unselected package libz3-dev:amd64. Preparing to unpack .../094-libz3-dev_4.13.3-1_amd64.deb ... Unpacking libz3-dev:amd64 (4.13.3-1) ... Selecting previously unselected package lld-19. Preparing to unpack .../095-lld-19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking lld-19 (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19-runtime. Preparing to unpack .../096-llvm-19-runtime_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-runtime (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19-linker-tools. Preparing to unpack .../097-llvm-19-linker-tools_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-linker-tools (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19. Preparing to unpack .../098-llvm-19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19 (1:19.1.7-1+b1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../099-python3-pygments_2.18.0+dfsg-2_all.deb ... Unpacking python3-pygments (2.18.0+dfsg-2) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../100-python3-yaml_6.0.2-1+b1_amd64.deb ... Unpacking python3-yaml (6.0.2-1+b1) ... Selecting previously unselected package llvm-19-tools. Preparing to unpack .../101-llvm-19-tools_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-tools (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19-dev. Preparing to unpack .../102-llvm-19-dev_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-dev (1:19.1.7-1+b1) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../103-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up media-types (11.0.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libicu72:amd64 (72.1-6) ... Setting up bsdextrautils (2.40.4-3) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-2) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libbrotli1:amd64 (1.1.0-2+b6) ... Setting up libedit2:amd64 (3.1-20250104-1) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libnghttp2-14:amd64 (1.64.0-1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-5) ... Setting up libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libcom-err2:amd64 (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up libpcre2-16-0:amd64 (10.45-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libkrb5support0:amd64 (1.21.3-4) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-8+b1) ... Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' Local time is now: Sun Feb 16 07:32:41 UTC 2025. Universal Time is now: Sun Feb 16 07:32:41 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up liberror-perl (0.17029-2) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:amd64 (4.13.3-1) ... Setting up libpcre2-32-0:amd64 (10.45-1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Setting up libpfm4:amd64 (4.13.0+git83-g91970fe-1) ... Setting up libncurses6:amd64 (6.5+20250125-2) ... Setting up libunistring5:amd64 (1.3-1) ... Setting up libjs-codemirror (5.65.0+~cs5.83.9-3) ... Setting up libssl-dev:amd64 (3.4.1-1) ... Setting up autopoint (0.23.1-1) ... Setting up icu-devtools (72.1-6) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libk5crypto3:amd64 (1.21.3-4) ... Setting up libgc1:amd64 (1:8.2.8-1) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-8+b1) ... Setting up autoconf (2.72-3) ... Setting up libnghttp3-9:amd64 (1.6.0-2) ... Setting up zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up libffi8:amd64 (3.4.7-1) ... Setting up libpcre2-posix3:amd64 (10.45-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libmd-dev:amd64 (1.1.0-2+b1) ... Setting up libtasn1-6:amd64 (4.20.0-2) ... Setting up git-man (1:2.47.2-0.1) ... Setting up netbase (6.4) ... Setting up libngtcp2-16:amd64 (1.9.1-1) ... Setting up libkrb5-3:amd64 (1.21.3-4) ... Setting up libevent-core-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libssh2-1t64:amd64 (1.11.1-1) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up libgc-dev:amd64 (1:8.2.8-1) ... Setting up readline-common (8.2-6) ... Setting up libicu-dev:amd64 (72.1-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up libbsd-dev:amd64 (0.12.2-2) ... Setting up libldap2:amd64 (2.6.9+dfsg-1) ... Setting up automake (1:1.17-3) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.1-2) ... Setting up libllvm19:amd64 (1:19.1.7-1+b1) ... Setting up libz3-dev:amd64 (4.13.3-1) ... Setting up libncurses-dev:amd64 (6.5+20250125-2) ... Setting up gettext (0.23.1-1) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Setting up libpcre2-dev:amd64 (10.45-1) ... Setting up libyaml-dev:amd64 (0.2.5-2) ... Setting up libtool (2.5.4-3) ... Setting up libevent-pthreads-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libevent-openssl-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libidn2-0:amd64 (2.3.7-2+b1) ... Setting up libffi-dev:amd64 (3.4.7-1) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libxml2-dev:amd64 (2.12.7+dfsg+really2.9.14-0.2+b1) ... Setting up libp11-kit0:amd64 (0.25.5-3) ... Setting up libedit-dev:amd64 (3.1-20250104-1) ... Setting up libgssapi-krb5-2:amd64 (1.21.3-4) ... Setting up libevent-extra-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-2) ... Setting up groff-base (1.23.0-7) ... Setting up llvm-19-linker-tools (1:19.1.7-1+b1) ... Setting up llvm-19-runtime (1:19.1.7-1+b1) ... Setting up lld-19 (1:19.1.7-1+b1) ... Setting up libpython3.13-stdlib:amd64 (3.13.2-1) ... Setting up libpython3-stdlib:amd64 (3.13.1-2) ... Setting up libclang-cpp19 (1:19.1.7-1+b1) ... Setting up libgnutls30t64:amd64 (3.8.9-2) ... Setting up python3.13 (3.13.2-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpsl5t64:amd64 (0.21.2-1.1+b1) ... Setting up python3 (3.13.1-2) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-pygments (2.18.0+dfsg-2) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up libevent-dev (2.1.12-stable-10+b1) ... Setting up libngtcp2-crypto-gnutls8:amd64 (1.9.1-1) ... Setting up crystal (1.14.0+dfsg-1) ... Setting up libcurl4t64:amd64 (8.12.1-2) ... Setting up libcurl3t64-gnutls:amd64 (8.12.1-2) ... Setting up python3-yaml (6.0.2-1+b1) ... Setting up debhelper (13.24.1) ... Setting up git (1:2.47.2-0.1) ... Setting up llvm-19 (1:19.1.7-1+b1) ... Setting up llvm-19-tools (1:19.1.7-1+b1) ... Setting up llvm-19-dev (1:19.1.7-1+b1) ... Processing triggers for libc-bin (2.40-7) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/A99_set_merged_usr starting Not re-configuring usrmerge for unstable I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/reproducible-path/crystal-1.14.0+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../crystal_1.14.0+dfsg-1_source.changes dpkg-buildpackage: info: source package crystal dpkg-buildpackage: info: source version 1.14.0+dfsg-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by David Suárez <deiv@debian.org> dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_auto_clean make -j20 clean make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' rm -rf .build rm -rf ./docs rm -rf src/llvm/ext/llvm_ext.o rm -rf man/*.gz make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' debian/rules override_dh_clean make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' dh_clean rm -f man/*.gz make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' debian/rules binary dh binary dh_update_autotools_config dh_autoreconf dh_auto_configure debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' dh_auto_build -- release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" interpreter=1 make -j20 "INSTALL=install --strip-program=true" release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib CRYSTAL_CACHE_DIR=/tmp/crystal interpreter=1 make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' [33mUsing /usr/bin/llvm-config-19 [version=19.1.7][0m CRYSTAL_CONFIG_BUILD_COMMIT="" CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib SOURCE_DATE_EPOCH="1734712509" CRYSTAL_CONFIG_LIBRARY_PATH='$ORIGIN/../lib/crystal' ./bin/crystal build -D strict_multi_assign -D preview_overload_order --release --progress --threads 20 --link-flags="-Wl,-z,relro" -o .build/crystal src/compiler/crystal.cr -D without_openssl -D without_zlib -D use_pcre2 [1/13] Parse [1/13] Parse [2/13] Semantic (top level) [2/13] Semantic (top level) [3/13] Semantic (new) [3/13] Semantic (new) [4/13] Semantic (type declarations) [4/13] Semantic (type declarations) [5/13] Semantic (abstract def check) [5/13] Semantic (abstract def check) [6/13] Semantic (restrictions augmenter) [6/13] Semantic (restrictions augmenter) [7/13] Semantic (ivars initializers) [7/13] Semantic (ivars initializers) [8/13] Semantic (cvars initializers) [8/13] Semantic (cvars initializers) [9/13] Semantic (main) [9/13] Semantic (main) [10/13] Semantic (cleanup) [10/13] Semantic (cleanup) [11/13] Semantic (recursive struct check) [11/13] Semantic (recursive struct check) [12/13] Codegen (crystal) [12/13] Codegen (crystal) [13/13] Codegen (bc+obj) [13/13] [0/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' make release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" interpreter=1 compiler_spec make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' [33mUsing /usr/bin/llvm-config-19 [version=19.1.7][0m CRYSTAL_CONFIG_BUILD_COMMIT="" CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib SOURCE_DATE_EPOCH="1734712509" ./bin/crystal build -D strict_multi_assign -D preview_overload_order --release --progress --threads 20 --link-flags="-Wl,-z,relro" --exclude-warnings spec/std --exclude-warnings spec/compiler --exclude-warnings spec/primitives -o .build/compiler_spec spec/compiler_spec.cr --release Using compiled compiler at .build/crystal In lib/markd/src/markd/renderers/html_renderer.cr:238:7 238 | {% if Crystal::VERSION < "1.2.0" %} ^ Warning: expanding macro There was a problem expanding macro 'macro_140300317817808' Called macro defined in lib/markd/src/markd/renderers/html_renderer.cr:238:7 238 | {% if Crystal::VERSION < "1.2.0" %} Which expanded to: 1 | > 2 | title = URI.encode(node.first_child.text) 3 | @output_io << %(<a id="anchor-) << title << %(" class="anchor" href="#anchor-) << title << %("></a>) 4 | Warning: Deprecated URI.encode. Use `.encode_path` instead. A total of 1 warnings were found. [1/13] Parse [1/13] Parse [2/13] Semantic (top level) [2/13] Semantic (top level) [3/13] Semantic (new) [3/13] Semantic (new) [4/13] Semantic (type declarations) [4/13] Semantic (type declarations) [5/13] Semantic (abstract def check) [5/13] Semantic (abstract def check) [6/13] Semantic (restrictions augmenter) [6/13] Semantic (restrictions augmenter) [7/13] Semantic (ivars initializers) [7/13] Semantic (ivars initializers) [8/13] Semantic (cvars initializers) [8/13] Semantic (cvars initializers) [9/13] Semantic (main) [9/13] Semantic (main) [10/13] Semantic (cleanup) [10/13] Semantic (cleanup) [11/13] Semantic (recursive struct check) [11/13] Semantic (recursive struct check) [12/13] Codegen (crystal) [12/13] Codegen (crystal) [13/13] Codegen (bc+obj) [13/13] [0/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) .build/compiler_spec -v --order=random Randomized with seed: 76473 Code gen: C ABI x86_64 passes struct less than 64 bits as { i64 } passes struct less than 64 bits as { i64 } passes struct between 64 and 128 bits as { i64, i64 } passes struct between 64 and 128 bits as { i64, i64 } passes struct between 64 and 128 bits as { i64, i64 } (with multiple modules/contexts) passes struct between 64 and 128 bits as { i64, i64 } (with multiple modules/contexts) returns struct less than 64 bits as { i64 } returns struct less than 64 bits as { i64 } passes struct less than 64 bits as { i64 } in varargs passes struct less than 64 bits as { i64 } in varargs passes struct bigger than128 bits with byval passes struct bigger than128 bits with byval returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct between 64 and 128 bits as { i64, i64 } returns struct between 64 and 128 bits as { i64, i64 } Codegen: class var initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal initializes class var with array literal doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module doesn't crash with pointerof from another module declares var as uninitialized and initializes it unsafely declares var as uninitialized and initializes it unsafely accesses class var from proc literal accesses class var from proc literal codegens class var inside module codegens class var inside module reads class var before initializing it (hoisting) reads class var before initializing it (hoisting) reads class var from virtual type metaclass reads class var from virtual type metaclass codegens class var with begin and vars codegens class var with begin and vars doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) doesn't error if class var shares name with const (#7865) codegens class var inside instance method codegens class var inside instance method codegens generic class with class var codegens generic class with class var inline initialization of simple class var inline initialization of simple class var codegens second class var initializer codegens second class var initializer initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it initializes class var the moment it reaches it declares and initializes declares and initializes catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer catch infinite loop in class var initializer initializes class var of union with single type initializes class var of union with single type doesn't inherit class var value in subclass doesn't inherit class var value in subclass codegens class var with nilable reference type codegens class var with nilable reference type writes class var from virtual type writes class var from virtual type codegens class var codegens class var codegens class var with type declaration begin and vars codegens class var with type declaration begin and vars runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) runs class var side effects (#8862) codegens class var as nil codegens class var as nil initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var initializes dependent constant before class var doesn't use nilable type for initializer doesn't use nilable type for initializer gets pointerof class var complex constant gets pointerof class var complex constant codegens class var as nil if assigned for the first time inside method codegens class var as nil if assigned for the first time inside method gets pointerof class var gets pointerof class var uses var in class var initializer uses var in class var initializer doesn't inherit class var value in module doesn't inherit class var value in module reads simple class var before another complex one reads simple class var before another complex one reads class var from virtual type reads class var from virtual type Semantic: method_missing doesn't look up method_missing in with_yield_scope if call has a receiver (#12097) doesn't look up method_missing in with_yield_scope if call has a receiver (#12097) finds method_missing with 'with ... yield' finds method_missing with 'with ... yield' errors if method_missing expands to multiple methods errors if method_missing expands to multiple methods does method missing for generic type does method missing for generic type errors if method_missing expands to an incorrect method errors if method_missing expands to an incorrect method does error in method_missing macro with virtual type does error in method_missing macro with virtual type does error in method_missing if wrong number of params does error in method_missing if wrong number of params Code gen: alias invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (2) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) invokes methods on empty array of recursive alias (3) codegens cast to alias that includes bool codegens cast to alias that includes bool overloads alias against generic (1) (#3261) overloads alias against generic (1) (#3261) doesn't crash on cast to as recursive alias (#639) doesn't crash on cast to as recursive alias (#639) casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) invokes methods on empty array of recursive alias (1) casts to recursive alias casts to recursive alias doesn't break with alias for link attributes doesn't break with alias for link attributes lazily solves aliases (#1346) lazily solves aliases (#1346) overloads alias against generic (2) (#3261) overloads alias against generic (2) (#3261) Semantic: fun errors if defining class inside fun through macro (#6874) errors if defining class inside fun through macro (#6874) Code gen: var codegens bug with var, while, if, break and ssa codegens bug with var, while, if, break and ssa works with typeof with assignment (#828) works with typeof with assignment (#828) codegens assignment that can never be reached codegens assignment that can never be reached codegens ivar assignment when not-nil type filter applies codegens ivar assignment when not-nil type filter applies codegens bug with union of int, nil and string (1): assigning nil to union must fill all zeros codegens bug with union of int, nil and string (1): assigning nil to union must fill all zeros codegens bug with union of int, nil and string (2): assigning nil to union must fill all zeros codegens bug with union of int, nil and string (2): assigning nil to union must fill all zeros codegens bug with instance vars and ssa codegens bug with instance vars and ssa codegens var codegens var codegens var with type declaration codegens var with type declaration assigns to underscore assigns to underscore Semantic: require file not found require require relative wildcard relative wildcard wildcard wildcard relative require relative require Code gen: ssa codegens a var that is declared in a block (1) codegens a var that is declared in a block (1) codegens ssa bug with if/else on var codegens ssa bug with if/else on var codegens a redefined var codegens a redefined var codegens declaration of var inside then when false codegens declaration of var inside then when false codegens declaration of var inside then when true codegens declaration of var inside then when true codegens a var that is re-assigned in a block (1) codegens a var that is re-assigned in a block (1) codegens ssa bug (2) codegens ssa bug (2) codegens ssa bug (1) codegens ssa bug (1) codegens a var that is declared in a block (2) codegens a var that is declared in a block (2) codegens a redefined var inside method with argument codegens a redefined var inside method with argument codegens a redefined var inside method codegens a redefined var inside method codegens a var that is re-assigned in a block (2) codegens a var that is re-assigned in a block (2) codegens a var that is re-assigned in a block codegens a var that is re-assigned in a block Normalize: block normalizes unpacking with underscore normalizes unpacking with underscore normalizes unpacking with splat normalizes unpacking with splat normalizes unpacking with multiple body expressions normalizes unpacking with multiple body expressions normalizes unpacking with single expression body normalizes unpacking with single expression body normalizes multiple nested unpackings normalizes multiple nested unpackings normalizes unpacking with empty body normalizes unpacking with empty body normalizes nested unpacking normalizes nested unpacking Semantic: private finds private macro in same file finds private macro in same file doesn't find private alias in another file doesn't find private alias in another file can use types in private type can use types in private type gives private constant error in macro gives private constant error in macro doesn't find private macro in another file doesn't find private macro in another file doesn't find private enum from outside namespace, long name (#8831) doesn't find private enum from outside namespace, long name (#8831) doesn't define incorrect type in top-level namespace (#13511) doesn't define incorrect type in top-level namespace (#13511) doesn't find private def defined in macro in another file (#7681) doesn't find private def defined in macro in another file (#7681) doesn't define incorrect type in top-level namespace (#13511) doesn't define incorrect type in top-level namespace (#13511) finds private def in same file finds private def in same file finds private type in same file finds private type in same file doesn't find private class defined through macro (#8715) doesn't find private class defined through macro (#8715) doesn't find private class from outside namespace, long name (#8831) doesn't find private class from outside namespace, long name (#8831) doesn't inherit visibility from class node in macro hook (#8794) doesn't inherit visibility from class node in macro hook (#8794) find module private macro inside a module, which is inherited by the module find module private macro inside a module, which is inherited by the module find module private macro inside the module find module private macro inside the module doesn't find private class from outside namespace doesn't find private class from outside namespace doesn't find private constant in another file (#7850) doesn't find private constant in another file (#7850) doesn't define private constant with global type name doesn't define private constant with global type name doesn't find private alias from outside namespace, long name (#8831) doesn't find private alias from outside namespace, long name (#8831) doesn't define incorrect type in top-level namespace (#13511) doesn't define incorrect type in top-level namespace (#13511) doesn't find module private macro outside the module doesn't find module private macro outside the module doesn't define private class with global type name doesn't define private class with global type name doesn't find private enum from outside namespace doesn't find private enum from outside namespace doesn't find private macro defined through macro (#8715) doesn't find private macro defined through macro (#8715) doesn't define incorrect type in top-level namespace (#13511) doesn't define incorrect type in top-level namespace (#13511) doesn't define private alias with global type name doesn't define private alias with global type name types private def correctly types private def correctly doesn't define private module with global type name doesn't define private module with global type name doesn't find private module from outside namespace, long name (#8831) doesn't find private module from outside namespace, long name (#8831) can use instance var initializer in private type can use instance var initializer in private type doesn't define private lib with global type name doesn't define private lib with global type name finds private type from inside namespace in subclass finds private type from inside namespace in subclass doesn't find private thing defined through recursive macro (#8715) doesn't find private thing defined through recursive macro (#8715) finds private class in macro expansion finds private class in macro expansion doesn't find private lib from outside namespace doesn't find private lib from outside namespace doesn't define incorrect type in top-level namespace (#13511) doesn't define incorrect type in top-level namespace (#13511) finds private macro in same file, invoking from another macro (#1265) finds private macro in same file, invoking from another macro (#1265) finds private def when invoking from inside macro (#2082) finds private def when invoking from inside macro (#2082) doesn't find private def in another file doesn't find private def in another file finds private type from inside namespace finds private type from inside namespace finds private def in same file that invokes another def finds private def in same file that invokes another def doesn't find private module from outside namespace doesn't find private module from outside namespace doesn't find private class in another file doesn't find private class in another file doesn't find private constant from outside namespace, long name (#8831) doesn't find private constant from outside namespace, long name (#8831) doesn't find private alias from outside namespace doesn't find private alias from outside namespace doesn't define private enum with global type name doesn't define private enum with global type name doesn't find private lib from outside namespace, long name (#8831) doesn't find private lib from outside namespace, long name (#8831) doesn't find private module defined through macro (#8715) doesn't find private module defined through macro (#8715) doesn't define incorrect type in top-level namespace (#13511) doesn't define incorrect type in top-level namespace (#13511) can use class var initializer in private type can use class var initializer in private type doesn't find private constant from outside namespace doesn't find private constant from outside namespace Init invocation errors if files will be overwritten by a generated file errors if files will be overwritten by a generated file prints error if a file is already present prints error if a file is already present honors the custom set directory name honors the custom set directory name doesn't error when asked to skip existing files doesn't error when asked to skip existing files doesn't error if files will be overwritten by a generated file and --force is used doesn't error if files will be overwritten by a generated file and --force is used produces valid yaml file produces valid yaml file Semantic: initialize doesn't type instance var as nilable if out doesn't type instance var as nilable if out doesn't type instance var as nilable if not used in method call doesn't type instance var as nilable if not used in method call doesn't type instance var as nilable if used after method call that doesn't read var doesn't type instance var as nilable if used after method call that doesn't read var marks instance variable as nilable in initialize if using self in method marks instance variable as nilable in initialize if using self in method types instance var as nilable if not always assigned types instance var as nilable if not always assigned marks instance variable as nilable when using self in super marks instance variable as nilable when using self in super finishes when analyzing recursive calls finishes when analyzing recursive calls types instance var as nilable if assigned in block types instance var as nilable if assigned in block types instance var as non-nilable if calls super and super defines it, with one level of indirection types instance var as non-nilable if calls super and super defines it, with one level of indirection doesn't type ivar having initializer as nilable even if it is used before assigned inside initialize (#5112) doesn't type ivar having initializer as nilable even if it is used before assigned inside initialize (#5112) doesn't type ivar as nilable if super call present and parent has already typed ivar (#4764) doesn't type ivar as nilable if super call present and parent has already typed ivar (#4764) types instance var as nilable if used before assignment types instance var as nilable if used before assignment types initializer of recursive generic type types initializer of recursive generic type doesn't type instance var as nilable if assigned before method call doesn't type instance var as nilable if assigned before method call types instance vars as nilable if doesn't invoke super with default arguments types instance vars as nilable if doesn't invoke super with default arguments types instance var as non-nilable if calls super and super defines it types instance var as non-nilable if calls super and super defines it doesn't type instance var as nilable if used after method call inside typeof doesn't type instance var as nilable if used after method call inside typeof doesn't type instance var as nilable if used after global method call doesn't type instance var as nilable if used after global method call doesn't type instance var as nilable if used after method call that assigns var doesn't type instance var as nilable if used after method call that assigns var marks instance variable as nilable in initialize if using self marks instance variable as nilable in initialize if using self types instance var as nilable if used after method call that reads var (2) types instance var as nilable if used after method call that reads var (2) doesn't mark instance variable as nilable when using self.class doesn't mark instance variable as nilable when using self.class types instance var as nilable if used after method call that reads var through other calls types instance var as nilable if used after method call that reads var through other calls checks instance vars of included modules checks instance vars of included modules types initializer of generic type after instantiated types initializer of generic type after instantiated types instance var as not-nilable if assigned in block but previously assigned types instance var as not-nilable if assigned in block but previously assigned marks instance variable as nilable in initialize if assigning self marks instance variable as nilable in initialize if assigning self types instance vars as nilable if doesn't invoke super in initialize types instance vars as nilable if doesn't invoke super in initialize doesn't mark instance variable as nilable when using self.class in method doesn't mark instance variable as nilable when using self.class in method types instance var as nilable if used after method call that reads var types instance var as nilable if used after method call that reads var errors on default new when using named arguments (#2245) errors on default new when using named arguments (#2245) types instance vars as nilable if doesn't invoke super in initialize with deep subclass types instance vars as nilable if doesn't invoke super in initialize with deep subclass errors if found matches for initialize but doesn't cover all (bug #204) errors if found matches for initialize but doesn't cover all (bug #204) types instance var as nilable if used in first of two method calls types instance var as nilable if used in first of two method calls Semantic: metaclass types generic module metaclass types generic module metaclass types Object class types Object class can't reopen as struct can't reopen as struct types Object and Class metaclasses types Object and Class metaclasses types metaclass superclass types metaclass superclass can't reopen as module can't reopen as module types generic instance metaclass superclass types generic instance metaclass superclass subtyping relations between metaclasses non-generic classes non-generic classes non-generic modules non-generic modules generic modules (2) generic modules (2) generic classes (1) generic classes (1) generic modules (1) generic modules (1) generic classes (3) generic classes (3) generic modules (3) generic modules (3) virtual metaclass type with virtual type (#12628) virtual metaclass type with virtual type (#12628) generic classes (2) generic classes (2) types Class class types Class class types generic class metaclass types generic class metaclass types generic metaclass superclass types generic metaclass superclass types Reference metaclass types Reference metaclass Semantic: is_a? checks simple type with union checks simple type with union restricts type inside if scope 1 restricts type inside if scope 1 does is_a? from virtual metaclass to generic metaclass (#12302) does is_a? from virtual metaclass to generic metaclass (#12302) restricts other types inside if else restricts other types inside if else restricts type in else but lazily restricts type in else but lazily doesn't fail on untyped is_a (#10317) doesn't fail on untyped is_a (#10317) types if is_a? preceded by return if (preserves nops) types if is_a? preceded by return if (preserves nops) applies filter inside block applies filter inside block is bool is bool restricts type inside if else when used with module type restricts type inside if else when used with module type restricts type inside if scope 3 restricts type inside if scope 3 restricts type inside if scope 2 restricts type inside if scope 2 restricts in assignment restricts in assignment applies negative condition filter if then is no return applies negative condition filter if then is no return checks union with union checks union with union .system failing command failing command successful command successful command sh: line 1: commanddoesnotexist: command not found command does not exist command does not exist successful command with output successful command with output Semantic: array types array literal of int with splats types array literal of int with splats types non-empty typed array literal of int types non-empty typed array literal of int types array literal of union types array literal of union types non-empty typed array literal of int types non-empty typed array literal of int types array literal size correctly types array literal size correctly types empty typed array literal of int32 types empty typed array literal of int32 assignment in array literal works (#3195) assignment in array literal works (#3195) types array literal with splats (2) types array literal with splats (2) types array literal with splats types array literal with splats types array literal of int types array literal of int Code gen: proc codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) builds proc type from fun builds proc type from fun call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises call proc pointer of instance method that raises accesses T in macros as a TupleLiteral accesses T in macros as a TupleLiteral doesn't crash when taking a proc pointer that multidispatches on the top-level (#3822) doesn't crash when taking a proc pointer that multidispatches on the top-level (#3822) call proc pointer of instance method call proc pointer of instance method codegens nilable proc type (2) codegens nilable proc type (2) calls proc pointer with union (passed by value) arg calls proc pointer with union (passed by value) arg call simple proc literal with return call simple proc literal with return saves receiver value of proc pointer `->var.foo` saves receiver value of proc pointer `->var.foo` saves receiver value of proc pointer `->@ivar.foo` saves receiver value of proc pointer `->@ivar.foo` codegens proc with another var codegens proc with another var passes proc as &->expr to method that yields passes proc as &->expr to method that yields call simple proc literal call simple proc literal allows using proc arg name shadowing local variable allows using proc arg name shadowing local variable allows proc type of enum type with base type allows proc type of enum type with base type allows invoking a function with a subtype when defined as block spec allows invoking a function with a subtype when defined as block spec codegens proc that references struct (bug) codegens proc that references struct (bug) allows invoking proc literal with smaller type allows invoking proc literal with smaller type takes pointerof function pointer takes pointerof function pointer calls function pointer calls function pointer calls function pointer calls function pointer calls function pointer calls function pointer calls function pointer calls function pointer calls function pointer calls function pointer allows proc type of enum type allows proc type of enum type codegens proc with union type that returns itself codegens proc with union type that returns itself can assign proc that returns anything to proc that returns nil, using union type (#3655) can assign proc that returns anything to proc that returns nil, using union type (#3655) codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type codegens proc that accepts array of type doesn't crash when taking a proc pointer that multidispatches on a module (#3822) doesn't crash when taking a proc pointer that multidispatches on a module (#3822) codegens nilable proc type dispatch (1) codegens nilable proc type dispatch (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) codegens proc of generic type codegens proc of generic type doesn't crash on #2196 doesn't crash on #2196 builds nilable proc type from fun builds nilable proc type from fun call proc literal with arguments call proc literal with arguments executes proc pointer on primitive executes proc pointer on primitive codegens nilable proc type (1) codegens nilable proc type (1) makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference closures var on ->var.call (#8584) closures var on ->var.call (#8584) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) codegens proc that accepts a union and is called with a single type codegens proc that accepts a union and is called with a single type allows redefining fun allows redefining fun raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) raises if returning closure from top-level fun (#14691) mangles strings in such a way they don't conflict with funs (#1006) mangles strings in such a way they don't conflict with funs (#1006) gets proc pointer using virtual type (#1337) gets proc pointer using virtual type (#1337) returns ProcPointer inside top-level fun (#14691) returns ProcPointer inside top-level fun (#14691) casts from function pointer to proc casts from function pointer to proc assigns nil and proc to nilable proc type assigns nil and proc to nilable proc type call proc literal with return type call proc literal with return type codegens proc that returns a virtual type codegens proc that returns a virtual type passes block to another function (bug: mangling of both methods was the same) passes block to another function (bug: mangling of both methods was the same) call proc pointer with args call proc pointer with args codegens captured block that returns tuple codegens captured block that returns tuple codegens nilable proc type dispatch (2) codegens nilable proc type dispatch (2) codegens proc in instance var initialize (#3016) codegens proc in instance var initialize (#3016) binds function pointer to associated call binds function pointer to associated call allows invoking a function with a subtype allows invoking a function with a subtype codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct automatically casts proc that returns something to proc that returns void automatically casts proc that returns something to proc that returns void allows proc pointer where self is a class allows proc pointer where self is a class call proc pointer call proc pointer saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` saves receiver value of proc pointer `->@@cvar.foo` doesn't crash when taking a proc pointer to a virtual type (#9823) doesn't crash when taking a proc pointer to a virtual type (#9823) does new on proc type does new on proc type gets proc to lib fun (#504) gets proc to lib fun (#504) can assign proc that returns anything to proc that returns nil (#3655) can assign proc that returns anything to proc that returns nil (#3655) can pass Proc(T) to Proc(Nil) in type restriction (#8964) can pass Proc(T) to Proc(Nil) in type restriction (#8964) returns proc as function pointer inside top-level fun (#14691) returns proc as function pointer inside top-level fun (#14691) allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically allows passing proc type to C automatically Lexer string lexes double numeral lexes double numeral says syntax error on "\"\\uD800\"" says syntax error on "\"\\uD800\"" raises when identifier doesn't start with a letter or number raises when identifier doesn't start with a letter or number lexes string with unicode codepoint in curly multiple times lexes string with unicode codepoint in curly multiple times lexes heredoc with spaces before close tag lexes heredoc with spaces before close tag says syntax error on "\"\\u{}\"" says syntax error on "\"\\u{}\"" lexes interpolations in heredocs lexes interpolations in heredocs says syntax error on "\"\\u{DFFF}\"" says syntax error on "\"\\u{DFFF}\"" lexes simple string with nested %( lexes simple string with nested %( lexes string with slash lexes string with slash lexes string with only newline lexes string with only newline lexes regex string with escaped slash with %r(...) lexes regex string with escaped slash with %r(...) lexes regex string with escaped space with /.../ lexes regex string with escaped space with /.../ lexes simple string with nested %{ lexes simple string with nested %{ says syntax error on "\"\\u{D800}\"" says syntax error on "\"\\u{D800}\"" lexes string with interpolation lexes string with interpolation lexes string with slash t lexes string with slash t lexes string with newline lexes string with newline assigns correct location after heredoc (#346) assigns correct location after heredoc (#346) lexes simple string lexes simple string lexes string with unicode codepoint lexes string with unicode codepoint lexes slash with no-escape char lexes slash with no-escape char lexes simple string with %( lexes simple string with %( says syntax error on "\"\\uDFFF\"" says syntax error on "\"\\uDFFF\"" says syntax error on "\"\\u{110000}\"" says syntax error on "\"\\u{110000}\"" lexes string with backslash lexes string with backslash lexes heredoc lexes heredoc lexes simple string with nested %< lexes simple string with nested %< lexes string with interpolation with double numeral lexes string with interpolation with double numeral lexes regex string with escaped slash with /.../ lexes regex string with escaped slash with /.../ lexes heredoc with empty line lexes heredoc with empty line raises on unexpected EOF while lexing heredoc raises on unexpected EOF while lexing heredoc lexes heredoc with \r\n lexes heredoc with \r\n lexes backtick string lexes backtick string lexes string with slash quote lexes string with slash quote lexes regex string with special chars with /.../ lexes regex string with special chars with /.../ raises on unterminated heredoc raises on unterminated heredoc lexes simple string with nested %[ lexes simple string with nested %[ lexes string with numeral lexes string with numeral lexes regex string lexes regex string lexes string with unicode codepoint in curly lexes string with unicode codepoint in curly lexes regex string with escaped space with %r(...) lexes regex string with escaped space with %r(...) lexes simple string with %| lexes simple string with %| lexes regex string with special chars with %r(...) lexes regex string with special chars with %r(...) lexes string with literal newline lexes string with literal newline says syntax error on "\"\\uFEDZ\"" says syntax error on "\"\\uFEDZ\"" Lexer string array using [ as delimiter lexes simple string array lexes simple string array using | as delimiter lexes simple string array lexes simple string array lexes simple string array lexes simple string array using < as delimiter lexes simple string array lexes simple string array using { as delimiter lexes simple string array lexes simple string array lexes string array with new line gives correct column for next token lexes string array with new line gives correct column for next token lexes string array with new line lexes string array with new line Normalize: unless normalizes unless normalizes unless Code gen: C ABI passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) promotes variadic args (float to double) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) passes struct after many other args when returning a large struct (sret return type) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) accepts large struct in a callback (for real) returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) passes struct after many other args (for real) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (i8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) promotes variadic args (u8 to i32) (#9742) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) Code gen: class reads a virtual type instance var reads a virtual type instance var codegens class method codegens class method calls class method without self calls class method without self assigns type to reference union type assigns type to reference union type resolves type declaration when accessing instance var (#348) resolves type declaration when accessing instance var (#348) never considers read instance var as closure (#12181) never considers read instance var as closure (#12181) doesn't crash on abstract class never instantiated (#2840) doesn't crash on abstract class never instantiated (#2840) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) works with array in variable initializer in non-generic type (#855) codegens method of class union including Int (#1476) codegens method of class union including Int (#1476) allows fixing an instance variable's type allows fixing an instance variable's type doesn't crash on #1216 with pointerof doesn't crash on #1216 with pointerof codegens new which calls initialize codegens new which calls initialize invokes class method inside instance method (#1119) invokes class method inside instance method (#1119) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) doesn't crash on #1216 doesn't crash on #1216 runs instance variable initializer at the class level runs instance variable initializer at the class level does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) codegens assignment of generic metaclasses (2) (#10394) codegens assignment of generic metaclasses (2) (#10394) makes .class always be a virtual type even if no subclasses makes .class always be a virtual type even if no subclasses does to_s for class does to_s for class does to_s for class does to_s for class does to_s for class does to_s for class does to_s for class does to_s for class does to_s for class does to_s for class reads a union type instance var (reference union, first type) reads a union type instance var (reference union, first type) codegens virtual metaclass union bug (#2597) codegens virtual metaclass union bug (#2597) runs instance variable initializer at the class level, for generic type runs instance variable initializer at the class level, for generic type codegens virtual generic class instance metaclass (#3819) codegens virtual generic class instance metaclass (#3819) transfers initializer from module to generic class transfers initializer from module to generic class calls method on Class class calls method on Class class codegens singleton (#718) codegens singleton (#718) does to_s on class does to_s on class does to_s on class does to_s on class does to_s on class does to_s on class does to_s on class does to_s on class does to_s on class does to_s on class codegens bug #168 codegens bug #168 codegens assignment of generic metaclasses (4) (#10394) codegens assignment of generic metaclasses (4) (#10394) codegens recursive type codegens recursive type doesn't skip zero initializers (#3272) doesn't skip zero initializers (#3272) codegens assignment of generic metaclasses, base is non-generic (2) (#10394) codegens assignment of generic metaclasses, base is non-generic (2) (#10394) doesn't crash if not using undefined instance variable in superclass doesn't crash if not using undefined instance variable in superclass does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (1) codegens call to same instance codegens call to same instance codegens method call of instance var codegens method call of instance var codegens instance var codegens instance var codegens assignment of generic metaclasses (3) (#10394) codegens assignment of generic metaclasses (3) (#10394) allows using self in class scope allows using self in class scope gets class of virtual type gets class of virtual type uses number type var uses number type var codegens class with recursive tuple to class (#4520) codegens class with recursive tuple to class (#4520) codegens assignment of generic metaclasses, base is non-generic (1) (#10394) codegens assignment of generic metaclasses, base is non-generic (1) (#10394) codegens initialize with instance var codegens initialize with instance var reads other instance var reads other instance var calls class method without self (2) calls class method without self (2) codegens virtual call that calls another method codegens virtual call that calls another method reads a union type instance var (reference union, second type) reads a union type instance var (reference union, second type) transfers initializer from generic module to generic class transfers initializer from generic module to generic class builds generic class bug builds generic class bug codegens method from another method without obj and accesses instance vars codegens method from another method without obj and accesses instance vars changes instance variable in method (ssa bug) changes instance variable in method (ssa bug) reads a union type instance var (mixed union, second type) reads a union type instance var (mixed union, second type) reads a union type instance var (mixed union, first type) reads a union type instance var (mixed union, first type) codegens virtual method of generic class codegens virtual method of generic class can assign virtual metaclass to virtual metaclass (#3007) can assign virtual metaclass to virtual metaclass (#3007) allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope doesn't crash on #1216 (reduced) doesn't crash on #1216 (reduced) codegens assignment of generic metaclasses (1) (#10394) codegens assignment of generic metaclasses (1) (#10394) transfers initializer from generic module to non-generic class transfers initializer from generic module to non-generic class runs with nilable instance var runs with nilable instance var codegens virtual class method codegens virtual class method doesn't skip false initializers (#3272) doesn't skip false initializers (#3272) allows initializing var with constant allows initializing var with constant doesn't crash on instance variable assigned a proc, and never instantiated (#923) doesn't crash on instance variable assigned a proc, and never instantiated (#923) runs with nil instance var when inheriting runs with nil instance var when inheriting notifies superclass recursively on inheritance (#576) notifies superclass recursively on inheritance (#576) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) works with array in variable initializer in generic type (#855) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) can use a Main class (#1628) Code gen: multi assign supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) supports 1 to n assignment, raises if out of bounds (1) without strict_multi_assign supports 1 to n assignment supports 1 to n assignment doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count doesn't raise if value size in 1 to n assignment doesn't match target count supports m to n assignment, with splat on left-hand side (2) supports m to n assignment, with splat on left-hand side (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, raises if out of bounds (2) supports 1 to n assignment, with splat on left-hand side (2) supports 1 to n assignment, with splat on left-hand side (2) strict_multi_assign raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count raises if value size in 1 to n assignment doesn't match target count supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports 1 to n assignment supports n to n assignment supports n to n assignment supports m to n assignment, splat is empty tuple (3) supports m to n assignment, splat is empty tuple (3) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, splat is empty (1) supports 1 to n assignment, with splat on left-hand side (3) supports 1 to n assignment, with splat on left-hand side (3) supports m to n assignment, splat is empty tuple (1) supports m to n assignment, splat is empty tuple (1) supports m to n assignment, with splat on left-hand side (1) supports m to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, with splat on left-hand side (1) supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, raises if too short supports 1 to n assignment, splat is empty (3) supports 1 to n assignment, splat is empty (3) supports m to n assignment, splat is empty tuple (2) supports m to n assignment, splat is empty tuple (2) supports m to n assignment, with splat on left-hand side (3) supports m to n assignment, with splat on left-hand side (3) supports 1 to n assignment, splat is empty (2) supports 1 to n assignment, splat is empty (2) Crystal::JSONHierarchyPrinter works works Code gen: tuple passes empty tuple and empty named tuple to a method (#2852) passes empty tuple and empty named tuple to a method (#2852) codegens tuple [2]? codegens tuple [2]? codegens tuple metaclass [0..0] codegens tuple metaclass [0..0] codegens tuple metaclass [3..2]? codegens tuple metaclass [3..2]? codegens tuple [0] codegens tuple [0] codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types assigns tuple to compatible tuple assigns tuple to compatible tuple merges two tuple types of same size (1) merges two tuple types of same size (1) codegens tuple metaclass [2]? codegens tuple metaclass [2]? codegens tuple [0..1] codegens tuple [0..1] upcasts tuple inside union to union with compatible tuple upcasts tuple inside union to union with compatible tuple upcasts tuple union to compatible tuple upcasts tuple union to compatible tuple assigns tuple union to compatible tuple assigns tuple union to compatible tuple assigns two same-size tuple types to a same var (#3132) assigns two same-size tuple types to a same var (#3132) accesses T and creates instance from it accesses T and creates instance from it codegens tuple [0..2] codegens tuple [0..2] codegens tuple [0..0]? codegens tuple [0..0]? codegens tuple [0..1]? codegens tuple [0..1]? allows tuple covariance allows tuple covariance allows malloc pointer of tuple allows malloc pointer of tuple codegens tuple [1] (2) codegens tuple [1] (2) codegens tuple [2..2]? codegens tuple [2..2]? codegens tuple class codegens tuple class codegens tuple metaclass [1] codegens tuple metaclass [1] assigns tuple inside union to union with compatible tuple assigns tuple inside union to union with compatible tuple merges two tuple types of same size (2) merges two tuple types of same size (2) codegens tuple metaclass [0] codegens tuple metaclass [0] codegens tuple [1..1] codegens tuple [1..1] codegens tuple [1..0]? codegens tuple [1..0]? codegens tuple [1] codegens tuple [1] gets size at compile time gets size at compile time upcasts tuple inside compatible tuple upcasts tuple inside compatible tuple provides T as a tuple literal provides T as a tuple literal codegens tuple [0..0] codegens tuple [0..0] downcasts union inside tuple to value (#3907) downcasts union inside tuple to value (#3907) codegens splats inside tuples codegens splats inside tuples codegens tuple [0]? codegens tuple [0]? codegens tuple [3..2]? codegens tuple [3..2]? codegens tuple [1]? codegens tuple [1]? codegens tuple [1..0] codegens tuple [1..0] codegens tuple metaclass [0..1] codegens tuple metaclass [0..1] downcasts union to mixed tuple type downcasts union to mixed tuple type codegens tuple [-3..2]? codegens tuple [-3..2]? codegens tuple [0..2]? codegens tuple [0..2]? codegens tuple [1..1]? codegens tuple [1..1]? codegens tuple [2..2] codegens tuple [2..2] codegens union of tuple of float with tuple of tuple of float codegens union of tuple of float with tuple of tuple of float codegens tuple metaclass [1..0] codegens tuple metaclass [1..0] passed tuple to def passed tuple to def Crystal::Repl::Interpreter special vars does special var that's a reference inside block does special var that's a reference inside block does special var that's a struct does special var that's a struct does special var that's a reference does special var that's a reference sets special var inside call inside block (#12250) sets special var inside call inside block (#12250) does special var that's a reference for multidispatch does special var that's a reference for multidispatch does special var that's a reference when there are optional arguments does special var that's a reference when there are optional arguments Code gen: sizeof gets sizeof int gets sizeof int can use instance_sizeof of virtual type can use instance_sizeof of virtual type doesn't precompute sizeof of module (#7741) doesn't precompute sizeof of module (#7741) can use instance_sizeof in type argument can use instance_sizeof in type argument gets sizeof union gets sizeof union gets instance_sizeof a generic type with type vars gets instance_sizeof a generic type with type vars gets sizeof NoReturn gets sizeof NoReturn alignof gets alignof struct gets alignof struct gets alignof union gets alignof union alignof mixed union is not less than alignof its variant types alignof mixed union is not less than alignof its variant types gets alignof class gets alignof class gets alignof primitive types gets alignof primitive types instance_alignof gets instance_alignof a generic type with type vars gets instance_alignof a generic type with type vars gets instance_alignof class gets instance_alignof class doesn't precompute sizeof of abstract struct (#7741) doesn't precompute sizeof of abstract struct (#7741) can use sizeof in type argument (2) can use sizeof in type argument (2) can use sizeof of virtual type can use sizeof of virtual type gets sizeof Bool (#8272) gets sizeof Bool (#8272) returns correct sizeof for abstract struct (#4319) returns correct sizeof for abstract struct (#4319) gets sizeof struct gets sizeof struct gets sizeof Void gets sizeof Void gets instance_sizeof class gets instance_sizeof class gets sizeof Nil (#7644) gets sizeof Nil (#7644) can use sizeof in type argument (1) can use sizeof in type argument (1) gets sizeof class gets sizeof class Crystal::Doc::Method doc gets doc from underlying method gets doc from underlying method inherits doc from ancestor (no extra comment) inherits doc from ancestor (no extra comment) inherits doc from ancestor (use :inherit:) inherits doc from ancestor (use :inherit:) trailing comment is not part of a doc comment trailing comment is not part of a doc comment inherits doc from previous def (no extra comment) inherits doc from previous def (no extra comment) inherits doc from ancestor (use :inherit: plus more content) inherits doc from ancestor (use :inherit: plus more content) trailing comment is not a doc comment trailing comment is not a doc comment args_to_s shows simple args shows simple args shows underscore restriction shows underscore restriction shows double splat args shows double splat args shows return type restriction shows return type restriction shows args and return type restriction shows args and return type restriction shows block args with underscore shows block args with underscore shows splat args shows splat args shows external name of arg shows external name of arg shows block args if a def has `yield` shows block args if a def has `yield` shows external name of arg with quotes and escaping shows external name of arg with quotes and escaping shows typeof restriction of arg with highlighting shows typeof restriction of arg with highlighting shows default value of arg with highlighting shows default value of arg with highlighting shows block args shows block args Semantic: offsetof can be used with generic types can be used with generic types errors on undefined instance variable errors on undefined instance variable errors on offsetof element of uninstantiated generic type errors on offsetof element of uninstantiated generic type gives error if using offsetof on Tuples with instance variables gives error if using offsetof on Tuples with instance variables gives error if using offsetof on something that's neither a class, a struct nor a Tuple gives error if using offsetof on something that's neither a class, a struct nor a Tuple gives error if using offsetof on something that can't have instance variables gives error if using offsetof on something that can't have instance variables gives error if using offsetof on Tuples with indexes greater than tuple size gives error if using offsetof on Tuples with indexes greater than tuple size types offsetof types offsetof gives error if using offsetof on non-Tuples with an index gives error if using offsetof on non-Tuples with an index can be used with classes can be used with classes gives error if using offsetof on Tuples with negative indexes gives error if using offsetof on Tuples with negative indexes errors on typeof inside offsetof expression errors on typeof inside offsetof expression Crystal::TextHierarchyPrinter shows correct total size of generic class if known shows correct total size of generic class if known works works shows correct size for Bool member shows correct size for Bool member shows correct size for Proc inside extern struct shows correct size for Proc inside extern struct shows correct size for members with bound types shows correct size for members with bound types Code gen: method_missing does method_missing macro without args (with call) does method_missing macro without args (with call) works with named arguments (#3654) works with named arguments (#3654) does method_missing with assignment (bug) does method_missing with assignment (bug) does method_missing macro with top level method involved does method_missing macro with top level method involved does method_missing macro with block does method_missing macro with block does method_missing macro with virtual type (3) does method_missing macro with virtual type (3) does method_missing macro with args (with call) does method_missing macro with args (with call) does method_missing macro with virtual type (7) does method_missing macro with virtual type (7) does method_missing macro with virtual type (2) does method_missing macro with virtual type (2) does method_missing macro without args does method_missing macro without args finds method_missing with 'with ... yield' finds method_missing with 'with ... yield' does method_missing macro with block but not using it does method_missing macro with block but not using it does method_missing macro with virtual type (1) does method_missing macro with virtual type (1) works with named arguments that aren't legal variable names (#10381) works with named arguments that aren't legal variable names (#10381) does method_missing macro with included module does method_missing macro with included module does method_missing with assignment (2) (bug) does method_missing with assignment (2) (bug) does method_missing macro with virtual type (5) does method_missing macro with virtual type (5) does method_missing macro with virtual type (8) does method_missing macro with virtual type (8) does method_missing generating method does method_missing generating method does method_missing macro with virtual type (4) does method_missing macro with virtual type (4) does method_missing macro with virtual type (6) does method_missing macro with virtual type (6) forwards forwards does method_missing macro with module involved does method_missing macro with module involved does method_missing macro with args does method_missing macro with args Semantic: macro overload doesn't overwrite last macro definition if named args differs doesn't overwrite last macro definition if named args differs Semantic: not filters types inside if/else filters types inside if/else filters types inside if filters types inside if doesn't restrict and in while (#4243) doesn't restrict and in while (#4243) doesn't restrict and doesn't restrict and types not types not types not as NoReturn if exp is NoReturn types not as NoReturn if exp is NoReturn filters types with !is_a? filters types with !is_a? Code gen: virtual type codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types codegens new for virtual class with two types returns type with virtual type def type returns type with virtual type def type codegens virtual call with explicit self codegens virtual call with explicit self correctly dispatch call with block when the obj is a virtual type correctly dispatch call with block when the obj is a virtual type dispatches on virtual metaclass (1) dispatches on virtual metaclass (1) calls class method 3 calls class method 3 codegens virtual call with explicit self and nilable type codegens virtual call with explicit self and nilable type call base overwritten method call base overwritten method initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with one type codegens allocate for virtual type with custom new codegens allocate for virtual type with custom new codegens virtual method of abstract metaclass codegens virtual method of abstract metaclass dispatch call with nilable virtual arg dispatch call with nilable virtual arg dispatches on virtual metaclass (3) dispatches on virtual metaclass (3) lookup instance variables in parent types lookup instance variables in parent types doesn't lookup in Value+ when virtual type is Object+ doesn't lookup in Value+ when virtual type is Object+ call overwritten method call overwritten method call base method call base method codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) calls class method 1 calls class method 1 dispatches on virtual metaclass (2) dispatches on virtual metaclass (2) codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type codegens call to Object#to_s from nilable type assign instance variable in virtual type assign instance variable in virtual type casts virtual type to union casts virtual type to union calls class method 2 calls class method 2 casts union to virtual casts union to virtual codegens new twice for virtual codegens new twice for virtual codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type codegens call to Object#to_s from virtual type casts virtual type to base virtual type casts virtual type to base virtual type casts metaclass union type to virtual metaclass type (#6298) casts metaclass union type to virtual metaclass type (#6298) dispatch call with virtual type argument dispatch call with virtual type argument can belong to union can belong to union codegens new for simple type, then for virtual codegens new for simple type, then for virtual codegens non-virtual call that calls virtual call to another virtual call codegens non-virtual call that calls virtual call to another virtual call Crystal::TablePrint rows with horizontal separators rows with horizontal separators single row with separator single row with separator single cell single cell multiple rows with separator multiple rows with separator aligns cell content aligns cell content colspan a cell that fits the available size colspan a cell that fits the available size aligns columns borders aligns columns borders Code gen: case codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case with one condition codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call codegens case when cond is a call does case when with metaclass does case when with metaclass codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with two conditions codegens case with class codegens case with class codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case that always returns codegens case when constant bug (#1028) codegens case when constant bug (#1028) codegens value-less case codegens value-less case codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case without whens but else codegens case with else codegens case with else codegens case with else codegens case with else codegens case with else codegens case with else codegens case with else codegens case with else codegens case with else codegens case with else Normalize: multi assign normalizes 1 to n, with splat on left-hand side, splat before other targets normalizes 1 to n, with splat on left-hand side, splat before other targets normalizes m to n, with splat on left-hand side, splat is non-empty normalizes m to n, with splat on left-hand side, splat is non-empty normalizes m to n, with *_ on left-hand side (3) normalizes m to n, with *_ on left-hand side (3) without strict_multi_assign normalizes 1 to n with [] normalizes 1 to n with [] normalizes 1 to n with call normalizes 1 to n with call normalizes 1 to n normalizes 1 to n normalizes n to splat on left-hand side normalizes n to splat on left-hand side normalizes n to *_ on left-hand side normalizes n to *_ on left-hand side normalizes n to n with call normalizes n to n with call strict_multi_assign normalizes 1 to n with call normalizes 1 to n with call normalizes 1 to n with [] normalizes 1 to n with [] normalizes 1 to n normalizes 1 to n normalizes n to n with [] normalizes n to n with [] normalizes 1 to splat on left-hand side normalizes 1 to splat on left-hand side normalizes m to n, with *_ on left-hand side (1) normalizes m to n, with *_ on left-hand side (1) normalizes 1 to n, with splat on left-hand side, splat after other targets normalizes 1 to n, with splat on left-hand side, splat after other targets normalizes n to n normalizes n to n normalizes m to n, with splat on left-hand side, splat is empty normalizes m to n, with splat on left-hand side, splat is empty normalizes 1 to n, with *_ on left-hand side (1) normalizes 1 to n, with *_ on left-hand side (1) normalizes 1 to *_ on left-hand side normalizes 1 to *_ on left-hand side normalizes 1 to n, with splat on left-hand side normalizes 1 to n, with splat on left-hand side normalizes 1 to n, with *_ on left-hand side (3) normalizes 1 to n, with *_ on left-hand side (3) normalizes 1 to n, with *_ on left-hand side (2) normalizes 1 to n, with *_ on left-hand side (2) normalizes m to n, with *_ on left-hand side (2) normalizes m to n, with *_ on left-hand side (2) Semantic: yield with scope yields virtual type (#2171) (2) yields virtual type (#2171) (2) it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it invokes global method inside block of yield scope it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method it uses self for instance method yields with dispatch (#2171) (1) yields with dispatch (#2171) (1) uses instance variable of enclosing scope uses instance variable of enclosing scope uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses scope in global method uses method of with object uses method of with object doesn't explode if specifying &block but never using it (#181) doesn't explode if specifying &block but never using it (#181) generate right code when yielding struct as scope generate right code when yielding struct as scope uses method of enclosing scope uses method of enclosing scope uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method uses scope in instance method Crystal::Repl::Interpreter symbol symbol equality symbol equality Symbol#to_i Symbol#to_i Symbol#to_s Symbol#to_s Code gen: if doesn't crash no NoReturn var (true left cond) (#1823) doesn't crash no NoReturn var (true left cond) (#1823) codes if with two whiles codes if with two whiles codegens if without an else with false codegens if without an else with false codegens if of nilable type in else 3 codegens if of nilable type in else 3 codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens if inside def without an else with true codegens if inside def without an else with true codegens if with int codegens if with int doesn't crash with if !is_a? using var in then doesn't crash with if !is_a? using var in then codegens if with nil codegens if with nil considers or truthy/falsey right considers or truthy/falsey right codegen if with union type and else without type codegen if with union type and else without type codegens if without an else with true codegens if without an else with true codegens if of nilable type in then 2 codegens if of nilable type in then 2 codegens if with union codegens if with union codegens nested if with var (ssa bug) codegens nested if with var (ssa bug) codegens if of nilable type in then codegens if of nilable type in then codegens if with an else with true codegens if with an else with true codegens #3104 codegens #3104 codegens if with pointer 0x100000000 pointer codegens if with pointer 0x100000000 pointer doesn't crash no NoReturn var (non-true left cond) (#1823) doesn't crash no NoReturn var (non-true left cond) (#1823) codegens if with return in both branches codegens if with return in both branches codegen if inside if codegen if inside if codegens if with virtual codegens if with virtual codegens if with an else with false codegens if with an else with false codegen if with nested if that returns codegen if with nested if that returns codegens if value from then codegens if value from then codegen if with union type and then without type codegen if with union type and then without type codegens if with return and no else codegens if with return and no else doesn't crash with if !var using var in else doesn't crash with if !var using var in else restricts with || always falsey restricts with || always falsey codegens if of nilable type in else codegens if of nilable type in else codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens if with nested if that raises codegens bug #1729 codegens bug #1729 doesn't generate truthy if branch if doesn't need value (bug) doesn't generate truthy if branch if doesn't need value (bug) Restrictions errors if using typeof inside generic type errors if using typeof inside generic type works with static array that uses underscore works with static array that uses underscore works with generic class metaclass vs. generic class metaclass works with generic class metaclass vs. generic class metaclass restricts aliased typedef type (#9474) restricts aliased typedef type (#9474) doesn't error if using NamedTuple with no args doesn't error if using NamedTuple with no args sets number as unbound generic type var (#13110) sets number as unbound generic type var (#13110) works with generic class metaclass vs. generic instance class metaclass works with generic class metaclass vs. generic instance class metaclass matches number in bound free variable (#13605) matches number in bound free variable (#13605) works with static array (#637) works with static array (#637) restricts class union type to overloads with classes restricts class union type to overloads with classes errors on T::Type that's union when used from type restriction errors on T::Type that's union when used from type restriction errors if using typeof errors if using typeof errors if using typeof in block restriction errors if using typeof in block restriction restricts class union type to overloads with classes (2) restricts class union type to overloads with classes (2) does not treat single path as free variable when given number (1) (#11859) does not treat single path as free variable when given number (1) (#11859) doesn't error if using Tuple with no args doesn't error if using Tuple with no args restriction_of? Metaclass vs Metaclass keeps typed Metaclass before untyped Metaclass keeps typed Metaclass before untyped Metaclass inserts typed Metaclass before untyped Metaclass inserts typed Metaclass before untyped Metaclass Path vs NumberLiteral inserts number literal before constant of same value with generic arguments inserts number literal before constant of same value with generic arguments inserts constant before number literal of same value with generic arguments inserts constant before number literal of same value with generic arguments Union handles redefinitions (2) (#12330) handles redefinitions (2) (#12330) handles redefinitions (1) (#12330) handles redefinitions (1) (#12330) orders union before generic (#12330) orders union before generic (#12330) Generic vs Path keeps typed Generic before untyped Path keeps typed Generic before untyped Path inserts untyped Generic before untyped Path inserts untyped Generic before untyped Path inserts typed Generic before untyped Path inserts typed Generic before untyped Path inserts untyped Generic before untyped Path (2) inserts untyped Generic before untyped Path (2) keeps untyped Generic before untyped Path keeps untyped Generic before untyped Path Path vs Path inserts typed Path before untyped Path inserts typed Path before untyped Path keeps typed Path before untyped Path keeps typed Path before untyped Path GenericClassType vs GenericClassInstanceType inserts GenericClassInstanceType before GenericClassType inserts GenericClassInstanceType before GenericClassType works with classes in different namespaces works with classes in different namespaces doesn't mix different generic classes doesn't mix different generic classes keeps GenericClassInstanceType before GenericClassType keeps GenericClassInstanceType before GenericClassType Metaclass vs Path keeps metaclass before Value keeps metaclass before Value doesn't error if path is undefined and method is not called (2) (#12516) doesn't error if path is undefined and method is not called (2) (#12516) keeps metaclass before Class keeps metaclass before Class inserts metaclass before Class inserts metaclass before Class inserts metaclass before Object inserts metaclass before Object doesn't error if path is undefined and method is not called (1) (#12516) doesn't error if path is undefined and method is not called (1) (#12516) inserts metaclass before Value inserts metaclass before Value keeps metaclass before Object keeps metaclass before Object Generic vs Generic inserts typed Generic before untyped Generic inserts typed Generic before untyped Generic keeps typed Generic before untyped Generic keeps typed Generic before untyped Generic NamedTuple vs NamedTuple doesn't mix incompatible NamedTuples (#10238) doesn't mix incompatible NamedTuples (#10238) keeps more specialized NamedTuple before less specialized one keeps more specialized NamedTuple before less specialized one inserts more specialized NamedTuple before less specialized one inserts more specialized NamedTuple before less specialized one Underscore vs Path keeps underscore after Path (#12854) keeps underscore after Path (#12854) works with splats and modules, under -Dpreview_overload_order (#12854) works with splats and modules, under -Dpreview_overload_order (#12854) inserts Path before underscore (#12854) inserts Path before underscore (#12854) free variables keeps path before free variable with same name keeps path before free variable with same name keeps constant before free variable with same name keeps constant before free variable with same name inserts constant before free variable with same name inserts constant before free variable with same name inserts path before free variable with same name inserts path before free variable with same name keeps path before free variable even if free var resolves to a more specialized type keeps path before free variable even if free var resolves to a more specialized type inserts path before free variable even if free var resolves to a more specialized type inserts path before free variable even if free var resolves to a more specialized type allows passing recursive type to free var (#1076) allows passing recursive type to free var (#1076) errors if using free var without forall errors if using free var without forall makes metaclass subclass pass parent metaclass restriction (#2079) makes metaclass subclass pass parent metaclass restriction (#2079) errors if using NamedTuple with positional args errors if using NamedTuple with positional args errors if using Tuple with named args errors if using Tuple with named args errors if can't find type on lookup with nested type errors if can't find type on lookup with nested type errors if can't find type on lookup errors if can't find type on lookup restricts virtual metaclass type against metaclass (#3438) restricts virtual metaclass type against metaclass (#3438) passes #278 passes #278 matches alias against alias in block type matches alias against alias in block type matches virtual type against alias matches virtual type against alias self always matches instance type in return type self always matches instance type in return type errors on T::Type that's a union when used from block type restriction errors on T::Type that's a union when used from block type restriction restrict restricts module with another module restricts module with another module restricts type with same type restricts type with same type restricts type with superclass restricts type with superclass restricts generic module instance with class restricts generic module instance with class restricts virtual generic class against uninstantiated generic subclass (1) restricts virtual generic class against uninstantiated generic subclass (1) restricts virtual generic class against uninstantiated generic subclass (2) restricts virtual generic class against uninstantiated generic subclass (2) restricts type with another type restricts type with another type restricts generic module instance with another generic module instance restricts generic module instance with another generic module instance restricts virtual type with included module 1 restricts virtual type with included module 1 restricts virtual type with included module 2 restricts virtual type with included module 2 restricts class against uninstantiated generic base class through multiple inheritance (2) (#9660) restricts class against uninstantiated generic base class through multiple inheritance (2) (#9660) restricts module through generic include (#4287) restricts module through generic include (#4287) restricts type with included module restricts type with included module restricts class against uninstantiated generic base class through multiple inheritance (1) (#9660) restricts class against uninstantiated generic base class through multiple inheritance (1) (#9660) restricts generic module instance with another module restricts generic module instance with another module works with generic compared to fixed (primitive) type works with generic compared to fixed (primitive) type does not treat single path as free variable when given number (2) (#11859) does not treat single path as free variable when given number (2) (#11859) errors if using typeof in block restriction errors if using typeof in block restriction should not let GenericChild(Base) pass as a GenericBase(Child) (#1294) should not let GenericChild(Base) pass as a GenericBase(Child) (#1294) self always matches instance type in restriction self always matches instance type in restriction matches free variable for type variable matches free variable for type variable sets number as free variable (#2699) sets number as free variable (#2699) works with union against unions of generics works with union against unions of generics Codegen: extern struct doesn't crash with proc with extern struct that's a closure doesn't crash with proc with extern struct that's a closure declares extern union, sets and gets instance var declares extern union, sets and gets instance var invokes proc with extern struct with sret invokes proc with extern struct with sret invokes proc with extern struct invokes proc with extern struct codegens extern proc call twice (#4982) codegens extern proc call twice (#4982) declares extern struct with no constructor, assigns var declares extern struct with no constructor, assigns var sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct sets callback on extern struct codegens proc that takes and returns large extern struct by value codegens proc that takes and returns large extern struct by value codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI, callback returns nil codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI codegens proc that takes an extern struct with C ABI declares extern union with no constructor declares extern union with no constructor sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union sets callback on extern union declares extern struct, sets and gets instance var declares extern struct, sets and gets instance var declares extern struct with no constructor declares extern struct with no constructor codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with sret codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes and returns an extern struct with C ABI codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) codegens proc that takes an extern struct with C ABI (2) Semantic: annotation errors if wanting to add type inside annotation (2) (#8614) errors if wanting to add type inside annotation (2) (#8614) #annotation finds annotation in instance var (assignment) finds annotation in instance var (assignment) errors if using invalid annotation on fun errors if using invalid annotation on fun finds annotation in generic parent (#7885) finds annotation in generic parent (#7885) finds annotation on method arg finds annotation on method arg finds annotation in enum finds annotation in enum can't find annotation in module can't find annotation in module can't find annotation in instance var, when other annotations are present can't find annotation in instance var, when other annotations are present overrides annotation value in type overrides annotation value in type overrides annotation in instance var overrides annotation in instance var finds annotation on method splat arg finds annotation on method splat arg errors if annotation doesn't exist errors if annotation doesn't exist finds annotation in module finds annotation in module finds annotation in instance var (declaration) finds annotation in instance var (declaration) doesn't carry link annotation from lib to fun doesn't carry link annotation from lib to fun errors if using annotation other than ThreadLocal for class vars errors if using annotation other than ThreadLocal for class vars finds annotation in instance var (declaration, generic) finds annotation in instance var (declaration, generic) can't find annotation on def can't find annotation on def uses annotation value, keyword uses annotation value, keyword can't find annotation in module, when other annotations are present can't find annotation in module, when other annotations are present adds annotation on def adds annotation on def finds annotation in struct finds annotation in struct finds annotation in class finds annotation in class finds annotation on method double splat arg finds annotation on method double splat arg can't find annotation in instance var can't find annotation in instance var can't find annotation on def, when other annotations are present can't find annotation on def, when other annotations are present finds annotation on an restricted method block arg finds annotation on an restricted method block arg errors if annotation doesn't point to an annotation type errors if annotation doesn't point to an annotation type finds annotation in lib finds annotation in lib uses annotation value, positional uses annotation value, positional arguments returns a correctly with named and positional args returns a correctly with named and positional args #named_args returns an empty NamedTupleLiteral if there are none defined returns an empty NamedTupleLiteral if there are none defined returns a NamedTupleLiteral if there are named arguments defined returns a NamedTupleLiteral if there are named arguments defined #args returns an empty TupleLiteral if there are none defined returns an empty TupleLiteral if there are none defined returns a TupleLiteral if there are positional arguments defined returns a TupleLiteral if there are positional arguments defined #annotations all types finds annotations on a enum finds annotations on a enum finds annotations on a class finds annotations on a class finds annotations on a lib finds annotations on a lib find annotations on method parameters find annotations on method parameters finds annotations on a module finds annotations on a module finds annotations on a struct finds annotations on a struct finds annotations in instance var (declaration) finds annotations in instance var (declaration) adds annotations on def adds annotations on def finds annotations in instance var (declaration, generic) finds annotations in instance var (declaration, generic) returns an empty array if there are none defined returns an empty array if there are none defined finds annotations in generic parent (#7885) finds annotations in generic parent (#7885) of a specific type returns an empty array if there are none defined returns an empty array if there are none defined uses annotations value, positional uses annotations value, positional finds annotations in struct finds annotations in struct adds annotations on def adds annotations on def collects annotations values in type collects annotations values in type can't find annotations on def can't find annotations on def can't find annotations in instance var can't find annotations in instance var uses annotations value, keyword uses annotations value, keyword find annotations on method parameters find annotations on method parameters finds annotations in instance var (declaration) finds annotations in instance var (declaration) can't find annotations on def, when other annotations are present can't find annotations on def, when other annotations are present finds annotations in generic parent (#7885) finds annotations in generic parent (#7885) finds annotations in class finds annotations in class finds annotations in instance var (declaration, generic) finds annotations in instance var (declaration, generic) finds annotations in lib finds annotations in lib finds annotations in enum finds annotations in enum overrides annotations value in type overrides annotations value in type finds annotations on a module finds annotations on a module can't find annotations in instance var, when other annotations are present can't find annotations in instance var, when other annotations are present errors if wanting to add type inside annotation (1) (#8614) errors if wanting to add type inside annotation (1) (#8614) declares annotation declares annotation doesn't bleed annotation from class into class variable (#8314) doesn't bleed annotation from class into class variable (#8314) errors when annotate instance variable in subclass errors when annotate instance variable in subclass Codegen: responds_to? codegens responds_to? with union gives true codegens responds_to? with union gives true works with generic virtual superclass (2) works with generic virtual superclass (2) works with generic virtual superclass (1) works with generic virtual superclass (1) works with virtual type works with virtual type doesn't error if result is discarded (#14113) doesn't error if result is discarded (#14113) codegens responds_to? with generic class (1) codegens responds_to? with generic class (1) works with virtual class type (1) (#1926) works with virtual class type (1) (#1926) works with virtual class type (2) (#1926) works with virtual class type (2) (#1926) works with generic virtual module (2) (#8334) works with generic virtual module (2) (#8334) codegens responds_to? true for simple type codegens responds_to? true for simple type codegens responds_to? with generic class (2) codegens responds_to? with generic class (2) codegens responds_to? with nilable gives false because other type 2 codegens responds_to? with nilable gives false because other type 2 works with two virtual types works with two virtual types works with generic virtual module (1) works with generic virtual module (1) codegens responds_to? with nilable gives false because other type 1 codegens responds_to? with nilable gives false because other type 1 works with module works with module codegens responds_to? with nilable gives true codegens responds_to? with nilable gives true does for generic instance type metaclass (#4353) does for generic instance type metaclass (#4353) codegens responds_to? with union gives false codegens responds_to? with union gives false codegens responds_to? false for simple type codegens responds_to? false for simple type Semantic: closure correctly captures type of closured block arg correctly captures type of closured block arg doesn't crash for non-existing variable (#3789) doesn't crash for non-existing variable (#3789) doesn't mark var as closured if only used in two block doesn't mark var as closured if only used in two block marks variable as closured inside block in fun marks variable as closured inside block in fun marks method as self closured if instance var is written marks method as self closured if instance var is written marks outer fun inside a block as closured marks outer fun inside a block as closured doesn't mark self var as closured, but marks method as self closured doesn't mark self var as closured, but marks method as self closured marks outer fun as closured when using self marks outer fun as closured when using self lookups return type in correct scope lookups return type in correct scope says can't send closure to C with captured block says can't send closure to C with captured block transforms block to proc literal with free var transforms block to proc literal with free var gives error when doing yield inside proc literal gives error when doing yield inside proc literal errors if giving more block args when transforming block to proc literal errors if giving more block args when transforming block to proc literal errors if sending closured proc pointer to C (3) errors if sending closured proc pointer to C (3) marks method as self closured if explicit self call is made marks method as self closured if explicit self call is made marks method as self closured if used inside a block marks method as self closured if used inside a block marks variable as closured in program on assign marks variable as closured in program on assign errors when transforming block to proc literal if type mismatch errors when transforming block to proc literal if type mismatch errors if sending closured proc pointer to C (1.2) errors if sending closured proc pointer to C (1.2) does assign all types to metavar if closured but only assigned to once in a loop through block does assign all types to metavar if closured but only assigned to once in a loop through block can use fun typedef as block type can use fun typedef as block type marks variable as closured in def marks variable as closured in def transforms block to proc literal without parameters transforms block to proc literal without parameters says can't send closure to C with new notation says can't send closure to C with new notation errors if sending closured proc pointer to C (1) errors if sending closured proc pointer to C (1) errors if sending closured proc pointer to C (2) errors if sending closured proc pointer to C (2) unifies types of closured var (1) unifies types of closured var (1) doesn't assign all types to metavar if closured but declared inside block and re-assigned inside the same context before the closure doesn't assign all types to metavar if closured but declared inside block and re-assigned inside the same context before the closure marks method as self closured if implicit self call is made marks method as self closured if implicit self call is made correctly detects previous var as closured (#5609) correctly detects previous var as closured (#5609) doesn't closure typeof instance var (#9479) doesn't closure typeof instance var (#9479) marks method as self closured if instance var is read marks method as self closured if instance var is read does assign all types to metavar if closured but only assigned to once in a loop does assign all types to metavar if closured but only assigned to once in a loop errors if forwarding block param doesn't match input type size errors if forwarding block param doesn't match input type size does assign all types to metavar if closured but only assigned to once in a loop through captured block does assign all types to metavar if closured but only assigned to once in a loop through captured block marks variable as closured in program marks variable as closured in program errors if forwarding block param doesn't match input type errors if forwarding block param doesn't match input type doesn't closure typeof local var doesn't closure typeof local var transforms block to proc literal transforms block to proc literal doesn't assign all types to metavar if closured but declared inside block and never re-assigned doesn't assign all types to metavar if closured but declared inside block and never re-assigned gives error when doing yield inside proc literal gives error when doing yield inside proc literal doesn't assign all types to metavar if closured but only assigned to once doesn't assign all types to metavar if closured but only assigned to once marks variable as closured in block marks variable as closured in block allows passing block as proc literal to new and to initialize allows passing block as proc literal to new and to initialize unifies types of closured var (2) unifies types of closured var (2) allows giving less block args when transforming block to proc literal allows giving less block args when transforming block to proc literal is considered as closure if assigned once but comes from a method arg is considered as closure if assigned once but comes from a method arg passes #227 passes #227 transforms block to proc literal with void type transforms block to proc literal with void type errors if sending closured proc literal to C errors if sending closured proc literal to C doesn't mark var as closured if only used in block doesn't mark var as closured if only used in block considers var as closure-readonly if it was assigned multiple times before it was closured considers var as closure-readonly if it was assigned multiple times before it was closured Code gen: primitives codegens f32 codegens f32 defined method that calls primitive (bug) defined method that calls primitive (bug) va_arg uses llvm's va_arg instruction uses llvm's va_arg instruction works with C code works with C code works with C code works with C code works with C code works with C code works with C code works with C code works with C code works with C code codegens crystal_type_id for class codegens crystal_type_id for class codegens int128 codegens int128 codegens int128 codegens int128 codegens int128 codegens int128 codegens int128 codegens int128 codegens int128 codegens int128 gets crystal class instance type id gets crystal class instance type id codegens int codegens int can invoke binary on primitive typedef (#614) can invoke binary on primitive typedef (#614) codegens string codegens string allows @[Primitive] on fun declarations allows @[Primitive] on fun declarations doesn't optimize away call whose obj is not passed as self (#2226) doesn't optimize away call whose obj is not passed as self (#2226) sums two numbers out of an [] of Number sums two numbers out of an [] of Number codegens pointer of int codegens pointer of int codegens bool codegens bool codegens char codegens char allows redefining a primitive method allows redefining a primitive method codegens f64 codegens f64 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens uint128 codegens char ord codegens char ord can invoke cast on primitive typedef (#614) can invoke cast on primitive typedef (#614) codegens __LINE__ codegens __LINE__ codegens crystal_type_id with union type codegens crystal_type_id with union type codegens long codegens long doesn't treat `(1 == 1) == true` as `1 == 1 == true` (#328) doesn't treat `(1 == 1) == true` as `1 == 1 == true` (#328) allows @[Primitive] on method that has body allows @[Primitive] on method that has body uses built-in llvm function that returns a tuple uses built-in llvm function that returns a tuple passes issue #328 passes issue #328 arithmetic primitives codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 1 - 2 codegens 16.unsafe_shr 2 codegens 16.unsafe_shr 2 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_i16 codegens 1.to_f! codegens 1.to_f! codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 1.to_f codegens 8.unsafe_div 3 codegens 8.unsafe_div 3 codegens 1 &- 2 codegens 1 &- 2 codegens 2 &* 3 codegens 2 &* 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 2 * 3 codegens 16.unsafe_shl 2 codegens 16.unsafe_shl 2 codegens 1.to_i16! codegens 1.to_i16! codegens 8.unsafe_mod 3 codegens 8.unsafe_mod 3 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 codegens 1 + 2 skips bounds checking when to_i produces same type skips bounds checking when to_i produces same type codegens 1 &+ 2 codegens 1 &+ 2 atomicrmw codegens atomicrmw with enums codegens atomicrmw with enums codegens atomicrmw with symbols codegens atomicrmw with symbols codegens atomicrmw with enums codegens atomicrmw with enums Semantic: cast doesn't eagerly try to check cast type (#12268) doesn't eagerly try to check cast type (#12268) casts to same type is ok casts to same type is ok doesn't crash with typeof no-type (#7441) doesn't crash with typeof no-type (#7441) doesn't cast to unbound generic type (as?) (#5927) doesn't cast to unbound generic type (as?) (#5927) casts to generic virtual type casts to generic virtual type disallows casting int to pointer disallows casting int to pointer casts from union to compatible union casts from union to compatible union can cast to metaclass (bug) can cast to metaclass (bug) casts to target type even if can't infer casted value type (obsolete) casts to target type even if can't infer casted value type (obsolete) doesn't cast to unbound generic type (as) (#5927) doesn't cast to unbound generic type (as) (#5927) casts to module casts to module disallows casting to Reference disallows casting to Reference casts pointer of one type to another type casts pointer of one type to another type can cast from Void* to virtual type (#3014) can cast from Void* to virtual type (#3014) disallows casting to Class disallows casting to Class considers else to be unreachable (#9658) considers else to be unreachable (#9658) casts from union to incompatible union gives error casts from union to incompatible union gives error errors if casting nil to Object inside typeof (#2403) errors if casting nil to Object inside typeof (#2403) can cast to metaclass (2) (#11121) can cast to metaclass (2) (#11121) casts pointer to another type casts pointer to another type doesn't cast to virtual primitive (bug) doesn't cast to virtual primitive (bug) doesn't allow upcast of generic type var (#996) doesn't allow upcast of generic type var (#996) allows casting reference union to void pointer allows casting reference union to void pointer allows casting object to void pointer allows casting object to void pointer casts to compatible type and use it casts to compatible type and use it casts to base class making it virtual (2) casts to base class making it virtual (2) errors on cast inside a call that can't be instantiated errors on cast inside a call that can't be instantiated doesn't error if casting to a generic type doesn't error if casting to a generic type disallows casting fun to pointer disallows casting fun to pointer casts from pointer to generic class gives error casts from pointer to generic class gives error disallows casting pointer to fun disallows casting pointer to fun casts to base class making it virtual (1) casts to base class making it virtual (1) allows casting NoReturn to any type (#2132) allows casting NoReturn to any type (#2132) should error if can't cast even if not instantiated should error if can't cast even if not instantiated casts uninstantiated generic class to itself (#10882) casts uninstantiated generic class to itself (#10882) disallows casting to Object (#815) disallows casting to Object (#815) casts to incompatible type gives error casts to incompatible type gives error casts to bigger union casts to bigger union Crystal::Doc::ProjectInfo .find_git_version .find_git_version .find_source_url_pattern .find_source_url_pattern .read_shard_properties indented properties indented properties strip whitespace strip whitespace ignores comments ignores comments duplicate properties uses first one duplicate properties uses first one no shard.yml no shard.yml strip quotes strip quotes empty properties empty properties name and version name and version only name only name without name and version properties without name and version properties .git_remote no git workdir no git workdir no origin remote no origin remote origin plus other origin plus other simple origin simple origin no remote no remote #fill_with_defaults no shard.yml, but git tagged version no shard.yml, but git tagged version empty folder empty folder with shard.yml git tagged version git tagged version git with remote git with remote git but no commit git but no commit git untracked file doesn't prevent detection git untracked file doesn't prevent detection git missing git missing git non-tagged commit dirty git non-tagged commit dirty git tagged version dirty git tagged version dirty not in a git folder not in a git folder git non-tagged commit git non-tagged commit #source_url fails if pattern is missing fails if pattern is missing builds url builds url fails if pattern is missing fails if pattern is missing returns nil for empty pattern returns nil for empty pattern fails if refname is missing fails if refname is missing builds url builds url Normalize: until normalizes until normalizes until Semantic: restrictions augmenter augments Bool augments Bool augments relative public type augments relative public type augments Int32.class augments Int32.class augments Char augments Char augments Tuple(Int32, Char) augments Tuple(Int32, Char) doesn't augment if the no_restrictions_augmenter flag is present doesn't augment if the no_restrictions_augmenter flag is present augments Char | Int32 | String augments Char | Int32 | String augments virtual type augments virtual type augments Int32 augments Int32 augments relative private type in same namespace augments relative private type in same namespace doesn't augment if assigned inside if doesn't augment if assigned inside if augments Char | Int32 | String augments Char | Int32 | String augments Enumerable(Int32).class augments Enumerable(Int32).class augments Nil augments Nil augments Float32 augments Float32 augments Proc(Int32, Char) augments Proc(Int32, Char) augments for class var augments for class var augments Array(String) augments Array(String) augments virtual metaclass type augments virtual metaclass type augments for Union(*T) (#12435) augments for Union(*T) (#12435) augments typedef augments typedef augments StaticArray(Int32, 8) augments StaticArray(Int32, 8) augments NoReturn augments NoReturn augments String augments String augments recursive alias type (#12134) augments recursive alias type (#12134) doesn't augment if assigned inside while doesn't augment if assigned inside while augments Pointer(Void) augments Pointer(Void) augments generic uninstantiated type augments generic uninstantiated type augments Array(Int32).class augments Array(Int32).class augments NamedTuple(a: Int32, b: Char) augments NamedTuple(a: Int32, b: Char) doesn't crash on macro that yields and defines class (#12142) doesn't crash on macro that yields and defines class (#12142) doesn't augment if assigned inside block doesn't augment if assigned inside block augments Proc(Int32, Nil) augments Proc(Int32, Nil) augments Symbol augments Symbol augments relative private type augments relative private type augments type splat augments type splat Codegen: while doesn't crash on #2767 (2) doesn't crash on #2767 (2) codegens while with declared var 3 codegens while with declared var 3 codegens while with declared var 1 codegens while with declared var 1 codegens while with declared var 2 codegens while with declared var 2 endless break with value endless break with value doesn't crash on #2767 (3) doesn't crash on #2767 (3) codegens while with false codegens while with false skip block with next skip block with next break without value break without value codegens def with while codegens def with while conditional break without value conditional break without value endless conditional break with value endless conditional break with value doesn't crash on #2767 doesn't crash on #2767 break with value, condition fails break with value, condition fails doesn't crash on #2767 (4) doesn't crash on #2767 (4) conditional break with value conditional break with value codegens while with non-false condition codegens while with non-false condition break with value break with value doesn't crash on a = NoReturn doesn't crash on a = NoReturn doesn't crash on while true begin break rescue (#7786) doesn't crash on while true begin break rescue (#7786) codegens endless while codegens endless while Crystal::Config .linux_runtime_libc .linux_runtime_libc .host_target .host_target Semantic: primitives types char ord types char ord can invoke cast on primitive typedef (#614) can invoke cast on primitive typedef (#614) Reference.pre_initialize types with virtual reference type types with virtual reference type types with reference type types with reference type errors on uninstantiated generic type errors on uninstantiated generic type errors on abstract type errors on abstract type types a float32 types a float32 types 1 + 2 types 1 + 2 types a float64 types a float64 types pointer of int types pointer of int types a char types a char types va_arg primitive types va_arg primitive errors if @[Primitive] has no args errors if @[Primitive] has no args types nop types nop types a symbol types a symbol types a bool types a bool extends from Number and doesn't find to_i method extends from Number and doesn't find to_i method types an expression types an expression Slice.literal with element type types empty literal types empty literal errors if element type is not primitive int or float errors if element type is not primitive int or float types primitive float literal types primitive float literal errors if element is out of range errors if element is out of range errors if element is not number literal errors if element is not number literal types primitive int literal types primitive int literal types nil types nil correctly types first hash from type vars (bug) correctly types first hash from type vars (bug) computes correct hash value type if it's a function literal (#320) computes correct hash value type if it's a function literal (#320) can invoke binary on primitive typedef (#614) can invoke binary on primitive typedef (#614) types a string types a string errors if using instance variable inside primitive type errors if using instance variable inside primitive type types a uint128 types a uint128 types an int32 types an int32 types @[Primitive] method types @[Primitive] method errors when comparing void (#225) errors when comparing void (#225) can invoke binary on primitive typedef (2) (#614) can invoke binary on primitive typedef (2) (#614) extends from Number and doesn't find + method extends from Number and doesn't find + method looks up return type in correct scope (#13652) looks up return type in correct scope (#13652) types a int128 types a int128 types a int64 types a int64 errors if @[Primitive] has non-symbol arg errors if @[Primitive] has non-symbol arg extends from Number and doesn't find >= method extends from Number and doesn't find >= method allows @[Primitive] on method that has body allows @[Primitive] on method that has body Crystal::Repl can return static and runtime type information for VirtualType VirtualType MixedUnionType MixedUnionType Non Union Non Union UnionType UnionType can parse and evaluate snippets can parse and evaluate snippets Code gen: hooks does added method macro does added method macro does finished does finished fixes empty types in hooks (#3946) fixes empty types in hooks (#3946) does inherited macro recursively does inherited macro recursively does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does extended macro does extended macro does included macro does included macro does inherited macro does inherited macro Codegen: super codegens super that calls subclass method 6 codegens super that calls subclass method 6 codegens super without arguments and instance variable codegens super without arguments and instance variable does super in virtual type including module does super in virtual type including module build super on generic class (bug) build super on generic class (bug) codegens super that calls subclass method 4 codegens super that calls subclass method 4 doesn't invoke super twice in inherited generic types (#942) doesn't invoke super twice in inherited generic types (#942) codegens super that calls subclass method 3 codegens super that calls subclass method 3 calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super in metaclass (#1522) codegens super inside closure forwarding args codegens super inside closure forwarding args codegens super inside closure codegens super inside closure calls super from virtual metaclass type (#2841) calls super from virtual metaclass type (#2841) codegens super without arguments codegens super without arguments codegens super that calls subclass method 5 codegens super that calls subclass method 5 calls super on an object (#10004) calls super on an object (#10004) calls super in generic module method calls super in generic module method codegens super that calls subclass method 2 codegens super that calls subclass method 2 calls super in module method (#556) calls super in module method (#556) codegens super that calls subclass method codegens super that calls subclass method codegens super without arguments but parent has arguments codegens super without arguments but parent has arguments calls super with dispatch (#2318) calls super with dispatch (#2318) Semantic: new errors if using self call in default argument (2) errors if using self call in default argument (2) evaluates initialize default value at the instance scope (2) (#731) evaluates initialize default value at the instance scope (2) (#731) doesn't have default new for inherited class from generic type doesn't have default new for inherited class from generic type evaluates initialize default value at the instance scope (4) (#731) evaluates initialize default value at the instance scope (4) (#731) inherits initialize and new methods if doesn't define new (#3238) inherits initialize and new methods if doesn't define new (#3238) errors if using self call in default argument (1) errors if using self call in default argument (1) evaluates initialize default value at the instance scope (6) (#731) evaluates initialize default value at the instance scope (6) (#731) errors if using self call in default argument (3) errors if using self call in default argument (3) evaluates initialize default value at the instance scope (5) (#731) evaluates initialize default value at the instance scope (5) (#731) uses correct receiver for `initialize` in namespaced generic classes (#4086) uses correct receiver for `initialize` in namespaced generic classes (#4086) evaluates initialize default value at the instance scope (1) (#731) evaluates initialize default value at the instance scope (1) (#731) evaluates initialize default value at the instance scope (3) (#731) evaluates initialize default value at the instance scope (3) (#731) doesn't incorrectly redefines new for generic class doesn't incorrectly redefines new for generic class Code gen: new finds new in superclass if no initialize is defined (1) finds new in superclass if no initialize is defined (1) evaluates initialize default value at the instance scope (3) (#731) evaluates initialize default value at the instance scope (3) (#731) codegens instance method with new codegens instance method with new evaluates initialize default value at the instance scope (4) (#731) evaluates initialize default value at the instance scope (4) (#731) evaluates initialize default value at the instance scope (2) (#731) evaluates initialize default value at the instance scope (2) (#731) finds super in deep hierarchy finds super in deep hierarchy defines new for module defines new for module can create Reference can create Reference inherits initialize for generic type inherits initialize for generic type overloads new and initialize, 2 (#2489) overloads new and initialize, 2 (#2489) finds new in superclass for Enum finds new in superclass for Enum codegens instance method with new and instance var codegens instance method with new and instance var inherits initialize inherits initialize overloads new and initialize, 3 (#2489) overloads new and initialize, 3 (#2489) can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new can create Tuple with Tuple.new codegens instance method with allocate codegens instance method with allocate overloads new and initialize, 1 (#2489) overloads new and initialize, 1 (#2489) evaluates initialize default value at the instance scope (1) (#731) evaluates initialize default value at the instance scope (1) (#731) finds new in superclass if no initialize is defined (2) finds new in superclass if no initialize is defined (2) Semantic: multi assign without strict_multi_assign errors if assigning non-Indexable to splat (#11414) errors if assigning non-Indexable to splat (#11414) doesn't error if assigning non-Indexable (#11414) doesn't error if assigning non-Indexable (#11414) doesn't error if assigning tuple to fewer targets doesn't error if assigning tuple to fewer targets strict_multi_assign errors if assigning non-Indexable (#11414) errors if assigning non-Indexable (#11414) errors if assigning tuple to more targets errors if assigning tuple to more targets doesn't error if some type in union matches target count doesn't error if some type in union matches target count errors if assigning tuple to fewer targets errors if assigning tuple to fewer targets errors if assigning non-Indexable to splat (#11414) errors if assigning non-Indexable to splat (#11414) doesn't error if some type in union has no constant size doesn't error if some type in union has no constant size errors if assigning union of tuples to fewer targets errors if assigning union of tuples to fewer targets can pass splat variable at top-level to macros (#11596) can pass splat variable at top-level to macros (#11596) Semantic: while doesn't fail on new variables inside typeof condition doesn't fail on new variables inside typeof condition uses var type inside while if endless loop uses var type inside while if endless loop doesn't type var as nilable after break inside rescue doesn't type var as nilable after break inside rescue finds while cond assign target in Not (#10345) finds while cond assign target in Not (#10345) restricts type after while (#4242) restricts type after while (#4242) types endless while with break without value types endless while with break without value doesn't use type at end of endless while if variable is reassigned (2) doesn't use type at end of endless while if variable is reassigned (2) types endless while with multiple breaks with value types endless while with multiple breaks with value doesn't restrict type after while if there's a break (#4242) doesn't restrict type after while if there's a break (#4242) rebinds condition variable after while body (#6158) rebinds condition variable after while body (#6158) types while with && (#1425) types while with && (#1425) marks variable as nil if breaking before assigning to it in an endless loop (2) marks variable as nil if breaking before assigning to it in an endless loop (2) reports break cannot be used outside a while reports break cannot be used outside a while types while with assignment types while with assignment restricts type after `while` with `not` and `and` (#4242) restricts type after `while` with `not` and `and` (#4242) types while with assignment and && types while with assignment and && types endless while with break with value types endless while with break with value types while (true) as NoReturn types while (true) as NoReturn doesn't fail on Expressions condition (2) doesn't fail on Expressions condition (2) types variable as nilable if raise before assign types variable as nilable if raise before assign uses type at end of endless while if variable is reassigned, but not before first break (2) uses type at end of endless while if variable is reassigned, but not before first break (2) restricts type after while with not (#4242) restricts type after while with not (#4242) types while with multiple breaks with value types while with multiple breaks with value finds all while cond assign targets in expressions (6) finds all while cond assign targets in expressions (6) doesn't use type at end of endless while if variable is reassigned doesn't use type at end of endless while if variable is reassigned types while with break with value types while with break with value finds all while cond assign targets in expressions (5) finds all while cond assign targets in expressions (5) types while with assignment and call types while with assignment and call types while with break without value types while with break without value doesn't fail on Expressions condition (1) doesn't fail on Expressions condition (1) doesn't fail on nested conditionals inside typeof condition doesn't fail on nested conditionals inside typeof condition finds all while cond assign targets in expressions (4) finds all while cond assign targets in expressions (4) uses type at end of endless while if variable is reassigned, but not before first break uses type at end of endless while if variable is reassigned, but not before first break finds all while cond assign targets in expressions (#10350) finds all while cond assign targets in expressions (#10350) doesn't modify var's type before while doesn't modify var's type before while doesn't use type at end of endless while if variable is reassigned (3) doesn't use type at end of endless while if variable is reassigned (3) types while true as NoReturn types while true as NoReturn uses var type inside while if endless loop (2) uses var type inside while if endless loop (2) types while types while reports next cannot be used outside a while reports next cannot be used outside a while finds all while cond assign targets in expressions (3) finds all while cond assign targets in expressions (3) marks variable as nil if breaking before assigning to it in an endless loop marks variable as nil if breaking before assigning to it in an endless loop types while ((true)) as NoReturn types while ((true)) as NoReturn finds all while cond assign targets in expressions (2) finds all while cond assign targets in expressions (2) Codegen: thread local compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer compiles with class variable referenced from initializer works with class variables works with class variables works with class variables works with class variables works with class variables works with class variables works with class variables works with class variables works with class variables works with class variables works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread works with class variable in main thread Semantic: struct types struct getter with keyword name types struct getter with keyword name errors if includes and field already exists, the other way around errors if includes and field already exists, the other way around errors if invoking to_unsafe and got error in that call errors if invoking to_unsafe and got error in that call errors if already defined with another type (2) errors if already defined with another type (2) errors on struct setter if different type via new errors on struct setter if different type via new includes another struct includes another struct supports macro if inside struct supports macro if inside struct allows inline forward declaration allows inline forward declaration errors if already defined errors if already defined automatically converts numeric type in struct field assignment automatically converts numeric type in struct field assignment types struct types struct errors if setting closure errors if setting closure types Struct#new types Struct#new errors on struct if no field errors on struct if no field errors if using void in struct field type errors if using void in struct field type errors on struct setter if different type errors on struct setter if different type errors if already defined with another type errors if already defined with another type marks as packed marks as packed errors if includes and field already exists errors if includes and field already exists errors if using void via typedef in struct field type errors if using void via typedef in struct field type errors if includes non-cstruct type errors if includes non-cstruct type can access instance var from the outside (#1092) can access instance var from the outside (#1092) types struct getter multiple levels via new types struct getter multiple levels via new types struct getter on pointer type types struct getter on pointer type errors if invoking to_i32! and got wrong type errors if invoking to_i32! and got wrong type errors if invoking to_unsafe and got different type errors if invoking to_unsafe and got different type errors on empty c struct (#633) errors on empty c struct (#633) types struct setter types struct setter errors if includes unknown type errors if includes unknown type types struct getter to struct types struct getter to struct errors if invoking to_i32! and got error in that call errors if invoking to_i32! and got error in that call types struct getter types struct getter Crystal::Repl::Interpreter extern discards primitive struct_or_union_set and get (struct) discards primitive struct_or_union_set and get (struct) discards primitive struct_or_union_set because it's a copy discards primitive struct_or_union_set because it's a copy sets struct field through pointer sets struct field through pointer interprets primitive struct_or_union_set and get (union) interprets primitive struct_or_union_set and get (union) interprets primitive struct_or_union_set and get (struct) interprets primitive struct_or_union_set and get (struct) sets extern struct proc field sets extern struct proc field does automatic C cast does automatic C cast Semantic: automatic cast casts integer variable to larger type (Int64 to Int128) (#9565) casts integer variable to larger type (Int64 to Int128) (#9565) says ambiguous call for integer var to larger type (#9565) says ambiguous call for integer var to larger type (#9565) casts integer variable to larger type (#9565) casts integer variable to larger type (#9565) casts Int32 -> Int64 in arg restriction casts Int32 -> Int64 in arg restriction doesn't autocast number on union (#8655) doesn't autocast number on union (#8655) casts Int32 to Int64 in ivar assignment casts Int32 to Int64 in ivar assignment doesn't say 'ambiguous call' when there's an exact match for symbol (#6601) doesn't say 'ambiguous call' when there's an exact match for symbol (#6601) casts literal integer in private top-level method (#7016) casts literal integer in private top-level method (#7016) casts literal integer (Int32 -> Float32) casts literal integer (Int32 -> Float32) casts literal integer (Int32 -> no restriction) casts literal integer (Int32 -> no restriction) casts Symbol to Enum in ivar type declaration casts Symbol to Enum in ivar type declaration casts literal integer through alias with union casts literal integer through alias with union casts literal integer (Int64 -> Int32, ok) casts literal integer (Int64 -> Int32, ok) can autocast to union in default value can autocast to union in default value casts Symbol to Enum in ivar assignment casts Symbol to Enum in ivar assignment can match multiple times with the same argument type (#7578) can match multiple times with the same argument type (#7578) says ambiguous call for integer says ambiguous call for integer casts Symbol to Enum in cvar type declaration casts Symbol to Enum in cvar type declaration autocasts nested type from non-nested type (#10315) autocasts nested type from non-nested type (#10315) errors if symbol name doesn't match enum member errors if symbol name doesn't match enum member doesn't do multidispatch if an overload matches exactly (#8217) doesn't do multidispatch if an overload matches exactly (#8217) can autocast to union in default value (multiple enums) can autocast to union in default value (multiple enums) casts Int32 to Int64 in lvar assignment casts Int32 to Int64 in lvar assignment casts symbol literal to enum casts symbol literal to enum casts literal float (Float64 -> Float32) casts literal float (Float64 -> Float32) casts literal integer through alias with union casts literal integer through alias with union can use automatic cast with `with ... yield` (#7736) can use automatic cast with `with ... yield` (#7736) says ambiguous call for integer (2) says ambiguous call for integer (2) doesn't cast integer variable to larger type (not #9565) doesn't cast integer variable to larger type (not #9565) doesn't do multidispatch if an overload matches exactly (#8217) doesn't do multidispatch if an overload matches exactly (#8217) casts integer expression to larger type (#9565) casts integer expression to larger type (#9565) can autocast to union in default value (symbol and int) can autocast to union in default value (symbol and int) says ambiguous call for integer on alias (#6620) says ambiguous call for integer on alias (#6620) can't cast integer to another type when it doesn't fit (#9565) can't cast integer to another type when it doesn't fit (#9565) autocasts integer variable to float type (#9565) autocasts integer variable to float type (#9565) doesn't say 'ambiguous call' when there's an exact match for integer (#6601) doesn't say 'ambiguous call' when there's an exact match for integer (#6601) can autocast to alias in default value can autocast to alias in default value says ambiguous call for integer var to union type (#9565) says ambiguous call for integer var to union type (#9565) casts literal integer (Int64 -> Int32, too big) casts literal integer (Int64 -> Int32, too big) autocasts float32 variable to float64 type (#9565) autocasts float32 variable to float64 type (#9565) casts literal float (Float32 -> Float64) casts literal float (Float32 -> Float64) matches correct overload matches correct overload autocasts first argument and second matches without autocast autocasts first argument and second matches without autocast casts literal integer (Int32 -> Float64) casts literal integer (Int32 -> Float64) casts Int32 to Int64 in cvar type declaration casts Int32 to Int64 in cvar type declaration casts literal integer (Int32 -> Int64) casts literal integer (Int32 -> Int64) casts Int32 to Int64 in ivar type declaration casts Int32 to Int64 in ivar type declaration casts Int32 to Int64 in ivar type declaration in generic casts Int32 to Int64 in ivar type declaration in generic says ambiguous call for symbol says ambiguous call for symbol says ambiguous call on union (#8655) says ambiguous call on union (#8655) casts Int32 to Int64 in cvar assignment casts Int32 to Int64 in cvar assignment errors when autocast default value doesn't match enum member errors when autocast default value doesn't match enum member Block inference errors if using ( -> Object) as block return type (#2358) errors if using ( -> Object) as block return type (#2358) ignores block parameter if not used ignores block parameter if not used matches block arg return type matches block arg return type infer type of block parameter infer type of block parameter errors if returns from captured block errors if returns from captured block respects block arg restriction when block has a splat parameter (#6473) respects block arg restriction when block has a splat parameter (#6473) does next from captured block does next from captured block doesn't crash on #2531 doesn't crash on #2531 reports error if yields a type that's not that one in the block specification reports error if yields a type that's not that one in the block specification reports error if yields a type that later changes and that's not that one in the block specification reports error if yields a type that later changes and that's not that one in the block specification infer type of empty block body infer type of empty block body reports error on method instantiate (#4543) reports error on method instantiate (#4543) allows underscore in block return type even if the return type can't be computed allows underscore in block return type even if the return type can't be computed preserves type filters in block preserves type filters in block errors if declares class inside captured block errors if declares class inside captured block uses free var in return type with tuple type uses free var in return type with tuple type reports mismatch with generic argument type in input type reports mismatch with generic argument type in input type errors if declares class inside block errors if declares class inside block infers type of block before call infers type of block before call errors if declares fun inside block errors if declares fun inside block errors on recursive yield errors on recursive yield maps block of union types to union types maps block of union types to union types checks block type with virtual type checks block type with virtual type errors when using local variable with block parameter name errors when using local variable with block parameter name reports error if block type doesn't match reports error if block type doesn't match auto-unpacks tuple, less than max auto-unpacks tuple, less than max returns from proc literal returns from proc literal errors if proc is not instantiated errors if proc is not instantiated uses splat in block parameter uses splat in block parameter infer type of yield infer type of yield error with self output type doesn't match error with self output type doesn't match binds to proc, not only to its body (#1796) binds to proc, not only to its body (#1796) unpacks block argument unpacks block argument auto-unpacks tuple, captured block with multiple statements auto-unpacks tuple, captured block with multiple statements infer type of block body infer type of block body error with self input type doesn't match error with self input type doesn't match ignores void return type (4) ignores void return type (4) auto-unpacks tuple auto-unpacks tuple errors if alias is not a fun type errors if alias is not a fun type auto-unpacks with block arg type auto-unpacks with block arg type yields splat and non splat yields splat and non splat errors if doing next in proc literal errors if doing next in proc literal errors if declares lib inside block errors if declares lib inside block reports mismatch with generic argument type in output type reports mismatch with generic argument type in output type sets captured block type to that of restriction with alias sets captured block type to that of restriction with alias yields splat yields splat errors if declares extend inside block errors if declares extend inside block errors if yields from top level errors if yields from top level reports error if block changes type reports error if block changes type errors if splat parameter becomes a union errors if splat parameter becomes a union auto-unpacks tuple, too many args, captured block auto-unpacks tuple, too many args, captured block renders expected block return type of a free variable on mismatch renders expected block return type of a free variable on mismatch doesn't mix local var with block var, using next (#2314) doesn't mix local var with block var, using next (#2314) errors if breaks from captured block errors if breaks from captured block allows initialize with yield (#224) allows initialize with yield (#224) errors if invoking new with block when no initialize is defined errors if invoking new with block when no initialize is defined passes #262 passes #262 passes #233: block with initialize with default args passes #233: block with initialize with default args infer type of local variable infer type of local variable doesn't auto-unpack tuple, more args doesn't auto-unpack tuple, more args errors on recursive yield with ProcNotation restriction errors on recursive yield with ProcNotation restriction types bug with yield not_nil! that is never not nil types bug with yield not_nil! that is never not nil doesn't assign block variable type to last value (#694) doesn't assign block variable type to last value (#694) infer type with union infer type with union errors if declares enum inside block errors if declares enum inside block break from block without value break from block without value can infer block type given that the method has a return type (#7160) can infer block type given that the method has a return type (#7160) passes &->f passes &->f infers type of block with generic type infers type of block with generic type recalculates call that uses block arg output as free var recalculates call that uses block arg output as free var reports error if yields a type that's not that one in the block specification reports error if yields a type that's not that one in the block specification uses splat in block parameter, many args uses splat in block parameter, many args does next from block without value does next from block without value allows yielding multiple types when a union is expected allows yielding multiple types when a union is expected respects block arg restriction when block has a splat parameter (2) (#9524) respects block arg restriction when block has a splat parameter (2) (#9524) errors on recursive yield with non ProcNotation restriction (#6896) errors on recursive yield with non ProcNotation restriction (#6896) auto-unpacks tuple, less than max, captured block auto-unpacks tuple, less than max, captured block ignores void return type (3) (#427) ignores void return type (3) (#427) ignores void return type (2) (#427) ignores void return type (2) (#427) uses free var in return type in captured block uses free var in return type in captured block types empty block types empty block errors if using Object as block return type (#2358) errors if using Object as block return type (#2358) uses splat in block parameter, but not enough yield expressions uses splat in block parameter, but not enough yield expressions uses block var with same name as local var uses block var with same name as local var doesn't mix local var with block var, using break (#2314) doesn't mix local var with block var, using break (#2314) binds block return type free variable even if there are no block parameters (#1797) binds block return type free variable even if there are no block parameters (#1797) auto-unpacks tuple, captured block auto-unpacks tuple, captured block yields in overload, matches type yields in overload, matches type doesn't fail with 'already had enclosing call' (#11200) doesn't fail with 'already had enclosing call' (#11200) errors if using Bar | Object as block return type (#2358) errors if using Bar | Object as block return type (#2358) allows invoking method on a object of a captured block with a type that was never instantiated allows invoking method on a object of a captured block with a type that was never instantiated errors if using (Object ->) as block return type (#2358) errors if using (Object ->) as block return type (#2358) correctly types unpacked tuple block arg after block (#3339) correctly types unpacked tuple block arg after block (#3339) infers type of block before call taking other args free vars into account infers type of block before call taking other args free vars into account doesn't crash on cleaning up typeof node without dependencies (#8669) doesn't crash on cleaning up typeof node without dependencies (#8669) finds type inside module in block finds type inside module in block does next from block with value does next from block with value reports error if missing arguments to yield reports error if missing arguments to yield infer type with self block arg infer type with self block arg uses block arg, too many parameters uses block arg, too many parameters allows alias as block fun type allows alias as block fun type errors if declares def inside block errors if declares def inside block break without value has nil type break without value has nil type errors if declares alias inside block errors if declares alias inside block reports error if block didn't return expected type reports error if block didn't return expected type errors if declares include inside block errors if declares include inside block errors if declares module inside block errors if declares module inside block uses block return type as return type, even if can't infer block type uses block return type as return type, even if can't infer block type does next from block with value 2 does next from block with value 2 matches block with generic type and free var matches block with generic type and free var sets captured block type to that of restriction sets captured block type to that of restriction ignores void return type (#427) ignores void return type (#427) auto-unpacks tuple, too many args auto-unpacks tuple, too many args yields with different types yields with different types errors if declares macro inside block errors if declares macro inside block auto-unpacks tuple, captured empty block auto-unpacks tuple, captured empty block types recursive hash assignment types recursive hash assignment semantic: case checks exhaustiveness for tuple literal, and passes checks exhaustiveness for tuple literal, and passes checks exhaustiveness of enum via const checks exhaustiveness of enum via const checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal of 2 elements, first is enum checks exhaustiveness for tuple literal of 2 elements, first is enum checks exhaustiveness for tuple literal with bool and underscore at second position, with partial match checks exhaustiveness for tuple literal with bool and underscore at second position, with partial match checks exhaustiveness of enum (all cases covered) checks exhaustiveness of enum (all cases covered) checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness of single type (generic) checks exhaustiveness of single type (generic) checks exhaustiveness of enum via question method checks exhaustiveness of enum via question method checks exhaustiveness for tuple literal with bool and underscore at second position checks exhaustiveness for tuple literal with bool and underscore at second position can't prove case is exhaustive for @[Flags] enum, tuple case can't prove case is exhaustive for @[Flags] enum, tuple case checks exhaustiveness, covers in base type covers (generic type) checks exhaustiveness, covers in base type covers (generic type) checks exhaustiveness for tuple literal with bool and underscore at second position checks exhaustiveness for tuple literal with bool and underscore at second position checks exhaustiveness of enum through method (all cases covered) checks exhaustiveness of enum through method (all cases covered) can prove case is exhaustive for @[Flags] enum when matching type can prove case is exhaustive for @[Flags] enum when matching type checks exhaustiveness for tuple literal of 3 elements, all enums checks exhaustiveness for tuple literal of 3 elements, all enums checks exhaustiveness for tuple literal, with call checks exhaustiveness for tuple literal, with call checks exhaustiveness of bool type with other types checks exhaustiveness of bool type with other types checks exhaustiveness, covers in base type covers checks exhaustiveness, covers in base type covers checks exhaustiveness for tuple literal of 3 elements, and warns checks exhaustiveness for tuple literal of 3 elements, and warns checks exhaustiveness of bool type (missing true) checks exhaustiveness of bool type (missing true) checks exhaustiveness for tuple literal with types and underscore at second position checks exhaustiveness for tuple literal with types and underscore at second position checks exhaustiveness for tuple literal with types and underscore at first position checks exhaustiveness for tuple literal with types and underscore at first position checks exhaustiveness for tuple literal of 3 elements, all bool checks exhaustiveness for tuple literal of 3 elements, all bool checks exhaustiveness of union type with virtual type checks exhaustiveness of union type with virtual type checks exhaustiveness of bool type (missing false) checks exhaustiveness of bool type (missing false) checks exhaustiveness for tuple literal with bool and underscore at first position, partial match checks exhaustiveness for tuple literal with bool and underscore at first position, partial match checks exhaustiveness of nil type with nil literal checks exhaustiveness of nil type with nil literal checks exhaustiveness of nilable type with nil literal checks exhaustiveness of nilable type with nil literal can't prove case is exhaustive for @[Flags] enum can't prove case is exhaustive for @[Flags] enum checks exhaustiveness for tuple literal of 2 elements, first is bool checks exhaustiveness for tuple literal of 2 elements, first is bool checks exhaustiveness of single type (T.class) checks exhaustiveness of single type (T.class) checks exhaustiveness for tuple literal with bool and underscore at second position, partial match checks exhaustiveness for tuple literal with bool and underscore at second position, partial match checks exhaustiveness of enum combined with another type checks exhaustiveness of enum combined with another type checks exhaustiveness for tuple literal of 2 elements, and warns checks exhaustiveness for tuple literal of 2 elements, and warns checks exhaustiveness for tuple literal with bool and underscore at first position, with partial match checks exhaustiveness for tuple literal with bool and underscore at first position, with partial match errors if casing against a constant errors if casing against a constant doesn't check exhaustiveness when using 'when' doesn't check exhaustiveness when using 'when' checks exhaustiveness of single type (Foo(T).class) checks exhaustiveness of single type (Foo(T).class) checks exhaustiveness of union with bool checks exhaustiveness of union with bool checks exhaustiveness of single type checks exhaustiveness of single type covers all types covers all types Normalize: array literal normalizes non-empty with of normalizes non-empty with of normalizes non-empty without of, with splat only normalizes non-empty without of, with splat only normalizes empty with of normalizes empty with of hoists complex element expressions hoists complex element expressions hoists complex element expressions, with splat hoists complex element expressions, with splat normalizes non-empty with of, with splat normalizes non-empty with of, with splat normalizes non-empty without of, with splat normalizes non-empty without of, with splat hoists complex element expressions, array-like generic hoists complex element expressions, array-like generic normalizes non-empty without of normalizes non-empty without of hoists complex element expressions, array-like hoists complex element expressions, array-like Code gen: uninitialized codegens value (#3641) codegens value (#3641) doesn't break on inherited declared var (#390) doesn't break on inherited declared var (#390) codegens declare var and changes it codegens declare var and changes it works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works with uninitialized NoReturn (#3314) works with uninitialized NoReturn (#3314) codegens declare instance var with static array type codegens declare instance var with static array type codegens declare var and read it codegens declare var and read it codegens declare instance var codegens declare instance var Semantic: super types super without arguments and instance variable types super without arguments and instance variable types super with named arguments, def has bare splat parameter (#8895) types super with named arguments, def has bare splat parameter (#8895) errors if invoking super and match isn't found in direct superclass in initialize (even though it's find in one superclass) errors if invoking super and match isn't found in direct superclass in initialize (even though it's find in one superclass) gives correct error when calling super and target is abstract method (#2675) gives correct error when calling super and target is abstract method (#2675) calls super in module method (3) (#556) calls super in module method (3) (#556) calls super in module method (2) (#556) calls super in module method (2) (#556) errors on super outside method (#4481) errors on super outside method (#4481) calls super in module method (1) (#556) calls super in module method (1) (#556) types super without arguments types super without arguments finds super initialize if not explicitly defined in superclass, 1 (#273) finds super initialize if not explicitly defined in superclass, 1 (#273) types super with named arguments, def has bare splat parameter (2) (#8895) types super with named arguments, def has bare splat parameter (2) (#8895) errors no superclass method in top-level errors no superclass method in top-level errors no superclass method in top-level def errors no superclass method in top-level def errors no superclass method errors no superclass method types super with forwarded arguments, def has bare splat parameter (#8895) types super with forwarded arguments, def has bare splat parameter (#8895) finds super initialize if not explicitly defined in superclass, 2 (#273) finds super initialize if not explicitly defined in superclass, 2 (#273) types super when container method is defined in parent class two levels up types super when container method is defined in parent class two levels up types super when inside fun and forwards args types super when inside fun and forwards args doesn't error if invoking super and match isn't found in direct superclass (even though it's find in one superclass) doesn't error if invoking super and match isn't found in direct superclass (even though it's find in one superclass) calls super in generic module method calls super in generic module method types super when container method is defined in parent class types super when container method is defined in parent class types super with forwarded arguments, different internal names (#8895) types super with forwarded arguments, different internal names (#8895) types super with forwarded arguments, parent has parameters types super with forwarded arguments, parent has parameters types super with forwarded arguments, def has double splat parameter (#8895) types super with forwarded arguments, def has double splat parameter (#8895) types super when inside fun types super when inside fun errors if calling super on module method and not found errors if calling super on module method and not found errors on super where only target would be a top level method (#5201) errors on super where only target would be a top level method (#5201) says correct error message when no overload matches in super call (#272) says correct error message when no overload matches in super call (#272) invokes super inside macro (#6636) invokes super inside macro (#6636) Crystal::Repl::Interpreter bugs doesn't pass self to top-level method doesn't pass self to top-level method does leading zeros does leading zeros does multidispatch on virtual struct union nil does multidispatch on virtual struct union nil doesn't pass self to top-level method (FileNode) doesn't pass self to top-level method (FileNode) correctly puts virtual metaclass type in union correctly puts virtual metaclass type in union does multidispatch on virtual struct does multidispatch on virtual struct doesn't override local variable value with block var with the same name doesn't override local variable value with block var with the same name breaks from current block, not from outer block breaks from current block, not from outer block doesn't incorrectly consider a non-closure as closure doesn't incorrectly consider a non-closure as closure Crystal::Repl::Interpreter exception handling does ensure with explicit return does ensure with explicit return executes ensure when exception is raised in rescue executes ensure when exception is raised in rescue does ensure for else when else raises does ensure for else when else raises executes ensure when breaking from a block executes ensure when breaking from a block raises and rescues specific exception type raises and rescues specific exception type does ensure without rescue/raise does ensure without rescue/raise raises and rescues anything raises and rescues anything executes ensure when returning from a block executes ensure when returning from a block executes ensure when returning a big value from a block executes ensure when returning a big value from a block does ensure for else does ensure for else executes ensure when exception is raised in body executes ensure when exception is raised in body does else does else raises and rescues anything, does ensure when an exception is rescued raises and rescues anything, does ensure when an exception is rescued executes ensure when returning from a block (2) executes ensure when returning from a block (2) captures exception in variable captures exception in variable does rescue when nothing is raised does rescue when nothing is raised Crystal::Doc::Generator #formatted_summary with a Deprecated annotation, and docs should generate both the docs and Deprecated tag should generate both the docs and Deprecated tag with a Deprecated annotation, and no docs should generate just the Deprecated tag should generate just the Deprecated tag with a Experimental annotation, and no docs should generate just the Experimental tag should generate just the Experimental tag with no annotation, and no docs should generate nothing should generate nothing should generate the first sentence should generate the first sentence should exclude whitespace before the summary line should exclude whitespace before the summary line with a Experimental annotation, and docs should generate both the docs and Experimental tag should generate both the docs and Experimental tag should generate the first line should generate the first line generates sitemap generates sitemap #must_include_toplevel? returns true if program has method returns true if program has method returns false if program has macro which is defined in other place returns false if program has macro which is defined in other place returns false if program has constant which is defined in other place returns false if program has constant which is defined in other place returns true if program has macro returns true if program has macro returns false if program has method which is defined in other place returns false if program has method which is defined in other place returns false if program has nothing returns false if program has nothing returns true if program has constant returns true if program has constant #formatted_doc with a Deprecated annotation, and docs should generate both the docs and Deprecated tag should generate both the docs and Deprecated tag should generate the full document should generate the full document with a Experimental annotation, and docs should generate both the docs and Experimental tag should generate both the docs and Experimental tag with no annotation, and no docs should generate nothing should generate nothing should generate the full document should generate the full document with a Experimental annotation, and no docs should generate just the Experimental tag should generate just the Experimental tag with a Deprecated annotation, and no docs should generate just the Deprecated tag should generate just the Deprecated tag crystal repo inserts pseudo methods inserts pseudo methods #collect_constants returns empty array when constants are private returns empty array when constants are private Crystal::Repl::Interpreter blocks counts with ... yield scope in block args bytesize (#12316) counts with ... yield scope in block args bytesize (#12316) caches method with captured block (#12276) caches method with captured block (#12276) interprets yield return value interprets yield return value interprets break inside block (union, through return) interprets break inside block (union, through return) interprets yield with splat (1) interprets yield with splat (1) interprets yield inside def with arguments interprets yield inside def with arguments interprets yield expressions interprets yield expressions casts yield expression to block var type (not block arg type) casts yield expression to block var type (not block arg type) interprets break inside block (union, through normal flow) interprets break inside block (union, through normal flow) interprets next inside block interprets next inside block interprets block with splat interprets block with splat interprets break inside block (union, through break) interprets break inside block (union, through break) interprets yield with splat, block with splat (#12227) interprets yield with splat, block with splat (#12227) interprets with ... yield with struct interprets with ... yield with struct interprets yield with splat, less block arguments interprets yield with splat, less block arguments captures non-closure block captures non-closure block interprets block with args that conflict with a local var interprets block with args that conflict with a local var interprets next inside block (union, through normal exit) interprets next inside block (union, through normal exit) interprets with ... yield with extra arguments (#12296) interprets with ... yield with extra arguments (#12296) interprets block with multiple yields interprets block with multiple yields interprets break inside block interprets break inside block interprets yield expression interprets yield expression yields different values to form a union yields different values to form a union interprets yield with splat (2) interprets yield with splat (2) clears block local variables when calling block (2) clears block local variables when calling block (2) considers block arg without type as having NoReturn type (2) (#12270) considers block arg without type as having NoReturn type (2) (#12270) returns from block returns from block interprets next inside block (union, through next) interprets next inside block (union, through next) interprets with ... yield interprets with ... yield considers block arg without type as having NoReturn type (#12270) considers block arg without type as having NoReturn type (#12270) interprets block with args that conflict with a local var interprets block with args that conflict with a local var interprets yield inside another block interprets yield inside another block clears block local variables when calling block clears block local variables when calling block interprets simplest block interprets simplest block discards yield expression discards yield expression interprets yield with splat, block with splat interprets yield with splat, block with splat error reporting reports unexpected named argument reports unexpected named argument reports unexpected named argument (2) reports unexpected named argument (2) reports unexpected block reports unexpected block reports wrong number of arguments, with optional parameters reports wrong number of arguments, with optional parameters uses correct name for top-level macro methods uses correct name for top-level macro methods reports wrong number of arguments reports wrong number of arguments reports missing block reports missing block read_file with absolute path reads file (doesn't exist) reads file (doesn't exist) reads file (exists) reads file (exists) with relative path reads file (doesn't exist) reads file (doesn't exist) reads file (exists) reads file (exists) types to_s of nilable type with more than two elements, Nil at the end nilable type with more than two elements, Nil at the end does for type contained in generic class does for type contained in generic class non-instantiated array non-instantiated array union types should not have extra parens in pointers in pointers in arrays in arrays in tuples in tuples should have parens as return type as return type as arg type as arg type nilable reference type nilable reference type named tuple named tuple does for type contained in generic module does for type contained in generic module union of simple types union of simple types nilable value type nilable value type array of simple types array of simple types Lexer comments lexes without comments enabled lexes without comments enabled lexes with comments enabled lexes with comments enabled lexes with comments enabled (2) lexes with comments enabled (2) lexes correct number of spaces lexes correct number of spaces Crystal::Loader .parse parses directory paths parses directory paths parses library names parses library names prepends directory paths before default search paths prepends directory paths before default search paths parses static parses static parses file paths parses file paths .default_search_paths DYLD_LIBRARY_PATH DYLD_LIBRARY_PATH LD_LIBRARY_PATH LD_LIBRARY_PATH .read_ld_conf basic basic with include with include dynlib #load_library? library name library name does not implicitly find dependencies does not implicitly find dependencies full path full path lookup in order lookup in order does not find global symbols does not find global symbols #load_file? finds function symbol finds function symbol validate that lib handles are properly closed validate that lib handles are properly closed Semantic: virtual metaclass allows passing metaclass to virtual metaclass restriction allows passing metaclass to virtual metaclass restriction merges metaclass types merges metaclass types restricts virtual metaclass to Class (#11376) restricts virtual metaclass to Class (#11376) allows passing metaclass to virtual metaclass restriction allows passing metaclass to virtual metaclass restriction types virtual metaclass method types virtual metaclass method types virtual metaclass types virtual metaclass yields virtual type in block arg if class is abstract yields virtual type in block arg if class is abstract merges metaclass types with 3 types merges metaclass types with 3 types types metaclass node types metaclass node allows allocating virtual type when base class is abstract allows allocating virtual type when base class is abstract Semantic: type errors if original type doesn't support instance variables errors if original type doesn't support instance variables can call methods of parent type can call methods of parent type can call methods of original type can call methods of original type can access instance variables of original type can access instance variables of original type implementations find implementation inside contained file private class' class method find implementation inside contained file private class' class method find full trace for macro expansions find full trace for macro expansions find method calls inside if find method calls inside if find const implementation find const implementation find method calls inside rescue find method calls inside rescue find alias implementation find alias implementation find implementation inside contained file private method find implementation inside contained file private method find class implementation find class implementation find implementation from macro expansions find implementation from macro expansions find implementation inside contained class' class method find implementation inside contained class' class method find open class implementation find open class implementation find enum value implementation find enum value implementation find enum implementation find enum implementation find top level method calls find top level method calls find method calls inside while cond find method calls inside while cond find implementors of different classes find implementors of different classes find method calls inside while find method calls inside while find struct implementation find struct implementation find class inside method find class inside method find implementors of classes that are only used find implementors of classes that are only used can display json output can display json output find implementation in generic class methods find implementation in generic class methods find method calls inside trailing if find method calls inside trailing if can display text output can display text output find class defined by macro find class defined by macro find implementation in generic class find implementation in generic class find implementation in class methods find implementation in class methods find module implementation find module implementation find implementation inside a module class find implementation inside a module class Crystal::Repl::Interpreter downcasts virtual type to its only type (#12351) downcasts virtual type to its only type (#12351) inlines instance var access from virtual type with a single type (#39520) inlines instance var access from virtual type with a single type (#39520) classes calls implicit struct self method calls implicit struct self method discards allocate discards allocate interprets read instance var interprets read instance var does constructor does constructor does object_id does object_id calls implicit class self method calls implicit class self method does allocate, set instance var and get instance var does allocate, set instance var and get instance var calls explicit struct self method calls explicit struct self method Crystal::FFI::CallInterface .variadic basic basic zero varargs zero varargs validates args size validates args size .new with args with args make struct make struct all primitive arg types all primitive arg types simple call simple call sum struct sum struct array array Semantic: struct passes subtype check with generic module type on virtual type (2) (#10302) passes subtype check with generic module type on virtual type (2) (#10302) doesn't make virtual for Struct doesn't make virtual for Struct can't extend struct from non-abstract struct can't extend struct from non-abstract struct can't extend class from struct can't extend class from struct can cast to base abstract struct can cast to base abstract struct passes subtype check with generic module type on virtual type passes subtype check with generic module type on virtual type types struct declaration types struct declaration unifies type to virtual type unifies type to virtual type doesn't make virtual for Float doesn't make virtual for Float allows struct to participate in virtual allows struct to participate in virtual can't extend struct from class can't extend struct from class doesn't error if method is not found in abstract type doesn't error if method is not found in abstract type can't reopen as class can't reopen as class doesn't make virtual for Int doesn't make virtual for Int can't be nilable can't be nilable passes subtype check with generic module type on virtual type (3) passes subtype check with generic module type on virtual type (3) types generic struct declaration types generic struct declaration errors if defining finalize for struct (#3840) errors if defining finalize for struct (#3840) can't reopen as module can't reopen as module doesn't make virtual for Value doesn't make virtual for Value Crystal::Macro def methods executes receiver executes receiver executes double_splat executes double_splat executes name executes name executes block_arg executes block_arg executes splat_index executes splat_index executes return_type executes return_type executes abstract? executes abstract? executes body executes body executes free_vars executes free_vars executes args executes args executes visibility executes visibility executes accepts_block? executes accepts_block? classvar methods executes name executes name exception handler methods executes ensure executes ensure executes rescue name executes rescue name executes else executes else executes else (nop) executes else (nop) executes body executes body executes rescues executes rescues executes ensure (nop) executes ensure (nop) executes rescue body executes rescue body executes rescue types executes rescue types proc notation methods gets single input gets single input gets empty output gets empty output executes resolve executes resolve executes resolve? executes resolve? gets single output gets single output gets multiple inputs gets multiple inputs Crystal::ArrayLiteral executes reject executes reject executes index out of bounds executes index out of bounds executes map with constants executes map with constants executes splat executes splat executes unshift executes unshift executes sort with ids and strings executes sort with ids and strings executes any? (true) executes any? (true) executes find (finds) executes find (finds) executes includes? executes includes? executes first executes first executes size executes size executes splat with splat executes splat with splat #map_with_index without the index argument returns the resulting array returns the resulting array without the element argument returns the resulting array returns the resulting array without either argument returns the resulting array returns the resulting array with both arguments returns the resulting array returns the resulting array executes [] with range executes [] with range executes map with arg executes map with arg executes [] with computed range executes [] with computed range executes of executes of creates an array literal with a var creates an array literal with a var executes sort with numbers executes sort with numbers executes type executes type executes last executes last #each #each calls block exactly once for each element in #sort_by calls block exactly once for each element in #sort_by executes of (nop) executes of (nop) #- with TupleLiteral argument removes the elements in RHS from LHS into an ArrayLiteral removes the elements in RHS from LHS into an ArrayLiteral with ArrayLiteral argument removes the elements in RHS from LHS into an ArrayLiteral removes the elements in RHS from LHS into an ArrayLiteral executes sort with strings executes sort with strings executes splat with symbols and strings executes splat with symbols and strings executes any? (false) executes any? (false) executes uniq executes uniq executes all? (false) executes all? (false) executes sort with ids executes sort with ids executes [] with incomplete range executes [] with incomplete range executes [] with two numbers executes [] with two numbers executes identify executes identify executes index 1 executes index 1 executes find (doesn't find) executes find (doesn't find) executes []= executes []= executes sort_by executes sort_by executes push executes push executes empty? executes empty? #each_with_index without the element argument builds the correct array builds the correct array with both arguments builds the correct array builds the correct array without either argument builds the correct array builds the correct array without the index argument builds the correct array builds the correct array executes all? (true) executes all? (true) executes is_a? executes is_a? executes join executes join executes type (nop) executes type (nop) executes select executes select executes map executes map executes join with strings executes join with strings executes reduce with no initial value executes reduce with no initial value executes reduce with initial value executes reduce with initial value #+ with TupleLiteral argument concatenates the literals into an ArrayLiteral concatenates the literals into an ArrayLiteral with ArrayLiteral argument concatenates the literals into an ArrayLiteral concatenates the literals into an ArrayLiteral executes index 0 executes index 0 macro if methods executes cond executes cond executes else executes else executes then executes then if methods executes cond executes cond executes then executes then executes else (nop) executes else (nop) executes else executes else symbol methods executes symbol != symbol executes symbol != symbol executes symbol == symbol executes symbol == symbol forwards methods to string forwards methods to string Crystal::TypeNode executes instance_vars on symbol type executes instance_vars on symbol type #abstract? Crystal::NonGenericClassType class non-abstract non-abstract abstract abstract struct non-abstract non-abstract abstract abstract Crystal::NonGenericModuleType Crystal::NonGenericModuleType Crystal::GenericClassType struct non-abstract non-abstract abstract abstract class non-abstract non-abstract abstract abstract Crystal::GenericModuleType Crystal::GenericModuleType executes instance executes instance public? false false true true executes class_vars on symbol type executes class_vars on symbol type executes class vars executes class vars executes type_vars executes type_vars executes resolve? executes resolve? #module? Crystal::GenericModuleType Crystal::GenericModuleType Crystal::NonGenericModuleType Crystal::NonGenericModuleType Crystal::GenericClassType struct struct class class Crystal::NonGenericClassType struct struct class class visibility public public private private #id does not include trailing + for virtual type does not include trailing + for virtual type executes <= executes <= executes == executes == executes size of tuple metaclass executes size of tuple metaclass executes instance_vars executes instance_vars executes class_vars on metaclass executes class_vars on metaclass executes != executes != #includers returns an array of types `self` is directly included in returns an array of types `self` is directly included in #struct? Crystal::NonGenericClassType class class struct struct Crystal::GenericModuleType Crystal::GenericModuleType Crystal::NonGenericModuleType Crystal::NonGenericModuleType Crystal::GenericClassType struct struct class class executes ancestors (with generic) executes ancestors (with generic) executes resolve executes resolve #class? Crystal::GenericClassType class class struct struct Crystal::NonGenericModuleType Crystal::NonGenericModuleType Crystal::NonGenericClassType struct struct class class Crystal::GenericModuleType Crystal::GenericModuleType executes >= executes >= #name simple type returns the name of the type returns the name of the type generic instance prints multiple arguments for splat type var prints multiple arguments for splat type var prints empty splat type var prints empty splat type var does not print extra commas for empty splat type var (1) does not print extra commas for empty splat type var (1) does not print extra commas for empty splat type var (2) does not print extra commas for empty splat type var (2) prints generic type arguments prints generic type arguments does not print extra commas for empty splat type var (3) does not print extra commas for empty splat type var (3) generic type includes the generic_args of the instantiated type by default includes the generic_args of the instantiated type by default includes the generic_args of the type by default includes the generic_args of the type by default generic_args true includes the generic_args of the type includes the generic_args of the type includes the generic_args of the instantiated type includes the generic_args of the instantiated type false does not include the generic_args of the instantiated type does not include the generic_args of the instantiated type does not include the generic_args of the type does not include the generic_args of the type with an invalid type argument should raise the proper exception should raise the proper exception namespaced type should return the FQN of the type should return the FQN of the type #warning emits a warning at a specific node emits a warning at a specific node #has_inner_pointers? works on structs works on structs works on references works on references works on ReferenceStorage works on ReferenceStorage works on primitive values works on primitive values executes methods executes methods executes < executes < executes class vars (with inheritance) executes class vars (with inheritance) executes class methods executes class methods executes private? false false true true == and != devirtualize generic type arguments (#10730) == and != devirtualize generic type arguments (#10730) executes class executes class #union? true true false false executes superclass executes superclass executes ancestors executes ancestors executes union_types (non-union) executes union_types (non-union) executes > executes > executes size of tuple executes size of tuple executes instance_vars on metaclass executes instance_vars on metaclass #nilable? true true false false executes union_types (union) executes union_types (union) multi_assign methods executes values executes values executes targets executes targets executes assign without output executes assign without output require methods executes path executes path Crystal::EnumDef executes body executes body executes name executes name executes base_type executes base_type executes kind executes kind Crystal::External executes is_a? executes is_a? regex methods executes options executes options executes source executes source control expression methods executes exp executes exp executes exp (nop) executes exp (nop) Crystal::NamedTupleLiteral executes to_a executes to_a executes [] with invalid key type executes [] with invalid key type executes [] not found executes [] not found executes has_key? executes has_key? executes map executes map executes double splat executes double splat executes []= executes []= executes empty? executes empty? #each without either argument builds the correct array builds the correct array without the value argument builds the correct array builds the correct array with both arguments builds the correct array builds the correct array without the key argument builds the correct array builds the correct array executes keys executes keys executes double splat with arg executes double splat with arg executes values executes values creates a named tuple literal with a var creates a named tuple literal with a var executes is_a? executes is_a? executes size executes size executes double splat executes double splat executes [] executes [] is_a methods executes receiver executes receiver executes arg executes arg arg methods executes internal_name executes internal_name executes restriction executes restriction executes name executes name executes default_value executes default_value Crystal::TupleLiteral #- with TupleLiteral argument removes the elements in RHS from LHS into a TupleLiteral removes the elements in RHS from LHS into a TupleLiteral with ArrayLiteral argument removes the elements in RHS from LHS into a TupleLiteral removes the elements in RHS from LHS into a TupleLiteral executes all? (true) executes all? (true) executes unshift executes unshift #map_with_index without the element argument returns the resulting tuple returns the resulting tuple without the index argument returns the resulting tuple returns the resulting tuple without either argument returns the resulting tuple returns the resulting tuple with both arguments returns the resulting tuple returns the resulting tuple executes find (doesn't find) executes find (doesn't find) executes uniq executes uniq executes reject executes reject executes [] out of bounds executes [] out of bounds executes splat with symbols and strings executes splat with symbols and strings executes [] with 0 executes [] with 0 executes join executes join executes map with constants executes map with constants creates a tuple literal with a var creates a tuple literal with a var executes map with arg executes map with arg executes first executes first executes push executes push executes join with strings executes join with strings executes sort with strings executes sort with strings executes map executes map executes [] with incomplete range executes [] with incomplete range executes size executes size executes sort with ids executes sort with ids executes empty? executes empty? executes splat with splat executes splat with splat executes [] with computed range executes [] with computed range executes any? (false) executes any? (false) executes sort with ids and strings executes sort with ids and strings executes is_a? executes is_a? executes any? (true) executes any? (true) executes sort with numbers executes sort with numbers #each_with_index without the element argument builds the correct array builds the correct array without the index argument builds the correct array builds the correct array with both arguments builds the correct array builds the correct array without either argument builds the correct array builds the correct array executes includes? executes includes? executes select executes select #+ with ArrayLiteral argument concatenates the literals into a TupleLiteral concatenates the literals into a TupleLiteral with TupleLiteral argument concatenates the literals into a TupleLiteral concatenates the literals into a TupleLiteral executes find (finds) executes find (finds) executes all? (false) executes all? (false) executes [] with 1 executes [] with 1 executes splat executes splat executes [] with range executes [] with range executes last executes last executes splat with arg executes splat with arg #each #each string methods executes camelcase with lower executes camelcase with lower executes string starts_with? string (true) executes string starts_with? string (true) executes titleize executes titleize executes string ends_with? char (false) executes string ends_with? char (false) executes split with argument executes split with argument executes underscore executes underscore executes string starts_with? char (false) executes string starts_with? char (false) executes tr executes tr executes to_i(base) executes to_i(base) executes string < string executes string < string executes string includes? string (true) executes string includes? string (true) executes string includes? string (false) executes string includes? string (false) executes string includes? char (false) executes string includes? char (false) executes string starts_with? string (false) executes string starts_with? string (false) executes split with char argument executes split with char argument executes lines executes lines executes downcase executes downcase executes string > macroid executes string > macroid executes string > string executes string > string executes string + char executes string + char executes string =~ (false) executes string =~ (false) executes chars executes chars executes string < macroid executes string < macroid executes [] with inclusive range executes [] with inclusive range executes string starts_with? char (true) executes string starts_with? char (true) executes string ends_with? char (true) executes string ends_with? char (true) executes string chomp executes string chomp executes string == string executes string == string executes [] with computed range executes [] with computed range executes string =~ (true) executes string =~ (true) executes capitalize executes capitalize executes upcase executes upcase executes empty executes empty executes camelcase with invalid lower arg type executes camelcase with invalid lower arg type executes camelcase executes camelcase executes count executes count executes string ends_with? string (false) executes string ends_with? string (false) executes string + string executes string + string executes string ends_with? string (true) executes string ends_with? string (true) executes to_i executes to_i executes string includes? char (true) executes string includes? char (true) executes to_utf16 executes to_utf16 executes strip executes strip executes split without arguments executes split without arguments executes size executes size executes string != string executes string != string executes gsub executes gsub executes [] with exclusive range executes [] with exclusive range executes [] with incomplete range executes [] with incomplete range Crystal::ExternalVar executes type executes type executes real_name executes real_name executes name executes name flag? has flag has flag doesn't have flag doesn't have flag env doesn't have key doesn't have key has key has key #parse_type metaclass metaclass path path generic generic union - | union - | raises on extra unparsed tokens before the type raises on extra unparsed tokens before the type exposes syntax warnings exposes syntax warnings raises on non StringLiteral arguments raises on non StringLiteral arguments proc proc union - Union union - Union raises on extra unparsed tokens after the type raises on extra unparsed tokens after the type raises on empty string raises on empty string union - in generic union - in generic assign methods executes target executes target executes value executes value metaclass methods executes resolve? executes resolve? executes resolve executes resolve executes instance executes instance block methods executes args executes args executes splat_index executes splat_index executes body executes body or methods executes right executes right executes left executes left annotation methods executes [] with NumberLiteral executes [] with NumberLiteral executes [] with SymbolLiteral executes [] with SymbolLiteral executes [] with MacroId executes [] with MacroId executes name executes name executes [] with other ASTNode, but raises an error executes [] with other ASTNode, but raises an error executes [] with StringLiteral executes [] with StringLiteral nilable cast methods executes to executes to executes obj executes obj Crystal::RangeLiteral executes to_a executes to_a executes excludes_end? executes excludes_end? executes map executes map #each #each executes begin executes begin executes end executes end cast methods executes obj executes obj executes to executes to Crystal::Select executes whens executes whens executes else executes else Crystal::CStructOrUnionDef executes kind executes kind executes name executes name executes body executes body executes union? executes union? Crystal::MacroLiteral executes value executes value proc literal methods executes body executes body executes args executes args executes return_type executes return_type expressions methods executes expressions executes expressions readinstancevar methods executes name executes name executes obj executes obj uninitialized var methods executes type executes type executes var executes var path methods executes global? executes global? executes resolve? executes resolve? executes resolve executes resolve executes types executes types executes names executes names executes global executes global Crystal::AnnotationDef executes body executes body executes kind executes kind executes name executes name number methods executes // executes // executes + and preserves type executes + and preserves type executes <= (false) executes <= (false) executes * executes * executes <=> (returns nil) executes <=> (returns nil) executes & executes & executes <=> executes <=> executes > (false) executes > (false) executes <= (true) executes <= (true) executes | executes | #to_number #to_number executes < (true) executes < (true) executes >= (true) executes >= (true) executes >> executes >> executes - executes - executes >= (false) executes >= (false) executes unary - executes unary - executes < (false) executes < (false) preserves integer size (#10713) preserves integer size (#10713) executes unary + executes unary + executes + executes + executes math operations using U/Int128 executes math operations using U/Int128 executes ** executes ** executes + with float executes + with float executes << executes << executes ^ executes ^ executes % executes % executes > (true) executes > (true) executes unary ~ executes unary ~ executes kind executes kind Crystal::Asm executes inputs executes inputs executes alignstack? executes alignstack? executes outputs executes outputs executes clobbers executes clobbers executes intel? executes intel? executes text executes text executes can_throw? executes can_throw? executes volatile? executes volatile? splat methods executes exp executes exp visibility modifier methods executes visibility executes visibility executes exp executes exp proc pointer methods executes obj when present executes obj when present executes args when not empty executes args when not empty executes name executes name executes args when empty executes args when empty executes global? executes global? executes obj when absent executes obj when absent Crystal::FunDef executes variadic? executes variadic? executes return_type executes return_type executes has_body? executes has_body? executes real_name executes real_name executes name executes name executes body executes body executes args executes args Crystal::LibDef executes kind executes kind executes name executes name executes body executes body union methods executes types executes types executes resolve executes resolve executes resolve? executes resolve? Crystal::MacroExpression executes output? executes output? executes exp executes exp generic methods executes name executes name executes resolve executes resolve executes type_vars executes type_vars executes named_args executes named_args executes types executes types executes resolve? executes resolve? instancevar methods executes name executes name executes assign executes assign Crystal::Alias executes name executes name executes type executes type Crystal::ModuleDef executes body executes body executes type_vars executes type_vars executes kind executes kind executes splat_index executes splat_index executes name executes name macro id methods forwards methods to string forwards methods to string compares with symbol compares with symbol compares with string compares with string while methods executes body executes body executes cond executes cond macro for methods executes vars executes vars executes exp executes exp executes body executes body Crystal::Extend executes name executes name Crystal::HashLiteral executes double splat executes double splat executes double splat with arg executes double splat with arg executes [] not found executes [] not found executes of_value (nop) executes of_value (nop) executes keys executes keys executes to_a executes to_a executes of_key executes of_key executes empty? executes empty? executes []= executes []= executes is_a? executes is_a? creates a hash literal with a var creates a hash literal with a var executes size executes size executes of_value executes of_value executes of_key (nop) executes of_key (nop) executes [] executes [] executes type executes type executes type (nop) executes type (nop) executes has_key? executes has_key? #each without either argument builds the correct array builds the correct array without the key argument builds the correct array builds the correct array without the value argument builds the correct array builds the correct array with both arguments builds the correct array builds the correct array executes map executes map executes double splat executes double splat executes values executes values case methods in executes exhaustive? executes exhaustive? executes whens executes whens executes when exhaustive? executes when exhaustive? when executes exhaustive? executes exhaustive? executes cond executes cond executes when body executes when body executes whens executes whens executes else executes else executes when conds executes when conds executes when exhaustive? executes when exhaustive? unary expression methods executes is_a? executes is_a? executes exp executes exp char methods executes ord executes ord Crystal::TypeDef executes type executes type executes name executes name macro methods executes name executes name executes body executes body executes double_splat executes double_splat executes splat_index executes splat_index executes args executes args executes block_arg executes block_arg executes visibility executes visibility type declaration methods executes type executes type executes value executes value executes var executes var executes var when instance var executes var when instance var #warning emits a top level warning emits a top level warning printing p! p! p p puts puts pp pp print print pp! pp! responds_to methods executes name executes name executes receiver executes receiver Crystal::AsmOperand executes exp executes exp executes constraint executes constraint global methods executes name executes name Crystal::ClassDef executes splat_index executes splat_index executes type_vars executes type_vars executes name executes name executes superclass executes superclass executes body executes body executes struct? executes struct? executes kind executes kind executes abstract? executes abstract? offsetof methods executes offset executes offset executes type executes type Crystal::Primitive executes name executes name node methods executes != on numbers (false) executes != on numbers (false) class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name executes class_name #is_a? union argument, unimplemented types union argument, unimplemented types union argument, duplicate type union argument, duplicate type union argument, mergeable union argument, mergeable union argument, contains NoReturn union argument, contains NoReturn union argument, undefined types union argument, undefined types union argument union argument symbolize expands macro with symbolize call on string expands macro with symbolize call on string expands macro with symbolize call on symbol expands macro with symbolize call on symbol expands macro with symbolize call on id expands macro with symbolize call on id #nil? NumberLiteral NumberLiteral Nop Nop NilLiteral NilLiteral executes != on numbers (true) executes != on numbers (true) executes == on numbers (false) executes == on numbers (false) executes == on symbols (false) (#240) executes == on symbols (false) (#240) executes == on symbols (true) (#240) executes == on symbols (true) (#240) executes == on numbers (true) executes == on numbers (true) id expands macro with id call on global path expands macro with id call on global path expands macro with id call on char expands macro with id call on char expands macro with id call on string expands macro with id call on string expands macro with id call on path expands macro with id call on path expands macro with id call on symbol expands macro with id call on symbol expands macro with id call on number expands macro with id call on number expands macro with id call on call expands macro with id call on call #doc_comment returns an empty MacroId if there are no docs on the node (wants_doc = false) returns an empty MacroId if there are no docs on the node (wants_doc = false) ensures each newline has a `#` prefix ensures each newline has a `#` prefix returns the call's docs if present as a MacroId (wants_doc = true) returns the call's docs if present as a MacroId (wants_doc = true) location column number column number end line_number end line_number filename filename line_number line_number end column number end column number stringify expands macro with stringify call on number expands macro with stringify call on number expands macro with stringify call on call expands macro with stringify call on call expands macro with stringify call on symbol expands macro with stringify call on symbol expands macro with stringify call on string expands macro with stringify call on string #doc returns an empty string if there are no docs on the node (wants_doc = false) returns an empty string if there are no docs on the node (wants_doc = false) returns a multiline comment returns a multiline comment returns the call's docs if present (wants_doc = true) returns the call's docs if present (wants_doc = true) and methods executes left executes left executes right executes right Crystal::TypeOf executes args executes args call methods executes block arg (nop) executes block arg (nop) executes receiver executes receiver executes named args name executes named args name executes global? executes global? executes block executes block executes args executes args executes named args executes named args executes block arg executes block arg executes name executes name executes named args value executes named args value yield methods executes expressions executes expressions executes scope (nop) executes scope (nop) executes scope executes scope Crystal::Include executes name executes name compares versions compares versions metavar methods executes nothing executes nothing executes name executes name executes id executes id executes is_a? executes is_a? Crystal::MacroVar executes expressions executes expressions executes name executes name instancevar methods executes name executes name Normalize: and normalizes and with is_a? on var normalizes and with is_a? on var normalizes and with assignment normalizes and with assignment normalizes and without variable normalizes and without variable normalizes and with ! on var normalizes and with ! on var normalizes and with variable on the left normalizes and with variable on the left normalizes and with ! on var.is_a?(...) normalizes and with ! on var.is_a?(...) normalizes and with is_a? on exp normalizes and with is_a? on exp Semantic: c union types union getter via pointer types union getter via pointer types Union#new types Union#new types union setter via pointer types union setter via pointer errors if using void in union field type errors if using void in union field type types union getter types union getter errors if using void via typedef in union field type errors if using void via typedef in union field type types union setter types union setter errors if setting closure errors if setting closure errors on empty c union (#633) errors on empty c union (#633) types c union types c union Code gen: def with default value resolves expanded call to current type, not to virtual type resolves expanded call to current type, not to virtual type codegens def with one default value codegens def with one default value considers first the one with more arguments considers first the one with more arguments considers first the one with a restriction considers first the one with a restriction doesn't mix types of instance vars with initialize and new doesn't mix types of instance vars with initialize and new codegens def new with one default value codegens def new with one default value Normalize: op assign normalizes exp.value &&= normalizes exp.value &&= normalizes exp[value] += normalizes exp[value] += normalizes var -= normalizes var -= normalizes exp[value] &&= normalizes exp[value] &&= normalizes exp[value] ||= normalizes exp[value] ||= normalizes var &*= normalizes var &*= normalizes exp[0] += normalizes exp[0] += normalizes var ||= normalizes var ||= normalizes var &&= normalizes var &&= normalizes @var.value += normalizes @var.value += normalizes var &+= normalizes var &+= normalizes var[0] += normalizes var[0] += normalizes exp.value ||= normalizes exp.value ||= normalizes var.value += normalizes var.value += normalizes var *= normalizes var *= normalizes exp.value += normalizes exp.value += normalizes @var[0] += normalizes @var[0] += normalizes @@var.value += normalizes @@var.value += normalizes var += normalizes var += normalizes @@var[0] += normalizes @@var[0] += normalizes var &-= normalizes var &-= Normalize: string interpolation normalizes heredoc normalizes heredoc normalizes string interpolation with multiple lines normalizes string interpolation with multiple lines normalizes string interpolation normalizes string interpolation replaces string constant replaces string constant replaces string constant that results from macro expansion replaces string constant that results from macro expansion replaces through multiple levels replaces through multiple levels Crystal::Command::FormatCommand checks files format checks files format formats stdin (bug + show-backtrace) formats stdin (bug + show-backtrace) formats stdin (syntax error) formats stdin (syntax error) formats files (bug + show-stacktrace) formats files (bug + show-stacktrace) checks files format (excludes + includes) checks files format (excludes + includes) formats files (error) formats files (error) formats stdin (formatted) formats stdin (formatted) formats files formats files checks files format (excludes) checks files format (excludes) formats files (dir) formats files (dir) checks files format (ok) checks files format (ok) formats stdin (bug) formats stdin (bug) formats stdin formats stdin formats files (bug) formats files (bug) formats stdin (invalid byte sequence error) formats stdin (invalid byte sequence error) Code gen: type declaration codegens initialize instance var of superclass codegens initialize instance var of superclass declares and initializes var declares and initializes var declares and initializes declares and initializes codegens initialize instance var codegens initialize instance var codegens initialize instance var with var declaration codegens initialize instance var with var declaration Codegen: double splat double splats named argument into arguments (1) double splats named argument into arguments (1) double splats named argument with positional arguments double splats named argument with positional arguments matches double splat on method with named args and regular args matches double splat on method with named args and regular args double splats twice double splats twice double splats named argument with named args (1) double splats named argument with named args (1) double splats named argument with named args (2) double splats named argument with named args (2) matches double splat with regular splat matches double splat with regular splat removes literal types in all matches (#6239) removes literal types in all matches (#6239) double splats named argument into arguments (2) double splats named argument into arguments (2) evaluates double splat argument just once (#2677) evaluates double splat argument just once (#2677) matches double splat on method with named args matches double splat on method with named args View#module_name hyphen followed by non-ascii letter is replaced by its character hyphen followed by non-ascii letter is replaced by its character underscore is ignored underscore is ignored namespace is divided by hyphen namespace is divided by hyphen Crystal::Repl::Interpreter unions returns union type returns union type put and remove from union, together with is_a? (truthy case) put and remove from union, together with is_a? (truthy case) put and remove from union in instance var put and remove from union in instance var returns large union type (#15041) returns large union type (#15041) converts from NilableType to NonGenericClassType converts from NilableType to NonGenericClassType put and remove from union, together with is_a? (falsey case) put and remove from union, together with is_a? (falsey case) discards is_a? discards is_a? puts union inside union puts union inside union put and remove from union in local var put and remove from union in local var Semantic: static array can match N type argument of static array (#1203) can match N type argument of static array (#1203) doesn't match other number type argument of static array (#1203) doesn't match other number type argument of static array (#1203) types static array new with size being a constant types static array new with size being a constant doesn't crash on restriction (#584) doesn't crash on restriction (#584) can match number type argument of static array (#1203) can match number type argument of static array (#1203) types static array new with size being a computed constant types static array new with size being a computed constant doesn't crash on offsetof (#8858) doesn't crash on offsetof (#8858) allows instantiating static array instance var in initialize of generic type allows instantiating static array instance var in initialize of generic type types static array new types static array new types static array with type as size types static array with type as size errors on negative static array size errors on negative static array size doesn't crash on sizeof (#8858) doesn't crash on sizeof (#8858) types static array with var declaration types static array with var declaration errors if trying to instantiate static array with N not an integer errors if trying to instantiate static array with N not an integer doesn't crash on instance_sizeof (#8858) doesn't crash on instance_sizeof (#8858) types static array new with size being a nested constant inside type declaration (#5426) types static array new with size being a nested constant inside type declaration (#5426) types static array new with size being a computed constant, and use N (bug) types static array new with size being a computed constant, and use N (bug) Semantic: tuples accept tuple in type restriction accept tuple in type restriction errors if non-tuple is splatted inside tuple (2) errors if non-tuple is splatted inside tuple (2) doesn't unify tuple metaclasses (#5384) doesn't unify tuple metaclasses (#5384) matches tuple with splat (#2932) matches tuple with splat (#2932) errors on recursive splat expansion (#218) errors on recursive splat expansion (#218) matches tuple with splat (2) (#2932) matches tuple with splat (2) (#2932) errors on tuple too big (#3816) errors on tuple too big (#3816) errors if using two splat indices on restriction errors if using two splat indices on restriction merges two tuple types of same size merges two tuple types of same size #[](RangeLiteral) types, begin-less types, begin-less types, inbound begin, end-less types, inbound begin, end-less types, out of bound begin, nilable types, out of bound begin, nilable types, inbound begin types, inbound begin gives error when begin index is out of range gives error when begin index is out of range types, begin-less, end-less types, begin-less, end-less types, metaclass index types, metaclass index types, exclusive range types, exclusive range types, inbound begin, nilable types, inbound begin, nilable types tuple of three elements types tuple of three elements #[](NumberLiteral) types, metaclass index types, metaclass index gives error when indexing out of range on empty tuple gives error when indexing out of range on empty tuple gives error when indexing out of range gives error when indexing out of range types, inbound index types, inbound index types, inbound index, nilable types, inbound index, nilable types, out of bound, nilable types, out of bound, nilable gives error when using named args on Tuple gives error when using named args on Tuple types tuple of one element and then two elements types tuple of one element and then two elements #[](Path) works for tuple indexer works for tuple indexer works for named tuple indexer works for named tuple indexer errors on recursive splat expansion (2) (#361) errors on recursive splat expansion (2) (#361) doesn't trigger recursive splat expansion error (#7164) doesn't trigger recursive splat expansion error (#7164) allows tuple covariance allows tuple covariance errors if non-tuple is splatted inside tuple errors if non-tuple is splatted inside tuple types T as a tuple of metaclasses types T as a tuple of metaclasses can iterate T can iterate T errors on named tuple too big errors on named tuple too big doesn't crash on tuple in not executed block (#6718) doesn't crash on tuple in not executed block (#6718) can call [] on T can call [] on T accepts tuple covariance in array accepts tuple covariance in array types tuple with splats inside types tuple with splats inside errors on recursive splat expansion (1) (#361) errors on recursive splat expansion (1) (#361) can name a tuple type can name a tuple type types tuple of one element types tuple of one element doesn't error if Tuple has no args doesn't error if Tuple has no args Code gen: nilable cast does nilable cast (always true) does nilable cast (always true) upcasts type to virtual (2) (#3304) upcasts type to virtual (2) (#3304) casts union type to nilable type (#9342) casts union type to nilable type (#9342) does cast to nil (1) does cast to nil (1) does cast to nil (2) does cast to nil (2) types as? with wrong type (#2775) types as? with wrong type (#2775) codegens with NoReturn codegens with NoReturn casts with block var that changes type (#3341) casts with block var that changes type (#3341) does nilable cast (false) does nilable cast (false) upcasts type to virtual (#3304) upcasts type to virtual (#3304) does upcast does upcast does nilable cast (true) does nilable cast (true) Codegen: const inlines simple const inlines simple const define a constant in lib define a constant in lib initializes simple const initializes simple const uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup uses correct types lookup codegens constant that is declared later because of virtual dispatch codegens constant that is declared later because of virtual dispatch finds nearest constant first finds nearest constant first codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct codegens constant that refers to another constant that is a struct initializes ARGC_UNSAFE initializes ARGC_UNSAFE initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception initialize const that might raise an exception supports closured vars inside initializers (#10474) supports closured vars inside initializers (#10474) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) inlines const with math inlines const with math constants with expression constants with expression codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name codegens two consts with same variable name finds global constant finds global constant synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants synchronizes initialization of constants doesn't crash if constant is used, but class is never instantiated (#1106) doesn't crash if constant is used, but class is never instantiated (#1106) codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const codegens variable assignment in const inlines char const inlines char const runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) runs const side effects (#8862) supports storing function returning nil supports storing function returning nil inlines bool const inlines bool const initializes simple const via another const initializes simple const via another const works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if works with variable declared inside if uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module uses const before declaring it in another module inlines const referencing another const inlines const referencing another const gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class gets pointerof constant inside class invokes block in const invokes block in const invokes block in const invokes block in const invokes block in const invokes block in const invokes block in const invokes block in const invokes block in const invokes block in const define a constant define a constant support constant inside a def support constant inside a def inlines enum value inlines enum value support nested constant support nested constant declaring var declaring var declaring var declaring var declaring var declaring var declaring var declaring var declaring var declaring var gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant gets pointerof complex constant uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it (hoisting) declare constants in right order declare constants in right order declare constants in right order declare constants in right order declare constants in right order declare constants in right order declare constants in right order declare constants in right order declare constants in right order declare constants in right order gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant gets pointerof constant allows constants with same name allows constants with same name Crystal::Repl::Interpreter is_a? does is_a? from NilableType to NonGenericClassType (true) does is_a? from NilableType to NonGenericClassType (true) does is_a? from NilableType to GenericClassInstanceType (false) does is_a? from NilableType to GenericClassInstanceType (false) does is_a? from NilableType to GenericClassInstanceType (true) does is_a? from NilableType to GenericClassInstanceType (true) does is_a? from VirtualType to NonGenericClassType (false) does is_a? from VirtualType to NonGenericClassType (false) does is_a? from VirtualType to NonGenericClassType (true) does is_a? from VirtualType to NonGenericClassType (true) does is_a? from NilableReferenceUnionType to NonGenericClassType (true) does is_a? from NilableReferenceUnionType to NonGenericClassType (true) does is_a? from NilableReferenceUnionType to NonGenericClassType (false) does is_a? from NilableReferenceUnionType to NonGenericClassType (false) does is_a? from NilableType to NonGenericClassType (false) does is_a? from NilableType to NonGenericClassType (false) does is_a? from NilableProcType to non-Nil does is_a? from NilableProcType to non-Nil does is_a? from NilableProcType to Nil does is_a? from NilableProcType to Nil Code gen: cast casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError can cast from Void* to virtual type (#3014) can cast from Void* to virtual type (#3014) casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts between union types, where union has a tuple type (#3377) casts between union types, where union has a tuple type (#3377) codegens class method when type id is available but not a virtual type (#3490) codegens class method when type id is available but not a virtual type (#3490) sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment allows casting nilable type to Void* (1) allows casting nilable type to Void* (1) casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError doesn't corrupt stack when downcasting union to union with different alignment (#14285) doesn't corrupt stack when downcasting union to union with different alignment (#14285) casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError can cast to metaclass (#11121) can cast to metaclass (#11121) allows casting nilable type to Void* (2) allows casting nilable type to Void* (2) casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts with block var that changes type (#3341) casts with block var that changes type (#3341) casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int allows casting object to pointer and back allows casting object to pointer and back allows casting nilable type to Void* (3) allows casting nilable type to Void* (3) upcasts from non-generic to generic upcasts from non-generic to generic casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts to bigger union casts to bigger union upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) cast virtual metaclass type to nilable virtual instance type (#12628) cast virtual metaclass type to nilable virtual instance type (#12628) casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil allows casting nil to Void* allows casting nil to Void* casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type upcasts type to virtual (2) (#3304) upcasts type to virtual (2) (#3304) upcasts type to virtual (#3304) upcasts type to virtual (#3304) casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts to base class making it virtual casts to base class making it virtual casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer Semantic: proc types proc call with return type types proc call with return type types proc literal with a type that was never instantiated types proc literal with a type that was never instantiated disallows Pointer in proc return types disallows Pointer in proc return types can pass Proc(X, T) to Proc(X, Nil) in type restriction (#8964) can pass Proc(X, T) to Proc(X, Nil) in type restriction (#8964) disallows Reference in proc notation return type disallows Reference in proc notation return type passes proc pointer as block passes proc pointer as block can assign proc that returns anything to proc that returns nil, with local var (#3655) can assign proc that returns anything to proc that returns nil, with local var (#3655) disallows StaticArray in captured block disallows StaticArray in captured block disallows Tuple in proc pointer disallows Tuple in proc pointer disallows Tuple in proc notation parameter type disallows Tuple in proc notation parameter type has proc literal as restriction and errors if input is different has proc literal as restriction and errors if input is different allows implicit cast of proc to return void in generic restriction allows implicit cast of proc to return void in generic restriction disallows Object in procs disallows Object in procs disallows Object in proc return types disallows Object in proc return types doesn't cause upcast bug (#8428) doesn't cause upcast bug (#8428) disallows StaticArray in procs disallows StaticArray in procs disallows casting a proc type to one accepting same size argument but different input disallows casting a proc type to one accepting same size argument but different input disallows Object in proc pointer disallows Object in proc pointer disallows Struct in proc return types disallows Struct in proc return types disallows Object in proc notation return type disallows Object in proc notation return type types proc pointer with a type that was never instantiated types proc pointer with a type that was never instantiated types proc literal with return type (2) types proc literal with return type (2) disallows Class in procs disallows Class in procs types proc literal with return type (1) types proc literal with return type (1) disallows Value in proc notation return type disallows Value in proc notation return type doesn't let passing an non-covariant generic argument doesn't let passing an non-covariant generic argument disallows Tuple in proc notation return type disallows Tuple in proc notation return type forwards block and computes correct type (bug) forwards block and computes correct type (bug) disallows Proc in proc notation return type disallows Proc in proc notation return type unpacks tuple but doesn't override local variables, when using new (#9813) unpacks tuple but doesn't override local variables, when using new (#9813) allows new on proc type with less block params allows new on proc type with less block params types empty proc literal types empty proc literal has proc literal as restriction and works when output not specified has proc literal as restriction and works when output not specified errors if missing argument type in proc literal errors if missing argument type in proc literal allows implicit cast of proc to return void in LibC function allows implicit cast of proc to return void in LibC function can pass proc that returns T as Void with named args (#7523) can pass proc that returns T as Void with named args (#7523) disallows Int in captured block disallows Int in captured block disallows Number in proc pointer disallows Number in proc pointer allows casting a proc type to one with void argument allows casting a proc type to one with void argument declares an instance variable with splat in proc notation declares an instance variable with splat in proc notation disallows Reference in proc pointer disallows Reference in proc pointer disallows Tuple in proc return types disallows Tuple in proc return types types proc literal hard type inference (1) types proc literal hard type inference (1) merges return type merges return type disallows Int in proc notation parameter type disallows Int in proc notation parameter type disallows Float in proc notation parameter type disallows Float in proc notation parameter type allows passing proc type if it is a lib alias allows passing proc type if it is a lib alias disallows Reference in captured block disallows Reference in captured block types int -> int proc literal types int -> int proc literal disallows Tuple in procs disallows Tuple in procs allows using Proc as restriction (3) allows using Proc as restriction (3) allows passing function to LibC without specifying types, using a global method allows passing function to LibC without specifying types, using a global method types proc pointer types proc pointer casts to Proc(Nil) when specified in return type casts to Proc(Nil) when specified in return type finds method of object finds method of object disallows Reference in proc notation parameter type disallows Reference in proc notation parameter type disallows Value in proc notation parameter type disallows Value in proc notation parameter type disallows Float in proc pointer disallows Float in proc pointer disallows Struct in proc notation parameter type disallows Struct in proc notation parameter type disallows Int in proc pointer disallows Int in proc pointer sets proc type as void if explicitly told so, when using new sets proc type as void if explicitly told so, when using new doesn't crash on constant to proc pointer doesn't crash on constant to proc pointer allows writing a function type with Proc allows writing a function type with Proc disallows casting a proc type to one accepting less arguments disallows casting a proc type to one accepting less arguments types proc call types proc call disallows Class in captured block disallows Class in captured block has proc literal as restriction and errors if output is different has proc literal as restriction and errors if output is different disallows Value in procs disallows Value in procs disallows StaticArray in proc notation return type disallows StaticArray in proc notation return type allows passing proc type if it is typedef'd allows passing proc type if it is typedef'd virtualizes proc type with -> (#8730) virtualizes proc type with -> (#8730) allows passing nil as proc callback if it is a lib alias allows passing nil as proc callback if it is a lib alias disallows Float in proc notation return type disallows Float in proc notation return type doesn't capture closured var if using typeof doesn't capture closured var if using typeof disallows Number in proc notation parameter type disallows Number in proc notation parameter type allows passing union including module to proc allows passing union including module to proc allows implicit cast of proc to return void in non-generic restriction allows implicit cast of proc to return void in non-generic restriction virtualizes proc type (#6789) virtualizes proc type (#6789) errors if inferred return type doesn't match return type restriction (2) errors if inferred return type doesn't match return type restriction (2) can match *T in block argument can match *T in block argument doesn't need to deduce type of block if return is void doesn't need to deduce type of block if return is void types nil or proc type types nil or proc type disallows Pointer in captured block disallows Pointer in captured block types proc pointer with types types proc pointer with types disallows Proc in captured block disallows Proc in captured block errors when using macro as proc value (top-level) (#7465) errors when using macro as proc value (top-level) (#7465) says wrong number of arguments says wrong number of arguments *doesn't* merge Proc that returns Nil with another one that returns something else (#3655) (this was reverted) *doesn't* merge Proc that returns Nil with another one that returns something else (#3655) (this was reverted) disallows StaticArray in proc return types disallows StaticArray in proc return types allows passing NoReturn type for any return type (3) allows passing NoReturn type for any return type (3) disallows Proc in proc notation parameter type disallows Proc in proc notation parameter type can assign proc that returns anything to proc that returns nil, with class var (#3655) can assign proc that returns anything to proc that returns nil, with class var (#3655) disallows Pointer in proc notation parameter type disallows Pointer in proc notation parameter type allows using proc arg name shadowing local variable allows using proc arg name shadowing local variable allows using Proc as restriction (1) allows using Proc as restriction (1) says wrong number of block params in new on proc type says wrong number of block params in new on proc type can assign NoReturn proc to other proc (#3032) can assign NoReturn proc to other proc (#3032) disallows Object in proc notation parameter type disallows Object in proc notation parameter type disallows Number in procs disallows Number in procs allows passing NoReturn type for any return type, with Proc notation (#12126) allows passing NoReturn type for any return type, with Proc notation (#12126) types proc pointer to instance method types proc pointer to instance method disallows Struct in proc notation return type disallows Struct in proc notation return type uses array argument of proc arg (1) uses array argument of proc arg (1) disallows StaticArray in proc notation parameter type disallows StaticArray in proc notation parameter type *doesn't* merge Proc that returns NoReturn with another one that returns something else (#9971) *doesn't* merge Proc that returns NoReturn with another one that returns something else (#9971) allows metaclass in proc pointer allows metaclass in proc pointer disallows Value in captured block disallows Value in captured block disallows Reference in proc return types disallows Reference in proc return types allows metaclass in proc notation parameter type allows metaclass in proc notation parameter type has proc literal as restriction and errors if sizes are different has proc literal as restriction and errors if sizes are different uses array argument of proc arg (4) uses array argument of proc arg (4) errors when using local variable with proc argument name errors when using local variable with proc argument name gets pointer to lib fun without specifying types gets pointer to lib fun without specifying types disallows StaticArray in proc pointer disallows StaticArray in proc pointer allows metaclass in procs allows metaclass in procs allows metaclass in proc notation return type allows metaclass in proc notation return type disallows Struct in captured block disallows Struct in captured block disallows Struct in proc pointer disallows Struct in proc pointer disallows Float in procs disallows Float in procs types a proc pointer with generic types types a proc pointer with generic types disallows Reference in procs disallows Reference in procs disallows Enum in captured block disallows Enum in captured block disallows Enum in proc return types disallows Enum in proc return types can assign proc that returns anything to proc that returns nil, with instance var (#3655) can assign proc that returns anything to proc that returns nil, with instance var (#3655) allows new on proc type that is a lib alias allows new on proc type that is a lib alias disallows Int in proc return types disallows Int in proc return types says wrong return type in new on proc type says wrong return type in new on proc type gives correct error message when proc return type is incorrect (#219) gives correct error message when proc return type is incorrect (#219) errors when using macro as proc value (inside method) (#7465) errors when using macro as proc value (inside method) (#7465) disallows casting a proc type to one accepting same size argument but different output disallows casting a proc type to one accepting same size argument but different output disallows Object in captured block disallows Object in captured block errors if inferred return type doesn't match return type restriction (1) errors if inferred return type doesn't match return type restriction (1) can use @@cvar as pointer syntax receiver (#9239) can use @@cvar as pointer syntax receiver (#9239) disallows Struct in procs disallows Struct in procs disallows Proc in procs disallows Proc in procs accesses T inside variadic generic, in proc notation accesses T inside variadic generic, in proc notation allows invoking a function with a generic subtype (2) allows invoking a function with a generic subtype (2) disallows Class in proc notation parameter type disallows Class in proc notation parameter type allows passing function to LibC without specifying types, using a class method allows passing function to LibC without specifying types, using a class method disallows Proc in proc return types disallows Proc in proc return types uses array argument of proc arg (3) uses array argument of proc arg (3) disallows Value in proc pointer disallows Value in proc pointer disallows Enum in proc pointer disallows Enum in proc pointer errors when using macro as proc value (top-level with obj) (#7465) errors when using macro as proc value (top-level with obj) (#7465) disallows Number in proc notation return type disallows Number in proc notation return type disallows Class in proc notation return type disallows Class in proc notation return type disallows Pointer in proc notation return type disallows Pointer in proc notation return type disallows Enum in proc notation return type disallows Enum in proc notation return type accesses T and R accesses T and R can pass Proc(T) to Proc(Nil) in type restriction (#8964) can pass Proc(T) to Proc(Nil) in type restriction (#8964) disallows Float in proc return types disallows Float in proc return types disallows Number in captured block disallows Number in captured block types int proc literal types int proc literal passes proc pointer as block with arguments passes proc pointer as block with arguments disallows Enum in procs disallows Enum in procs types int -> int proc call types int -> int proc call disallows Class in proc return types disallows Class in proc return types disallows Pointer in procs disallows Pointer in procs disallows Tuple in captured block disallows Tuple in captured block uses array argument of proc arg (2) uses array argument of proc arg (2) allows passing virtual type including module to proc allows passing virtual type including module to proc ... ... types proc type spec types proc type spec disallows Int in procs disallows Int in procs disallows Proc in proc pointer disallows Proc in proc pointer allows passing function to LibC without specifying types allows passing function to LibC without specifying types disallows Enum in proc notation parameter type disallows Enum in proc notation parameter type allows metaclass in proc return types allows metaclass in proc return types accesses T inside variadic generic accesses T inside variadic generic allows passing NoReturn type for any return type (2) allows passing NoReturn type for any return type (2) binds proc literal to arguments and body binds proc literal to arguments and body disallows Float in captured block disallows Float in captured block disallows Number in proc return types disallows Number in proc return types disallows casting a proc type to one accepting more arguments disallows casting a proc type to one accepting more arguments disallows Value in proc return types disallows Value in proc return types allows new on proc type allows new on proc type types Proc(*T, Void) as Proc(*T, Nil) types Proc(*T, Void) as Proc(*T, Nil) allows passing NoReturn type for any return type (1) allows passing NoReturn type for any return type (1) accesses T inside variadic generic (2) accesses T inside variadic generic (2) disallows Int in proc notation return type disallows Int in proc notation return type disallows Class in proc pointer disallows Class in proc pointer has proc literal as restriction and works has proc literal as restriction and works can use @ivar as pointer syntax receiver (#9239) can use @ivar as pointer syntax receiver (#9239) allows metaclass in captured block allows metaclass in captured block allows using Proc as restriction (2) allows using Proc as restriction (2) allows invoking a function with a generic subtype (1) allows invoking a function with a generic subtype (1) disallows Pointer in proc pointer disallows Pointer in proc pointer Normalize: hash literal hoists complex element expressions, hash-like generic hoists complex element expressions, hash-like generic normalizes empty with of normalizes empty with of hoists complex element expressions, hash-like hoists complex element expressions, hash-like normalizes non-empty without of normalizes non-empty without of normalizes non-empty with of normalizes non-empty with of hoists complex element expressions hoists complex element expressions Crystal::Repl::Interpreter closures closures struct and calls method on it closures struct and calls method on it does closure without args that captures and modifies one local variable does closure without args that captures and modifies one local variable does closure inside proc, capture proc argument does closure inside proc, capture proc argument sets ivar of self closured struct (#12341) sets ivar of self closured struct (#12341) closures self in proc literal (implicit self) closures self in proc literal (implicit self) does closure inside proc does closure inside proc does nested closure inside captured blocks does nested closure inside captured blocks does nested closure inside methods and blocks does nested closure inside methods and blocks does closure with pointerof local var does closure with pointerof local var closures self in proc literal closures self in proc literal does nested closure inside proc does nested closure inside proc does closure inside block does closure inside block closures self and modifies instance var closures self and modifies instance var does closure inside const does closure inside const gets ivar of self closured struct (#12341) gets ivar of self closured struct (#12341) does closure without args that captures and modifies two local variables does closure without args that captures and modifies two local variables closures def arguments closures def arguments does next inside captured block (#12226) does next inside captured block (#12226) closures block args after 8 bytes (the closure var) closures block args after 8 bytes (the closure var) does closure inside block, capture block arg does closure inside block, capture block arg reads self closured struct (#12341) reads self closured struct (#12341) does closure with two args that captures and modifies two local variables does closure with two args that captures and modifies two local variables does closure inside def does closure inside def does closure inside class variable initializer does closure inside class variable initializer passes closured struct instance var as self passes closured struct instance var as self closures closured block arg closures closured block arg does closure and accesses it inside block does closure and accesses it inside block doesn't mix local vars with closured vars doesn't mix local vars with closured vars Code gen: automatic cast doesn't autocast number on union (#8655) doesn't autocast number on union (#8655) casts Symbol to Enum in ivar assignment casts Symbol to Enum in ivar assignment does multidispatch with automatic casting (1) (#8217) does multidispatch with automatic casting (1) (#8217) casts literal float (Float32 -> Float64) casts literal float (Float32 -> Float64) casts Int32 -> Int64 in arg restriction casts Int32 -> Int64 in arg restriction casts literal float (Float64 -> Float32) casts literal float (Float64 -> Float32) casts literal integer (Int32 -> Int64) casts literal integer (Int32 -> Int64) casts literal integer (Int64 -> Int32, ok) casts literal integer (Int64 -> Int32, ok) casts Symbol to Enum in ivar type declaration casts Symbol to Enum in ivar type declaration casts Int32 to Int64 in ivar type declaration casts Int32 to Int64 in ivar type declaration casts Int32 to Int64 in cvar type declaration casts Int32 to Int64 in cvar type declaration casts literal integer (Int32 -> Float32) casts literal integer (Int32 -> Float32) does multidispatch with automatic casting (3) does multidispatch with automatic casting (3) casts Int32 to Int64 in lvar assignment casts Int32 to Int64 in lvar assignment casts literal integer (Int32 -> Float64) casts literal integer (Int32 -> Float64) casts Int32 to Int64 in ivar assignment casts Int32 to Int64 in ivar assignment casts Int32 to Int64 in ivar type declaration in generic casts Int32 to Int64 in ivar type declaration in generic casts integer variable to larger type (#9565) casts integer variable to larger type (#9565) casts symbol literal to enum casts symbol literal to enum does multidispatch with automatic casting (2) (#8217) does multidispatch with automatic casting (2) (#8217) casts Int32 to Int64 in cvar assignment casts Int32 to Int64 in cvar assignment Codegen: special vars allows with primitive allows with primitive codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens in block with nested block codegens after block 2 codegens after block 2 codegens with default argument codegens with default argument allows with struct allows with struct codegens $? codegens $? preserves special vars in macro expansion with call with default arguments (#824) preserves special vars in macro expansion with call with default arguments (#824) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens $? with nilable (2) codegens in block codegens in block codegens in block codegens in block codegens in block codegens in block codegens in block codegens in block codegens in block codegens in block works lazily works lazily works lazily works lazily works lazily works lazily works lazily works lazily works lazily works lazily codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ codegens $~ codegens after block codegens after block codegens after block codegens after block codegens after block codegens after block codegens after block codegens after block codegens after block codegens after block preserves special vars if initialized inside block (#2194) preserves special vars if initialized inside block (#2194) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (1) codegens $~ two levels codegens $~ two levels codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $~ with nilable (2) Code gen: op assign evaluates exps once (#3398) evaluates exps once (#3398) evaluates exps once, [] (#3398) evaluates exps once, [] (#3398) Semantic: union types union when both obj and arg are union types union when both obj and arg are union errors if instantiates union errors if instantiates union types union types union can reopen Union can reopen Union commutativity generic module instance v.s. extending generic module instance metaclass generic module instance v.s. extending generic module instance metaclass uninstantiated generic super-metaclass v.s. uninstantiated generic sub-metaclass uninstantiated generic super-metaclass v.s. uninstantiated generic sub-metaclass module v.s. including module module v.s. including module generic module instance v.s. including generic module instance generic module instance v.s. including generic module instance generic module instance v.s. including module generic module instance v.s. including module module v.s. including generic module instance module v.s. including generic module instance virtual metaclass v.s. generic subclass instance metaclass virtual metaclass v.s. generic subclass instance metaclass superclass v.s. uninstantiated generic subclass superclass v.s. uninstantiated generic subclass module v.s. extending generic module instance metaclass module v.s. extending generic module instance metaclass merges types in the same hierarchy with Union merges types in the same hierarchy with Union doesn't crash with union of no-types (#5805) doesn't crash with union of no-types (#5805) doesn't run virtual lookup on unbound unions (#9173) doesn't run virtual lookup on unbound unions (#9173) looks up type in union type with free var looks up type in union type with free var can iterate T can iterate T can use Union in type restriction (#2988) can use Union in type restriction (#2988) finds method in Object finds method in Object types union when arg is union types union when arg is union doesn't virtualize union elements (#7814) doesn't virtualize union elements (#7814) treats void as nil in union treats void as nil in union supports macro if inside union supports macro if inside union types union when obj is union types union when obj is union types union of classes types union of classes assigns to union and keeps new union type in call assigns to union and keeps new union type in call can reopen Union and access T can reopen Union and access T finds method in Value finds method in Value types union of same type types union of same type Codegen: until codegens until codegens until context does includes self on classes does includes self on classes can get context of empty def can get context of empty def consider different instances of def consider different instances of def can get context in generic class can get context in generic class includes last call includes last call can get context inside initialize can get context inside initialize can get context in file private method can get context in file private method does includes regex special variables does includes regex special variables use type filters from if var use type filters from if var can get context of nested yielded block can get context of nested yielded block includes top level vars includes top level vars can get context in file private module can get context in file private module can handle union types can handle union types can get context inside class methods can get context inside class methods does not includes temp variables does not includes temp variables includes args includes args includes assignments includes assignments can get context of empty yielded block can get context of empty yielded block can get context inside a module can get context inside a module includes block args includes block args can get context in contained class' class method can get context in contained class' class method use type filters from is_a? use type filters from is_a? can get context of yielded block can get context of yielded block can display text output can display text output does includes args, instance vars, local variables and expressions on instance methods does includes args, instance vars, local variables and expressions on instance methods can't get context from uncalled method can't get context from uncalled method can display json output can display json output Crystal::Codegen::Target normalizes triples normalizes triples parses incomplete triples parses incomplete triples parses freebsd version parses freebsd version Semantic: nilable cast doesn't introduce type filter for nilable cast object (#12661) doesn't introduce type filter for nilable cast object (#12661) types as? with NoReturn types as? with NoReturn casts to module casts to module doesn't crash with typeof no-type (#7441) doesn't crash with typeof no-type (#7441) types as? types as? types as? with union types as? with union types as? with nil types as? with nil does upcast does upcast Semantic: special vars infers $~ infers $~ infers when assigning inside block infers when assigning inside block infers $? infers $? infers in block infers in block types $~ when not defined as no return types $~ when not defined as no return infers after block infers after block types $~ when not defined as no return (2) types $~ when not defined as no return (2) infers in block with nested block infers in block with nested block errors if assigning $? at top level errors if assigning $? at top level errors if assigning $~ at top level errors if assigning $~ at top level types $? when not defined as no return types $? when not defined as no return types $? when not defined as no return (2) types $? when not defined as no return (2) Crystal::CrystalPath finds "./test_folder/*" finds "./test_folder/*" finds "test_files" finds "test_files" doesn't finds "./crystal_path_spec.cr" doesn't finds "./crystal_path_spec.cr" finds "foo.cr" finds "foo.cr" finds "../test_folder" finds "../test_folder" finds "./test_folder/file_three.cr" finds "./test_folder/file_three.cr" doesn't finds "./crystal_path_spec" doesn't finds "./crystal_path_spec" finds "test_files/file_one" finds "test_files/file_one" doesn't finds "../crystal_path/test_files/file_one" doesn't finds "../crystal_path/test_files/file_one" includes 'lib' by default includes 'lib' by default doesn't finds "test_files/missing_file.cr" doesn't finds "test_files/missing_file.cr" doesn't finds "file_two.cr" doesn't finds "file_two.cr" .expand_paths .expand_paths finds "test_files/**" finds "test_files/**" finds "other_test_files" finds "other_test_files" finds "crystal_path_spec" finds "crystal_path_spec" finds "test_files/file_one" finds "test_files/file_one" finds "test_files/file_one.cr" finds "test_files/file_one.cr" #each_file_expansion foo/bar foo/bar ./foo ./foo foo.cr foo.cr foo/bar/baz foo/bar/baz ./foo/bar ./foo/bar ./foo/bar/baz ./foo/bar/baz foo.cr/bar.cr foo.cr/bar.cr foo.cr/bar foo.cr/bar foo foo ./foo.cr ./foo.cr finds "./file_two.cr" finds "./file_two.cr" finds "test_files/file_three" finds "test_files/file_three" doesn't finds "build/reproducible-path/crystal-1.14.0+dfsg/spec/compiler/crystal_path/crystal_path_spec.cr" doesn't finds "build/reproducible-path/crystal-1.14.0+dfsg/spec/compiler/crystal_path/crystal_path_spec.cr" finds "test_files/file_four" finds "test_files/file_four" finds "test_files/yet_another" finds "test_files/yet_another" overrides path with environment variable overrides path with environment variable doesn't finds "test_folder/*" doesn't finds "test_folder/*" doesn't finds "test_folder/file_three.cr" doesn't finds "test_folder/file_three.cr" finds "test_files/*" finds "test_files/*" doesn't finds "../../src/file_three" doesn't finds "../../src/file_three" finds "../**" finds "../**" finds "test_files/another" finds "test_files/another" Semantic: did you mean doesn't suggest for operator doesn't suggest for operator suggests a better alternative to logical operators (#2715) suggests a better alternative to logical operators (#2715) suggests for class variable suggests for class variable suggest that there might be a typo for an initialize method with overload suggest that there might be a typo for an initialize method with overload says did you mean for instance var in subclass says did you mean for instance var in subclass says did you mean for one mistake in short word in instance method says did you mean for one mistake in short word in instance method says did you mean for nested class says did you mean for nested class says did you mean for variable says did you mean for variable says did you mean for class says did you mean for class suggest that there might be a typo for an initialize method suggest that there might be a typo for an initialize method says did you mean for global method without parenthesis says did you mean for global method without parenthesis says did you mean for two mistakes in long word in instance method says did you mean for two mistakes in long word in instance method says did you mean for named argument says did you mean for named argument says did you mean finds most similar in type says did you mean finds most similar in type says did you mean for instance var says did you mean for instance var doesn't suggest when declaring var inside macro (#466) doesn't suggest when declaring var inside macro (#466) doesn't suggest when declaring var with suffix if and using it (#946) doesn't suggest when declaring var with suffix if and using it (#946) says did you mean for global method with parenthesis says did you mean for global method with parenthesis says did you mean finds most similar in def says did you mean finds most similar in def suggest that there might be a typo for an initialize method in inherited class suggest that there might be a typo for an initialize method in inherited class says did you mean in instance var declaration says did you mean in instance var declaration Semantic: instance var doesn't consider var as nilable if conditionally assigned inside initialize, but has initializer (#3669) doesn't consider var as nilable if conditionally assigned inside initialize, but has initializer (#3669) infers type from custom generic hash literal infers type from custom generic hash literal transfers initializer from generic module to class transfers initializer from generic module to class infers type from char literal infers type from char literal is more permissive with macro def initialize, other initialize is more permissive with macro def initialize, other initialize infers from class method that has type annotation, with multiple overloads matching, all with the same type infers from class method that has type annotation, with multiple overloads matching, all with the same type declares instance var of generic type declares instance var of generic type doesn't infer type to be nilable if using self.class in call in assign doesn't infer type to be nilable if using self.class in call in assign declares instance var of generic module (2) declares instance var of generic module (2) doesn't complain in second part of #2575 doesn't complain in second part of #2575 obeys super module initialize (#456) obeys super module initialize (#456) errors if not initializing super variables errors if not initializing super variables infers type from tuple literal infers type from tuple literal infers type to be nilable if self is used before assigning to a variable infers type to be nilable if self is used before assigning to a variable infers type from two literals infers type from two literals declares instance var with initial value declares instance var with initial value infers from class method that refers to constant infers from class method that refers to constant infers type from block argument without restriction infers type from block argument without restriction infers type from responds_to? infers type from responds_to? errors if declaring instance var and turns out to be nilable, in generic module type in generic type errors if declaring instance var and turns out to be nilable, in generic module type in generic type doesn't infer unbound generic type on non-generic call (#6390) doesn't infer unbound generic type on non-generic call (#6390) doesn't consider instance var as nilable if assigned before self access (#4981) doesn't consider instance var as nilable if assigned before self access (#4981) errors if declaring instance variable in module included in Object errors if declaring instance variable in module included in Object inferrs Proc(Void) to Proc(Nil) inferrs Proc(Void) to Proc(Nil) declares as named tuple declares as named tuple cannot guess the type from double-splat argument with not double-splatted type cannot guess the type from double-splat argument with not double-splatted type doesn't complain if declared type is recursive alias that's nilable doesn't complain if declared type is recursive alias that's nilable errors if declaring var in Int32 errors if declaring var in Int32 infers from new with return type infers from new with return type doesn't infer type to be nilable if using self.class doesn't infer type to be nilable if using self.class infers type for non-generic class, with assign infers type for non-generic class, with assign errors if declaring instance var and turns out to be nilable, in generic module type errors if declaring instance var and turns out to be nilable, in generic module type doesn't crash on recursive method call doesn't crash on recursive method call infers from another instance var with type declaration infers from another instance var with type declaration doesn't check call of non-self instance (#4830) doesn't check call of non-self instance (#4830) infers type for generic class, with assign (1) infers type for generic class, with assign (1) infers type from hash literal from elements infers type from hash literal from elements infers type for generic module infers type for generic module doesn't error when using generic because guessed elsewhere doesn't error when using generic because guessed elsewhere infers type from regex literal with interpolation infers type from regex literal with interpolation guesses inside macro expression guesses inside macro expression infer from class method where new is redefined infer from class method where new is redefined declares instance var with initial value, with subclass declares instance var with initial value, with subclass infers type for generic class, with if infers type for generic class, with if infers type from ! infers type from ! infers from class method that has number literal infers from class method that has number literal can't infer type from initializer in generic module type can't infer type from initializer in generic module type says can't infer (#2536) says can't infer (#2536) errors if declaring var in Float errors if declaring var in Float infers type from array literal with literals in generic type infers type from array literal with literals in generic type declares instance var of generic module from non-generic module declares instance var of generic module from non-generic module declares instance var of generic class after reopen declares instance var of generic class after reopen infers type from lib variable infers type from lib variable errors when using Class in generic type errors when using Class in generic type errors if declaring var in Reference errors if declaring var in Reference is more permissive with macro def initialize, bug with named args is more permissive with macro def initialize, bug with named args guesses from array literal with of, with subclass guesses from array literal with of, with subclass uses virtual types in fun uses virtual types in fun infers type from ||= infers type from ||= infers type from custom generic array literal infers type from custom generic array literal infers type from regex literal infers type from regex literal doesn't error if not initializing variables but calling previous_def (2) (#3210) doesn't error if not initializing variables but calling previous_def (2) (#3210) infers from Pointer.malloc infers from Pointer.malloc doesn't crash when inferring from new without matches (#2538) doesn't crash when inferring from new without matches (#2538) infers type from assign (2) infers type from assign (2) infers type from symbol literal infers type from symbol literal infers type from hash literal with of infers type from hash literal with of infers type from custom array literal infers type from custom array literal infers type from bool literal infers type from bool literal infers type from lib out (1) infers type from lib out (1) infers type in multi assign infers type in multi assign errors if declaring generic type without type vars errors if declaring generic type without type vars doesn't error when redeclaring subclass variable with the same type doesn't error when redeclaring subclass variable with the same type infers from another instance var infers from another instance var doesn't solve instance var initializer in instance context (2) (#5876) doesn't solve instance var initializer in instance context (2) (#5876) can type ivar from class inherited by generic class (#5281) can type ivar from class inherited by generic class (#5281) errors if declaring var in Value errors if declaring var in Value guesses from splat (2) (#3149) guesses from splat (2) (#3149) can't infer type from initializer in non-generic module can't infer type from initializer in non-generic module errors if not initializing super variables (2) errors if not initializing super variables (2) infers from class method that has type annotation, with overload infers from class method that has type annotation, with overload infers type from as? infers type from as? infers type from block argument infers type from block argument infers type for generic class, with case infers type for generic class, with case errors when overriding inherited instance variable with incompatible type errors when overriding inherited instance variable with incompatible type infers type from redefined method if calls previous_def infers type from redefined method if calls previous_def declares instance var of generic type, with splat inside Tuple declares instance var of generic type, with splat inside Tuple infers type from && infers type from && guesses virtual array type (3) (#5342) guesses virtual array type (3) (#5342) infers type from array literal from its literals infers type from array literal from its literals doesn't infer from class method with multiple statements and return, on non-easy return (2) doesn't infer from class method with multiple statements and return, on non-easy return (2) infers from restriction using virtual type infers from restriction using virtual type infers type for generic class, with T.new infers type for generic class, with T.new infers type from begin infers type from begin errors if declaring var in Int errors if declaring var in Int can type ivar from module included by generic class (#5281) can type ivar from module included by generic class (#5281) infers type from self (#2575) infers type from self (#2575) doesn't error if uses typeof(@var) doesn't error if uses typeof(@var) declares instance var in module, inherits to type recursively declares instance var in module, inherits to type recursively guesses virtual array type (3) (#5342) guesses virtual array type (3) (#5342) infers from new with return type returning generic infers from new with return type returning generic errors if not initializing super variables (3) errors if not initializing super variables (3) errors if finally not initialized in macro def errors if finally not initialized in macro def is more permissive with macro def initialize, multiple is more permissive with macro def initialize, multiple errors if declaring var in Class errors if declaring var in Class doesn't error when using generic in generic type because guessed elsewhere doesn't error when using generic in generic type because guessed elsewhere errors if declaring var in Number errors if declaring var in Number doesn't infer unbound generic type on generic method called from generic's subclass, metaclass context doesn't infer unbound generic type on generic method called from generic's subclass, metaclass context declares instance var of generic module declares instance var of generic module doesn't combine union of Number and Number subclass (#5073) doesn't combine union of Number and Number subclass (#5073) declares instance var of generic type, with union declares instance var of generic type, with union doesn't complain if not initialized in one initialize, but has initializer (#2465) doesn't complain if not initialized in one initialize, but has initializer (#2465) cannot guess the type from splat argument with not splatted type cannot guess the type from splat argument with not splatted type errors if unknown ivar through macro (#4050) errors if unknown ivar through macro (#4050) infers type from argument default value infers type from argument default value guesses virtual hash type (1) (#5342) guesses virtual hash type (1) (#5342) errors on undefined instance var and subclass calling super errors on undefined instance var and subclass calling super errors if declaring instance var and turns out to be nilable, in generic type errors if declaring instance var and turns out to be nilable, in generic type errors if declaring var in NamedTuple(T) errors if declaring var in NamedTuple(T) looks up return type restriction in defining type, not instantiated type (#11961) looks up return type restriction in defining type, not instantiated type (#11961) guesses from new on abstract class guesses from new on abstract class declares with `self` declares with `self` infers type for generic class, with && infers type for generic class, with && declares instance var with self, on generic declares instance var with self, on generic instance variables initializers are used in class variables initialized objects (#3988) instance variables initializers are used in class variables initialized objects (#3988) infers type from hash literal with literals in generic type infers type from hash literal with literals in generic type infers type from literal outside def infers type from literal outside def doesn't infer for subclass if assigns another type (1) doesn't infer for subclass if assigns another type (1) doesn't error if not initializing variables but calling super in parent parent doesn't error if not initializing variables but calling super in parent parent doesn't error when using Class but specifying type doesn't error when using Class but specifying type doesn't error if not initializing variables but calling super doesn't error if not initializing variables but calling super doesn't error if not calling super but initializing all variables doesn't error if not calling super but initializing all variables infers from Pointer.malloc with two arguments infers from Pointer.malloc with two arguments infers type by removing nil from || left side infers type by removing nil from || left side declares instance var of generic class declares instance var of generic class errors with macro def but another def doesn't initialize all errors with macro def but another def doesn't initialize all infers from generic class method that has type annotation infers from generic class method that has type annotation doesn't consider self.initialize as initializer (#3239) doesn't consider self.initialize as initializer (#3239) gives correct error when trying to use Int as an instance variable type gives correct error when trying to use Int as an instance variable type can't infer type from initializer can't infer type from initializer errors if declaring var in Proc(*T, R) errors if declaring var in Proc(*T, R) infers type from unless infers type from unless infers type for generic class, with assign (2) infers type for generic class, with assign (2) errors if declaring var in StaticArray(T, N) errors if declaring var in StaticArray(T, N) infers type from lib out (3) infers type from lib out (3) declares instance var in module, inherits to type declares instance var in module, inherits to type infers type to be nilable if self is used in same assign infers type to be nilable if self is used in same assign declares instance var which appears in initialize declares instance var which appears in initialize guesses from hash literal with of, with subclass guesses from hash literal with of, with subclass declares instance var declares instance var infers from class method that has type annotation infers from class method that has type annotation infers type for generic class, with T.new and literal infers type for generic class, with T.new and literal solves instance var initializer in metaclass context (#5876) solves instance var initializer in metaclass context (#5876) doesn't error if calling initialize from another initialize (2) doesn't error if calling initialize from another initialize (2) infers type from || infers type from || doesn't solve instance var initializer in instance context (3) (#5876) doesn't solve instance var initializer in instance context (3) (#5876) can guess the type from splat argument with splatted type variable can guess the type from splat argument with splatted type variable doesn't duplicate instance var in subclass doesn't duplicate instance var in subclass infers type from array literal in generic type infers type from array literal in generic type infers type from included module, outside def infers type from included module, outside def infers type from sizeof infers type from sizeof infer from class method with multiple statements and return infer from class method with multiple statements and return infers type from path that is a type infers type from path that is a type guesses virtual array type (1) (#5342) guesses virtual array type (1) (#5342) doesn't error if not initializing nilable var in subclass doesn't error if not initializing nilable var in subclass infers type from offsetof infers type from offsetof allows nil instance var because it's a generic type allows nil instance var because it's a generic type can guess the type from double-splat argument with double-splatted type can guess the type from double-splat argument with double-splatted type errors if adds instance variable to Object via guess via included module errors if adds instance variable to Object via guess via included module infers nilable instance var of generic module infers nilable instance var of generic module errors if declaring var in Enum errors if declaring var in Enum guesses inside macro if guesses inside macro if infers type from custom hash literal infers type from custom hash literal infers type for generic class, with literal infers type for generic class, with literal errors if declaring var in Pointer(T) errors if declaring var in Pointer(T) doesn't infer for subclass if assigns another type (2) doesn't infer for subclass if assigns another type (2) infers type for generic class, with lib call infers type for generic class, with lib call errors if declaring instance var and turns out to be nilable errors if declaring instance var and turns out to be nilable infers type from custom hash literal in generic infers type from custom hash literal in generic doesn't solve instance var initializer in instance context (1) (#5876) doesn't solve instance var initializer in instance context (1) (#5876) doesn't error if not initializing variables but calling super for module doesn't error if not initializing variables but calling super for module infers type from hash literal in generic type infers type from hash literal in generic type infers type from argument restriction infers type from argument restriction doesn't infer unbound generic type on generic method called from generic's subclass doesn't infer unbound generic type on generic method called from generic's subclass infers from method in generic type, with type annotation infers from method in generic type, with type annotation declares instance var of generic type, with tuple declares instance var of generic type, with tuple infers from Pointer.malloc in generic type infers from Pointer.malloc in generic type infers type from path that is a constant infers type from path that is a constant infers from generic class method that has type annotation, without instantiating infers from generic class method that has type annotation, without instantiating declares instance var multiple times, last one wins declares instance var multiple times, last one wins declares instance var of generic type, with virtual metaclass declares instance var of generic type, with virtual metaclass infers type from is_a? infers type from is_a? infers from class method that invokes new infers from class method that invokes new infers type from string literal infers type from string literal doesn't crash on missing var on subclass, with superclass not specifying a type doesn't crash on missing var on subclass, with superclass not specifying a type errors if not initialized in all initialize errors if not initialized in all initialize declares instance var of generic type, with no type parameter declares instance var of generic type, with no type parameter says can't infer type if only nil was assigned says can't infer type if only nil was assigned errors if declaring variable with number errors if declaring variable with number infers type from string interpolation infers type from string interpolation doesn't infer from class method with multiple statements and return, on non-easy return doesn't infer from class method with multiple statements and return, on non-easy return ignores super module initialize (#456) ignores super module initialize (#456) infers type from assign (1) infers type from assign (1) doesn't error if calling initialize from another initialize (1) doesn't error if calling initialize from another initialize (1) declares instance var of generic type, with static array declares instance var of generic type, with static array infers type from self as virtual type (#2575) infers type from self as virtual type (#2575) errors when assigning instance variable at top level block errors when assigning instance variable at top level block infers nilable instance var of generic type infers nilable instance var of generic type declares instance var of generic type, with splat declares instance var of generic type, with splat declares instance var of generic type, with splat inside Proc declares instance var of generic type, with splat inside Proc can guess the type from double-splat argument with double-splatted type variable can guess the type from double-splat argument with double-splatted type variable declares instance var of generic type subclass declares instance var of generic type subclass doesn't error if not initializing variables but calling previous_def (#3210) doesn't error if not initializing variables but calling previous_def (#3210) infers type from lib fun call infers type from lib fun call infers type from enum member infers type from enum member says undefined instance variable on read says undefined instance variable on read infers type from ||= inside another assignment infers type from ||= inside another assignment declares instance var of generic type, with generic type declares instance var of generic type, with generic type infers type from new expression infers type from new expression infers type to be non-nilable if initialized in all initialize infers type to be non-nilable if initialized in all initialize errors when redeclaring subclass variable with a different type errors when redeclaring subclass variable with a different type is more permissive with macro def initialize is more permissive with macro def initialize uses virtual types in union uses virtual types in union uses virtual types in self uses virtual types in self doesn't error if not initializes in all initialize because declared as nilable doesn't error if not initializes in all initialize because declared as nilable can't infer type of generic method that returns self (#5383) can't infer type of generic method that returns self (#5383) infers type from range literal infers type from range literal errors if declaring var in Union(*T) errors if declaring var in Union(*T) infers type from all call matches infers type from all call matches doesn't error if not initializing variables but calling super for generic module doesn't error if not initializing variables but calling super for generic module accepts overriding inherited instance variable with compatible type accepts overriding inherited instance variable with compatible type errors if declaring var in Object errors if declaring var in Object doesn't error if initializing var in superclass, and then empty initialize doesn't error if initializing var in superclass, and then empty initialize errors if declaring var in Tuple(*T) errors if declaring var in Tuple(*T) infers from Pointer.null infers from Pointer.null errors if can't find lib call, before erroring on instance var (#2579) errors if can't find lib call, before erroring on instance var (#2579) allow usage of instance variable initializer from instance variable initializer allow usage of instance variable initializer from instance variable initializer can't infer type when using operation on const (#4054) can't infer type when using operation on const (#4054) infers type from if infers type from if infers type from argument with restriction, in generic infers type from argument with restriction, in generic infers type from proc literal with return type infers type from proc literal with return type infers from another instance var in generic type infers from another instance var in generic type cannot guess type from argument assigned in body cannot guess type from argument assigned in body errors on undefined constant errors on undefined constant doesn't error if not initialized in macro def but outside it doesn't error if not initialized in macro def but outside it can guess the type from splat argument with splatted type can guess the type from splat argument with splatted type infers type from literal outside def with initialize and type restriction infers type from literal outside def with initialize and type restriction infers from new with return type in generic type infers from new with return type in generic type infers from Pointer.malloc with two arguments in generic type infers from Pointer.malloc with two arguments in generic type doesn't error if declaring instance var and doesn't out to be nilable, in generic module type doesn't error if declaring instance var and doesn't out to be nilable, in generic module type can declare type even if included module has a guessed var can declare type even if included module has a guessed var infers from class method that has type annotation, in generic class infers from class method that has type annotation, in generic class infers type to be nilable if not initialized infers type to be nilable if not initialized guesses from as.(typeof(...)) in generic type guesses from as.(typeof(...)) in generic type looks up self restriction in instantiated type, not defined type looks up self restriction in instantiated type, not defined type infers type from case infers type from case guesses from splat (#3149) guesses from splat (#3149) infers from method on integer literal, with type annotation infers from method on integer literal, with type annotation doesn't error if inheriting generic instance (#3635) doesn't error if inheriting generic instance (#3635) infers type from uninitialized infers type from uninitialized says undefined instance variable on assign says undefined instance variable on assign errors when assigning instance variable at top level control block errors when assigning instance variable at top level control block doesn't find T in generic type that's not the current type (#4460) doesn't find T in generic type that's not the current type (#4460) doesn't infer type from redefined method doesn't infer type from redefined method instance variable inherited from multiple parents with incompatible type module and class, with definitions module and class, with definitions errors module and module, with definitions errors module and module, with definitions errors module and module, with declarations errors module and module, with declarations module and class, with declarations module and class, with declarations with compatible type module and class, with definitions module and class, with definitions accepts module and module, with declarations accepts module and module, with declarations module and class, with declarations (3) module and class, with declarations (3) module and class, with declarations (2) module and class, with declarations (2) accepts module and module, with definitions accepts module and module, with definitions module and class, with declarations module and class, with declarations doesn't error if not initializing variables but calling super and previous_def doesn't error if not initializing variables but calling super and previous_def can't infer type from initializer in generic class type can't infer type from initializer in generic class type infers type from custom array literal in generic infers type from custom array literal in generic ignores redefined initialize (#456) ignores redefined initialize (#456) infers type from instance_sizeof infers type from instance_sizeof infers from another instance var in generic type with type declaration infers from another instance var in generic type with type declaration infers type from array literal with of metaclass infers type from array literal with of metaclass infers type from array literal with of infers type from array literal with of infers from assign to local var (#2467) infers from assign to local var (#2467) infers in multiple assign for tuple type (1) infers in multiple assign for tuple type (1) declares instance var of generic type, with proc declares instance var of generic type, with proc considers var as assigned in multi-assign considers var as assigned in multi-assign shouldn't error when accessing instance var in initialized that's always initialized (#2953) shouldn't error when accessing instance var in initialized that's always initialized (#2953) infers from Pointer.null in generic type infers from Pointer.null in generic type infers type from included module infers type from included module transfers initializer from module to generic class transfers initializer from module to generic class declares instance var of generic type, with metaclass declares instance var of generic type, with metaclass declares instance var with union type with a virtual member declares instance var with union type with a virtual member guesses virtual hash type (2) (#5342) guesses virtual hash type (2) (#5342) infers from assign to local var in generic type (#2467) infers from assign to local var in generic type (#2467) doesn't if declaring nilable instance var and turns out to be nilable doesn't if declaring nilable instance var and turns out to be nilable infers type from lib out (2) infers type from lib out (2) declares instance var of generic type through module declares instance var of generic type through module guesses virtual array type (2) (#5342) guesses virtual array type (2) (#5342) guesses from as.(typeof(...)) guesses from as.(typeof(...)) infers type from included module recursively infers type from included module recursively uses T.new (#4291) uses T.new (#4291) doesn't infer generic type without type argument inside generic doesn't infer generic type without type argument inside generic errors when typing an instance variable inside a method errors when typing an instance variable inside a method errors if adds instance variable to Object via guess errors if adds instance variable to Object via guess infers type from as infers type from as infers type from number literal infers type from number literal infers type for generic class, with begin infers type for generic class, with begin says can't infer type if only nil was assigned, in generic type says can't infer type if only nil was assigned, in generic type infers type from named tuple literal infers type from named tuple literal errors when using Class (#2605) errors when using Class (#2605) types generic instance as virtual type if generic type has subclasses (#3805) types generic instance as virtual type if generic type has subclasses (#3805) errors if not initializing super variable in generic errors if not initializing super variable in generic doesn't crash on #3580 doesn't crash on #3580 doesn't error if initializes via super in macro def doesn't error if initializes via super in macro def errors when assigning instance variable inside nested expression errors when assigning instance variable inside nested expression guesses inside macro for guesses inside macro for immutability of returned container literals (#10818) Annotation#args Annotation#args When#conds When#conds Generic#type_vars Generic#type_vars ProcPointer#args ProcPointer#args MultiAssign#targets MultiAssign#targets ProcNotation#inputs ProcNotation#inputs MultiAssign#values MultiAssign#values StringInterpolation#expressions StringInterpolation#expressions Union#types Union#types Crystal::Playground::Session assert assert Crystal::Repl::Interpreter enum does enum value does enum value does enum new does enum new Normalize: return next break doesn't remove after return when there's an unless doesn't remove after return when there's an unless removes nodes after if that returns in both branches removes nodes after if that returns in both branches removes nodes after break removes nodes after break removes nodes after next removes nodes after next doesn't remove nodes after if that returns in one branch doesn't remove nodes after if that returns in one branch removes nodes after return removes nodes after return Crystal::Repl::Interpreter procs interprets call inside Proc type interprets call inside Proc type interprets proc literal with args interprets proc literal with args can downcast Proc(T) to Proc(Nil) can downcast Proc(T) to Proc(Nil) discards proc call discards proc call interprets no args proc literal interprets no args proc literal casts from nilable proc type to proc type casts from nilable proc type to proc type does call without receiver inside closure does call without receiver inside closure casts proc call arguments to proc arg types (#12350) casts proc call arguments to proc arg types (#12350) calls proc primitive on union of module that has no subtypes (#12954) calls proc primitive on union of module that has no subtypes (#12954) Normalize: chained comparisons normalizes two comparisons with calls normalizes two comparisons with calls normalizes one comparison with call normalizes one comparison with call normalizes two comparisons with literal normalizes two comparisons with literal normalizes one comparison with var normalizes one comparison with var normalizes one comparison with literal normalizes one comparison with literal Crystal::Repl::Interpreter integration does Float64#to_s (simple) does Float64#to_s (simple) does caller does caller does String#includes? does String#includes? does CSV does CSV does YAML::Serializable does YAML::Serializable does Int32#to_s does Int32#to_s does JSON does JSON does IO.pipe (checks that StaticArray is passed correctly to C calls) does IO.pipe (checks that StaticArray is passed correctly to C calls) does Float64#to_s (complex) does Float64#to_s (complex) does XML does XML does some Hash methods does some Hash methods does YAML does YAML does Range#to_a, Array#to_s does Range#to_a, Array#to_s does JSON::Serializable does JSON::Serializable Code gen: no return codegens no return variable declaration (#1508) codegens no return variable declaration (#1508) codegens if with no return and variable used afterwards codegens if with no return and variable used afterwards codegens if with NoReturn on then and union on else codegens if with NoReturn on then and union on else codegens untyped typeof (#5105) codegens untyped typeof (#5105) codegens call with no return because of falsey if (#3661) codegens call with no return because of falsey if (#3661) codegen types exception handler as NoReturn if ensure is NoReturn codegen types exception handler as NoReturn if ensure is NoReturn codegens no return instance variable declaration (#1508) codegens no return instance variable declaration (#1508) codegens Pointer(NoReturn).malloc codegens Pointer(NoReturn).malloc Code gen: and codegens and with primitive type other than bool with union codegens and with primitive type other than bool with union codegens and with bool union as left node 3 codegens and with bool union as left node 3 codegens and with non-false union as left node codegens and with non-false union as left node codegens assign in right node, inside if must not be nil codegens assign in right node, inside if must not be nil codegens and with bool union as left node 1 codegens and with bool union as left node 1 codegens and with bool and int 1 codegens and with bool and int 1 codegens assign in right node, after if must be nilable codegens assign in right node, after if must be nilable codegens and with primitive type other than bool codegens and with primitive type other than bool codegens and with bool true and false codegens and with bool true and false codegens and with bool union as left node 1 codegens and with bool union as left node 1 codegens and with bool union as left node 4 codegens and with bool union as left node 4 codegens and with bool union as left node 3 codegens and with bool union as left node 3 codegens and with nil union as left node 1 codegens and with nil union as left node 1 codegens and with nil union as left node 2 codegens and with nil union as left node 2 codegens and with bool and int 2 codegens and with bool and int 2 codegens and with bool union as left node 2 codegens and with bool union as left node 2 codegens and with nilable as left node 1 codegens and with nilable as left node 1 codegens and with bool true and true codegens and with bool true and true codegens and with bool false and false codegens and with bool false and false codegens and with primitive type other than bool codegens and with primitive type other than bool codegens and with bool union as left node 2 codegens and with bool union as left node 2 codegens and with nilable as left node 2 codegens and with nilable as left node 2 codegens assign in right node, after must be nilable codegens assign in right node, after must be nilable codegens and with bool false and true codegens and with bool false and true Normalize: or normalizes or with is_a? on var normalizes or with is_a? on var normalizes or with ! on var.is_a?(...) normalizes or with ! on var.is_a?(...) normalizes or with variable on the left normalizes or with variable on the left normalizes or with ! on var normalizes or with ! on var normalizes or without variable normalizes or without variable normalizes or with assignment on the left normalizes or with assignment on the left Semantic: nil can call a fun with nil for typedef pointer can call a fun with nil for typedef pointer marks instance variables as nil but doesn't explode on macros marks instance variables as nil but doesn't explode on macros marks instance variables as nil when not in initialize 2 marks instance variables as nil when not in initialize 2 restricts type of 'while foo' restricts type of 'while foo' restricts type of 'while foo' on assign restricts type of 'while foo' on assign types nil types nil types empty types empty marks instance variables as nil when not in initialize marks instance variables as nil when not in initialize restricts type of 'if foo' restricts type of 'if foo' can call a fun with nil for pointer can call a fun with nil for pointer restricts type of 'if foo' on assign restricts type of 'if foo' on assign doesn't check return type for nil doesn't check return type for nil doesn't check return type for void doesn't check return type for void Crystal::Repl::Interpreter responds_to? does responds_to? does responds_to? doesn't crash if def body ends up with no type (#12219) doesn't crash if def body ends up with no type (#12219) Crystal normalize_path assert assert assert assert assert assert assert assert Semantic: enum errors if defining initialize in Enum (#7238) errors if defining initialize in Enum (#7238) errors on enum without members (#3447) errors on enum without members (#3447) creates enum from value creates enum from value errors if declaring type inside enum (#3127) errors if declaring type inside enum (#3127) marks as flags with base type (#2185) marks as flags with base type (#2185) gives error on signed flags enum overflow after a member with value gives error on signed flags enum overflow after a member with value attaches annotation to enum method (#6690) attaches annotation to enum method (#6690) gives error on enum overflow after a member with value gives error on enum overflow after a member with value has All value when defined as @[Flags] has All value when defined as @[Flags] reopens enum with same base type (1) reopens enum with same base type (1) reopens enum without base type (1) reopens enum without base type (1) doesn't error when defining a flags enum in a lib with None or All doesn't error when defining a flags enum in a lib with None or All allows redefining None to 0 for @[Flags] enum allows redefining None to 0 for @[Flags] enum can redefine Enum.new can redefine Enum.new can use macro for inside enum can use macro for inside enum types enum types enum doesn't error when defining a method for an enum with flags doesn't error when defining a method for an enum with flags gives error on flags enum overflow gives error on flags enum overflow errors if reopen and tries to define constant errors if reopen and tries to define constant errors if invoking private enum method errors if invoking private enum method errors if using a name twice errors if using a name twice defines method on enum defines method on enum disallows implicit conversion of int to enum disallows implicit conversion of int to enum reopens enum without base type (2) reopens enum without base type (2) errors if reopen but not enum errors if reopen but not enum doesn't break assigned values in enum flags when a member has value 0 (#5767) doesn't break assigned values in enum flags when a member has value 0 (#5767) reopens an enum reopens an enum doesn't overflow on flags member (#7877) doesn't overflow on flags member (#7877) errors if inheriting Enum (#3592) errors if inheriting Enum (#3592) errors if enum value is too big for type (#678) errors if enum value is too big for type (#678) doesn't overflow when going from negative to zero (#7874) doesn't overflow when going from negative to zero (#7874) errors if declaring type inside enum, nested (#3127) errors if declaring type inside enum, nested (#3127) doesn't visit enum members generated by macros twice (#10104) doesn't visit enum members generated by macros twice (#10104) can use macro expression inside enum can use macro expression inside enum defines class method on enum defines class method on enum errors if using instance var inside enum (#991) errors if using instance var inside enum (#991) finds method in enum type finds method in enum type errors if reopening enum with different base type (2) errors if reopening enum with different base type (2) gives error on enum overflow gives error on enum overflow gives error on unsigned flags enum overflow after a member with value gives error on unsigned flags enum overflow after a member with value finds class method in enum type finds class method in enum type disallows All value for @[Flags] enum disallows All value for @[Flags] enum types enum value types enum value has None value when defined as @[Flags] has None value when defined as @[Flags] reopens enum with same base type (2) reopens enum with same base type (2) doesn't error when defining a non-flags enum with None or All doesn't error when defining a non-flags enum with None or All allows class vars in enum allows class vars in enum disallows redefining None to non-0 for @[Flags] enum disallows redefining None to non-0 for @[Flags] enum errors if reopening enum with different base type (1) errors if reopening enum with different base type (1) Semantic: var declares local variable and assigns wrong type declares local variable and assigns wrong type declares local variable but doesn't assign it in all branches declares local variable but doesn't assign it in all branches errors if declaring var that is already declared errors if declaring var that is already declared types a variable types a variable declares local variable with value declares local variable with value reports undefined local variable or method reports undefined local variable or method reports variable always nil reports variable always nil parse local variable as method call even if local variable is declared in call arguments parse local variable as method call even if local variable is declared in call arguments types an assign types an assign lets type on else side of if with a Bool | Nil union lets type on else side of if with a Bool | Nil union declares local variable and assigns it with if declares local variable and assigns it with if types an assign with type declaration types an assign with type declaration declares local variable and immediately reads it declares local variable and immediately reads it reports there's no self reports there's no self errors if reads from underscore errors if reads from underscore errors if declaring generic type without type vars (with local var) errors if declaring generic type without type vars (with local var) declares local variable and then assigns it declares local variable and then assigns it errors if variable already exists errors if variable already exists Semantic: nilable instance var says instance var was not initialized in all of the initialize methods, with var declaration says instance var was not initialized in all of the initialize methods, with var declaration says instance var was used before initialized says instance var was used before initialized says self was used before instance var was initialized (3) says self was used before instance var was initialized (3) says self was used before instance var was initialized (2) says self was used before instance var was initialized (2) says instance var was used before initialized (2) says instance var was used before initialized (2) says instance var was not initialized in all of the initialize methods says instance var was not initialized in all of the initialize methods finds type that doesn't initialize instance var (#1222) finds type that doesn't initialize instance var (#1222) says self was used before instance var was initialized says self was used before instance var was initialized marks instance var as nilable if assigned inside proc literal marks instance var as nilable if assigned inside proc literal doesn't consider as nil if initialized with catch-all doesn't consider as nil if initialized with catch-all marks instance var as nilable if assigned inside captured block (#1696) marks instance var as nilable if assigned inside captured block (#1696) says instance var was not initialized in all of the initialize methods (2) says instance var was not initialized in all of the initialize methods (2) Code gen: c union codegens union property default value 2 codegens union property default value 2 aligns to the member with biggest align requirements aligns to the member with biggest align requirements codegens union property setter 1 codegens union property setter 1 automatically converts numeric union type in field assignment automatically converts numeric union type in field assignment automatically converts by invoking to_unsafe automatically converts by invoking to_unsafe codegens union property setter 2 codegens union property setter 2 codegens union property default value codegens union property default value builds union setter with fun type builds union setter with fun type codegens union property setter 2 via pointer codegens union property setter 2 via pointer codegens struct inside union codegens struct inside union moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) moves unions around correctly (#12550) automatically converts numeric type in field assignment automatically converts numeric type in field assignment codegens assign c union to union codegens assign c union to union reads union instance var reads union instance var does to_s does to_s does to_s does to_s does to_s does to_s does to_s does to_s does to_s does to_s codegens union property setter 1 via pointer codegens union property setter 1 via pointer fills union type to the max size fills union type to the max size Code gen: named tuple codegens tuple nilable index (1) codegens tuple nilable index (1) upcasts named tuple inside compatible named tuple upcasts named tuple inside compatible named tuple upcasts named tuple inside union to union with compatible named tuple upcasts named tuple inside union to union with compatible named tuple passes named tuple to def passes named tuple to def downcasts union inside tuple to value (#3907) downcasts union inside tuple to value (#3907) codegens tuple nilable index (3) codegens tuple nilable index (3) upcasts named tuple union to compatible named tuple upcasts named tuple union to compatible named tuple does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class assigns two same-size named tuple types to a same var (#3132) assigns two same-size named tuple types to a same var (#3132) allows named tuple covariance allows named tuple covariance merges two named tuple types with same keys but different types (1) merges two named tuple types with same keys but different types (1) provides T as a named tuple literal provides T as a named tuple literal assigns named tuple inside union to union with compatible named tuple assigns named tuple inside union to union with compatible named tuple codegens tuple nilable index (2) codegens tuple nilable index (2) assigns named tuple to compatible named tuple assigns named tuple to compatible named tuple gets keys at compile time (1) gets keys at compile time (1) doesn't crash when overload doesn't match doesn't crash when overload doesn't match gets keys at compile time (2) gets keys at compile time (2) codegens union of tuple of float with tuple of tuple of float codegens union of tuple of float with tuple of tuple of float assigns named tuple union to compatible named tuple assigns named tuple union to compatible named tuple accesses T and creates instance from it accesses T and creates instance from it codegens tuple index another order codegens tuple index another order doesn't error if NamedTuple includes a non-generic module (#10380) doesn't error if NamedTuple includes a non-generic module (#10380) gets size at compile time gets size at compile time merges two named tuple types with same keys but different types (2) merges two named tuple types with same keys but different types (2) codegens tuple index codegens tuple index Crystal::Repl::Interpreter tuple interprets tuple metaclass range indexer interprets tuple metaclass range indexer interprets tuple literal of different types (1) interprets tuple literal of different types (1) discards tuple access discards tuple access does tuple indexer on union does tuple indexer on union unpacks tuple in block arguments unpacks tuple in block arguments interprets tuple range indexer interprets tuple range indexer discards tuple (#12383) discards tuple (#12383) interprets tuple metaclass indexer interprets tuple metaclass indexer interprets tuple literal and access by known index interprets tuple literal and access by known index extends sign when doing to_i32 extends sign when doing to_i32 interprets tuple literal of different types (2) interprets tuple literal of different types (2) interprets tuple range indexer (2) interprets tuple range indexer (2) interprets tuple self interprets tuple self Crystal::Repl::Interpreter class vars interprets class var without initializer interprets class var without initializer finds self in class var initializer (#12439) finds self in class var initializer (#12439) interprets class var for virtual type interprets class var for virtual type interprets class var with initializer interprets class var with initializer reads class var initializer with union (#12633) reads class var initializer with union (#12633) does class var initializer with union (#12633) does class var initializer with union (#12633) interprets class var for virtual metaclass type interprets class var for virtual metaclass type Compiler runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename runs subcommand in preference to a filename compiles a file compiles a file compiles a file compiles a file compiles a file compiles a file compiles a file compiles a file compiles a file compiles a file treats all arguments post-filename as program arguments treats all arguments post-filename as program arguments has a valid version has a valid version Parser warnings warns on missing space before colon in anonymous block param type restriction in anonymous block param type restriction in type declaration in type declaration in return type restriction in return type restriction in block param type restriction in block param type restriction warns on suffix-less UInt64 literals > Int64::MAX warns on suffix-less UInt64 literals > Int64::MAX Semantic: recursive struct check errors on recursive struct inside module errors on recursive struct inside module errors on recursive abstract struct through module (#11384) errors on recursive abstract struct through module (#11384) errors on private recursive type errors on private recursive type detects recursive generic struct through module (#4720) detects recursive generic struct through module (#4720) detects recursive struct through module detects recursive struct through module errors on mutually recursive struct errors on mutually recursive struct errors on recursive struct through named tuple errors on recursive struct through named tuple errors on recursive generic struct inside module errors on recursive generic struct inside module errors on recursive struct through recursive alias (#4454) (#4455) errors on recursive struct through recursive alias (#4454) (#4455) errors on recursive struct through tuple errors on recursive struct through tuple detects recursive struct through inheritance (#3071) detects recursive struct through inheritance (#3071) detects recursive generic struct through generic module (#4720) detects recursive generic struct through generic module (#4720) errors on recursive struct errors on recursive struct Semantic: virtual restricts with union and doesn't merge to super type restricts with union and doesn't merge to super type doesn't check methods on abstract classes doesn't check methods on abstract classes checks cover in every concrete subclass checks cover in every concrete subclass types class and two subclasses types class and two subclasses types method call of virtual type types method call of virtual type reports missing cover for subclass of abstract class reports missing cover for subclass of abstract class works with restriction alpha works with restriction alpha reports undefined method in subclass of abstract class reports undefined method in subclass of abstract class types two subclasses types two subclasses doesn't check cover for abstract classes doesn't check cover for abstract classes removes instance var from subclasses removes instance var from subclasses automatically does virtual for generic type if there are subclasses automatically does virtual for generic type if there are subclasses uses virtual type as generic type if class is abstract even in union uses virtual type as generic type if class is abstract even in union checks cover in every concrete subclass 3 checks cover in every concrete subclass 3 dispatches virtual method dispatches virtual method types two classes without a shared virtual types two classes without a shared virtual types class and subclass as one type types class and subclass as one type reports no matches for virtual type reports no matches for virtual type dispatches virtual method with overload dispatches virtual method with overload types inspect types inspect finds overloads of union of virtual, class and nil finds overloads of union of virtual, class and nil uses virtual type as generic type if class is abstract uses virtual type as generic type if class is abstract types instance var as virtual when using type declaration and has subclasses types instance var as virtual when using type declaration and has subclasses types method call of virtual type with override types method call of virtual type with override doesn't check methods on abstract classes 2 doesn't check methods on abstract classes 2 doesn't check cover for subclasses doesn't check cover for subclasses checks cover in every concrete subclass 2 checks cover in every concrete subclass 2 checks method in every concrete subclass but method in Object checks method in every concrete subclass but method in Object finds overloads of union of virtual, class and nil with abstract class finds overloads of union of virtual, class and nil with abstract class Semantic: def reports no overload matches 2 reports no overload matches 2 errors if return type doesn't match on class method errors if return type doesn't match on class method errors when default value is incompatible with non-type restriction errors when default value is incompatible with non-type restriction types a call with an argument uses a new scope types a call with an argument uses a new scope is ok if returns Int32? with explicit return is ok if returns Int32? with explicit return types a call with a float types a call with a float types empty body def types empty body def allows recursion allows recursion types getchar with Char types getchar with Char defines class method defines class method uses free variable and doesn't conflict with top-level type uses free variable and doesn't conflict with top-level type lookups methods in super modules lookups methods in super modules errors if declares def inside if errors if declares def inside if clones regex literal value (#2384) clones regex literal value (#2384) says can only defined def on types and self says can only defined def on types and self types call with union argument types call with union argument errors if return type doesn't match errors if return type doesn't match gives correct error for wrong number of arguments for program call inside type (2) (#1024) gives correct error for wrong number of arguments for program call inside type (2) (#1024) assigns def owner assigns def owner uses free variable as block return type uses free variable as block return type types call with global scope types call with global scope types simple recursion types simple recursion defines class method with self defines class method with self allows recursion with arg allows recursion with arg gives correct error for methods in Class gives correct error for methods in Class types a call with a double types a call with a double uses free variable with metaclass and default value uses free variable with metaclass and default value errors when default value is incompatible with type restriction errors when default value is incompatible with type restriction uses free variable with metaclass uses free variable with metaclass types a call with an argument types a call with an argument calls with default argument calls with default argument points error at name (#6937) points error at name (#6937) gives correct error for methods in Class (2) gives correct error for methods in Class (2) types a call with an int types a call with an int fixes bug #165 fixes bug #165 says compile-time type on error says compile-time type on error errors if trying to declare method on generic class instance errors if trying to declare method on generic class instance errors when calling two functions with nil type errors when calling two functions with nil type types putchar with Char types putchar with Char can't use self in toplevel method can't use self in toplevel method shows free variables if no overload matches shows free variables if no overload matches accesses free var of default argument (#1101) accesses free var of default argument (#1101) reports no block given reports no block given types mutual recursion types mutual recursion reports block given reports block given reports undefined method reports undefined method types simple recursion 2 types simple recursion 2 uses free variable uses free variable types a call with an argument types a call with an argument reports no overload matches reports no overload matches doesn't find type in namespace through free var doesn't find type in namespace through free var types mutual infinite recursion types mutual infinite recursion gives correct error for wrong number of arguments for program call inside type (#1024) gives correct error for wrong number of arguments for program call inside type (#1024) errors if return type doesn't match on instance method errors if return type doesn't match on instance method do not use body for the def type do not use body for the def type Code gen: not doesn't crash doesn't crash codegens not nil codegens not nil codegens not nilable type (false) codegens not nilable type (false) codegens not with inlinable value (#6451) codegens not with inlinable value (#6451) codegens not nilable type (true) codegens not nilable type (true) codegens not false codegens not false codegens not true codegens not true codegens not pointer (true) codegens not pointer (true) codegens not number codegens not number codegens not pointer (false) codegens not pointer (false) Crystal::Playground::AgentInstrumentorTransformer instrument blocks and single yields instrument blocks and single yields instrument case statement instrument case statement instrument if statement instrument if statement instrument instance variable and class variables reads and writes instrument instance variable and class variables reads and writes instrument puts with args instrument puts with args instrument ivar with obj instrument ivar with obj instrument literals with expression names instrument literals with expression names instrument assignments in the rhs instrument assignments in the rhs instrument nested class defs instrument nested class defs instrument single variables expressions instrument single variables expressions instrument chained comparisons (#4663) instrument chained comparisons (#4663) instrument string interpolations instrument string interpolations instrument multi assignments in the rhs instrument multi assignments in the rhs instrument exceptions instrument exceptions instrument single statement var def instrument single statement var def instrument is_a? expressions instrument is_a? expressions instrument literals instrument literals do not instrument class/module declared macro do not instrument class/module declared macro instrument unless statement instrument unless statement instrument binary expressions instrument binary expressions do not instrument macro calls in class do not instrument macro calls in class instrument while statement instrument while statement instrument blocks and but non multi yields instrument blocks and but non multi yields do not instrument records class do not instrument records class instrument class defs instrument class defs instrument inside modules instrument inside modules do not instrument class initializing arguments do not instrument class initializing arguments do not instrument constants assignments do not instrument constants assignments do not instrument top level macro calls do not instrument top level macro calls instrument returns inside def instrument returns inside def instrument print with args instrument print with args instrument unary expressions instrument unary expressions instrument single statement def instrument single statement def instrument not expressions instrument not expressions instrument typeof instrument typeof instrument nested blocks unless in same line instrument nested blocks unless in same line allow visibility modifiers allow visibility modifiers instrument multi statement def instrument multi statement def Semantic: extern struct declares extern union with no constructor declares extern union with no constructor overrides getter overrides getter can be passed to C fun can be passed to C fun declares extern struct with no constructor declares extern struct with no constructor can use extern struct in lib can use extern struct in lib declares with constructor declares with constructor errors if using non-primitive for field type via module errors if using non-primitive for field type via module errors if using non-primitive for field type errors if using non-primitive for field type can new with named args can new with named args can include module can include module errors if using non-primitive type in constructor errors if using non-primitive type in constructor cleanup strip tuple elements after unreachable element strip tuple elements after unreachable element errors if assigning var to itself errors if assigning var to itself strip named-tuple elements after unreachable element strip named-tuple elements after unreachable element errors if assigning instance var to itself errors if assigning instance var to itself file_exists? with relative path reads file (doesn't exist) reads file (doesn't exist) reads file (exists) reads file (exists) with absolute path returns false if file doesn't exist returns false if file doesn't exist returns true if file exists returns true if file exists Code gen: union type assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union codegens union type as return value codegens union type as return value codegens union type for instance var codegens union type for instance var codegens union type when no obj codegens union type when no obj assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 codegens union type when obj is not union but arg is codegens union type when obj is not union but arg is dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union respects union payload alignment when upcasting Bool (#14898) respects union payload alignment when upcasting Bool (#14898) codegens if with same nested union codegens if with same nested union codegens union type when obj is union and no args codegens union type when obj is union and no args codegens union type when no obj and restrictions codegens union type when no obj and restrictions sorts restrictions when there are unions sorts restrictions when there are unions codegens union type when obj is union and arg is union codegens union type when obj is union and arg is union provides T as a tuple literal provides T as a tuple literal codegens union type when obj union but arg is not codegens union type when obj union but arg is not Semantic: uninitialized disallows declaring var of type Number disallows declaring var of type Number declares as uninitialized declares as uninitialized can uninitialize variable outside initialize, generic (#2828) can uninitialize variable outside initialize, generic (#2828) errors if declares var and then assigns other type errors if declares var and then assigns other type disallows declaring var of type Class disallows declaring var of type Class disallows declaring var of type Float disallows declaring var of type Float disallows declaring var of type Enum disallows declaring var of type Enum disallows declaring var of type Reference disallows declaring var of type Reference disallows declaring var of type Struct disallows declaring var of type Struct errors if declaring variable multiple times with different types (#917) errors if declaring variable multiple times with different types (#917) errors if declaring generic type without type vars (with class var) errors if declaring generic type without type vars (with class var) can use uninitialized with class type (#2940) can use uninitialized with class type (#2940) disallows declaring var of type Int disallows declaring var of type Int works with uninitialized NoReturn (#3314) works with uninitialized NoReturn (#3314) uses virtual type for uninitialized (#8216) uses virtual type for uninitialized (#8216) declares an instance variable in initialize as uninitialized declares an instance variable in initialize as uninitialized declares as uninitialized and reads it declares as uninitialized and reads it has type (#3641) has type (#3641) can uninitialize variable outside initialize (#2828) can uninitialize variable outside initialize (#2828) disallows declaring var of type Object disallows declaring var of type Object disallows declaring var of type Value disallows declaring var of type Value errors if declaring generic type without type vars (with instance var) errors if declaring generic type without type vars (with instance var) Crystal::Repl::Interpreter autocast autocasts float32 var to float64 (#12560) autocasts float32 var to float64 (#12560) autocasts symbol to enum in ivar initializer (#12216) autocasts symbol to enum in ivar initializer (#12216) autocasts integer var to float (#12560) autocasts integer var to float (#12560) autocasts int in multidispatch autocasts int in multidispatch autocasts number literal to integer autocasts number literal to integer autocasts symbol to enum in multidispatch (#11782) autocasts symbol to enum in multidispatch (#11782) autocasts symbol to enum autocasts symbol to enum autocasts number literal to float autocasts number literal to float autocasts integer var to integer (#12560) autocasts integer var to integer (#12560) Semantic: ssa types if with return in else with assign types if with return in else with assign types if with return in then with assign types if with return in then with assign types a var inside an if without previous definition types a var inside an if without previous definition types if with break in then types if with break in then types block with break types block with break types a var inside an if with previous definition types a var inside an if with previous definition types while with break types while with break types if with return in then types if with return in then types a var that is declared in a while condition types a var that is declared in a while condition types block with break doesn't infect initial vars types block with break doesn't infect initial vars types a var with an if with nested if types a var with an if with nested if doesn't change type to nilable inside if doesn't change type to nilable inside if doesn't error if same variable is declared in multiple typeofs doesn't error if same variable is declared in multiple typeofs types a var after begin ensure as having last type types a var after begin ensure as having last type types a var inside an if without definition in else types a var inside an if without definition in else types a var that is re-assigned in a while condition types a var that is re-assigned in a while condition types re-assign inside while (bug) types re-assign inside while (bug) doesn't error if same variable is used in multiple arguments of same typeof doesn't error if same variable is used in multiple arguments of same typeof types if with unreachable in then types if with unreachable in then types if with restricted type in then types if with restricted type in then types a var that is re-assigned in a while and used in condition types a var that is re-assigned in a while and used in condition types block with next types block with next types a var inside an if without change in else types a var inside an if without change in else types a var that is declared in a while with out types a var that is declared in a while with out types if with return in both branches types if with return in both branches types a var that is declared in a while condition with break after re-assignment types a var that is declared in a while condition with break after re-assignment types a var after begin ensure as having last type (2) types a var after begin ensure as having last type (2) types a var with an if but without change types a var with an if but without change types while with next types while with next types if with return in else types if with return in else preserves type filters after block (bug) preserves type filters after block (bug) types a var inside an if without change in then types a var inside an if without change in then types if with next in then types if with next in then types while with break with new var types while with break with new var types a var that is re-assigned in a while in next and used in condition types a var that is re-assigned in a while in next and used in condition types if with restricted type in else types if with restricted type in else types a var that is re-assigned in a while types a var that is re-assigned in a while types a var that is re-assigned in a block types a var that is re-assigned in a block types re-assign inside if (bug) types re-assign inside if (bug) types a var inside an if without definition in then types a var inside an if without definition in then types while with break doesn't infect initial vars types while with break doesn't infect initial vars types a var that is declared in a while condition with break before re-assignment types a var that is declared in a while condition with break before re-assignment types if/else with var (bug) types if/else with var (bug) types a var that is declared in a while types a var that is declared in a while types a redefined variable types a redefined variable errors if accessing variable declared inside typeof errors if accessing variable declared inside typeof Normalize: def expands with splat and zero expands with splat and zero expands a def with splat and double splat expands a def with splat and double splat expands with named argument and yield expands with named argument and yield expands a def on request with default arguments that yields (external names) expands a def on request with default arguments that yields (external names) expands arg with default value after splat expands arg with default value after splat gives correct body location with default arg with restriction, without body default arg with restriction, without body default arg, with body default arg, with body block instance var arg, with body block instance var arg, with body block instance var arg, without body block instance var arg, without body default arg, without body default arg, without body default arg with restriction, with body default arg with restriction, with body splat arg, without body splat arg, without body splat arg, with body splat arg, with body expands a def with external names (2) expands a def with external names (2) expands a def with double splat and two named args expands a def with double splat and two named args expands a def on request with default arguments expands a def on request with default arguments expands with more named arg which come in the correct order expands with more named arg which come in the correct order expands a new def with double splat and two named args and regular args expands a new def with double splat and two named args and regular args expands with splat and default argument expands with splat and default argument expands with magic constant specifying one when all are magic expands with magic constant specifying one when all are magic expands a def on request with default arguments (external names) expands a def on request with default arguments (external names) expands with two named argument and one not expands with two named argument and one not expands a def on request with default arguments and type restrictions expands a def on request with default arguments and type restrictions expands a def with double splat and no args expands a def with double splat and no args expands with one named arg that is the only one (1) expands with one named arg that is the only one (1) expands def with reserved external name (#6559) expands def with reserved external name (#6559) expands with splat with one arg before expands with splat with one arg before expands with magic constant with named arg expands with magic constant with named arg expands with magic constant expands with magic constant expands with one named arg that is the only one (2) expands with one named arg that is the only one (2) expands with two named argument expands with two named argument expands with magic constant specifying one when not all are magic expands with magic constant specifying one when not all are magic expands default value after splat index expands default value after splat index expands with named argument expands with named argument expands a def on request with default arguments and type restrictions (2) expands a def on request with default arguments and type restrictions (2) expands a def with external names (1) expands a def with external names (1) expands a def with double splat and two named args and regular args expands a def with double splat and two named args and regular args expands a def on request with default arguments that yields expands a def on request with default arguments that yields uses bare * uses bare * expands a def on request with default arguments (2) expands a def on request with default arguments (2) expands with splat expands with splat expands with magic constant with named arg with yield expands with magic constant with named arg with yield expands a def on request with default arguments that yields (2) expands a def on request with default arguments that yields (2) Codegen: is_a? codegens is_a? casts union to nilable codegens is_a? casts union to nilable codegens is_a? on right side of and codegens is_a? on right side of and doesn't consider generic type to be a generic type of a recursive alias (#3524) doesn't consider generic type to be a generic type of a recursive alias (#3524) doesn't error if result is discarded (#14113) doesn't error if result is discarded (#14113) restricts metaclass against virtual metaclass type restricts metaclass against virtual metaclass type evaluates method on filtered union type 2 evaluates method on filtered union type 2 restricts type in else but lazily restricts type in else but lazily codegens is_a? with nilable gives false because other type 1 codegens is_a? with nilable gives false because other type 1 works with inherited generic class against an instantiation works with inherited generic class against an instantiation evaluate method on filtered type evaluate method on filtered type codegens is_a? with virtual and module codegens is_a? with virtual and module does is_a? with generic class metaclass does is_a? with generic class metaclass doesn't work with inherited generic class against an instantiation (2) doesn't work with inherited generic class against an instantiation (2) does is_a?(generic type) for nested generic inheritance, through upcast (1) does is_a?(generic type) for nested generic inheritance, through upcast (1) codegens is_a? from nilable reference union type to nil codegens is_a? from nilable reference union type to nil restricts virtual metaclass against virtual metaclass type restricts virtual metaclass against virtual metaclass type evaluates method on filtered union type evaluates method on filtered union type codegens is_a? false for simple type codegens is_a? false for simple type doesn't skip assignment when used in combination with .is_a? and && (#1121) doesn't skip assignment when used in combination with .is_a? and && (#1121) doesn't type merge (1) (#548) doesn't type merge (1) (#548) transforms else if condition is always falsey transforms else if condition is always falsey does is_a? with more strict virtual type does is_a? with more strict virtual type does is_a? with union type as Union(X, Y), don't resolve to virtual type (#10244) does is_a? with union type as Union(X, Y), don't resolve to virtual type (#10244) codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens is_a? with union gives true codegens is_a? with union gives true passes is_a? with generic module type on virtual type (#10302) passes is_a? with generic module type on virtual type (#10302) codegens is_a? true for simple type codegens is_a? true for simple type does is_a? for virtual generic instance type against generic does is_a? for virtual generic instance type against generic restricts union with union restricts union with union codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true says true for Class.is_a?(Class.class) (#4374) says true for Class.is_a?(Class.class) (#4374) doesn't type merge (2) (#548) doesn't type merge (2) (#548) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) does is_a? with && and true condition does is_a? with && and true condition restricts union metaclass to metaclass (#12295) restricts union metaclass to metaclass (#12295) codegens untyped var (#4009) codegens untyped var (#4009) doesn't skip assignment when used in combination with .is_a? (false case) (#1121) doesn't skip assignment when used in combination with .is_a? (false case) (#1121) doesn't skip assignment when used in combination with .is_a? (true case, else) (#1121) doesn't skip assignment when used in combination with .is_a? (true case, else) (#1121) works with inherited generic class against an instantiation (3) works with inherited generic class against an instantiation (3) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) codegens is_a? with nilable gives false because no type codegens is_a? with nilable gives false because no type evaluate method on filtered type nilable type not-nil evaluate method on filtered type nilable type not-nil codegens is_a? with nilable gives false because no type codegens is_a? with nilable gives false because no type codegens is_a? with virtual codegens is_a? with virtual restricts simple type with union restricts simple type with union does is_a?(generic type) for nested generic inheritance, through upcast (2) does is_a?(generic type) for nested generic inheritance, through upcast (2) codegens is_a? with union gives false codegens is_a? with union gives false virtual metaclass type is not virtual instance type (#12628) virtual metaclass type is not virtual instance type (#12628) codegens is_a? with union gives true codegens is_a? with union gives true does is_a? with union type, don't resolve to virtual type (#10244) does is_a? with union type, don't resolve to virtual type (#10244) codegens is_a? with nilable gives false because other type 2 codegens is_a? with nilable gives false because other type 2 codegens is_a? casts union to nilable in method codegens is_a? casts union to nilable in method doesn't skip assignment when used in combination with .is_a? (true case, then) (#1121) doesn't skip assignment when used in combination with .is_a? (true case, then) (#1121) says false for value.is_a?(Class) says false for value.is_a?(Class) evaluate method on filtered type nilable type nil evaluate method on filtered type nilable type nil evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 does is_a?(generic type) for nested generic inheritance (2) does is_a?(generic type) for nested generic inheritance (2) codegens is_a? with nilable gives true codegens is_a? with nilable gives true codegens is_a? from virtual type to module codegens is_a? from virtual type to module does is_a?/responds_to? twice (#1451) does is_a?/responds_to? twice (#1451) codegens is_a? from nilable reference union type to type codegens is_a? from nilable reference union type to type says false for GenericChild(Base).is_a?(GenericBase(Child)) (#1294) says false for GenericChild(Base).is_a?(GenericBase(Child)) (#1294) does is_a? for union of module and type does is_a? for union of module and type codegens is_a? with virtual and nil codegens is_a? with virtual and nil codegens is_a? with union gives false codegens is_a? with union gives false gives false if generic type doesn't match exactly gives false if generic type doesn't match exactly does is_a?(generic type) for nested generic inheritance (1) (#9660) does is_a?(generic type) for nested generic inheritance (1) (#9660) codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false transforms then if condition is always truthy transforms then if condition is always truthy resets truthy state after visiting nodes (bug) resets truthy state after visiting nodes (bug) says true for Class.is_a?(Class.class.class) (#4374) says true for Class.is_a?(Class.class.class) (#4374) Crystal::Repl::Interpreter calls does ReadInstanceVar with wants_struct_pointer does ReadInstanceVar with wants_struct_pointer does call with struct as obj (2) does call with struct as obj (2) mutates through inlined instance var with receiver mutates through inlined instance var with receiver inlines call that returns self inlines call that returns self puts struct pointer after tuple indexer puts struct pointer after tuple indexer inlines method that just reads an instance var, but produces side effects of args inlines method that just reads an instance var, but produces side effects of args inlines method that just reads an instance var inlines method that just reads an instance var does call on instance var that's a struct, from a class does call on instance var that's a struct, from a class inlines call that returns self (2) inlines call that returns self (2) mutates through pointer (3) mutates through pointer (3) mutates through inlined instance var without receiver mutates through inlined instance var without receiver mutates through pointer (1) mutates through pointer (1) calls a top-level method without arguments and no local vars calls a top-level method without arguments and no local vars interprets call with default values interprets call with default values discards call with struct as obj discards call with struct as obj does Assign instance var with wants_struct_pointer does Assign instance var with wants_struct_pointer does Assign var with wants_struct_pointer does Assign var with wants_struct_pointer does call with struct as obj does call with struct as obj mutates call argument mutates call argument interprets implicit self call for pointer interprets implicit self call for pointer calls a top-level method with two arguments calls a top-level method with two arguments does call on ivar that's a struct, takes a pointer to instance var, inside if does call on ivar that's a struct, takes a pointer to instance var, inside if does call on read instance var that's a struct, takes a pointer to instance var does call on read instance var that's a struct, takes a pointer to instance var mutates through read instance var mutates through read instance var calls a top-level method without arguments but with local vars calls a top-level method without arguments but with local vars interprets call with named arguments interprets call with named arguments interprets call with if interprets call with if does call on self that's a struct, takes a pointer to instance var, inside if does call on self that's a struct, takes a pointer to instance var, inside if does call on instance var that's a struct, from a struct does call on instance var that's a struct, from a struct does call on constant that's a struct, takes a pointer to instance var, inside if does call on constant that's a struct, takes a pointer to instance var, inside if does Assign class var with wants_struct_pointer does Assign class var with wants_struct_pointer mutates through pointer (2) mutates through pointer (2) does call on var that's a struct, takes a pointer to instance var, inside if does call on var that's a struct, takes a pointer to instance var, inside if does call on constant that's a struct, takes a pointer to instance var does call on constant that's a struct, takes a pointer to instance var inlines method that just reads an instance var (2) inlines method that just reads an instance var (2) does call on Pointer#value that's a struct, takes a pointer to instance var does call on Pointer#value that's a struct, takes a pointer to instance var interprets self for primitive types interprets self for primitive types interprets explicit self call for primitive types interprets explicit self call for primitive types Code gen: lib uses static array in lib extern (#5688) uses static array in lib extern (#5688) passes nil to varargs (#1570) passes nil to varargs (#1570) call to void function call to void function refers to lib type (#960) refers to lib type (#960) casts C fun to Crystal proc when accessing instance var (#2515) casts C fun to Crystal proc when accessing instance var (#2515) doesn't crash with nil and varargs (#4414) doesn't crash with nil and varargs (#4414) can use enum as fun return can use enum as fun return can use enum as fun argument can use enum as fun argument doesn't crash when casting -1 to UInt32 (#3594) doesn't crash when casting -1 to UInt32 (#3594) allows setting/getting external variable as function pointer allows setting/getting external variable as function pointer allows passing type to LibC if it has a converter with to_unsafe (bug) allows passing type to LibC if it has a converter with to_unsafe (bug) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) get fun field from union (#672) allows invoking out with underscore allows invoking out with underscore get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) get fun field from struct (#672) allows passing type to LibC if it has a converter with to_unsafe allows passing type to LibC if it has a converter with to_unsafe can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return can use tuple as fun return codegens lib var set and get codegens lib var set and get passes int as another float type in literal passes int as another float type in literal ASTNode#to_s does to_s of "lib Foo\n struct Foo\n a : Void\n b : Void\n end\nend" does to_s of "lib Foo\n struct Foo\n a : Void\n b : Void\n end\nend" does to_s of "offsetof(Foo, @bar)" does to_s of "offsetof(Foo, @bar)" does to_s of "foo { |i| i.bar { i } }" does to_s of "foo { |i| i.bar { i } }" does to_s of "lib Foo\n A = Pointer(Void).new(0)\n struct B\n x : Void*\n y : Int[1]\n end\n fun c(Void*) : Char[2]*\nend" does to_s of "lib Foo\n A = Pointer(Void).new(0)\n struct B\n x : Void*\n y : Int[1]\n end\n fun c(Void*) : Char[2]*\nend" does to_s of "lib Foo\n FOO = 0\nend" does to_s of "lib Foo\n FOO = 0\nend" does to_s of "def foo(& : ->)\nend" does to_s of "def foo(& : ->)\nend" does to_s of "asm(\"bl trap\" :::: \"unwind\")" does to_s of "asm(\"bl trap\" :::: \"unwind\")" does to_s of "# doc\ndef foo\nend" does to_s of "# doc\ndef foo\nend" does to_s of "macro foo(x, @[Foo] *y)\nend" does to_s of "macro foo(x, @[Foo] *y)\nend" does to_s of "\"\\e\\0\\\"\"" does to_s of "\"\\e\\0\\\"\"" does to_s of "(1 + 2).as(Int32)" does to_s of "(1 + 2).as(Int32)" does to_s of "foo do |k, v|\n k.bar(1, 2, 3)\nend" does to_s of "foo do |k, v|\n k.bar(1, 2, 3)\nend" does to_s of "fun foo\nend" does to_s of "fun foo\nend" does to_s of "\"\#{1}\\0\"" does to_s of "\"\#{1}\\0\"" does to_s of "enum Foo\n A = 0\n B\nend" does to_s of "enum Foo\n A = 0\n B\nend" does to_s of "&-1" does to_s of "&-1" does to_s of "([] of T).foo" does to_s of "([] of T).foo" does to_s of "@[Foo(1, 2, a: 1, b: 2)]" does to_s of "@[Foo(1, 2, a: 1, b: 2)]" does to_s of "1 && (a = 2)" does to_s of "1 && (a = 2)" does to_s of "foo(x : Foo((T -> U)))" does to_s of "foo(x : Foo((T -> U)))" does to_s of "fun foo(a : Void, b : Void, ...) : Void\nend" does to_s of "fun foo(a : Void, b : Void, ...) : Void\nend" does to_s of "/ /" does to_s of "/ /" does to_s of "lib Foo\nend" does to_s of "lib Foo\nend" does to_s of "def foo(x : (T -> U) | V)\nend" does to_s of "def foo(x : (T -> U) | V)\nend" does to_s of "`\#{1}\\n\\0`" does to_s of "`\#{1}\\n\\0`" does to_s of "enum A : B\nend" does to_s of "enum A : B\nend" does to_s of "if (1 + 2\n3)\n 4\nend" does to_s of "if (1 + 2\n3)\n 4\nend" does to_s of "{ {1, 2, 3} }" does to_s of "{ {1, 2, 3} }" does to_s of "def foo(x, @[Foo] **args)\nend" does to_s of "def foo(x, @[Foo] **args)\nend" does to_s of "あ.い, う.え.お = 1, 2" does to_s of "あ.い, う.え.お = 1, 2" does to_s of "{% foo %}" does to_s of "{% foo %}" does to_s of "select\nwhen foo\n select\n when bar\n 1\n else\n 2\n end\nelse\n select\n when baz\n 3\n else\n 4\n end\nend" does to_s of "select\nwhen foo\n select\n when bar\n 1\n else\n 2\n end\nelse\n select\n when baz\n 3\n else\n 4\n end\nend" does to_s of "case 1\nwhen .[](2)\n 3\nwhen .[]=(4)\n 5\nend" does to_s of "case 1\nwhen .[](2)\n 3\nwhen .[]=(4)\n 5\nend" does to_s of "macro foo\n{% @type %}\nend" does to_s of "macro foo\n{% @type %}\nend" does to_s of "macro foo\n\\{%@type %}\nend" does to_s of "macro foo\n\\{%@type %}\nend" does to_s of "(1 <= 2) <= 3" does to_s of "(1 <= 2) <= 3" does to_s of "foo.*" does to_s of "foo.*" does to_s of "macro foo(x)\n yield\nend" does to_s of "macro foo(x)\n yield\nend" does to_s of "1_f64" does to_s of "1_f64" does to_s of "def foo(x : (T -> U) -> V, *args : (T -> U) -> V, y : (T -> U) -> V, **opts : (T -> U) -> V, & : (T -> U) -> V) : ((T -> U) -> V)\nend" does to_s of "def foo(x : (T -> U) -> V, *args : (T -> U) -> V, y : (T -> U) -> V, **opts : (T -> U) -> V, & : (T -> U) -> V) : ((T -> U) -> V)\nend" does to_s of "begin\n ()\nend" does to_s of "begin\n ()\nend" does to_s of "%r()imx" does to_s of "%r()imx" does to_s of "foo { |(x, y)| x }" does to_s of "foo { |(x, y)| x }" does to_s of "%r{\\/\\0}" does to_s of "%r{\\/\\0}" does to_s of "->(x : Int32, y : Bool) : Char do\n 'a'\nend" does to_s of "->(x : Int32, y : Bool) : Char do\n 'a'\nend" does to_s of "1[2, x: 3, &.foo]" does to_s of "1[2, x: 3, &.foo]" does to_s of "yield(1)" does to_s of "yield(1)" does to_s of "{% if foo %}\n foo_then\n{% else %}\n foo_else\n{% end %}" does to_s of "{% if foo %}\n foo_then\n{% else %}\n foo_else\n{% end %}" does to_s of "1.~(2)" does to_s of "1.~(2)" does to_s of "type(Foo = Void)" does to_s of "type(Foo = Void)" does to_s of "{% for foo in bar %}\n {{ foo }}\n{% end %}" does to_s of "{% for foo in bar %}\n {{ foo }}\n{% end %}" does to_s of "foo &.bar(1, 2, 3)" does to_s of "foo &.bar(1, 2, 3)" does to_s of "1.0" does to_s of "1.0" does to_s of "1.+(&block)" does to_s of "1.+(&block)" does to_s of "foo(bar)" does to_s of "foo(bar)" does to_s of "lib Foo::Bar\nend" does to_s of "lib Foo::Bar\nend" does to_s of "foo[x, y, a: 1, b: 2] = z" does to_s of "foo[x, y, a: 1, b: 2] = z" does to_s of "begin\n (@x = x).is_a?(Foo)\nend" does to_s of "begin\n (@x = x).is_a?(Foo)\nend" does to_s of "(~1).foo" does to_s of "(~1).foo" does to_s of "@foo.bar" does to_s of "@foo.bar" does to_s of "!(1 < 2)" does to_s of "!(1 < 2)" does to_s of "foo(\"bar baz\": 2)" does to_s of "foo(\"bar baz\": 2)" does to_s of "class Foo\n private def bar\n end\nend" does to_s of "class Foo\n private def bar\n end\nend" does to_s of "begin\n (1)\n 2\nrescue\nend" does to_s of "begin\n (1)\n 2\nrescue\nend" does to_s of "macro foo\n %bar{1, x} = 1\nend" does to_s of "macro foo\n %bar{1, x} = 1\nend" does to_s of "%r( )" does to_s of "%r( )" does to_s of "Foo()" does to_s of "Foo()" does to_s of "asm(\"nop\" ::: \"e\" : \"volatile\")" does to_s of "asm(\"nop\" ::: \"e\" : \"volatile\")" does to_s of "macro foo(*, var)\nend" does to_s of "macro foo(*, var)\nend" does to_s of "1.+(a: 2)" does to_s of "1.+(a: 2)" does to_s of "他.说 = \"你好\"" does to_s of "他.说 = \"你好\"" does to_s of "1[2, x: 3, &.foo]?" does to_s of "1[2, x: 3, &.foo]?" does to_s of "-> : Int32 do\nend" does to_s of "-> : Int32 do\nend" does to_s of "1.as(Int32)" does to_s of "1.as(Int32)" does to_s of "if 1\n begin\n 2\n end\nelse\n begin\n 3\n end\nend" does to_s of "if 1\n begin\n 2\n end\nelse\n begin\n 3\n end\nend" does to_s of "1[2, x: 3, &.foo] = 4" does to_s of "1[2, x: 3, &.foo] = 4" does to_s of "%r()" does to_s of "%r()" does to_s of "/\\(group\\)/" does to_s of "/\\(group\\)/" does to_s of "!a" does to_s of "!a" does to_s of "{foo: (1 + 2)}" does to_s of "{foo: (1 + 2)}" does to_s of "foo(x : (T -> U) -> V, W)" does to_s of "foo(x : (T -> U) -> V, W)" does to_s of "1[&.foo]" does to_s of "1[&.foo]" does to_s of "begin\n (1)\nend" does to_s of "begin\n (1)\nend" does to_s of "foo do\n begin\n bar\n end\nend" does to_s of "foo do\n begin\n bar\n end\nend" does to_s of "begin\n (1)\n 2\nend" does to_s of "begin\n (1)\n 2\nend" does to_s of "1.[](2) do\nend" does to_s of "1.[](2) do\nend" does to_s of "a.as?(Int32)" does to_s of "a.as?(Int32)" does to_s of "lib LibFoo\n fun foo(x : Foo((T -> U)))\nend" does to_s of "lib LibFoo\n fun foo(x : Foo((T -> U)))\nend" does to_s of "macro foo\n\\{{ @type }}\nend" does to_s of "macro foo\n\\{{ @type }}\nend" does to_s of "def foo(x : (T -> U).class)\nend" does to_s of "def foo(x : (T -> U).class)\nend" does to_s of "/a/x" does to_s of "/a/x" does to_s of "def foo(*args)\nend" does to_s of "def foo(*args)\nend" does to_s of `#{::String.interpolation(x)}` does to_s of `#{::String.interpolation(x)}` does to_s of "macro foo(**args)\nend" does to_s of "macro foo(**args)\nend" does to_s of "lib LibFoo\n fun foo(x : (T -> U).class)\nend" does to_s of "lib LibFoo\n fun foo(x : (T -> U).class)\nend" does to_s of "(1 || 1.1).as(Int32)" does to_s of "(1 || 1.1).as(Int32)" does to_s of "def foo\n yield\nend" does to_s of "def foo\n yield\nend" does to_s of "`\\n\\0`" does to_s of "`\\n\\0`" does to_s of "foo[x : (T -> U) -> V, W] = 1" does to_s of "foo[x : (T -> U) -> V, W] = 1" does to_s of "def foo(x : Foo((T -> U)))\nend" does to_s of "def foo(x : Foo((T -> U)))\nend" does to_s of "(1 & 2) & (3 | 4)" does to_s of "(1 & 2) & (3 | 4)" does to_s of "/\\//" does to_s of "/\\//" does to_s of "macro foo(@[Foo] id)\nend" does to_s of "macro foo(@[Foo] id)\nend" does to_s of "macro foo\n %bar = 1; end" does to_s of "macro foo\n %bar = 1; end" does to_s of "def foo(@[Foo] *args)\nend" does to_s of "def foo(@[Foo] *args)\nend" does to_s of "{% verbatim do %}\n 1{{ 2 }}\n 3{{ 4 }}\n{% end %}" does to_s of "{% verbatim do %}\n 1{{ 2 }}\n 3{{ 4 }}\n{% end %}" does to_s of "macro foo\n {% for foo in bar %}\n {{ foo }}\n {% end %}\nend" does to_s of "macro foo\n {% for foo in bar %}\n {{ foo }}\n {% end %}\nend" does to_s of "def foo(x, **args, &block : _ -> _)\nend" does to_s of "def foo(x, **args, &block : _ -> _)\nend" does to_s of "foo._bar(1)" does to_s of "foo._bar(1)" does to_s of "def foo(@[Foo] x y)\nend" does to_s of "def foo(@[Foo] x y)\nend" does to_s of "alias Foo = Void" does to_s of "alias Foo = Void" does to_s of "1_f32" does to_s of "1_f32" does to_s of "macro foo(@[Foo] &block)\nend" does to_s of "macro foo(@[Foo] &block)\nend" does to_s of "foo(x : (T -> U).class)" does to_s of "foo(x : (T -> U).class)" does to_s of "macro foo(x, **args)\nend" does to_s of "macro foo(x, **args)\nend" does to_s of "def foo(\"bar baz\" qux)\nend" does to_s of "def foo(\"bar baz\" qux)\nend" does to_s of "def foo(& : (->))\nend" does to_s of "def foo(& : (->))\nend" does to_s of "return begin\n 1\n 2\nend" does to_s of "return begin\n 1\n 2\nend" does to_s of "/\\s/" does to_s of "/\\s/" does to_s of "_foo.bar" does to_s of "_foo.bar" does to_s of "begin\n (1)\nrescue\nend" does to_s of "begin\n (1)\nrescue\nend" does to_s of "(a = 2) && 1" does to_s of "(a = 2) && 1" does to_s of x = (1 2 ) does to_s of x = (1 2 ) does to_s of "case 1; in .foo?; 2; end" does to_s of "case 1; in .foo?; 2; end" does to_s of "\"\#{(1 + 2)}\"" does to_s of "\"\#{(1 + 2)}\"" does to_s of "if true\n (1)\n 2\nend" does to_s of "if true\n (1)\n 2\nend" does to_s of "foo x: 1, y: 2, &.bar" does to_s of "foo x: 1, y: 2, &.bar" does to_s of "{ {foo: 2} }" does to_s of "{ {foo: 2} }" does to_s of "macro foo(&block)\nend" does to_s of "macro foo(&block)\nend" does to_s of "def foo(x, **args, &block : (_ -> _))\nend" does to_s of "def foo(x, **args, &block : (_ -> _))\nend" does to_s of "lib LibFoo\n fun foo(x : (T -> U) -> V, W) : ((T -> U) -> V)\nend" does to_s of "lib LibFoo\n fun foo(x : (T -> U) -> V, W) : ((T -> U) -> V)\nend" does to_s of "[(1 + 2)] of Int32" does to_s of "[(1 + 2)] of Int32" does to_s of "macro foo(&)\nend" does to_s of "macro foo(&)\nend" does to_s of "1[&.foo]?" does to_s of "1[&.foo]?" does to_s of "foo(3, &.*(2))" does to_s of "foo(3, &.*(2))" does to_s of "macro foo(@[Foo] **args)\nend" does to_s of "macro foo(@[Foo] **args)\nend" does to_s of "(1 + 2).as?(Int32)" does to_s of "(1 + 2).as?(Int32)" does to_s of "..3" does to_s of "..3" does to_s of "1[&.foo] = 2" does to_s of "1[&.foo] = 2" does to_s of "->::Foo::Bar.foo" does to_s of "->::Foo::Bar.foo" does to_s of "/\#{1 / 2}/" does to_s of "/\#{1 / 2}/" does to_s of "foo { |(x, (y, z))| x }" does to_s of "foo { |(x, (y, z))| x }" does to_s of "def foo(**args : T)\nend" does to_s of "def foo(**args : T)\nend" does to_s of ":foo" does to_s of ":foo" does to_s of "1.~(2) do\nend" does to_s of "1.~(2) do\nend" does to_s of "alias Foo::Bar = Void" does to_s of "alias Foo::Bar = Void" does to_s of "def foo(@[Foo] x, @[Bar] **args, @[Baz] &block)\nend" does to_s of "def foo(@[Foo] x, @[Bar] **args, @[Baz] &block)\nend" does to_s of "def foo(x : X, y : Y) forall X, Y\nend" does to_s of "def foo(x : X, y : Y) forall X, Y\nend" does to_s of "foo[x : (T -> U) -> V, W]" does to_s of "foo[x : (T -> U) -> V, W]" does to_s of "{\"foo bar\": 1}" does to_s of "{\"foo bar\": 1}" does to_s of "foo &.bar" does to_s of "foo &.bar" does to_s of "class Foo\n # doc\n def foo\n end\nend" does to_s of "class Foo\n # doc\n def foo\n end\nend" does to_s of "lib Foo\n union Foo\n a : Int\n b : Int32\n end\nend" does to_s of "lib Foo\n union Foo\n a : Int\n b : Int32\n end\nend" does to_s of "def foo(**args)\nend" does to_s of "def foo(**args)\nend" does to_s of "foo(&.==(2))" does to_s of "foo(&.==(2))" does to_s of "1e10_f64" does to_s of "1e10_f64" does to_s of "def foo(**options, &block)\nend" does to_s of "def foo(**options, &block)\nend" does to_s of "macro foo\n 123\nend" does to_s of "macro foo\n 123\nend" does to_s of "def foo(@[Foo] x : T = 1)\nend" does to_s of "def foo(@[Foo] x : T = 1)\nend" does to_s of "asm(\"nop\" :: \"c\"(3), \"d\"(4) ::)" does to_s of "asm(\"nop\" :: \"c\"(3), \"d\"(4) ::)" does to_s of "&+1" does to_s of "&+1" does to_s of "asm(\"nop\" ::::)" does to_s of "asm(\"nop\" ::::)" does to_s of "%r(/)" does to_s of "%r(/)" does to_s of "1 & 2 & (3 | 4)" does to_s of "1 & 2 & (3 | 4)" does to_s of "lib LibFoo\n fun foo(x : (T -> U) | V)\nend" does to_s of "lib LibFoo\n fun foo(x : (T -> U) | V)\nend" does to_s of "Foo(\"bar baz\": Int32)" does to_s of "Foo(\"bar baz\": Int32)" does to_s of "def foo(@[Foo] **args)\nend" does to_s of "def foo(@[Foo] **args)\nend" does to_s of "macro foo(*var)\nend" does to_s of "macro foo(*var)\nend" does to_s of ":\"{\"" does to_s of ":\"{\"" does to_s of "{(1 + 2)}" does to_s of "{(1 + 2)}" does to_s of "1.+ do\nend" does to_s of "1.+ do\nend" does to_s of "asm(\"nop\" : \"a\"(1), \"b\"(2) : \"c\"(3), \"d\"(4) : \"e\", \"f\" : \"volatile\", \"alignstack\", \"intel\")" does to_s of "asm(\"nop\" : \"a\"(1), \"b\"(2) : \"c\"(3), \"d\"(4) : \"e\", \"f\" : \"volatile\", \"alignstack\", \"intel\")" does to_s of "def foo(**x)\n yield\nend" does to_s of "def foo(**x)\n yield\nend" does to_s of "def foo(x)\n yield\nend" does to_s of "def foo(x)\n yield\nend" does to_s of "foo : (A | B).class" does to_s of "foo : (A | B).class" does to_s of "%(\"\#{foo}\")" does to_s of "%(\"\#{foo}\")" does to_s of "%x(whoami)" does to_s of "%x(whoami)" does to_s of "1.//(2, a: 3)" does to_s of "1.//(2, a: 3)" does to_s of "({} of K => V).foo" does to_s of "({} of K => V).foo" does to_s of "def foo(x : T = 1)\nend" does to_s of "def foo(x : T = 1)\nend" does to_s of "/\\?/" does to_s of "/\\?/" does to_s of "{ {1, 2, 3} => 4 }" does to_s of "{ {1, 2, 3} => 4 }" does to_s of "lib LibC\n fun getch = \"get.char\"\nend" does to_s of "lib LibC\n fun getch = \"get.char\"\nend" does to_s of "macro foo\n %bar = 1\nend" does to_s of "macro foo\n %bar = 1\nend" does to_s of "if true\n (1)\nend" does to_s of "if true\n (1)\nend" does to_s of "macro foo(@[Foo] &)\nend" does to_s of "macro foo(@[Foo] &)\nend" does to_s of "/hello world/" does to_s of "/hello world/" does to_s of "{% if foo %}\n foo_then\n{% end %}" does to_s of "{% if foo %}\n foo_then\n{% end %}" does to_s of "def foo(x, **args, &block)\nend" does to_s of "def foo(x, **args, &block)\nend" does to_s of "foo.nil?" does to_s of "foo.nil?" does to_s of "1.&**" does to_s of "1.&**" does to_s of "macro foo\n{% verbatim do %}1{% end %}\nend" does to_s of "macro foo\n{% verbatim do %}1{% end %}\nend" does to_s of "def foo(*args : _)\nend" does to_s of "def foo(*args : _)\nend" does to_s of "macro foo\n{{ @type }}\nend" does to_s of "macro foo\n{{ @type }}\nend" does to_s of "1.responds_to?(:to_s)" does to_s of "1.responds_to?(:to_s)" does to_s of "foo : A | (B -> C)" does to_s of "foo : A | (B -> C)" does to_s of "foo()" does to_s of "foo()" does to_s of "macro foo(x, @[Foo] **args)\nend" does to_s of "macro foo(x, @[Foo] **args)\nend" does to_s of "def foo(x : X, @[Foo] y : Y) forall X, Y\nend" does to_s of "def foo(x : X, @[Foo] y : Y) forall X, Y\nend" does to_s of "他.说(\"你好\")" does to_s of "他.说(\"你好\")" does to_s of "->::foo(Int32, String)" does to_s of "->::foo(Int32, String)" does to_s of "%r{\#{1}\\/\\0}" does to_s of "%r{\#{1}\\/\\0}" does to_s of "1.//(2, &block)" does to_s of "1.//(2, &block)" does to_s of "foo(a.as(Int32))" does to_s of "foo(a.as(Int32))" does to_s of "/hello world/imx" does to_s of "/hello world/imx" does to_s of "1.responds_to?(:\"&&\")" does to_s of "1.responds_to?(:\"&&\")" does to_s of "return true ? 1 : 2" does to_s of "return true ? 1 : 2" does to_s of "case 1; when .foo?; 2; end" does to_s of "case 1; when .foo?; 2; end" does to_s of "{{ foo }}" does to_s of "{{ foo }}" does to_s of "asm(\"nop\" :::: \"volatile\")" does to_s of "asm(\"nop\" :::: \"volatile\")" does to_s of "{(1 + 2) => (3 + 4)}" does to_s of "{(1 + 2) => (3 + 4)}" does to_s of "def foo(x y)\nend" does to_s of "def foo(x y)\nend" does to_s of "(1 + 2)..3" does to_s of "(1 + 2)..3" does to_s of "def foo(x, **args)\nend" does to_s of "def foo(x, **args)\nend" does to_s of "macro foo(*, __var var)\nend" does to_s of "macro foo(*, __var var)\nend" does to_s of "1 <= 2 <= 3" does to_s of "1 <= 2 <= 3" does to_s of "{ {1 => 2} }" does to_s of "{ {1 => 2} }" does to_s of "lib LibC\n fun getchar(Int, Float)\nend" does to_s of "lib LibC\n fun getchar(Int, Float)\nend" does to_s of "foo(x : (T -> U) | V)" does to_s of "foo(x : (T -> U) | V)" does to_s of "1 <= (2 <= 3)" does to_s of "1 <= (2 <= 3)" does to_s of "1.[]=" does to_s of "1.[]=" does to_s of "(1..)" does to_s of "(1..)" does to_s of "case 1; when .!; 2; when .< 0; 3; end" does to_s of "case 1; when .!; 2; when .< 0; 3; end" does to_s of "foo.%" does to_s of "foo.%" does to_s of "foo(1, (2 + 3), bar: (4 + 5))" does to_s of "foo(1, (2 + 3), bar: (4 + 5))" does to_s of "1.&*" does to_s of "1.&*" does to_s of "asm(\"nop\" :: \"a\"(1) :: \"volatile\")" does to_s of "asm(\"nop\" :: \"a\"(1) :: \"volatile\")" does to_s of "foo[x, y, a: 1, b: 2]" does to_s of "foo[x, y, a: 1, b: 2]" does to_s of "macro foo(x, *y)\nend" does to_s of "macro foo(x, *y)\nend" does to_s of "{% for foo in bar %}\n {{ if true\n foo\n bar\nend }}\n{% end %}" does to_s of "{% for foo in bar %}\n {{ if true\n foo\n bar\nend }}\n{% end %}" does to_s of "macro foo(@[Foo] x, @[Foo] *y)\nend" does to_s of "macro foo(@[Foo] x, @[Foo] *y)\nend" does to_s of "foo._bar" does to_s of "foo._bar" .parse_args DIR (relative to home) DIR (relative to home) NAME DIR NAME DIR DIR DIR DIR (absolute) DIR (absolute) DIR with path DIR with path DIR = . DIR = . Semantic: external/internal macros can call with external name and use with internal, after splat can call with external name and use with internal, after splat can call with external name and use with internal can call with external name and use with internal can call positionally can call positionally overloads based on external name (#2610) overloads based on external name (#2610) can call with external name and use with internal can call with external name and use with internal can call with external name and use with internal, after splat can call with external name and use with internal, after splat can call positionally can call positionally Semantic: alias can use .class in alias (#2835) can use .class in alias (#2835) inherits class through alias inherits class through alias can pass recursive alias to proc can pass recursive alias to proc allows defining recursive aliases allows defining recursive aliases allows recursive array with alias allows recursive array with alias errors if trying to resolve type of recursive alias errors if trying to resolve type of recursive alias resolves alias type resolves alias type finds type through alias (#4645) finds type through alias (#4645) errors if alias is already defined as another type errors if alias is already defined as another type reopens module through alias within itself reopens module through alias within itself errors if trying to use typeof in alias errors if trying to use typeof in alias errors if defining infinite recursive alias in union errors if defining infinite recursive alias in union resolves type through alias (#563) resolves type through alias (#563) allows using alias type as generic type allows using alias type as generic type looks up alias for macro resolution (#3548) looks up alias for macro resolution (#3548) errors if alias already defined errors if alias already defined reopens struct through alias reopens struct through alias declares alias inside type declares alias inside type reopens struct through alias within itself reopens struct through alias within itself uses constant in alias (#3259) uses constant in alias (#3259) allows using generic type of recursive alias as restriction (#488) allows using generic type of recursive alias as restriction (#488) doesn't crash by infinite recursion against type alias and generics (#5329) doesn't crash by infinite recursion against type alias and generics (#5329) overloads union type through alias overloads union type through alias includes module through alias includes module through alias allows defining recursive fun aliases allows defining recursive fun aliases works with alias type as restriction works with alias type as restriction inherits struct through alias inherits struct through alias reopens class through alias within itself reopens class through alias within itself doesn't find type parameter in alias (#3502) doesn't find type parameter in alias (#3502) uses constant in alias with math (#3259) uses constant in alias with math (#3259) reopens module through alias reopens module through alias errors if declares alias inside if errors if declares alias inside if errors if defining infinite recursive alias errors if defining infinite recursive alias reopens class through alias reopens class through alias Semantic: hooks types macro finished hook bug regarding initialize (#3964) types macro finished hook bug regarding initialize (#3964) does inherited macro for generic class does inherited macro for generic class does added method macro does added method macro errors if wrong finished params length errors if wrong finished params length does not invoke 'method_added' hook recursively does not invoke 'method_added' hook recursively does inherited macro through generic instance type (#9693) does inherited macro through generic instance type (#9693) does inherited macro does inherited macro does extended macro does extended macro errors if wrong extended params length errors if wrong extended params length types initializer in inherited types initializer in inherited does included macro does included macro does included macro for generic module does included macro for generic module errors if wrong included params size errors if wrong included params size includes error message in included hook (#889) includes error message in included hook (#889) errors if wrong extended params size errors if wrong extended params size errors if wrong inherited params size errors if wrong inherited params size Code gen: return doesn't crash when method returns nil and can be inlined doesn't crash when method returns nil and can be inlined codegens return followed by another expression codegens return followed by another expression returns empty from function returns empty from function forms a tuple from multiple return values forms a tuple from multiple return values flattens splats inside multiple return values flattens splats inside multiple return values return from function with union type return from function with union type codegens assign with if with two returns codegens assign with if with two returns codegens bug with return if true codegens bug with return if true codegens return codegens return return from function with nilable type return from function with nilable type return from function with nilable type 2 return from function with nilable type 2 codegens return inside if codegens return inside if returns in var assignment (#3364) returns in var assignment (#3364) return union return union Crystal::Doc::Type #instance_methods sorts operators first sorts operators first ASTNode has no ancestors ASTNode has no ancestors #macros sorts operators first sorts operators first ASTNode has no superclass ASTNode has no superclass doesn't show types for alias type doesn't show types for alias type #node_to_html shows tuples shows tuples shows generic path with necessary colons shows generic path with necessary colons shows relative generic shows relative generic shows relative path shows relative path shows generic path with unnecessary colons shows generic path with unnecessary colons shows named tuples shows named tuples finds construct when searching class method (#8095) finds construct when searching class method (#8095) #class_methods sorts operators first sorts operators first Code gen: offsetof returns offset allowing manual access of first class field returns offset allowing manual access of first class field returns offset of extern union returns offset of extern union returns offset allowing manual access of struct field that isn't first returns offset allowing manual access of struct field that isn't first returns offset of `StaticArray#@buffer` returns offset of `StaticArray#@buffer` returns offset allowing manual access of tuple items returns offset allowing manual access of tuple items returns offset allowing manual access of first struct field returns offset allowing manual access of first struct field returns offset allowing manual access of class field that isn't first returns offset allowing manual access of class field that isn't first Normalize: case normalizes case with call normalizes case with call normalizes case with multiple expressions with all underscores normalizes case with multiple expressions with all underscores normalizes case without value with many expressions in when normalizes case without value with many expressions in when normalizes case with multiple expressions normalizes case with multiple expressions normalizes case with multiple expressions and non-tuple normalizes case with multiple expressions and non-tuple normalizes case with multiple expressions and implicit obj normalizes case with multiple expressions and implicit obj normalizes case with Path.class to is_a? (in) normalizes case with Path.class to is_a? (in) normalizes case with Path.class to is_a? normalizes case with Path.class to is_a? normalizes case with generic to is_a? normalizes case with generic to is_a? normalizes case with implicit call normalizes case with implicit call normalizes case with Path to is_a? normalizes case with Path to is_a? normalizes case with assignment wrapped by paren normalizes case with assignment wrapped by paren normalizes case without when but else normalizes case without when but else normalizes case with assignment normalizes case with assignment normalizes case with Generic.class to is_a? normalizes case with Generic.class to is_a? normalizes case without value normalizes case without value normalizes case with implicit ! normalizes case with implicit ! normalizes case with multiple expressions with all underscores twice normalizes case with multiple expressions with all underscores twice normalizes case with implicit responds_to? (#3040) normalizes case with implicit responds_to? (#3040) normalizes case with implicit as? (#3040) normalizes case with implicit as? (#3040) normalizes case with multiple expressions and types normalizes case with multiple expressions and types normalizes case without cond, when but else normalizes case without cond, when but else normalizes case with var in cond normalizes case with var in cond normalizes case with implicit is_a? (#3040) normalizes case with implicit is_a? (#3040) normalizes case with multiple expressions with underscore normalizes case with multiple expressions with underscore normalizes case with implicit as (#3040) normalizes case with implicit as (#3040) normalizes case with nil to is_a? normalizes case with nil to is_a? normalizes case without when and else normalizes case without when and else normalizes case without cond, when and else normalizes case without cond, when and else normalizes case with many expressions in when normalizes case with many expressions in when normalizes case with multiple expressions and comma normalizes case with multiple expressions and comma Crystal::Command::FlagsVisitor different flags different flags only macro only macro unique flags unique flags Code gen: block codegens block bug with conditional next and unconditional break (2) codegens block bug with conditional next and unconditional break (2) codegens method invocation on a object of a captured block with a type that was never instantiated codegens method invocation on a object of a captured block with a type that was never instantiated dispatches with captured and non-captured block (#3969) dispatches with captured and non-captured block (#3969) clears nilable var before inlining block method (#10087) clears nilable var before inlining block method (#10087) can break without value from yielder that returns nilable (2) can break without value from yielder that returns nilable (2) codegens block with nilable type with return (2) codegens block with nilable type with return (2) codegens method invocation on a object of a captured block with a type that was never instantiated (2) codegens method invocation on a object of a captured block with a type that was never instantiated (2) codegens call with block with call with arg that yields codegens call with block with call with arg that yields codegens nested return codegens nested return codegens bug with yield not_nil! that is never not nil codegens bug with yield not_nil! that is never not nil return from block called from dispatch return from block called from dispatch uses splat in block argument uses splat in block argument break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break block with yielder inside while break from block with value break from block with value break from block with value break from block with value break from block with value break from block with value break from block with value break from block with value break from block with value break from block with value codegens block with union arg (2) codegens block with union arg (2) break from block with value break from block with value codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens dispatch with block and break (2) uses splat in block argument, many args uses splat in block argument, many args it yields nil from another call it yields nil from another call yields splat yields splat returns from proc literal returns from proc literal codegens block with union with return codegens block with union with return codegens block call when argument type changes codegens block call when argument type changes unpacks tuple but doesn't override local variables unpacks tuple but doesn't override local variables codegens nested break codegens nested break allows initialize with yield (#224) allows initialize with yield (#224) uses block var with same name as local var uses block var with same name as local var (bug) doesn't set needs_value to true on every yield (#12442) (bug) doesn't set needs_value to true on every yield (#12442) nexts in var assignment (#3364) nexts in var assignment (#3364) auto-unpacks tuple auto-unpacks tuple call block from dispatch call block from dispatch union value of yielder function union value of yielder function uses block splat argument with union types uses block splat argument with union types does next from captured block does next from captured block executes yield expression if no arg is given for block executes yield expression if no arg is given for block block with nilable type 2 block with nilable type 2 codegens call with blocks of different type without args codegens call with blocks of different type without args codegens block with union arg (1) codegens block with union arg (1) allows modifying yielded value (with variable) allows modifying yielded value (with variable) allow return from function called from yielder function allow return from function called from yielder function pass self to yielder function pass self to yielder function return from yielder function (2) return from yielder function (2) break from block returns from yielder break from block returns from yielder pass self and arguments to yielder function pass self and arguments to yielder function can use self inside a block called from dispatch can use self inside a block called from dispatch breaks from while in function called from block breaks from while in function called from block can use instance methods from yielder function can use instance methods from yielder function allows using var as block arg with outer var allows using var as block arg with outer var codegens bug with block and arg and var codegens bug with block and arg and var break without value returns nil break without value returns nil doesn't crash if yield exp has no type (#12670) doesn't crash if yield exp has no type (#12670) codegens block which always breaks but never enters (#494) codegens block which always breaks but never enters (#494) yields more exps than block arg, through splat yields more exps than block arg, through splat passes yield arguments passes yield arguments codegens block with return and yield and no return codegens block with return and yield and no return generate inline generate inline codegens block bug with conditional next and unconditional break (4) codegens block bug with conditional next and unconditional break (4) allows access to local variables allows access to local variables codegens block bug with conditional next and unconditional break (3) codegens block bug with conditional next and unconditional break (3) codegens while/break inside block codegens while/break inside block uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) uses block inside array literal (bug) codegens block bug with conditional next and unconditional break (1) codegens block bug with conditional next and unconditional break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (1) breaks in var assignment (#3364) breaks in var assignment (#3364) doesn't codegen call if arg yields and always breaks doesn't codegen call if arg yields and always breaks doesn't crash on yield exp without a type (#8100) doesn't crash on yield exp without a type (#8100) returns from block with value returns from block with value returns from block with value returns from block with value returns from block with value returns from block with value returns from block with value returns from block with value returns from block with value returns from block with value can use global constant can use global constant allows yield from dispatch call allows yield from dispatch call return from block that always returns from function that conditionally yields return from block that always returns from function that conditionally yields break with value from yielder that returns a nilable break with value from yielder that returns a nilable can call methods from block when yielder is an instance method can call methods from block when yielder is an instance method codegens block with virtual type arg codegens block with virtual type arg codegens captured block that returns union, but proc only returns a single type codegens captured block that returns union, but proc only returns a single type block with nilable type block with nilable type doesn't codegen after while that always yields and breaks doesn't codegen after while that always yields and breaks can access instance vars from yielder function can access instance vars from yielder function pass arguments to yielder function pass arguments to yielder function can break without value from yielder that returns nilable (1) can break without value from yielder that returns nilable (1) codegens block with multiple underscores (#3054) codegens block with multiple underscores (#3054) can set instance vars from yielder function can set instance vars from yielder function doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s doesn't crash on untyped array to_s codegens if with call with block (ssa issue) codegens if with call with block (ssa issue) yields inside yield (#682) yields inside yield (#682) call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars call block from dispatch and use local vars return from yielder function return from yielder function returns void when called with block returns void when called with block nested yields nested yields return from block return from block codegens block with nilable type with return (1) codegens block with nilable type with return (1) allows modifying yielded value (with literal) allows modifying yielded value (with literal) return from block that always returns from function that always yields inside if block return from block that always returns from function that always yields inside if block codegens captured block with next inside yielded block (#2097) codegens captured block with next inside yielded block (#2097) assigns yield to argument assigns yield to argument codegens block with repeated underscore and different types (#4711) codegens block with repeated underscore and different types (#4711) Crystal::Formatter formats "begin\n1\nrescue ex\n3\nend" formats "begin\n1\nrescue ex\n3\nend" formats "foo do\n [foo <<-X\n bar\n X\n ]\nend" formats "foo do\n [foo <<-X\n bar\n X\n ]\nend" formats "1.=== do\nend" formats "1.=== do\nend" formats "macro foo\n {% if 1 %} 2 {% else %} 3 {% end %}\nend" formats "macro foo\n {% if 1 %} 2 {% else %} 3 {% end %}\nend" formats "if 1\nelse\n2\nend\n3" formats "if 1\nelse\n2\nend\n3" formats "case 1 \n when 2 then \n 3 \n end" formats "case 1 \n when 2 then \n 3 \n end" formats "next *1" formats "next *1" formats "enum Foo\nA \nend" formats "enum Foo\nA \nend" formats "foo\n .foo1(bar\n .bar1\n .bar2)" formats "foo\n .foo1(bar\n .bar1\n .bar2)" formats "a = begin\n1\n2\nend" formats "a = begin\n1\n2\nend" formats "x : Int32[ 8 ]" formats "x : Int32[ 8 ]" formats "getter foo : Int32 # comment\n\ndef foo\nend" formats "getter foo : Int32 # comment\n\ndef foo\nend" formats ":|" formats ":|" formats "a+1" formats "a+1" formats "%i(one two three)" formats "%i(one two three)" formats "begin\n #hola\n 1\nend\n" formats "begin\n #hola\n 1\nend\n" formats "\"foo \#{ 1 + 2 }\"" formats "\"foo \#{ 1 + 2 }\"" formats "def foo(\n a,\n b,\n)\nend" formats "def foo(\n a,\n b,\n)\nend" formats "if 1\n [\n 1,\n ].none?\nend" formats "if 1\n [\n 1,\n ].none?\nend" formats "enum Foo\nend" formats "enum Foo\nend" formats "long_variable_name = [\n {\n :foo => 1,\n },\n {\n :bar => 2,\n },\n]" formats "long_variable_name = [\n {\n :foo => 1,\n },\n {\n :bar => 2,\n },\n]" formats "1.>=(2) { 3 }" formats "1.>=(2) { 3 }" formats "def foo(x)\n {% if true %}\n \\{% if true %}\n x = 1\n \\{% else %}\n x = 2\n \\{% end %}\n \\{% for x in y %}\n x = 1\n \\{% end %}\n \\{{x}}\n \\{% x %}\n {% end %}\nend" formats "def foo(x)\n {% if true %}\n \\{% if true %}\n x = 1\n \\{% else %}\n x = 2\n \\{% end %}\n \\{% for x in y %}\n x = 1\n \\{% end %}\n \\{{x}}\n \\{% x %}\n {% end %}\nend" formats " <<-EOF\n 1\nEOF" formats " <<-EOF\n 1\nEOF" formats "unless a\n # hello\n 2\nend" formats "unless a\n # hello\n 2\nend" formats "def foo(x)\n case 1\n when self // 2\n 3\n end\nend" formats "def foo(x)\n case 1\n when self // 2\n 3\n end\nend" formats "/foo/imx" formats "/foo/imx" formats "if 1\n node.is_a?(T)\nend" formats "if 1\n node.is_a?(T)\nend" formats "def foo : A(B)\n nil\nend" formats "def foo : A(B)\n nil\nend" formats "foo : (F(A)) | D" formats "foo : (F(A)) | D" formats "case 1\nwhen 1, # 1\n 2, # 2\n 3 # 3\n 1\nend" formats "case 1\nwhen 1, # 1\n 2, # 2\n 3 # 3\n 1\nend" formats "class Foo; 1; end" formats "class Foo; 1; end" formats "a = if 1\n2\nelsif 3\n4\nend" formats "a = if 1\n2\nelsif 3\n4\nend" formats "foo(\n a: 1,\n b: 2,\n )\n" formats "foo(\n a: 1,\n b: 2,\n )\n" formats "typeof( 1, 2, 3 )" formats "typeof( 1, 2, 3 )" formats "instance_alignof( Int32 )" formats "instance_alignof( Int32 )" formats "lib Foo\nfun foo() : Int32\nend" formats "lib Foo\nfun foo() : Int32\nend" formats "def foo\n# hello\n1\nend" formats "def foo\n# hello\n1\nend" formats "def foo(&: Int32)\nend" formats "def foo(&: Int32)\nend" formats "asm(\"nop\" : \"a\"(0), \"b\"(1) )" formats "asm(\"nop\" : \"a\"(0), \"b\"(1) )" formats "macro foo( x , y )\nend" formats "macro foo( x , y )\nend" formats "def foo(@[MyAnn] &block); end" formats "def foo(@[MyAnn] &block); end" formats "foo do\n # bar\nend" formats "foo do\n # bar\nend" formats "foo({\n 1 => 2,\n 3 => {\n 4 => 5,\n },\n})" formats "foo({\n 1 => 2,\n 3 => {\n 4 => 5,\n },\n})" formats "if 1\n2\nelsif\n3\n4\nelsif 5\n6\nend" formats "if 1\n2\nelsif\n3\n4\nelsif 5\n6\nend" formats "begin\n query = <<-HEREDOC\n foo\n HEREDOC\nend" formats "begin\n query = <<-HEREDOC\n foo\n HEREDOC\nend" formats "foo( )" formats "foo( )" formats "%[hello]" formats "%[hello]" formats "lib Bar\n enum Foo\n A\n end\nend" formats "lib Bar\n enum Foo\n A\n end\nend" formats "def //(x)\n 1\nend" formats "def //(x)\n 1\nend" formats "if 1\n# nothing\nend" formats "if 1\n# nothing\nend" formats "\"foo \#{ 1 } \#{ __DIR__ }\"" formats "\"foo \#{ 1 } \#{ __DIR__ }\"" formats "macro flags\n {% if 1 %}\\\n {% end %}\\\nend" formats "macro flags\n {% if 1 %}\\\n {% end %}\\\nend" formats "a &.b.as C" formats "a &.b.as C" formats "0x1234_u32" formats "0x1234_u32" formats "if a\nif b\n3\nelse\n4\nend\nend" formats "if a\nif b\n3\nelse\n4\nend\nend" formats "foo 1, do\n2\nend" formats "foo 1, do\n2\nend" formats "break {1, 2}, {3, 4}" formats "break {1, 2}, {3, 4}" formats "1 # foo\n2 # bar" formats "1 # foo\n2 # bar" formats "if 1\n ->{ 1 }\nend" formats "if 1\n ->{ 1 }\nend" formats "yield 1 , *2" formats "yield 1 , *2" formats "$1?" formats "$1?" formats "@[ Foo ]\ndef foo\nend" formats "@[ Foo ]\ndef foo\nend" formats "class Foo\n@x : Int32\nend" formats "class Foo\n@x : Int32\nend" formats "x : (A -> B)" formats "x : (A -> B)" formats "def foo(*y, **z)\nend" formats "def foo(*y, **z)\nend" formats "__FILE__" formats "__FILE__" formats "foo(\n 1,\n &.foo\n)" formats "foo(\n 1,\n &.foo\n)" formats "1 if nil?\na.b + c" formats "1 if nil?\na.b + c" formats "enum Baz\nA = 1\nFOO\n\nEX = 3\nend" formats "enum Baz\nA = 1\nFOO\n\nEX = 3\nend" formats "foo &.@bar" formats "foo &.@bar" formats "::NamedTuple()" formats "::NamedTuple()" formats "asm(\"nop\")" formats "asm(\"nop\")" formats "foo &.bar.is_a?(Baz)" formats "foo &.bar.is_a?(Baz)" formats "case 1\nwhen a; 2\nelse; ; b\nend" formats "case 1\nwhen a; 2\nelse; ; b\nend" formats "/\#{1}/imx" formats "/\#{1}/imx" formats "foo(1,\n2,\n)" formats "foo(1,\n2,\n)" formats "def foo(x)\n {% if true %}\n x = x + 2\n {% end %}\nend" formats "def foo(x)\n {% if true %}\n x = x + 2\n {% end %}\nend" formats "class Foo < \n Bar \n\n 1 \n\nend" formats "class Foo < \n Bar \n\n 1 \n\nend" formats "Foo( )" formats "Foo( )" formats "a[b] ||= c" formats "a[b] ||= c" formats "begin\nend\n\n# a\n" formats "begin\nend\n\n# a\n" formats "a(&.b.c.as(C))" formats "a(&.b.c.as(C))" formats "macro [](x)\nend" formats "macro [](x)\nend" formats "[\n a(), # b\n]" formats "[\n a(), # b\n]" formats "asm(\"a\" :: : : \"volatile\")" formats "asm(\"a\" :: : : \"volatile\")" formats "return *1 ,2" formats "return *1 ,2" formats "1..\n2" formats "1..\n2" formats "alignof( Int32 )" formats "alignof( Int32 )" formats "ary.size = (1).to_i" formats "ary.size = (1).to_i" formats "alias Foo = Bar" formats "alias Foo = Bar" formats "def a\n b(\n 1, # x\n # y\n )\nend" formats "def a\n b(\n 1, # x\n # y\n )\nend" formats "Foo( A , 1 )" formats "Foo( A , 1 )" formats "class Foo\n def foo\n # nothing\n end\nend" formats "class Foo\n def foo\n # nothing\n end\nend" formats "case 1 \n when 2 ; 3 \n when 4 ; 5\nend" formats "case 1 \n when 2 ; 3 \n when 4 ; 5\nend" formats "1 // 2" formats "1 // 2" formats "def foo(**b, # comment\n &block)\nend" formats "def foo(**b, # comment\n &block)\nend" formats " .. 2" formats " .. 2" formats "foo.bar\n.baz" formats "foo.bar\n.baz" formats "module Foo; 1; end" formats "module Foo; 1; end" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1) )" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1) )" formats "1\n2 \n # foo" formats "1\n2 \n # foo" formats "\n # hello\n\n1" formats "\n # hello\n\n1" formats "$?" formats "$?" formats "macro foo\n {% unless 1 %} 2 {% end %}\nend" formats "macro foo\n {% unless 1 %} 2 {% end %}\nend" formats "\"\#{\n foo = 1}\"" formats "\"\#{\n foo = 1}\"" formats "next" formats "next" formats "if 1\n {% for x in y %} {% end %}\nend" formats "if 1\n {% for x in y %} {% end %}\nend" formats "case 1\nend" formats "case 1\nend" formats "unless a\n2\nend" formats "unless a\n2\nend" formats "%i{one( two( three)}" formats "%i{one( two( three)}" formats "{% if flag?(:freebsd) %}\n 1 + 2\n{% end %}\n\ncase x\nwhen 1234 then 1\nelse x\nend" formats "{% if flag?(:freebsd) %}\n 1 + 2\n{% end %}\n\ncase x\nwhen 1234 then 1\nelse x\nend" formats "foo(\n 1, 2, &block)" formats "foo(\n 1, 2, &block)" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] baz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] baz\n); end" formats "def foo\n 1\n #\nrescue\nend" formats "def foo\n 1\n #\nrescue\nend" formats "asm(\n# foo\n\"nop\"\n# bar\n)" formats "asm(\n# foo\n\"nop\"\n# bar\n)" formats "`foo \#{ bar }`" formats "`foo \#{ bar }`" formats "{% verbatim do %}{{1}} + {{2}}{% end %}" formats "{% verbatim do %}{{1}} + {{2}}{% end %}" formats "::Foo:: Bar" formats "::Foo:: Bar" formats "def %(x)\n 1\nend" formats "def %(x)\n 1\nend" formats "def a\n {\n 1, # x\n # y\n }\nend" formats "def a\n {\n 1, # x\n # y\n }\nend" formats "def foo (\nx ,\n y ) \n end" formats "def foo (\nx ,\n y ) \n end" formats "foo &.as?(T)" formats "foo &.as?(T)" formats "foo({% verbatim do %}{{1}} + {{2}}{% end %})" formats "foo({% verbatim do %}{{1}} + {{2}}{% end %})" adds trailing comma to def multi-line normal, splat, and double splat parameters formats "macro foo(\n a,\n *b\n)\nend" formats "macro foo(\n a,\n *b\n)\nend" formats "def foo(\n a,\n b\n)\nend" formats "def foo(\n a,\n b\n)\nend" formats "def foo(\n a,\n *b\n)\nend" formats "def foo(\n a,\n *b\n)\nend" formats "def foo(\n a,\n @[Ann] b\n)\nend" formats "def foo(\n a,\n @[Ann] b\n)\nend" formats "def foo(\n a, # Foo\n b # Bar\n)\nend" formats "def foo(\n a, # Foo\n b # Bar\n)\nend" formats "def foo(\n a,\n **b\n)\nend" formats "def foo(\n a,\n **b\n)\nend" formats "def foo(\n a, b\n)\nend" formats "def foo(\n a, b\n)\nend" formats "fun foo(\n a : Int32,\n ...\n)\nend" formats "fun foo(\n a : Int32,\n ...\n)\nend" formats "def foo(\n a,\n &block\n)\nend" formats "def foo(\n a,\n &block\n)\nend" formats "def foo(a, *args, &block)\nend" formats "def foo(a, *args, &block)\nend" formats "def foo(\n a : Int32,\n b : Int32\n)\nend" formats "def foo(\n a : Int32,\n b : Int32\n)\nend" formats "def foo(a, *args)\nend" formats "def foo(a, *args)\nend" formats "def foo(\n a : Int32,\n b : Int32 = 1\n)\nend" formats "def foo(\n a : Int32,\n b : Int32 = 1\n)\nend" formats "macro foo(\n a,\n b\n)\nend" formats "macro foo(\n a,\n b\n)\nend" formats "def foo(a, b)\nend" formats "def foo(a, b)\nend" formats "def foo(\n a,\n)\nend" formats "def foo(\n a,\n)\nend" formats "def foo(\n a, b,\n c, d\n)\nend" formats "def foo(\n a, b,\n c, d\n)\nend" formats "def foo(a, **kwargs, &block)\nend" formats "def foo(a, **kwargs, &block)\nend" formats "def foo(a, **kwargs)\nend" formats "def foo(a, **kwargs)\nend" formats "def foo(a)\nend" formats "def foo(a)\nend" formats "def foo(\n a,\n @[Ann]\n b\n)\nend" formats "def foo(\n a,\n @[Ann]\n b\n)\nend" formats "def foo(\n a,\n b c\n)\nend" formats "def foo(\n a,\n b c\n)\nend" formats "def foo(a, &block)\nend" formats "def foo(a, &block)\nend" formats "fun foo(\n a : Int32,\n b : Int32\n)\nend" formats "fun foo(\n a : Int32,\n b : Int32\n)\nend" formats "\"1\#{\"\#{\"2\"}\"}3\#{\"4\"}5\"" formats "\"1\#{\"\#{\"2\"}\"}3\#{\"4\"}5\"" formats "asm(\"nop\"\n: \"a\"(0) )" formats "asm(\"nop\"\n: \"a\"(0) )" formats " <<-HTML\n foo\n HTML" formats " <<-HTML\n foo\n HTML" formats " * a = 1 " formats " * a = 1 " formats "foo &.[]?( 1, 2 )" formats "foo &.[]?( 1, 2 )" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\",\n \"g\")" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\",\n \"g\")" formats "case\nend" formats "case\nend" formats "foo ((1) ? 2 : 3)" formats "foo ((1) ? 2 : 3)" formats "if 1\n2 && 3\nend" formats "if 1\n2 && 3\nend" formats "Foo:: Bar" formats "Foo:: Bar" formats "abstract class Foo\nend" formats "abstract class Foo\nend" formats "def foo\n 1 #\nrescue\nend" formats "def foo\n 1 #\nrescue\nend" formats "{% if true %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "{% if true %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "1.==(2) { 3 }" formats "1.==(2) { 3 }" formats "foo[bar.baz]\n .qux" formats "foo[bar.baz]\n .qux" formats "select \n when foo ; 2 \n end" formats "select \n when foo ; 2 \n end" formats "foo \\\n 1,\n 2\n\nbar \\\n foo: 1,\n bar: 2" formats "foo \\\n 1,\n 2\n\nbar \\\n foo: 1,\n bar: 2" formats "[\n 1, 2, # foo\n 3, 4,\n]" formats "[\n 1, 2, # foo\n 3, 4,\n]" formats "long_variable_name = [\n {\n :foo => 1,\n }, {\n :bar => 2,\n },\n]" formats "long_variable_name = [\n {\n :foo => 1,\n }, {\n :bar => 2,\n },\n]" formats "->Foo.foo=" formats "->Foo.foo=" formats "a = case 1\nwhen 2\n3\nelse\n4\nend" formats "a = case 1\nwhen 2\n3\nelse\n4\nend" formats "foo[ 1, 2 ]?" formats "foo[ 1, 2 ]?" formats "def foo\n 1\n 2\nrescue IO\n 1\nend" formats "def foo\n 1\n 2\nrescue IO\n 1\nend" formats "next {1, 2}, 3" formats "next {1, 2}, 3" formats "foo bar, \\\nbaz" formats "foo bar, \\\nbaz" formats "1\n\n\n2" formats "1\n\n\n2" formats "foo \"bar\": 1, \"baz qux\": 2" formats "foo \"bar\": 1, \"baz qux\": 2" formats "foo.[]" formats "foo.[]" formats "macro foo\n %foo\nend" formats "macro foo\n %foo\nend" formats "case 1 \n when 2 then 3 \n end" formats "case 1 \n when 2 then 3 \n end" formats "[\n [\n 1,\n ], [\n 2,\n ], [\n 3,\n ],\n]" formats "[\n [\n 1,\n ], [\n 2,\n ], [\n 3,\n ],\n]" formats "[\n a(),\n]" formats "[\n a(),\n]" formats "{ {1, 2, 3} => 4 }" formats "{ {1, 2, 3} => 4 }" formats "foo = 1\n->foo.bar(Int32)" formats "foo = 1\n->foo.bar(Int32)" formats "enum Foo : Int32\nA = 1\ndef foo\n1\nend\nend" formats "enum Foo : Int32\nA = 1\ndef foo\n1\nend\nend" formats "module Foo\n 1 # bar\nend\n\nmodule Foo\n 1\n # bar\nend\n\nmodule Foo\n 1\n\n # bar\nend\n\nmodule Foo\n 1\n 2\n # bar\nend\n\nmodule Foo\n 1\n 2\n\n # bar\nend\n\nif 1\n 1\n # bar\nend\n\nif 1\n 1\n\n # bar\nend\n\n1\n2\n# foo\n\n1\n2\n\n# foo\n" formats "module Foo\n 1 # bar\nend\n\nmodule Foo\n 1\n # bar\nend\n\nmodule Foo\n 1\n\n # bar\nend\n\nmodule Foo\n 1\n 2\n # bar\nend\n\nmodule Foo\n 1\n 2\n\n # bar\nend\n\nif 1\n 1\n # bar\nend\n\nif 1\n 1\n\n # bar\nend\n\n1\n2\n# foo\n\n1\n2\n\n# foo\n" formats "{ # foo\n 1 => 2,\n}" formats "{ # foo\n 1 => 2,\n}" formats "->foo!" formats "->foo!" formats "(\n a = 1\n a\n)" formats "(\n a = 1\n a\n)" formats "case\nend" formats "case\nend" formats "begin\n / /\nend" formats "begin\n / /\nend" formats "<<-HTML\n \#{__FILE__}\n HTML" formats "<<-HTML\n \#{__FILE__}\n HTML" formats "foo(\n <<-HERE,\n hello\n HERE\n 1,\n)" formats "foo(\n <<-HERE,\n hello\n HERE\n 1,\n)" formats "case 1 \n when 2 \n 3 \n else 4 \n end" formats "case 1 \n when 2 \n 3 \n else 4 \n end" formats "x, y = <<-FOO, <<-BAR\n hello\n FOO\n world\n BAR" formats "x, y = <<-FOO, <<-BAR\n hello\n FOO\n world\n BAR" formats "def x(@y = ->(z) {})\nend" formats "def x(@y = ->(z) {})\nend" formats "@[Foo( 1, 2 )]" formats "@[Foo( 1, 2 )]" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n foo => true,\n}" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n foo => true,\n}" formats " {% begin %} 2 {% end %}" formats " {% begin %} 2 {% end %}" formats "def foo\n1\nend" formats "def foo\n1\nend" formats "->do\nx\nend" formats "->do\nx\nend" formats "return 1 , 2" formats "return 1 , 2" formats "def foo\n {% for x in y %}\n foo + bar\n {% end %}\nend" formats "def foo\n {% for x in y %}\n foo + bar\n {% end %}\nend" formats "asm(\"nop\" : : )" formats "asm(\"nop\" : : )" formats "macro foo\n {{x}} <<-FOO\n hello \n FOO\nend" formats "macro foo\n {{x}} <<-FOO\n hello \n FOO\nend" formats "foo(\n 1,\n a: 1,\n b: 2,\n)" formats "foo(\n 1,\n a: 1,\n b: 2,\n)" formats "{\n \"a\" => 1, \"b\" => 2,\n \"foo\" => 3, \"bar\" => 4,\n \"coconio\" => 5, \"lala\" => 6,\n}\n" formats "{\n \"a\" => 1, \"b\" => 2,\n \"foo\" => 3, \"bar\" => 4,\n \"coconio\" => 5, \"lala\" => 6,\n}\n" formats "1 \\\nrescue 2" formats "1 \\\nrescue 2" formats "def foo(\n\n#foo\nx,\n\n#bar\nz\n)\nend" formats "def foo(\n\n#foo\nx,\n\n#bar\nz\n)\nend" formats "return( *1 , *2 )" formats "return( *1 , *2 )" formats "{ * 1 * 2,\n*\n3, 4 }" formats "{ * 1 * 2,\n*\n3, 4 }" formats "foo &.is_a?(T)" formats "foo &.is_a?(T)" formats "x : { {A, B}, {C, D} }" formats "x : { {A, B}, {C, D} }" formats "\"\#{\n foo = 1\n}\"" formats "\"\#{\n foo = 1\n}\"" formats "foo { |x| (x).a }" formats "foo { |x| (x).a }" formats "bar = foo(->{\n 1 + 2\n})" formats "bar = foo(->{\n 1 + 2\n})" formats "def foo(x : self ?) \n end" formats "def foo(x : self ?) \n end" formats "def foo( x , * y )\nend" formats "def foo( x , * y )\nend" formats "macro foo\n 1 + 2 \n end" formats "macro foo\n 1 + 2 \n end" formats "{ A: 1 }\n" formats "{ A: 1 }\n" formats "%r(foo \#{ bar })" formats "%r(foo \#{ bar })" formats "foo(\n 1, 2)" formats "foo(\n 1, 2)" formats "1 ; 2" formats "1 ; 2" formats "$? = 1" formats "$? = 1" formats "1.<= do\nend" formats "1.<= do\nend" formats "'a'" formats "'a'" formats "{ \"foo\" => 1 }" formats "{ \"foo\" => 1 }" formats "\"foo\" \\\n \"bar\" \\\n \"baz\"" formats "\"foo\" \\\n \"bar\" \\\n \"baz\"" formats ":&+" formats ":&+" formats "alias X = (A, B) ->\nbar : C" formats "alias X = (A, B) ->\nbar : C" formats "macro flags\n {% if 1 %}{{1}}a{{2}}{% end %}\\\nend" formats "macro flags\n {% if 1 %}{{1}}a{{2}}{% end %}\\\nend" formats "false" formats "false" formats "<<-FOO\nbarfoobar\nFOO" formats "<<-FOO\nbarfoobar\nFOO" formats "1 \\\nif 2" formats "1 \\\nif 2" formats "@[Foo::Bar]" formats "@[Foo::Bar]" formats "asm(\"a\" ::: \"a\"\n : \"volatile\",\n \"intel\")" formats "asm(\"a\" ::: \"a\"\n : \"volatile\",\n \"intel\")" formats "nil" formats "nil" formats "x : Int32*" formats "x : Int32*" formats "if 1;\n2;\nelse;\n3;\nend" formats "if 1;\n2;\nelse;\n3;\nend" formats "1\nyield\n2" formats "1\nyield\n2" formats "a(&.b.c.as C)" formats "a(&.b.c.as C)" formats "1 / 2" formats "1 / 2" formats "+ 1" formats "+ 1" formats "->@@foo.foo=" formats "->@@foo.foo=" formats ":&*" formats ":&*" formats "private def foo\nend\nprivate def bar\nend" formats "private def foo\nend\nprivate def bar\nend" formats "foo[&.bar] = 1" formats "foo[&.bar] = 1" formats "foo(bar(\n 1,\n baz(\n 2,\n 3,\n )\n))" formats "foo(bar(\n 1,\n baz(\n 2,\n 3,\n )\n))" formats "-> : Int32? {}" formats "-> : Int32? {}" formats "a[1] , b[2] = 1 , 2" formats "a[1] , b[2] = 1 , 2" formats "foo.as?(T).bar" formats "foo.as?(T).bar" formats "foo : (Array(String)?) | String" formats "foo : (Array(String)?) | String" formats "def foo(@[AnnOne] @[AnnTwo] & ); end" formats "def foo(@[AnnOne] @[AnnTwo] & ); end" formats "def foo(\n foo,\n\n @[MyAnn]\n @[MyAnn]\n & : Nil -> Nil\n); end" formats "def foo(\n foo,\n\n @[MyAnn]\n @[MyAnn]\n & : Nil -> Nil\n); end" formats "{ foo: 1 }" formats "{ foo: 1 }" formats "break 1, {2, 3}" formats "break 1, {2, 3}" formats "foo(&.@bar)" formats "foo(&.@bar)" formats "SomeLib.UppercasedFunCall 1, 2" formats "SomeLib.UppercasedFunCall 1, 2" formats "enum Foo\n {% begin %}\n A\n B\n C\n {% end %}\nend" formats "enum Foo\n {% begin %}\n A\n B\n C\n {% end %}\nend" formats "{ {1}.foo, 2 }" formats "{ {1}.foo, 2 }" formats "lib Foo\n fun foo =\n\n\n bar : Void\nend" formats "lib Foo\n fun foo =\n\n\n bar : Void\nend" formats "begin\n array[\n 0, # Zero\n ]\nend" formats "begin\n array[\n 0, # Zero\n ]\nend" formats "next( 1 )" formats "next( 1 )" formats "a &.b.as(C)" formats "a &.b.as(C)" formats "@[ Foo(foo: 1) ]\ndef foo\nend" formats "@[ Foo(foo: 1) ]\ndef foo\nend" formats "foo 1" formats "foo 1" adds `&` to yielding methods that don't have a block parameter (#8764) formats "def foo # bar\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo()\n yield\nend" formats "def foo()\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "macro f\n yield\n {{ yield }}\nend" formats "macro f\n yield\n {{ yield }}\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(x,\ny)\n yield\nend" formats "def foo(x,\ny)\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo\n yield\nend" formats "def foo\n yield\nend" formats "def foo(x ,)\n yield\nend" formats "def foo(x ,)\n yield\nend" formats "1 ensure 2" formats "1 ensure 2" formats "x : {A, B}" formats "x : {A, B}" formats "{% if 1 %}\n 2\n{% end %}\ndef foo\nend" formats "{% if 1 %}\n 2\n{% end %}\ndef foo\nend" formats "foo.bar(1) # comment\n .baz" formats "foo.bar(1) # comment\n .baz" formats "foo.bar / 2\n" formats "foo.bar / 2\n" formats "foo([\n 1,\n 2,\n 3,\n])" formats "foo([\n 1,\n 2,\n 3,\n])" formats "macro foo()\n {% if 1 %} 2 {% end %}\nend" formats "macro foo()\n {% if 1 %} 2 {% end %}\nend" formats "@@a" formats "@@a" formats "if 1\n {{1 + 2}}\nend" formats "if 1\n {{1 + 2}}\nend" formats "page= <<-HTML\n foo\nHTML" formats "page= <<-HTML\n foo\nHTML" formats "def foo(\"bar baz\" qux)\nend" formats "def foo(\"bar baz\" qux)\nend" formats "def foo ( x : Foo.class ) \n end" formats "def foo ( x : Foo.class ) \n end" formats "[\n] of \n Foo " formats "[\n] of \n Foo " formats "def foo(\n @[MyAnn] bar\n); end" formats "def foo(\n @[MyAnn] bar\n); end" formats "def foo(a, **b : Int32)\nend" formats "def foo(a, **b : Int32)\nend" formats "->@foo.foo" formats "->@foo.foo" formats "foo.bar &.baz( 1 , 2 )" formats "foo.bar &.baz( 1 , 2 )" formats "if 1;\n2;\nelsif 3;\n4;\nend" formats "if 1;\n2;\nelsif 3;\n4;\nend" formats "foo(\n1,\n 2 \n)" formats "foo(\n1,\n 2 \n)" formats "{ %() }" formats "{ %() }" formats "loop do\n 1\n loop do\n 2\n rescue\n 3\n end\n 4\nend" formats "loop do\n 1\n loop do\n 2\n rescue\n 3\n end\n 4\nend" formats "{% foo <<-X\nbar\nX\n%}" formats "{% foo <<-X\nbar\nX\n%}" formats "\n\n1" formats "\n\n1" formats "if a\nif b\nelse\n4\nend\nend" formats "if a\nif b\nelse\n4\nend\nend" formats "def foo ( x : self ) \n end" formats "def foo ( x : self ) \n end" formats "1 + 2" formats "1 + 2" formats "def foo ( bar @@select) \n end" formats "def foo ( bar @@select) \n end" formats "if 1\n foo(\n bar,\n # comment\n )\nend" formats "if 1\n foo(\n bar,\n # comment\n )\nend" formats "[1, 2, 3] of Foo" formats "[1, 2, 3] of Foo" formats "def foo(x : A(B), y)\nend" formats "def foo(x : A(B), y)\nend" formats "10/a" formats "10/a" formats "begin\n1\nrescue ex : Int32 \n3\nend" formats "begin\n1\nrescue ex : Int32 \n3\nend" formats "foo &.bar" formats "foo &.bar" formats "1 unless 2" formats "1 unless 2" formats "-> do\nend" formats "-> do\nend" formats "macro foo( x = 1, y = 2, &block)\nend" formats "macro foo( x = 1, y = 2, &block)\nend" formats "class Foo\nend\nclass Bar\nend" formats "class Foo\nend\nclass Bar\nend" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n bar => <<-BAR,\n bar\n BAR\n}" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n bar => <<-BAR,\n bar\n BAR\n}" formats " ((1) + 2)" formats " ((1) + 2)" formats "def `(x)\n 1\nend" formats "def `(x)\n 1\nend" formats "a = foo(bar(baz3 do\nend))" formats "a = foo(bar(baz3 do\nend))" formats ":\"foo\"" formats ":\"foo\"" formats "foo do;\n1; end" formats "foo do;\n1; end" formats "if a\n2\n3\nelse\n4\n5\nend" formats "if a\n2\n3\nelse\n4\n5\nend" formats "[\n # foo\n] of String" formats "[\n # foo\n] of String" formats "private getter foo" formats "private getter foo" formats "X(typeof(begin\n e.is_a?(Y) ? 1 : 2\nend))" formats "X(typeof(begin\n e.is_a?(Y) ? 1 : 2\nend))" formats "foo a , *b" formats "foo a , *b" formats "def foo : (A, B) ->\n nil\nend" formats "def foo : (A, B) ->\n nil\nend" formats "1 # foo\n/ 1 /" formats "1 # foo\n/ 1 /" formats "def foo ( @x) \n end" formats "def foo ( @x) \n end" formats "\"\\a\\c\#{foo}\\b\\d\"" formats "\"\\a\\c\#{foo}\\b\\d\"" formats "return 1\n# end" formats "return 1\n# end" formats "return( 1 , 2 )" formats "return( 1 , 2 )" formats "break {1, 2}, 3" formats "break {1, 2}, 3" formats "if a\n2\nelse\nend" formats "if a\n2\nelse\nend" formats "->@foo.foo?" formats "->@foo.foo?" formats "break { {1, 2}, {3, 4} }, 5" formats "break { {1, 2}, {3, 4} }, 5" formats "select \n when foo \n 2 \n end" formats "select \n when foo \n 2 \n end" formats "foo.bar(&.% baz)" formats "foo.bar(&.% baz)" formats "<<-FOO\nfoo\n1\nFOO" formats "<<-FOO\nfoo\n1\nFOO" formats "lib Foo\nunion Foo\nend\nend" formats "lib Foo\nunion Foo\nend\nend" formats "select \n when foo \n 2 \n else \n 3 \n end" formats "select \n when foo \n 2 \n else \n 3 \n end" formats "macro foo\n <<-FOO\n hello \n FOO\nend" formats "macro foo\n <<-FOO\n hello \n FOO\nend" formats "foo do | x | \n x \n end" formats "foo do | x | \n x \n end" formats "def foo( & block )\nend" formats "def foo( & block )\nend" formats "def foo(\n **a\n\n # comment\n)\n 1\nend" formats "def foo(\n **a\n\n # comment\n)\n 1\nend" formats "select # some comment\nwhen bar\n break\nend" formats "select # some comment\nwhen bar\n break\nend" formats "foo {;;1}" formats "foo {;;1}" formats "macro foo(x)\n {% if 1 %} 2 {% end %}\nend" formats "macro foo(x)\n {% if 1 %} 2 {% end %}\nend" formats "begin; 1; end" formats "begin; 1; end" formats "bar = foo(->{\n 1 + 2\n})" formats "bar = foo(->{\n 1 + 2\n})" formats "foo &.[]?" formats "foo &.[]?" formats "if 1\n2\nelsif\n3\n4\nend" formats "if 1\n2\nelsif\n3\n4\nend" formats "begin\n1 ? 2 : 3\nend" formats "begin\n1 ? 2 : 3\nend" formats "a &.!.!" formats "a &.!.!" formats "/foo/" formats "/foo/" formats "1/2" formats "1/2" formats "def foo: Int32\nend" formats "def foo: Int32\nend" formats "def foo(x @@y)\nend" formats "def foo(x @@y)\nend" formats "1 # foo\n1234 # bar" formats "1 # foo\n1234 # bar" formats "{ {{FOO}}, nil}" formats "{ {{FOO}}, nil}" formats "x : Int32**" formats "x : Int32**" formats "_ = 1" formats "_ = 1" formats "yield( 1 , 2 )" formats "yield( 1 , 2 )" formats "private FOO = 2\nprivate A = 1" formats "private FOO = 2\nprivate A = 1" formats "[] of Int32\n1" formats "[] of Int32\n1" formats "break { {1, 2}, {3, 4} }" formats "break { {1, 2}, {3, 4} }" formats "foo([\n 1, 2,\n 3, 4,\n])" formats "foo([\n 1, 2,\n 3, 4,\n])" formats "def foo\n2 # foo\nend" formats "def foo\n2 # foo\nend" formats "1.[]=(2) { 3 }" formats "1.[]=(2) { 3 }" formats "foo.[] =1" formats "foo.[] =1" formats "@x &&= 1" formats "@x &&= 1" formats "foo.[ 1, 2 ]?" formats "foo.[ 1, 2 ]?" formats "macro foo\n {% if 1 %} 2 {% end %}\nend" formats "macro foo\n {% if 1 %} 2 {% end %}\nend" formats "a = \\\n # foo\n nil" formats "a = \\\n # foo\n nil" formats "def foo\nend\n\ndef bar\nend\n\n# foo" formats "def foo\nend\n\ndef bar\nend\n\n# foo" formats "foo x, self // 1" formats "foo x, self // 1" formats "def a\n b(\n 1, # x\n # y\n a: 1, # x\n # y\n b: 2 # z\n )\nend" formats "def a\n b(\n 1, # x\n # y\n a: 1, # x\n # y\n b: 2 # z\n )\nend" formats "class Foo\n # ```\n # 1\n # ```\nend\n" formats "class Foo\n # ```\n # 1\n # ```\nend\n" formats "foo.[]" formats "foo.[]" formats "<<-FOO\nfoo\nFOO" formats "<<-FOO\nfoo\nFOO" formats "0u64" formats "0u64" formats "foo bar # comment\n\n# doc\ndef baz; end" formats "foo bar # comment\n\n# doc\ndef baz; end" formats "a, b = \nif 1\n2\nend" formats "a, b = \nif 1\n2\nend" formats "case 1 \n when .foo? \n 3 \n end" formats "case 1 \n when .foo? \n 3 \n end" formats "next 1" formats "next 1" formats "->{1}" formats "->{1}" formats "foo 1, # comment\n do\n end" formats "foo 1, # comment\n do\n end" formats "[\n1,\n\n2]" formats "[\n1,\n\n2]" formats "def foo(a, # comment\n *b)\nend" formats "def foo(a, # comment\n *b)\nend" formats "a&+1" formats "a&+1" formats "foo(1 &+ \n2)" formats "foo(1 &+ \n2)" formats "alias Foo=\nBar" formats "alias Foo=\nBar" formats "1 * 2" formats "1 * 2" formats "foo &.bar.nil?()" formats "foo &.bar.nil?()" formats "{ {1, 2, 3} }" formats "{ {1, 2, 3} }" formats "def foo(x, *, z)\nend" formats "def foo(x, *, z)\nend" formats "foo {;1}" formats "foo {;1}" formats "(size - 1).downto(0) do |i|\n yield @buffer[i]\nend" formats "(size - 1).downto(0) do |i|\n yield @buffer[i]\nend" formats "1 #foo \n2 #bar" formats "1 #foo \n2 #bar" formats "1*2" formats "1*2" formats "{ {% for x in 1..2 %}3{% end %}, nil }" formats "{ {% for x in 1..2 %}3{% end %}, nil }" formats "@x[ 1 ] += 2" formats "@x[ 1 ] += 2" formats "macro foo\n {{\n1 + 2 }}\nend" formats "macro foo\n {{\n1 + 2 }}\nend" formats "yield 1\n2" formats "yield 1\n2" formats "case 1\nwhen a; 2\nelse; b\nend" formats "case 1\nwhen a; 2\nelse; b\nend" formats "foo(bar(\n 1,\n baz(2,\n 3,\n )\n))" formats "foo(bar(\n 1,\n baz(2,\n 3,\n )\n))" formats "def foo ( x , y ,\n) \n end" formats "def foo ( x , y ,\n) \n end" formats "lib Foo::Bar\nend" formats "lib Foo::Bar\nend" formats "module Ton\n macro foo\n class {{name.id}}\n end\n end\nend" formats "module Ton\n macro foo\n class {{name.id}}\n end\n end\nend" formats "A = 10\nFOO = 123\nBARBAZ = 1234\n" formats "A = 10\nFOO = 123\nBARBAZ = 1234\n" formats "next 1 , *2" formats "next 1 , *2" formats " <<-HTML\n hello \n world \n HTML" formats " <<-HTML\n hello \n world \n HTML" formats "def foo\n # Comment\n\n\nend" formats "def foo\n # Comment\n\n\nend" formats "foo &.[](1, 2)" formats "foo &.[](1, 2)" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] baz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] baz\n); end" formats "macro foo\n %foo{x.id+2}\nend" formats "macro foo\n %foo{x.id+2}\nend" formats "lib LibFoo\n {% begin %}\n fun foo : Int32\n {% end %}\nend" formats "lib LibFoo\n {% begin %}\n fun foo : Int32\n {% end %}\nend" formats "bar do\n foo <<-X\n bar\n X\nend" formats "bar do\n foo <<-X\n bar\n X\nend" formats "yield( 1 )" formats "yield( 1 )" formats "lib Foo\n {% if 1 %}\n fun foo\n {% end %}\nend\n\nmacro bar\n 1\nend" formats "lib Foo\n {% if 1 %}\n fun foo\n {% end %}\nend\n\nmacro bar\n 1\nend" formats "foo 1, # comment\n # bar\n do\n end" formats "foo 1, # comment\n # bar\n do\n end" formats "1 ? 2 : 3" formats "1 ? 2 : 3" formats "class Foo;end" formats "class Foo;end" formats "->Foo.foo!" formats "->Foo.foo!" formats "if a\n2\n3\nend" formats "if a\n2\n3\nend" formats "x, y, z = <<-FOO, <<-BAR, <<-BAZ\n hello\n FOO\n world\n BAR\n qux\nBAZ" formats "x, y, z = <<-FOO, <<-BAR, <<-BAZ\n hello\n FOO\n world\n BAR\n qux\nBAZ" Unicode bi-directional control characters formats "NamedTuple(\"\u202B\": Int32)" formats "NamedTuple(\"\u202B\": Int32)" formats "NamedTuple(\"\u2068\": Int32)" formats "NamedTuple(\"\u2068\": Int32)" formats "{\"\u202C\": 1}" formats "{\"\u202C\": 1}" formats "%q(\u2069)" formats "%q(\u2069)" formats "%(\u202B)" formats "%(\u202B)" formats "/\u202A/" formats "/\u202A/" formats "<<-'EOS'\n\u2066\nEOS" formats "<<-'EOS'\n\u2066\nEOS" formats "%(\u202C)" formats "%(\u202C)" formats "<<-'EOS'\n\u202C\nEOS" formats "<<-'EOS'\n\u202C\nEOS" formats "%Q(\u202B)" formats "%Q(\u202B)" formats "{\"\u2067\": 1}" formats "{\"\u2067\": 1}" formats "/\u202E\#{1}/" formats "/\u202E\#{1}/" formats "/\u2068\#{1}/" formats "/\u2068\#{1}/" formats "%r(\u202D\#{1})" formats "%r(\u202D\#{1})" formats "foo(\"\u2069\": 1)" formats "foo(\"\u2069\": 1)" formats "foo(\"\u2067\": 1)" formats "foo(\"\u2067\": 1)" formats "\"\\c\u202C\"" formats "\"\\c\u202C\"" formats "<<-EOS\n\u2067\nEOS" formats "<<-EOS\n\u2067\nEOS" formats "%r(\u202B\#{1})" formats "%r(\u202B\#{1})" formats "<<-EOS\n\u2066\nEOS" formats "<<-EOS\n\u2066\nEOS" formats "foo(\"\u2068\": 1)" formats "foo(\"\u2068\": 1)" formats "/\u202B/" formats "/\u202B/" formats "/\u202D/" formats "/\u202D/" formats "def foo(\"\u2067\" x)\nend" formats "def foo(\"\u2067\" x)\nend" formats "<<-'EOS'\n\u202A\nEOS" formats "<<-'EOS'\n\u202A\nEOS" formats "%w(\u202C)" formats "%w(\u202C)" formats "NamedTuple(\"\u202A\": Int32)" formats "NamedTuple(\"\u202A\": Int32)" formats "%w(\u202A)" formats "%w(\u202A)" formats "\"\u202D\#{1}\"" formats "\"\u202D\#{1}\"" formats "<<-EOS\n\u2066\#{1}\nEOS" formats "<<-EOS\n\u2066\#{1}\nEOS" formats "/\u202E/" formats "/\u202E/" formats "%i(\u202E)" formats "%i(\u202E)" formats "%(\u202D)" formats "%(\u202D)" formats "def foo(\"\u202A\" x)\nend" formats "def foo(\"\u202A\" x)\nend" formats "%Q(\u2069)" formats "%Q(\u2069)" formats "<<-EOS\n\u2069\nEOS" formats "<<-EOS\n\u2069\nEOS" formats "%r(\u2067)" formats "%r(\u2067)" formats "foo(\"\u202A\": 1)" formats "foo(\"\u202A\": 1)" formats "%r(\u2069)" formats "%r(\u2069)" formats "def foo(\"\u2069\" x)\nend" formats "def foo(\"\u2069\" x)\nend" formats "%r(\u202D)" formats "%r(\u202D)" formats "%q(\u202D)" formats "%q(\u202D)" formats "\"\u202C\"" formats "\"\u202C\"" formats "\"\\c\u2069\"" formats "\"\\c\u2069\"" formats "\"\u202D\"" formats "\"\u202D\"" formats "%(\u2067)" formats "%(\u2067)" formats "%r(\u202B)" formats "%r(\u202B)" formats "<<-'EOS'\n\u202B\nEOS" formats "<<-'EOS'\n\u202B\nEOS" formats "def foo(\"\u2066\" x)\nend" formats "def foo(\"\u2066\" x)\nend" formats "\"\u202E\#{1}\"" formats "\"\u202E\#{1}\"" formats "%Q(\u2067)" formats "%Q(\u2067)" formats "def foo(\"\u202D\" x)\nend" formats "def foo(\"\u202D\" x)\nend" formats "%(\u202A)" formats "%(\u202A)" formats "<<-EOS\n\u202D\nEOS" formats "<<-EOS\n\u202D\nEOS" formats "{\"\u202A\": 1}" formats "{\"\u202A\": 1}" formats "\"\\c\u202A\"" formats "\"\\c\u202A\"" formats "NamedTuple(\"\u202E\": Int32)" formats "NamedTuple(\"\u202E\": Int32)" formats "/\u202C/" formats "/\u202C/" formats "%Q(\u2068)" formats "%Q(\u2068)" formats "%i(\u2068)" formats "%i(\u2068)" formats "%w(\u202D)" formats "%w(\u202D)" formats "def foo(\"\u202C\" x)\nend" formats "def foo(\"\u202C\" x)\nend" formats "\"\\c\u2068\"" formats "\"\\c\u2068\"" formats "%q(\u2067)" formats "%q(\u2067)" formats "foo(\"\u202D\": 1)" formats "foo(\"\u202D\": 1)" formats "%Q(\u202C)" formats "%Q(\u202C)" formats "\"\\c\u202E\#{1}\"" formats "\"\\c\u202E\#{1}\"" formats "%Q(\u202C\#{1})" formats "%Q(\u202C\#{1})" formats "def foo(\"\u2068\" x)\nend" formats "def foo(\"\u2068\" x)\nend" formats "<<-EOS\n\u2069\#{1}\nEOS" formats "<<-EOS\n\u2069\#{1}\nEOS" formats "{\"\u202D\": 1}" formats "{\"\u202D\": 1}" formats "<<-EOS\n\u202C\nEOS" formats "<<-EOS\n\u202C\nEOS" formats "/\u202D\#{1}/" formats "/\u202D\#{1}/" formats "NamedTuple(\"\u2066\": Int32)" formats "NamedTuple(\"\u2066\": Int32)" formats "%q(\u2066)" formats "%q(\u2066)" formats "<<-EOS\n\u202C\#{1}\nEOS" formats "<<-EOS\n\u202C\#{1}\nEOS" formats "%w(\u202E)" formats "%w(\u202E)" formats "%i(\u202A)" formats "%i(\u202A)" formats "{\"\u2068\": 1}" formats "{\"\u2068\": 1}" formats "NamedTuple(\"\u202C\": Int32)" formats "NamedTuple(\"\u202C\": Int32)" formats "\"\\c\u202D\#{1}\"" formats "\"\\c\u202D\#{1}\"" formats "%i(\u2066)" formats "%i(\u2066)" formats "<<-'EOS'\n\u2067\nEOS" formats "<<-'EOS'\n\u2067\nEOS" formats "{\"\u202B\": 1}" formats "{\"\u202B\": 1}" formats "%r(\u202E)" formats "%r(\u202E)" formats "\"\u2069\#{1}\"" formats "\"\u2069\#{1}\"" formats "%r(\u2069\#{1})" formats "%r(\u2069\#{1})" formats "%q(\u2068)" formats "%q(\u2068)" formats "foo(\"\u202C\": 1)" formats "foo(\"\u202C\": 1)" formats "%r(\u2067\#{1})" formats "%r(\u2067\#{1})" formats "%r(\u202C)" formats "%r(\u202C)" formats "{\"\u2069\": 1}" formats "{\"\u2069\": 1}" formats "\"\u2069\"" formats "\"\u2069\"" formats "%q(\u202E)" formats "%q(\u202E)" formats "%r(\u202C\#{1})" formats "%r(\u202C\#{1})" formats "/\u202B\#{1}/" formats "/\u202B\#{1}/" formats "NamedTuple(\"\u2069\": Int32)" formats "NamedTuple(\"\u2069\": Int32)" formats "/\u2068/" formats "/\u2068/" formats "%i(\u202D)" formats "%i(\u202D)" formats "%i(\u202C)" formats "%i(\u202C)" formats "%r(\u2068\#{1})" formats "%r(\u2068\#{1})" formats "foo(\"\u202B\": 1)" formats "foo(\"\u202B\": 1)" formats "\"\\c\u2068\#{1}\"" formats "\"\\c\u2068\#{1}\"" formats "<<-EOS\n\u2068\#{1}\nEOS" formats "<<-EOS\n\u2068\#{1}\nEOS" formats "%q(\u202C)" formats "%q(\u202C)" formats "<<-EOS\n\u202A\#{1}\nEOS" formats "<<-EOS\n\u202A\#{1}\nEOS" formats "%(\u202E)" formats "%(\u202E)" formats "<<-EOS\n\u202D\#{1}\nEOS" formats "<<-EOS\n\u202D\#{1}\nEOS" formats "{\"\u202E\": 1}" formats "{\"\u202E\": 1}" formats "\"\u202A\#{1}\"" formats "\"\u202A\#{1}\"" formats "%(\u2069)" formats "%(\u2069)" formats "%w(\u202B)" formats "%w(\u202B)" formats "<<-'EOS'\n\u202E\nEOS" formats "<<-'EOS'\n\u202E\nEOS" formats "<<-'EOS'\n\u202D\nEOS" formats "<<-'EOS'\n\u202D\nEOS" formats "<<-EOS\n\u202E\#{1}\nEOS" formats "<<-EOS\n\u202E\#{1}\nEOS" formats "%r(\u2066)" formats "%r(\u2066)" formats "%Q(\u2066)" formats "%Q(\u2066)" formats "\"\u202B\"" formats "\"\u202B\"" formats "<<-EOS\n\u202E\nEOS" formats "<<-EOS\n\u202E\nEOS" formats "%Q(\u202A\#{1})" formats "%Q(\u202A\#{1})" formats "def foo(\"\u202B\" x)\nend" formats "def foo(\"\u202B\" x)\nend" formats "\"\\c\u2067\#{1}\"" formats "\"\\c\u2067\#{1}\"" formats "\"\u2068\"" formats "\"\u2068\"" formats "\"\u2067\"" formats "\"\u2067\"" formats "%Q(\u202E\#{1})" formats "%Q(\u202E\#{1})" formats "/\u2069/" formats "/\u2069/" formats "%Q(\u2067\#{1})" formats "%Q(\u2067\#{1})" formats "%Q(\u2069\#{1})" formats "%Q(\u2069\#{1})" formats "\"\u202B\#{1}\"" formats "\"\u202B\#{1}\"" formats "%w(\u2066)" formats "%w(\u2066)" formats "\"\u2066\#{1}\"" formats "\"\u2066\#{1}\"" formats "%Q(\u202D\#{1})" formats "%Q(\u202D\#{1})" formats "\"\\c\u202A\#{1}\"" formats "\"\\c\u202A\#{1}\"" formats "\"\u202C\#{1}\"" formats "\"\u202C\#{1}\"" formats "/\u2066\#{1}/" formats "/\u2066\#{1}/" formats "\"\\c\u2069\#{1}\"" formats "\"\\c\u2069\#{1}\"" formats "NamedTuple(\"\u2067\": Int32)" formats "NamedTuple(\"\u2067\": Int32)" formats "<<-EOS\n\u202A\nEOS" formats "<<-EOS\n\u202A\nEOS" formats "/\u202C\#{1}/" formats "/\u202C\#{1}/" formats "NamedTuple(\"\u202D\": Int32)" formats "NamedTuple(\"\u202D\": Int32)" formats "%r(\u2066\#{1})" formats "%r(\u2066\#{1})" formats "/\u2069\#{1}/" formats "/\u2069\#{1}/" formats "{\"\u2066\": 1}" formats "{\"\u2066\": 1}" formats "%i(\u2067)" formats "%i(\u2067)" formats "%(\u2066)" formats "%(\u2066)" formats "%w(\u2068)" formats "%w(\u2068)" formats "\"\\c\u202B\#{1}\"" formats "\"\\c\u202B\#{1}\"" formats "\"\\c\u202E\"" formats "\"\\c\u202E\"" formats "\"\u2068\#{1}\"" formats "\"\u2068\#{1}\"" formats "\"\u202A\"" formats "\"\u202A\"" formats "<<-'EOS'\n\u2068\nEOS" formats "<<-'EOS'\n\u2068\nEOS" formats "%r(\u202A)" formats "%r(\u202A)" formats "\"\\c\u202B\"" formats "\"\\c\u202B\"" formats "\"\u202E\"" formats "\"\u202E\"" formats "%q(\u202B)" formats "%q(\u202B)" formats "/\u2067/" formats "/\u2067/" formats "%(\u2068)" formats "%(\u2068)" formats "<<-'EOS'\n\u2069\nEOS" formats "<<-'EOS'\n\u2069\nEOS" formats "%r(\u202A\#{1})" formats "%r(\u202A\#{1})" formats "<<-EOS\n\u2068\nEOS" formats "<<-EOS\n\u2068\nEOS" formats "%r(\u202E\#{1})" formats "%r(\u202E\#{1})" formats "%Q(\u202B\#{1})" formats "%Q(\u202B\#{1})" formats "\"\\c\u202D\"" formats "\"\\c\u202D\"" formats "%Q(\u202E)" formats "%Q(\u202E)" formats "%i(\u202B)" formats "%i(\u202B)" formats "\"\\c\u2066\"" formats "\"\\c\u2066\"" formats "<<-EOS\n\u2067\#{1}\nEOS" formats "<<-EOS\n\u2067\#{1}\nEOS" formats "\"\\c\u2066\#{1}\"" formats "\"\\c\u2066\#{1}\"" formats "foo(\"\u202E\": 1)" formats "foo(\"\u202E\": 1)" formats "\"\\c\u202C\#{1}\"" formats "\"\\c\u202C\#{1}\"" formats "<<-EOS\n\u202B\nEOS" formats "<<-EOS\n\u202B\nEOS" formats "<<-EOS\n\u202B\#{1}\nEOS" formats "<<-EOS\n\u202B\#{1}\nEOS" formats "%Q(\u2066\#{1})" formats "%Q(\u2066\#{1})" formats "%w(\u2067)" formats "%w(\u2067)" formats "%Q(\u2068\#{1})" formats "%Q(\u2068\#{1})" formats "/\u2067\#{1}/" formats "/\u2067\#{1}/" formats "\"\u2066\"" formats "\"\u2066\"" formats "%Q(\u202A)" formats "%Q(\u202A)" formats "/\u202A\#{1}/" formats "/\u202A\#{1}/" formats "%r(\u2068)" formats "%r(\u2068)" formats "%w(\u2069)" formats "%w(\u2069)" formats "%Q(\u202D)" formats "%Q(\u202D)" formats "%i(\u2069)" formats "%i(\u2069)" formats "%q(\u202A)" formats "%q(\u202A)" formats "\"\u2067\#{1}\"" formats "\"\u2067\#{1}\"" formats "def foo(\"\u202E\" x)\nend" formats "def foo(\"\u202E\" x)\nend" formats "\"\\c\u2067\"" formats "\"\\c\u2067\"" formats "foo(\"\u2066\": 1)" formats "foo(\"\u2066\": 1)" formats "/\u2066/" formats "/\u2066/" formats "yield( *1 , *2 )" formats "yield( *1 , *2 )" formats "foo(//, //)" formats "foo(//, //)" formats "&- 1" formats "&- 1" formats "if a\n b &c\nend" formats "if a\n b &c\nend" formats "foo = 1\n->foo.foo?" formats "foo = 1\n->foo.foo?" formats "foo(->do\n 1 + 2\nend)" formats "foo(->do\n 1 + 2\nend)" formats "# ```text\n# 1 + 2\n# ```\n#\n# ```\n# 3 + 4\n# ```" formats "# ```text\n# 1 + 2\n# ```\n#\n# ```\n# 3 + 4\n# ```" formats "def a\n b(\n a: 1, # x\n # y\n b: 2\n )\nend" formats "def a\n b(\n a: 1, # x\n # y\n b: 2\n )\nend" formats "x : (A -> B)?" formats "x : (A -> B)?" formats "with foo yield bar" formats "with foo yield bar" formats "1 &+ 2" formats "1 &+ 2" formats "sizeof( Int32 )" formats "sizeof( Int32 )" formats "foo.bar(&.%(baz))" formats "foo.bar(&.%(baz))" formats "lib Foo\nfun foo( ... ) : Int32\nend" formats "lib Foo\nfun foo( ... ) : Int32\nend" formats "foo : A(B)\nbar : C" formats "foo : A(B)\nbar : C" formats "foo &.bar.responds_to?(:baz)" formats "foo &.bar.responds_to?(:baz)" formats "module Moo \n\n 1 \n\nend" formats "module Moo \n\n 1 \n\nend" formats "NamedTuple(\n a: Int32,)" formats "NamedTuple(\n a: Int32,)" formats "{ 1 => 2 }" formats "{ 1 => 2 }" formats "x : {A, B, }" formats "x : {A, B, }" formats "foo[&.bar]?" formats "foo[&.bar]?" formats "struct Foo \n\n 1 \n\nend" formats "struct Foo \n\n 1 \n\nend" formats "def foo # bar\n # baz\nend" formats "def foo # bar\n # baz\nend" formats "if 1\n ((1) + 2)\nend" formats "if 1\n ((1) + 2)\nend" formats "->do\nend" formats "->do\nend" formats "foo[x: 1, &.bar] = 1" formats "foo[x: 1, &.bar] = 1" formats "asm(\"nop\" : \"a\"(0), \"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "asm(\"nop\" : \"a\"(0), \"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "-> : Int32* {}" formats "-> : Int32* {}" gives proper line number in syntax error inside macro gives proper line number in syntax error inside macro formats "%<hello>" formats "%<hello>" formats "def foo ( x : Int32 ) \n end" formats "def foo ( x : Int32 ) \n end" formats "case 1 \n when 2 ; 3 \n end" formats "case 1 \n when 2 ; 3 \n end" formats "#!shebang\n1 + 2" formats "#!shebang\n1 + 2" formats "def foo=(x)\nend" formats "def foo=(x)\nend" formats "unless a\nelse\n2\nend" formats "unless a\nelse\n2\nend" formats "return {1, 2}, 3" formats "return {1, 2}, 3" formats "x[ y ] += 1" formats "x[ y ] += 1" formats "foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n})" formats "foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n})" formats "macro foo\n {{ 1 + 2 }}\\\n 1\n end" formats "macro foo\n {{ 1 + 2 }}\\\n 1\n end" formats "->(){}" formats "->(){}" formats ":foo" formats ":foo" formats "-> : {Int32} { String }" formats "-> : {Int32} { String }" formats "break 1 , *2" formats "break 1 , *2" formats " <<-HTML\n foo\nHTML" formats " <<-HTML\n foo\nHTML" formats "lib Foo\nstruct Foo\nx : Int32\nend\nend" formats "lib Foo\nstruct Foo\nx : Int32\nend\nend" formats "def bar\n foo(<<-X,\n a\n X\n 1)\nend" formats "def bar\n foo(<<-X,\n a\n X\n 1)\nend" formats "foo(&.bar)" formats "foo(&.bar)" formats "macro foo\n 1 \n {{ \n 42 \n }} \n 2 \nend" formats "macro foo\n 1 \n {{ \n 42 \n }} \n 2 \nend" formats "lib Foo\nalias Foo = Bar -> \n$a : Int32\nend" formats "lib Foo\nalias Foo = Bar -> \n$a : Int32\nend" formats "def foo ( x ) : Int32 \n end" formats "def foo ( x ) : Int32 \n end" formats "class Foo\n enum Bar\n A; B; C;\n D; E; F\nend\nend\n" formats "class Foo\n enum Bar\n A; B; C;\n D; E; F\nend\nend\n" formats "a &.!" formats "a &.!" formats "a = %w(\n one two\n three four\n)" formats "a = %w(\n one two\n three four\n)" formats "responds_to? :foo" formats "responds_to? :foo" formats "1.!=() { 3 }" formats "1.!=() { 3 }" formats "case 1 # foo\nwhen 2\nend" formats "case 1 # foo\nwhen 2\nend" formats "if a\n2\nend" formats "if a\n2\nend" formats "select\nwhen foo\n # foo\n # bar\nelse\n # foo\n # bar\nend" formats "select\nwhen foo\n # foo\n # bar\nelse\n # foo\n # bar\nend" formats "if 1\nbegin\n2\nensure\n3\nend\nend" formats "if 1\nbegin\n2\nensure\n3\nend\nend" formats "[\n # foo\n 1,\n\n # bar\n 2,\n]" formats "[\n # foo\n 1,\n\n # bar\n 2,\n]" formats "{%\n if 1\n 2\n end\n%}" formats "{%\n if 1\n 2\n end\n%}" formats "{\n \"foo\": 1,\n \"babraz\": 2,\n}" formats "{\n \"foo\": 1,\n \"babraz\": 2,\n}" formats "if 1 # foo\n2\nend" formats "if 1 # foo\n2\nend" formats "foo &.==(2)" formats "foo &.==(2)" formats "def foo(x)\n case //\n when //\n 3\n end\nend" formats "def foo(x)\n case //\n when //\n 3\n end\nend" formats "begin\n a\nend.b { }\nc" formats "begin\n a\nend.b { }\nc" formats "x = uninitialized Int32" formats "x = uninitialized Int32" formats "foo ()" formats "foo ()" formats "[/ /, / /]" formats "[/ /, / /]" formats "def foo( & )\nend" formats "def foo( & )\nend" formats "::Tuple(T)" formats "::Tuple(T)" formats "1\n.as(Int32)" formats "1\n.as(Int32)" formats "if # some comment\n 2 # another\n 3 # final \n end # end " formats "if # some comment\n 2 # another\n 3 # final \n end # end " formats "if 0\n1 &&\n2 &&\n3\nend" formats "if 0\n1 &&\n2 &&\n3\nend" formats "macro foo\n {% for value, i in values %}\\\n {% if true %}\\\n {% end %}\\\n {{ 1 }}/\n {% end %}\\\nend\n\n{\n 1 => 2,\n 1234 => 5,\n}\n" formats "macro foo\n {% for value, i in values %}\\\n {% if true %}\\\n {% end %}\\\n {{ 1 }}/\n {% end %}\\\nend\n\n{\n 1 => 2,\n 1234 => 5,\n}\n" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\#{foo}\\v\\f\\e\"" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\#{foo}\\v\\f\\e\"" formats "1 if 2" formats "1 if 2" formats "foo(\n1,\n\n 2 \n)" formats "foo(\n1,\n\n 2 \n)" formats "return { 1 , 2 }" formats "return { 1 , 2 }" formats "1 &&\n2" formats "1 &&\n2" formats "foo[1, &.bar] = 1" formats "foo[1, &.bar] = 1" formats "def foo(\n foo,\n\n @[MyAnn]\n &block\n); end" formats "def foo(\n foo,\n\n @[MyAnn]\n &block\n); end" formats "def foo(\n a,\n &block\n)\nend" formats "def foo(\n a,\n &block\n)\nend" formats "{\n <<-KEY => 1,\n key\n KEY\n}" formats "{\n <<-KEY => 1,\n key\n KEY\n}" formats "yield 1 , \n2" formats "yield 1 , \n2" formats "break( 1 , 2 )" formats "break( 1 , 2 )" formats "1.<=() { 3 }" formats "1.<=() { 3 }" formats "a = foo &.bar do\n 1 + 2\nend" formats "a = foo &.bar do\n 1 + 2\nend" formats "foo &.[]=( 1, 2 )" formats "foo &.[]=( 1, 2 )" formats "next {1, 2}, {3, 4}" formats "next {1, 2}, {3, 4}" formats "yield *1 ,2" formats "yield *1 ,2" formats "asm(\"nop\" :::: \"volatile\" , \"alignstack\" , \"intel\" )" formats "asm(\"nop\" :::: \"volatile\" , \"alignstack\" , \"intel\" )" formats "foo(self // 1)" formats "foo(self // 1)" formats "foo : self? | A" formats "foo : self? | A" formats "class Foo\n# nothing\nend" formats "class Foo\n# nothing\nend" formats ":<<" formats ":<<" formats "->: Int32 do\nx\nend" formats "->: Int32 do\nx\nend" formats "foo[x: 1, &.bar]" formats "foo[x: 1, &.bar]" formats "def foo(x, **z, &block)\nend" formats "def foo(x, **z, &block)\nend" formats "- 1" formats "- 1" formats "あ.い, う.え.お = 1, 2" formats "あ.い, う.え.お = 1, 2" formats "# Hello\n#\n# ```\n# puts 1+2 # bye\n# 1+2 # hello\n#\n# 1+2\n# ```\n\n# ```\n# puts 1+2\n\n# ```\n# puts 1+2\n\n# Hola\n#\n# 1+2\n# foo do\n# 3+4\n# end\n\n# Hey\n#\n# 1+2\n# foo do\n# 3+4\n# end\n#\n# ```\n# 1+2\n# ```\n#\n# 1+2\n#\n# Bye\n" formats "# Hello\n#\n# ```\n# puts 1+2 # bye\n# 1+2 # hello\n#\n# 1+2\n# ```\n\n# ```\n# puts 1+2\n\n# ```\n# puts 1+2\n\n# Hola\n#\n# 1+2\n# foo do\n# 3+4\n# end\n\n# Hey\n#\n# 1+2\n# foo do\n# 3+4\n# end\n#\n# ```\n# 1+2\n# ```\n#\n# 1+2\n#\n# Bye\n" formats "->foo?" formats "->foo?" formats "asm(\"a\" : : :: \"volatile\")" formats "asm(\"a\" : : :: \"volatile\")" formats "a = if 1\n2\nelse\n3\nend" formats "a = if 1\n2\nelse\n3\nend" formats "foo(\n# x\n1,\n\n# y\nz: 2\n)" formats "foo(\n# x\n1,\n\n# y\nz: 2\n)" formats "<<-HTML\n hello \n world \n HTML" formats "<<-HTML\n hello \n world \n HTML" formats "class Foo \n\n 1 \n\nend" formats "class Foo \n\n 1 \n\nend" formats "foo : (A) | D" formats "foo : (A) | D" formats "return { {1, 2}, {3, 4} }, 5" formats "return { {1, 2}, {3, 4} }, 5" formats "\"\#{\"\#{foo}\"}\"" formats "\"\#{\"\#{foo}\"}\"" formats "pointerof( @a )" formats "pointerof( @a )" formats "{% if true %}\n # x\n{% end %}" formats "{% if true %}\n # x\n{% end %}" formats "yield(1 , \n2)" formats "yield(1 , \n2)" formats "def foo( @[MyAnn] v ); end" formats "def foo( @[MyAnn] v ); end" formats "1 || 2" formats "1 || 2" formats "def foo\na = bar do\n1\nend\nend" formats "def foo\na = bar do\n1\nend\nend" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1), \"c\"(2) )" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1), \"c\"(2) )" formats "{1 => 2,\n 3 => 4, # lala\n}\n" formats "{1 => 2,\n 3 => 4, # lala\n}\n" formats "Hash{\n foo => <<-EOF\n foo\n EOF\n}" formats "Hash{\n foo => <<-EOF\n foo\n EOF\n}" formats "foo = 1\n->foo.[]=(Int32)" formats "foo = 1\n->foo.[]=(Int32)" formats "if 1\n[ 1 , 2 , 3 ]\nend" formats "if 1\n[ 1 , 2 , 3 ]\nend" formats "foo[&.bar]" formats "foo[&.bar]" formats " {{\n1 + 2 }}" formats " {{\n1 + 2 }}" formats "Foo( * T, { * A ,*\n B } )" formats "Foo( * T, { * A ,*\n B } )" formats "yield *1" formats "yield *1" formats "<<-HTML\n \#{\"foo\"}\n \#{\"bar\"}\n HTML" formats "<<-HTML\n \#{\"foo\"}\n \#{\"bar\"}\n HTML" formats "foo(1, ) { }" formats "foo(1, ) { }" formats "1.!=(2) { 3 }" formats "1.!=(2) { 3 }" formats "instance_sizeof( Int32 )" formats "instance_sizeof( Int32 )" formats "foo . bar" formats "foo . bar" formats "@x : A(B | C)?" formats "@x : A(B | C)?" formats "class Actor\n macro inherited\nend\nend\n" formats "class Actor\n macro inherited\nend\nend\n" formats "foo ( )" formats "foo ( )" formats "asm(\"a\" :: \"d\"(e)\n)" formats "asm(\"a\" :: \"d\"(e)\n)" formats "def foo : A | B(C)\n nil\nend" formats "def foo : A | B(C)\n nil\nend" formats "bar = foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n })" formats "bar = foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n })" formats "break 1" formats "break 1" formats "::foo(1, 2)" formats "::foo(1, 2)" formats "foo &.bar do\n 1 + 2\nend" formats "foo &.bar do\n 1 + 2\nend" formats "if a\n2\nelse\n3\nend" formats "if a\n2\nelse\n3\nend" formats "->{\n # first comment\n puts \"hi\"\n # second comment\n}" formats "->{\n # first comment\n puts \"hi\"\n # second comment\n}" formats "foo : (A -> B)\nbar : C" formats "foo : (A -> B)\nbar : C" formats "def foo(\nx, #foo\nz #bar\n)\nend" formats "def foo(\nx, #foo\nz #bar\n)\nend" formats "foo 1,\na: 1,\nb: 2,\nc: 3" formats "foo 1,\na: 1,\nb: 2,\nc: 3" formats "::Pointer(T)" formats "::Pointer(T)" formats "select\n# when foo\nwhen bar\n break\nend" formats "select\n# when foo\nwhen bar\n break\nend" formats "bar = foo(->do\n 1 + 2\nend)" formats "bar = foo(->do\n 1 + 2\nend)" formats "foo(\n <<-HERE,\n hello\n HERE\n # foo\n foo: 1,\n)" formats "foo(\n <<-HERE,\n hello\n HERE\n # foo\n foo: 1,\n)" formats "foo(1, / /)" formats "foo(1, / /)" formats "case 1\nelse\n 2\nend" formats "case 1\nelse\n 2\nend" formats "{ {1 => 2} }" formats "{ {1 => 2} }" formats "# ```text\n# 1 + 2\n# ```" formats "# ```text\n# 1 + 2\n# ```" formats "def foo ( x ,\n y ) \n end" formats "def foo ( x ,\n y ) \n end" formats "begin\n # Comment\n\n\nend" formats "begin\n # Comment\n\n\nend" formats "1 ?\n 2 : \n 3" formats "1 ?\n 2 : \n 3" formats "if a\n # hello\n 2\nend" formats "if a\n # hello\n 2\nend" formats "case 0\nwhen 0 then 1; 2\n# Comments\nend" formats "case 0\nwhen 0 then 1; 2\n# Comments\nend" formats "true" formats "true" formats "x = <<-EOF\n 1\nEOF" formats "x = <<-EOF\n 1\nEOF" formats "1234 # foo\n1 # bar" formats "1234 # foo\n1 # bar" formats "while 1\n2 # foo\nend" formats "while 1\n2 # foo\nend" formats "foo.as? ( Int32* )" formats "foo.as? ( Int32* )" formats "break" formats "break" formats "begin\n ()\nend" formats "begin\n ()\nend" formats "@[Foo(\n foo: 1\n)]\ndef foo\nend" formats "@[Foo(\n foo: 1\n)]\ndef foo\nend" formats "1 \\\nensure 2" formats "1 \\\nensure 2" formats "a = case 1\n when 1, # 1\n 2, # 2\n 3 # 3\n 1\n end" formats "a = case 1\n when 1, # 1\n 2, # 2\n 3 # 3\n 1\n end" formats "def foo(x)\n {% if true %}\n # comment\n Foo = 1\n B = 2\n {% end %}\nend" formats "def foo(x)\n {% if true %}\n # comment\n Foo = 1\n B = 2\n {% end %}\nend" formats "foo(\n [\n 1,\n 2,\n ],\n [\n 3,\n 4,\n ]\n)" formats "foo(\n [\n 1,\n 2,\n ],\n [\n 3,\n 4,\n ]\n)" formats "macro foo=(x)\nend" formats "macro foo=(x)\nend" formats "a = / /" formats "a = / /" formats "macro foo\n if 1\n 1 + 2\n end\nend" formats "macro foo\n if 1\n 1 + 2\n end\nend" formats "1\n# hello\n\n\n" formats "1\n# hello\n\n\n" formats "-> :: Foo . foo!" formats "-> :: Foo . foo!" formats "def foo ( @select) \n end" formats "def foo ( @select) \n end" formats "#### ###" formats "#### ###" formats "foo(a: 1 // 2)" formats "foo(a: 1 // 2)" formats "def foo(**z, &block)\nend" formats "def foo(**z, &block)\nend" formats "foo(\n 1,\n 2\n) do\n 1\nend" formats "foo(\n 1,\n 2\n) do\n 1\nend" formats "next { 1 , 2 }" formats "next { 1 , 2 }" formats "-> : Int32 | String { 1 }" formats "-> : Int32 | String { 1 }" formats "def foo(x : ( A | B )) : ( A | B )\nend" formats "def foo(x : ( A | B )) : ( A | B )\nend" formats "return( 1 )" formats "return( 1 )" formats "foo[1, &.bar]?" formats "foo[1, &.bar]?" formats "extend Foo" formats "extend Foo" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\")" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\")" formats "foo : Foo * * * * *" formats "foo : Foo * * * * *" formats "{1 => 2, 3 => 4}\n{5234234 => 234098234, 7 => 8}" formats "{1 => 2, 3 => 4}\n{5234234 => 234098234, 7 => 8}" formats "a.b &.[c]?\n1" formats "a.b &.[c]?\n1" formats "fun foo(x : Int32) : Int32\n 1\nend" formats "fun foo(x : Int32) : Int32\n 1\nend" formats "foo.bar do\n baz\n .b\nend" formats "foo.bar do\n baz\n .b\nend" formats "case\n# hello\nwhen 1\n 2\nend" formats "case\n# hello\nwhen 1\n 2\nend" formats "x.try &.[]= 123, 456" formats "x.try &.[]= 123, 456" formats "foo( 1 , 2 )" formats "foo( 1 , 2 )" formats "return 1, {2, 3}" formats "return 1, {2, 3}" formats "->( x , y ) { x }" formats "->( x , y ) { x }" formats "foo &.[]?(1, 2)" formats "foo &.[]?(1, 2)" formats "def foo(@[AnnOne] @[AnnTwo] &block : Int32 -> ); end" formats "def foo(@[AnnOne] @[AnnTwo] &block : Int32 -> ); end" formats "lib Foo\nfun foo(x : Int32, ... ) : Int32\nend" formats "lib Foo\nfun foo(x : Int32, ... ) : Int32\nend" formats "->( ){ x }" formats "->( ){ x }" formats "if 1 &&\n2 &&\n3\n4\nend" formats "if 1 &&\n2 &&\n3\n4\nend" formats "case / /\nwhen /x/, / /\n / /\nend" formats "case / /\nwhen /x/, / /\n / /\nend" formats "def foo ( bar @select) \n end" formats "def foo ( bar @select) \n end" formats "x = {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}" formats "x = {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\nend" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\nend" formats "foo(\"bar\": 1, \"baz qux\": 2)" formats "foo(\"bar\": 1, \"baz qux\": 2)" formats "bar = foo([\n 1,\n 2,\n 3,\n])" formats "bar = foo([\n 1,\n 2,\n 3,\n])" formats "foo = 1\n->foo.bar=(Int32)" formats "foo = 1\n->foo.bar=(Int32)" formats "foo do | x , y | \n x \n end" formats "foo do | x , y | \n x \n end" formats "{1, 2, 3}" formats "{1, 2, 3}" formats "if 1\n[\n a() # b\n]\nend" formats "if 1\n[\n a() # b\n]\nend" formats "self.as(Int32)" formats "self.as(Int32)" formats "if 1\ncase 1\nwhen 2\n3\nend\nend" formats "if 1\ncase 1\nwhen 2\n3\nend\nend" formats "next 1, {2, 3}" formats "next 1, {2, 3}" formats "lib Foo\nstruct Foo\nx : Int32\ny : Float64\nend\nend" formats "lib Foo\nstruct Foo\nx : Int32\ny : Float64\nend\nend" formats "foo(1,\n &.bar)" formats "foo(1,\n &.bar)" formats "macro foo(\n a,\n *b,\n)\nend" formats "macro foo(\n a,\n *b,\n)\nend" formats "1.<= { 3 }" formats "1.<= { 3 }" formats "if a\n2; 3\nelse\n3\nend" formats "if a\n2; 3\nelse\n3\nend" formats "! 1" formats "! 1" formats "foo(\n 1,\n) {\n 2\n}" formats "foo(\n 1,\n) {\n 2\n}" formats "def foo(@[MyAnn] & : String -> Nil); end" formats "def foo(@[MyAnn] & : String -> Nil); end" formats "begin\n select\n when foo\n # foo\n # bar\n else\n # foo\n # bar\n end\nend" formats "begin\n select\n when foo\n # foo\n # bar\n else\n # foo\n # bar\n end\nend" formats "1 .. 2" formats "1 .. 2" formats "->foo" formats "->foo" formats "foo(/ /)" formats "foo(/ /)" formats "1.[]=() { 3 }" formats "1.[]=() { 3 }" formats "foo(A |\nB |\nC)" formats "foo(A |\nB |\nC)" formats "10 // a" formats "10 // a" formats "a = foo(baz1 do\nend)" formats "a = foo(baz1 do\nend)" formats "$~.bar" formats "$~.bar" formats "{%\n if true\n 1\n else\n 2\n end\n%}" formats "{%\n if true\n 1\n else\n 2\n end\n%}" formats "x : (A -> )" formats "x : (A -> )" formats "foo.bar = \n1" formats "foo.bar = \n1" formats "1 > 2" formats "1 > 2" formats "\"\#{\"foo\"}\"" formats "\"\#{\"foo\"}\"" formats "require \"foo\"\n\n@x : Int32\n\nclass Bar\nend" formats "require \"foo\"\n\n@x : Int32\n\nclass Bar\nend" formats "1 ;\n 2" formats "1 ;\n 2" formats "def foo()\n1\nend" formats "def foo()\n1\nend" formats " {%\na = 1\n %}" formats " {%\na = 1\n %}" formats "foo[] =1" formats "foo[] =1" formats "def foo(a : T, b : U) forall T, U #\n #\nend" formats "def foo(a : T, b : U) forall T, U #\n #\nend" formats "def foo(x)\n case self // x\n when 2\n 3\n end\nend" formats "def foo(x)\n case self // x\n when 2\n 3\n end\nend" formats "class Foo\ndef foo\n1\nensure\n2\nend\nend" formats "class Foo\ndef foo\n1\nensure\n2\nend\nend" formats "begin\n 0[1] rescue 2 end" formats "begin\n 0[1] rescue 2 end" formats "%w(one two three)" formats "%w(one two three)" formats "->( x )\n:\nInt32 { }" formats "->( x )\n:\nInt32 { }" formats "foo { | ( a, *b , c ) | a }" formats "foo { | ( a, *b , c ) | a }" formats "struct Foo\n # bar\n # baz\n1\nend" formats "struct Foo\n # bar\n # baz\n1\nend" formats "long_variable_name = [{\n :foo => 1,\n}, {\n :bar => 2,\n}]" formats "long_variable_name = [{\n :foo => 1,\n}, {\n :bar => 2,\n}]" formats "abstract def foo\nabstract def bar" formats "abstract def foo\nabstract def bar" formats "foo 1, a: 1,\nb: 2,\nc: 3,\n&block" formats "foo 1, a: 1,\nb: 2,\nc: 3,\n&block" formats "inner &.color=(@color)\n1" formats "inner &.color=(@color)\n1" formats "1.as Int32" formats "1.as Int32" formats "foo &.responds_to?(:foo).bar" formats "foo &.responds_to?(:foo).bar" formats "require \"foo\"" formats "require \"foo\"" formats "foo.bar. as? Int32" formats "foo.bar. as? Int32" formats "1 == / /" formats "1 == / /" formats "nil?" formats "nil?" formats "foo{|x| x}" formats "foo{|x| x}" formats "%(\n1\n)\n\n{\n 1 => 2,\n 234 => 5,\n}" formats "%(\n1\n)\n\n{\n 1 => 2,\n 234 => 5,\n}" formats "$0" formats "$0" formats "# Hello\n#\n# ```cr\n# 1\n# ```\n# Bye" formats "# Hello\n#\n# ```cr\n# 1\n# ```\n# Bye" formats "{%\n unless true\n 1\n end\n%}" formats "{%\n unless true\n 1\n end\n%}" formats "x.try &.[] 123" formats "x.try &.[] 123" formats "<<-FOO\n1\nFOO\n\n{\n 1 => 2,\n 10 => 3,\n}" formats "<<-FOO\n1\nFOO\n\n{\n 1 => 2,\n 10 => 3,\n}" formats "$?.bar" formats "$?.bar" formats "->(x : Int32) { }" formats "->(x : Int32) { }" formats "foo &.responds_to?(:foo)" formats "foo &.responds_to?(:foo)" formats "if a\nelse\n2\nend" formats "if a\nelse\n2\nend" formats "foo(\"b\#{1}\" \\\n\"baz\")" formats "foo(\"b\#{1}\" \\\n\"baz\")" formats "`foo`" formats "`foo`" formats "<<-HTML\n \#{1}x\n y\n HTML" formats "<<-HTML\n \#{1}x\n y\n HTML" formats ":&**" formats ":&**" formats " <<-HTML\n \#{1} \#{2}\n HTML" formats " <<-HTML\n \#{1} \#{2}\n HTML" formats "def foo\nend\n\n\n\ndef bar\nend" formats "def foo\nend\n\n\n\ndef bar\nend" formats "@[Foo]" formats "@[Foo]" formats "def foo(\n **a\n # comment\n)\n 1\nend" formats "def foo(\n **a\n # comment\n)\n 1\nend" formats "foo do\n {{ foo <<-X\n bar\n X\n }}\nend" formats "foo do\n {{ foo <<-X\n bar\n X\n }}\nend" formats "asm(\n\"nop\"\n)" formats "asm(\n\"nop\"\n)" formats "asm(\"a\" : :: : \"volatile\")" formats "asm(\"a\" : :: : \"volatile\")" formats "foo{}" formats "foo{}" formats "@foo : Int32 # comment\n\ndef foo\nend" formats "@foo : Int32 # comment\n\ndef foo\nend" formats "foo[a, b: 2]" formats "foo[a, b: 2]" formats "@[::Foo::Bar]" formats "@[::Foo::Bar]" formats "Foo( Bar( ) )" formats "Foo( Bar( ) )" formats "[\n {\n 1 => 2,\n }, {\n 3 => 4,\n }, {\n 5 => 6,\n },\n]" formats "[\n {\n 1 => 2,\n }, {\n 3 => 4,\n }, {\n 5 => 6,\n },\n]" formats "def foo\n 1\nend\n\n# Comment\n\ndef bar\n 2\nend" formats "def foo\n 1\nend\n\n# Comment\n\ndef bar\n 2\nend" formats "foo { | a, ( _ , c ) | a + c }" formats "foo { | a, ( _ , c ) | a + c }" formats "yield (1).foo" formats "yield (1).foo" formats "foo[ 1 , 2 ]" formats "foo[ 1 , 2 ]" formats "foo.[1]" formats "foo.[1]" formats "while / /\nend" formats "while / /\nend" formats "->@foo.foo=" formats "->@foo.foo=" formats "foo x: 1" formats "foo x: 1" formats "lib Foo\n fun bar = Bar\nend" formats "lib Foo\n fun bar = Bar\nend" formats "def foo(x : (A | B)) \n end" formats "def foo(x : (A | B)) \n end" formats "def foo\n@x : Int32\nend" formats "def foo\n@x : Int32\nend" formats "foo : self?" formats "foo : self?" formats "1\n\n2" formats "1\n\n2" formats "foo({\nbar: 1,\n})" formats "foo({\nbar: 1,\n})" formats "def foo( x , & block : ->)\nend" formats "def foo( x , & block : ->)\nend" formats "(a).b { }\nc" formats "(a).b { }\nc" formats "foo : Foo*****" formats "foo : Foo*****" formats "while 1\n2\nend" formats "while 1\n2\nend" formats "unless a\nunless b\nelse\n4\nend\nend" formats "unless a\nunless b\nelse\n4\nend\nend" formats "case 1 \n when 2 \n 3 \n when 4 \n 5 \n end" formats "case 1 \n when 2 \n 3 \n when 4 \n 5 \n end" formats "->Foo.foo?" formats "->Foo.foo?" formats "{% begin %}\n \"\n foo\"\n{% end %}" formats "{% begin %}\n \"\n foo\"\n{% end %}" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "yield *1 , *2" formats "yield *1 , *2" formats "0_u64" formats "0_u64" formats "\"1\#{\"4\#{\"\#{\"2\"}\"}3\"}3\#{__DIR__}4\#{5}6\"" formats "\"1\#{\"4\#{\"\#{\"2\"}\"}3\"}3\#{__DIR__}4\#{5}6\"" formats "foo : StaticArray(Foo, 12)[34]" formats "foo : StaticArray(Foo, 12)[34]" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "a = b = 1\na, b =\n b, a" formats "a = b = 1\na, b =\n b, a" formats "def foo\n <<-FOO\n foo \#{1}\n FOO\nend" formats "def foo\n <<-FOO\n foo \#{1}\n FOO\nend" formats "->{}" formats "->{}" formats "def foo ( &@block) \n end" formats "def foo ( &@block) \n end" formats "def foo(a, **b, # comment\n &block)\nend" formats "def foo(a, **b, # comment\n &block)\nend" formats "1 # foo\n/ 1 /" formats "1 # foo\n/ 1 /" formats "yield(\n1 , \n2)" formats "yield(\n1 , \n2)" formats "def foo\n1\nensure\n2\nend" formats "def foo\n1\nensure\n2\nend" formats "-> : Array(Int32) {}" formats "-> : Array(Int32) {}" formats "(())" formats "(())" formats "{ \"foo\": 1 }" formats "{ \"foo\": 1 }" formats "foo([\n 1,\n bar do\n end,\n [\n 2,\n ],\n])" formats "foo([\n 1,\n bar do\n end,\n [\n 2,\n ],\n])" formats "module Moo ( T )\nend" formats "module Moo ( T )\nend" formats "# ```\n# macro foo\n# 1\n# end\n# ```\n" formats "# ```\n# macro foo\n# 1\n# end\n# ```\n" formats "if 1\n1\n\n# foo\nend" formats "if 1\n1\n\n# foo\nend" formats "asm(\"nop\" ::: \"eax\" )" formats "asm(\"nop\" ::: \"eax\" )" formats "String?" formats "String?" formats "[] of Foo" formats "[] of Foo" formats "\"hel\nlo\"" formats "\"hel\nlo\"" formats "1 + \\\n2\n3" formats "1 + \\\n2\n3" formats "foo.bar # comment\n .baz" formats "foo.bar # comment\n .baz" formats "module Foo\n1\n\n# foo\nend" formats "module Foo\n1\n\n# foo\nend" formats "foo.as(T).bar" formats "foo.as(T).bar" formats "alias A = (B) -> C" formats "alias A = (B) -> C" formats "next *1 ,2" formats "next *1 ,2" formats "foo a , **b" formats "foo a , **b" formats "<<-HTML\n \#{\"fo\#{\"o\"}\"}\n HTML" formats "<<-HTML\n \#{\"fo\#{\"o\"}\"}\n HTML" formats "if 1\nif 2\n3 # foo\nend\nend" formats "if 1\nif 2\n3 # foo\nend\nend" formats "foo 1,\n2" formats "foo 1,\n2" formats "__DIR__" formats "__DIR__" formats "def foo : self | Nil\n nil\nend" formats "def foo : self | Nil\n nil\nend" formats "def foo\n {{@type}}\nend" formats "def foo\n {{@type}}\nend" formats "[1, 2,\n 3, 4]\n" formats "[1, 2,\n 3, 4]\n" formats "@[Foo(\n 1,\n)]" formats "@[Foo(\n 1,\n)]" formats "foo(\n 1, # hola\n2, # chau\n )" formats "foo(\n 1, # hola\n2, # chau\n )" formats "foo(1 + \n2)" formats "foo(1 + \n2)" formats "{\n 1 => 2, 3 => 4,\n 567 => 8910,\n}" formats "{\n 1 => 2, 3 => 4,\n 567 => 8910,\n}" formats "macro foo\n {% if 1 %} 2 {% elsif 3 %} 4 {% else %} 5 {% end %}\nend" formats "macro foo\n {% if 1 %} 2 {% elsif 3 %} 4 {% else %} 5 {% end %}\nend" formats "a = 1\ncase\nwhen 2\nelse\n a /= 3\nend" formats "a = 1\ncase\nwhen 2\nelse\n a /= 3\nend" formats "x : Int32 |\nString" formats "x : Int32 |\nString" formats "def /(x)\n 1\nend" formats "def /(x)\n 1\nend" formats "def foo ( x , y ) \n end" formats "def foo ( x , y ) \n end" formats "foo.[] = 1" formats "foo.[] = 1" formats "%x(foo \#{ bar })" formats "%x(foo \#{ bar })" formats "{% if z %}\n class Foo\n end\n{% end %}" formats "{% if z %}\n class Foo\n end\n{% end %}" formats "def foo(\n a,\n b\n)\nend" formats "def foo(\n a,\n b\n)\nend" formats "macro foo\n macro bar\n \\{% begin %}\n \\\\{% puts %}\n \\{% end %}\n end\nend" formats "macro foo\n macro bar\n \\{% begin %}\n \\\\{% puts %}\n \\{% end %}\n end\nend" formats "return *1 , *2" formats "return *1 , *2" formats "%w{one( two( three)}" formats "%w{one( two( three)}" formats "foo &.bar.nil?" formats "foo &.bar.nil?" formats "x : (A | B)" formats "x : (A | B)" formats "-> :: Foo . foo" formats "-> :: Foo . foo" formats "def foo\n 1\n # Comment\n\n\nend" formats "def foo\n 1\n # Comment\n\n\nend" formats "begin\n1\nrescue Int32 \n3\nend" formats "begin\n1\nrescue Int32 \n3\nend" formats "module M\n @[MyAnn(\n 1\n\n )]\nend" formats "module M\n @[MyAnn(\n 1\n\n )]\nend" formats "1 rescue 2" formats "1 rescue 2" formats "x : A?" formats "x : A?" formats "foo(1, # foo\n &.bar)" formats "foo(1, # foo\n &.bar)" formats "class Bar\nprotected def foo(x)\na=b(c)\nend\nend" formats "class Bar\nprotected def foo(x)\na=b(c)\nend\nend" formats "begin\n1\nrescue\n3\nensure\n2\nend" formats "begin\n1\nrescue\n3\nensure\n2\nend" formats "[\n1,\n2,\n3]" formats "[\n1,\n2,\n3]" formats "a = 1 if 1 == 2 ||\n 3 == 4\n" formats "a = 1 if 1 == 2 ||\n 3 == 4\n" formats "def foo(x)\n self // x\nend" formats "def foo(x)\n self // x\nend" formats " macro foo\n end\n\n :+" formats " macro foo\n end\n\n :+" formats "def foo( x , & block : Int32 ->)\nend" formats "def foo( x , & block : Int32 ->)\nend" formats ":>>" formats ":>>" formats "\"\\a\\c\\b\\d\"" formats "\"\\a\\c\\b\\d\"" formats "while 1 &&\n2 &&\n3\n4\nend" formats "while 1 &&\n2 &&\n3\n4\nend" formats "long_variable_name = [1, 2, 3,\n 4, 5, 6]" formats "long_variable_name = [1, 2, 3,\n 4, 5, 6]" formats "\"foo \#{bar}\" \\\n \"baz\"" formats "\"foo \#{bar}\" \\\n \"baz\"" formats "foo &.bar( 1 , 2 )" formats "foo &.bar( 1 , 2 )" formats "Union(Int32, String)?" formats "Union(Int32, String)?" formats "coco.lala\nfoo\n .bar" formats "coco.lala\nfoo\n .bar" formats "foo.as Int32*" formats "foo.as Int32*" formats "foo 1 , 2" formats "foo 1 , 2" formats "1 # foo\n1234 # bar\n\n10 # bar" formats "1 # foo\n1234 # bar\n\n10 # bar" formats "while 1;\n2; end" formats "while 1;\n2; end" formats "foo (1), 2" formats "foo (1), 2" formats "foo.bar(&.baz)" formats "foo.bar(&.baz)" formats "def foo(a : T, b : U) forall T, U\n #\nend" formats "def foo(a : T, b : U) forall T, U\n #\nend" formats "def foo(a,\n *b)\nend" formats "def foo(a,\n *b)\nend" formats "foo[1, &.bar]" formats "foo[1, &.bar]" formats "a = 1\n;\nb = 2" formats "a = 1\n;\nb = 2" formats "{1 => foo <<-X\nbar\nX\n}" formats "{1 => foo <<-X\nbar\nX\n}" formats "next( 1 , 2 )" formats "next( 1 , 2 )" formats "SomeLib.UppercasedFunCall" formats "SomeLib.UppercasedFunCall" formats "1 if 2\n# foo\n3" formats "1 if 2\n# foo\n3" formats "def foo(x) # bar\n # baz\nend" formats "def foo(x) # bar\n # baz\nend" formats ":+" formats ":+" formats "asm(\"a\" : \"b\"(c)\n)" formats "asm(\"a\" : \"b\"(c)\n)" formats "call(foo <<-X\nbar\nX\n)" formats "call(foo <<-X\nbar\nX\n)" formats "return {1, 2}, {3, 4}" formats "return {1, 2}, {3, 4}" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "unless a\n2\n3\nelse\n4\n5\nend" formats "unless a\n2\n3\nelse\n4\n5\nend" formats "->( x : Int32 , y ) { x }" formats "->( x : Int32 , y ) { x }" formats "lib Foo\nend" formats "lib Foo\nend" formats "foo.bar=(2)\n1" formats "foo.bar=(2)\n1" formats "foo[]" formats "foo[]" formats "x\n# foo\n\n# bar" formats "x\n# foo\n\n# bar" formats "foo = 1\n->foo.foo!" formats "foo = 1\n->foo.foo!" formats "\n# hello\n\n1" formats "\n# hello\n\n1" formats "->\n:\nInt32\n{\n}" formats "->\n:\nInt32\n{\n}" formats "return 1" formats "return 1" formats "begin\n 1 \\\n + 2\n 3\nend" formats "begin\n 1 \\\n + 2\n 3\nend" formats "if 1\n return foo(\n 1,\n 2,\n )\nend" formats "if 1\n return foo(\n 1,\n 2,\n )\nend" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n bar\n); end" formats ":-" formats ":-" formats "a = foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "a = foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "1_234" formats "1_234" formats "lib Foo\n fun foo =\n bar(Int32) : Int32\nend" formats "lib Foo\n fun foo =\n bar(Int32) : Int32\nend" formats "a &.b[c]?" formats "a &.b[c]?" formats "asm(\"nop\" :: )" formats "asm(\"nop\" :: )" formats "[\n# foo\n] of String" formats "[\n# foo\n] of String" formats "0i64" formats "0i64" formats "case 1\nwhen 2\n#comment\nend" formats "case 1\nwhen 2\n#comment\nend" formats "1.===(2) { 3 }" formats "1.===(2) { 3 }" formats "->{\nx\n}" formats "->{\nx\n}" formats "def foo(x, **z)\nend" formats "def foo(x, **z)\nend" formats "[ * [ * [ 1 ] ], * \n[ 2] ]" formats "[ * [ * [ 1 ] ], * \n[ 2] ]" formats "if 1;\n2; end" formats "if 1;\n2; end" formats "1.!= do\nend" formats "1.!= do\nend" formats "def foo(x) : Int32 # bar\n # baz\nend" formats "def foo(x) : Int32 # bar\n # baz\nend" formats "::NamedTuple(T)" formats "::NamedTuple(T)" formats "\"hel\\nlo\"" formats "\"hel\\nlo\"" formats "def foo\n\n1\n\nend" formats "def foo\n\n1\n\nend" formats "[\n <<-EOF,\n foo\n EOF\n <<-BAR,\n bar\n BAR\n]" formats "[\n <<-EOF,\n foo\n EOF\n <<-BAR,\n bar\n BAR\n]" does not add `&` without flag `method_signature_yield` formats "def foo(a, **b)\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo\n yield\nend" formats "def foo\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo()\n yield\nend" formats "def foo()\n yield\nend" formats "def foo(x ,)\n yield\nend" formats "def foo(x ,)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(x,\n y)\n yield\nend" formats "def foo(x,\n y)\n yield\nend" formats "lib LibFoo\n {% begin %}\n fun x = y(Int32)\n {% end %}\nend" formats "lib LibFoo\n {% begin %}\n fun x = y(Int32)\n {% end %}\nend" formats "foo &.bar.as?(T)" formats "foo &.bar.as?(T)" formats "if 1\n {% if 2 %} {% end %}\nend" formats "if 1\n {% if 2 %} {% end %}\nend" formats "<<-HTML\n \#{\"foo\"}\#{1}\n HTML" formats "<<-HTML\n \#{\"foo\"}\#{1}\n HTML" formats "a=1" formats "a=1" formats "1.<=(2) { 3 }" formats "1.<=(2) { 3 }" formats "break( 1 )" formats "break( 1 )" formats "<<-HTML\n \#{1}x\n HTML" formats "<<-HTML\n \#{1}x\n HTML" formats "lib Foo\nfun foo(x : Int32, y : Float64) : Int32\nend" formats "lib Foo\nfun foo(x : Int32, y : Float64) : Int32\nend" formats "foo.bar += \n1" formats "foo.bar += \n1" formats "-> : Int32 {}" formats "-> : Int32 {}" formats "enum Foo\nA = 1\nend" formats "enum Foo\nA = 1\nend" formats "{% if true %}\n # x\n #\n{% end %}\n\n# ```\n# x\n# ```" formats "{% if true %}\n # x\n #\n{% end %}\n\n# ```\n# x\n# ```" formats "macro foo\n \\{\nend" formats "macro foo\n \\{\nend" formats "@x[ 1 ] &&= 2" formats "@x[ 1 ] &&= 2" formats "\"foo \#{ __DIR__ }\"" formats "\"foo \#{ __DIR__ }\"" formats "foo.bar. as Int32" formats "foo.bar. as Int32" formats "-> : {Int32, String} {}" formats "-> : {Int32, String} {}" formats "enum Baz\nA = 1\nFOO = 2\n\nEX = 3\nend" formats "enum Baz\nA = 1\nFOO = 2\n\nEX = 3\nend" formats "class Foo ( *T, U )\nend" formats "class Foo ( *T, U )\nend" formats "a = \"\n\"\n1 # 1\n12 # 2\n" formats "a = \"\n\"\n1 # 1\n12 # 2\n" formats "::Tuple()" formats "::Tuple()" formats "/foo \#{ bar }/" formats "/foo \#{ bar }/" formats "macro foo\n {% for x in y %}\\ 2 {% end %}\\\nend" formats "macro foo\n {% for x in y %}\\ 2 {% end %}\\\nend" formats "foo : (self)?" formats "foo : (self)?" formats "x = a do\n 1 ||\n 2\nend" formats "x = a do\n 1 ||\n 2\nend" formats "Foo( x: Int32 , y: Float64 )" formats "Foo( x: Int32 , y: Float64 )" formats "def foo(**z)\nend" formats "def foo(**z)\nend" formats "foo(\n 1,\n # 2,\n # 3,\n)" formats "foo(\n 1,\n # 2,\n # 3,\n)" formats "@x ||= 1" formats "@x ||= 1" formats "1 ||\n # foo\n 2" formats "1 ||\n # foo\n 2" formats "begin\n 1\n # Comment\n\n\nend" formats "begin\n 1\n # Comment\n\n\nend" formats "foo { | a, ( b , c ) | a + b + c }" formats "foo { | a, ( b , c ) | a + b + c }" formats "foo &.as?(T).bar" formats "foo &.as?(T).bar" formats "{ 1 => 2 ,\n\n 3 => 4 }" formats "{ 1 => 2 ,\n\n 3 => 4 }" formats "->{}" formats "->{}" formats "foo : Pointer(Foo)*" formats "foo : Pointer(Foo)*" formats "while 1 # foo\nend" formats "while 1 # foo\nend" formats "()" formats "()" formats "def foo ( @@x) \n end" formats "def foo ( @@x) \n end" formats "foo[&.bar] ||= 1" formats "foo[&.bar] ||= 1" formats "foo &.[]=(1, 2)" formats "foo &.[]=(1, 2)" formats "def foo\n@x = uninitialized Int32\nend" formats "def foo\n@x = uninitialized Int32\nend" formats "case nil\nelse nil; nil\n# comment\nend" formats "case nil\nelse nil; nil\n# comment\nend" formats "foo(->{\n 1 + 2\n})" formats "foo(->{\n 1 + 2\n})" formats "def foo(@x)\n\nrescue\nend" formats "def foo(@x)\n\nrescue\nend" formats "unless a\nunless b\n3\nelse\n4\nend\nend" formats "unless a\nunless b\n3\nelse\n4\nend\nend" formats "#######" formats "#######" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "macro foo\n {% if 1 %}\\ 2 {% else %}\\ 3 {% end %}\\\nend" formats "macro foo\n {% if 1 %}\\ 2 {% else %}\\ 3 {% end %}\\\nend" formats "case / /\nwhen / /, /x/\n / /\nend" formats "case / /\nwhen / /, /x/\n / /\nend" formats "foo 1 , &bar" formats "foo 1 , &bar" formats "a = foo(bar(\n 1,\n 2,\n))" formats "a = foo(bar(\n 1,\n 2,\n))" formats "def foo\n1\nrescue\n2\nend" formats "def foo\n1\nrescue\n2\nend" formats "foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "case 1\nwhen 8 then 1\nwhen 16 then 2\nwhen 256 then 3\nwhen 'a' then 5\nwhen \"foo\" then 6\nelse 4\nend" formats "case 1\nwhen 8 then 1\nwhen 16 then 2\nwhen 256 then 3\nwhen 'a' then 5\nwhen \"foo\" then 6\nelse 4\nend" formats "-> : {x: Int32, y: String} {}" formats "-> : {x: Int32, y: String} {}" formats "foo 1, a: 1,\nb: 2,\nc: 3" formats "foo 1, a: 1,\nb: 2,\nc: 3" formats ":\"foo bar\"" formats ":\"foo bar\"" formats "case 1\nwhen 1 then 1\nwhen 123 then 2\nwhen 1..123 then 3\nelse 4\nend" formats "case 1\nwhen 1 then 1\nwhen 123 then 2\nwhen 1..123 then 3\nelse 4\nend" formats "foo \\\nbar" formats "foo \\\nbar" formats "<<-HTML\n hello \n HTML" formats "<<-HTML\n hello \n HTML" formats "unless a\n2\nelse\n3\nend" formats "unless a\n2\nelse\n3\nend" formats "macro []=(x, y)\nend" formats "macro []=(x, y)\nend" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1), \"c\"(2) )" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1), \"c\"(2) )" formats "foo &.nil?" formats "foo &.nil?" formats "def +(x)\nend" formats "def +(x)\nend" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "a &.a.!" formats "a &.a.!" formats "next { {1, 2}, {3, 4} }, 5" formats "next { {1, 2}, {3, 4} }, 5" formats "begin\n1\nrescue ex : Int32 | Float64 \n3\nend" formats "begin\n1\nrescue ex : Int32 | Float64 \n3\nend" formats "class Foo\ndef foo (\nx ,\n y ) \n end\nend" formats "class Foo\ndef foo (\nx ,\n y ) \n end\nend" formats " ( 1; 2; 3 ) " formats " ( 1; 2; 3 ) " formats "foo(1, 2,)" formats "foo(1, 2,)" formats " [ 1 , 2 , 3 ] " formats " [ 1 , 2 , 3 ] " formats "'\\u{0123}'" formats "'\\u{0123}'" formats "module Readline\n @@completion_proc : (String -> Array(String)?) | (String -> Array(String)) | Nil\nend" formats "module Readline\n @@completion_proc : (String -> Array(String)?) | (String -> Array(String)) | Nil\nend" formats "yield 1 , 2" formats "yield 1 , 2" formats "%(hello)" formats "%(hello)" formats "[ # foo\n 1,\n]" formats "[ # foo\n 1,\n]" formats "a = \\\n # foo\n bar(1)" formats "a = \\\n # foo\n bar(1)" formats "lib Foo\nstruct Foo\nx , y : Int32\nend\nend" formats "lib Foo\nstruct Foo\nx , y : Int32\nend\nend" formats "lib Foo\nfun foo : Int32\nend" formats "lib Foo\nfun foo : Int32\nend" formats "{} of A => B\n{} of Foo => Bar" formats "{} of A => B\n{} of Foo => Bar" formats "def foo(@[MyAnn] &); end" formats "def foo(@[MyAnn] &); end" formats "Set{ # foo\n 1,\n}" formats "Set{ # foo\n 1,\n}" formats "[\n 1, 2, # foo\n 3,\n]" formats "[\n 1, 2, # foo\n 3,\n]" formats "a = [\n1,\n2]" formats "a = [\n1,\n2]" formats "def foo(\n foo,\n @[MyAnn] &block\n); end" formats "def foo(\n foo,\n @[MyAnn] &block\n); end" formats "lib Foo\n fun foo(Int32) : Int32\nend" formats "lib Foo\n fun foo(Int32) : Int32\nend" formats "foo[1, &.bar] ||= 1" formats "foo[1, &.bar] ||= 1" formats "a || b" formats "a || b" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1),\n\"c\"(2) )" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1),\n\"c\"(2) )" formats "def foo : Int32\n 1\nend" formats "def foo : Int32\n 1\nend" formats "bar do\n call(foo <<-X\n bar\n X\n )\nend" formats "bar do\n call(foo <<-X\n bar\n X\n )\nend" formats "X(typeof(begin\n e.is_a?(Y)\nend))" formats "X(typeof(begin\n e.is_a?(Y)\nend))" formats "break 1 , 2" formats "break 1 , 2" formats "foo x: 1, y: 2" formats "foo x: 1, y: 2" formats "foo(\n# x\n1,\n\n# y\nz: 2,\n\n# a\nb: 3)" formats "foo(\n# x\n1,\n\n# y\nz: 2,\n\n# a\nb: 3)" formats " {{ 1 + 2 }}" formats " {{ 1 + 2 }}" formats ":*" formats ":*" formats "->@@foo.foo" formats "->@@foo.foo" formats "if 1\n2\n3\n# foo\nend" formats "if 1\n2\n3\n# foo\nend" formats "foo.@bar" formats "foo.@bar" formats "module Foo\n# nothing\nend" formats "module Foo\n# nothing\nend" formats "foo &.[]( 1, 2 )" formats "foo &.[]( 1, 2 )" formats "foo.% bar" formats "foo.% bar" formats "NamedTuple(a: Int32,)" formats "NamedTuple(a: Int32,)" formats "@a" formats "@a" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "foo(\n <<-HERE,\n hello\n HERE\n foo: 1,\n)" formats "foo(\n <<-HERE,\n hello\n HERE\n foo: 1,\n)" formats "::StaticArray(T)" formats "::StaticArray(T)" formats "foo(1, &.bar)" formats "foo(1, &.bar)" formats "lib LibFoo\n struct Bar\n {% begin %}\n x : Int32\n {% end %}\n end\nend" formats "lib LibFoo\n struct Bar\n {% begin %}\n x : Int32\n {% end %}\n end\nend" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n @[MyAnn]\n biz\n); end" assert assert formats "__LINE__" formats "__LINE__" formats "foo &.bar.as(T)" formats "foo &.bar.as(T)" formats "macro foo # bar\n baz\nend" formats "macro foo # bar\n baz\nend" formats "(1)" formats "(1)" formats "[\n a() # b\n]" formats "[\n a() # b\n]" formats " {{\n1 + 2\n }}" formats " {{\n1 + 2\n }}" formats "<<-FOO\nfoo\nfoo\nFOO" formats "<<-FOO\nfoo\nfoo\nFOO" formats "return 1 , *2" formats "return 1 , *2" formats "1.== do\nend" formats "1.== do\nend" formats "run(\"a\", 1)" formats "run(\"a\", 1)" formats "foo[ 1 , 2 ] =3" formats "foo[ 1 , 2 ] =3" formats "a = begin\n 1\nend\n\na =\nbegin\n 1\nend\n\na = if 1\n 2\nend\n\nb = 1\nb ||= begin\n 2\nend\n\nb ||= if 1\n 2\nend\n\nb += if 1\n 2\nend\n\nb +=\nif 1\n 2\nend\n\na, b = begin\n 1\nend\n\na, b =\nbegin\n 1\nend\n\nc[x] = begin\n 2\nend\n\nc[x] =\nbegin\n 2\nend\n\nc[x] = if 1\n 2\nend\n\nc[x] ||= begin 1\n 2\nend\n\nc[x] ||= if 1\n 2\nend\n\nc[x] += if 1\n 2\nend\n\nc[x] += begin 1\n 2\nend\n\nc[x] +=\nbegin\n 1\n 2\nend\n\nfoo.bar = begin\nend\n\nfoo.bar =\nbegin\nend\n\nfoo.bar = if\n 2\nend\n\nfoo.bar += begin\n 2\nend\n\nfoo.bar += if\n 2\nend\n\n" formats "a = begin\n 1\nend\n\na =\nbegin\n 1\nend\n\na = if 1\n 2\nend\n\nb = 1\nb ||= begin\n 2\nend\n\nb ||= if 1\n 2\nend\n\nb += if 1\n 2\nend\n\nb +=\nif 1\n 2\nend\n\na, b = begin\n 1\nend\n\na, b =\nbegin\n 1\nend\n\nc[x] = begin\n 2\nend\n\nc[x] =\nbegin\n 2\nend\n\nc[x] = if 1\n 2\nend\n\nc[x] ||= begin 1\n 2\nend\n\nc[x] ||= if 1\n 2\nend\n\nc[x] += if 1\n 2\nend\n\nc[x] += begin 1\n 2\nend\n\nc[x] +=\nbegin\n 1\n 2\nend\n\nfoo.bar = begin\nend\n\nfoo.bar =\nbegin\nend\n\nfoo.bar = if\n 2\nend\n\nfoo.bar += begin\n 2\nend\n\nfoo.bar += if\n 2\nend\n\n" formats "-> :: foo" formats "-> :: foo" formats "module Foo;end" formats "module Foo;end" formats "1.===() { 3 }" formats "1.===() { 3 }" formats "def foo(x y)\nend" formats "def foo(x y)\nend" formats "def foo\nselect \n when foo \n 2 \n else \n 3 \nend\nend" formats "def foo\nselect \n when foo \n 2 \n else \n 3 \nend\nend" formats "a = 1\nb, c = 2, 3\n{% begin %}\n a |= 1\n b |= 2\n c |= 3\n{% end %}" formats "a = 1\nb, c = 2, 3\n{% begin %}\n a |= 1\n b |= 2\n c |= 3\n{% end %}" formats "<<-HTML\n foo\n \#{\"foo\"}\n HTML" formats "<<-HTML\n foo\n \#{\"foo\"}\n HTML" formats "asm(\"a\" :::: \"volatile\"\n)" formats "asm(\"a\" :::: \"volatile\"\n)" formats "asm(\"nop\" : \"a\"(0),\n\"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "asm(\"nop\" : \"a\"(0),\n\"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "foo bar:baz, qux:other" formats "foo bar:baz, qux:other" formats "1 #=> 2" formats "1 #=> 2" formats "foo (1)" formats "foo (1)" formats "1 && (\n 2 || 3\n)" formats "1 && (\n 2 || 3\n)" formats "1.as? Int32" formats "1.as? Int32" formats "foo" formats "foo" formats "macro foo\nend" formats "macro foo\nend" formats "foo(baz1 do\nend)" formats "foo(baz1 do\nend)" formats "begin\n 1 + \\\n 2\n 3\nend" formats "begin\n 1 + \\\n 2\n 3\nend" formats "def foo ( x = 1 ) \n end" formats "def foo ( x = 1 ) \n end" formats "def foo(\n foo,\n @[MyAnn]\n &block\n); end" formats "def foo(\n foo,\n @[MyAnn]\n &block\n); end" formats "yield" formats "yield" formats "foo\n.bar\n.baz" formats "foo\n.bar\n.baz" formats "String???" formats "String???" formats "foo &bar" formats "foo &bar" formats "case 1 \n when 2 \n 3 \n else \n 4 \n end" formats "case 1 \n when 2 \n 3 \n else \n 4 \n end" formats "{ # foo\n 1,\n}" formats "{ # foo\n 1,\n}" formats "macro foo(x, *, z)\nend" formats "macro foo(x, *, z)\nend" formats "def foo ( x : Int32 = 1 ) \n end" formats "def foo ( x : Int32 = 1 ) \n end" formats "p = Foo[\n 1, 2, 3,\n 4, 5, 6\n]\n" formats "p = Foo[\n 1, 2, 3,\n 4, 5, 6\n]\n" formats "def foo(a, &@b)\nend" formats "def foo(a, &@b)\nend" formats "lib Foo\ntype Foo = Bar\nend" formats "lib Foo\ntype Foo = Bar\nend" formats "foo(\n 1,\n # 2,\n 3,\n)" formats "foo(\n 1,\n # 2,\n 3,\n)" formats "def foo\n1\n2\n# foo\nend" formats "def foo\n1\n2\n# foo\nend" formats "macro foo\n {%1 + 2%}\\\nend" formats "macro foo\n {%1 + 2%}\\\nend" formats "[\n 1, # foo\n 3,\n]" formats "[\n 1, # foo\n 3,\n]" formats "<<-HTML\n \#{1}x\n y\n z\n HTML" formats "<<-HTML\n \#{1}x\n y\n z\n HTML" formats "class Foo ( T )\nend" formats "class Foo ( T )\nend" formats "def foo(**a,)\n 1\nend" formats "def foo(**a,)\n 1\nend" formats "case 1\nwhen \"foo\" ; 3\nwhen \"lalalala\"; 4\nelse 5\nend" formats "case 1\nwhen \"foo\" ; 3\nwhen \"lalalala\"; 4\nelse 5\nend" formats "case nil\nelse nil; nil # comment\nend" formats "case nil\nelse nil; nil # comment\nend" formats "if 1\n2 # foo\nend" formats "if 1\n2 # foo\nend" formats "include Foo" formats "include Foo" formats "[] of (((Array(T))))" formats "[] of (((Array(T))))" formats "module Foo ( U, *T ); 1; end" formats "module Foo ( U, *T ); 1; end" formats " <<-EOF\n 1\n 2\n EOF" formats " <<-EOF\n 1\n 2\n EOF" formats "macro foo\n{% verbatim do %}1 + 2{% end %}\nend" formats "macro foo\n{% verbatim do %}1 + 2{% end %}\nend" formats "1.[]= do\nend" formats "1.[]= do\nend" formats "begin\n1\n2\n3\nend" formats "begin\n1\n2\n3\nend" formats "x : A | B" formats "x : A | B" formats "foo.foo1(\n bar\n .bar1\n .bar2)" formats "foo.foo1(\n bar\n .bar1\n .bar2)" formats "1+2*3" formats "1+2*3" formats "->foo=" formats "->foo=" formats "10 / a" formats "10 / a" formats "def foo(\n **a # comment\n)\n 1\nend" formats "def foo(\n **a # comment\n)\n 1\nend" formats "case 1\nwhen 2\n 3\n # foo\nelse\n 4\n # bar\nend" formats "case 1\nwhen 2\n 3\n # foo\nelse\n 4\n # bar\nend" formats "while 1\n# nothing\nend" formats "while 1\n# nothing\nend" formats "if 1\n foo(\n 1,\n 2 # lala\n )\nend\n" formats "if 1\n foo(\n 1,\n 2 # lala\n )\nend\n" formats "asm(\"a\" ::: \"f\"\n)" formats "asm(\"a\" ::: \"f\"\n)" formats "alias Foo= Bar" formats "alias Foo= Bar" formats "foo[x: 1, &.bar]?" formats "foo[x: 1, &.bar]?" formats "foo.as ( Int32* )" formats "foo.as ( Int32* )" formats " <<-HTML\n \#{1}\n HTML" formats " <<-HTML\n \#{1}\n HTML" formats "1\n.." formats "1\n.." formats "{ {foo: 2} }" formats "{ {foo: 2} }" formats "@[Foo]\ndef foo\nend" formats "@[Foo]\ndef foo\nend" formats "a.b &.[c]\n1" formats "a.b &.[c]\n1" formats "FOO = 2\nA = 1" formats "FOO = 2\nA = 1" formats "{x => self // 1}" formats "{x => self // 1}" formats "asm(\"a\" : \"b\"(c) : \"d\"(e) :: \"volatile\")" formats "asm(\"a\" : \"b\"(c) : \"d\"(e) :: \"volatile\")" formats "\"hello\"" formats "\"hello\"" formats "def foo(\n **a\n)\n 1\nend" formats "def foo(\n **a\n)\n 1\nend" formats "1.>=() { 3 }" formats "1.>=() { 3 }" formats "foo &.[a] = 1" formats "foo &.[a] = 1" formats "asm(\n # the assembly template string, following the\n # syntax for LLVM's integrated assembler\n \"nop\" : # output operands\n\"=r\"(foo), \"=r\"(bar) : # input operands\n\"r\"(1), \"r\"(baz) : # names of clobbered registers\n\"eax\", \"memory\" : # optional flags, corresponding to the LLVM IR\n # sideeffect / alignstack / inteldialect / unwind attributes\n\"volatile\", \"alignstack\", \"intel\", \"unwind\"\n)" formats "asm(\n # the assembly template string, following the\n # syntax for LLVM's integrated assembler\n \"nop\" : # output operands\n\"=r\"(foo), \"=r\"(bar) : # input operands\n\"r\"(1), \"r\"(baz) : # names of clobbered registers\n\"eax\", \"memory\" : # optional flags, corresponding to the LLVM IR\n # sideeffect / alignstack / inteldialect / unwind attributes\n\"volatile\", \"alignstack\", \"intel\", \"unwind\"\n)" formats ":^" formats ":^" formats "alias A = (B(C, (C | D)) | E)" formats "alias A = (B(C, (C | D)) | E)" formats "->Foo.foo" formats "->Foo.foo" formats "def foo\nend;def bar\nend" formats "def foo\nend;def bar\nend" formats "foo do\n {1 => foo <<-X\n bar\n X\n }\nend" formats "foo do\n {1 => foo <<-X\n bar\n X\n }\nend" formats "<<-FOO\nbarfoo\nFOO" formats "<<-FOO\nbarfoo\nFOO" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\n # comment\nend" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\n # comment\nend" formats "1 && # foo\n 2 &&\n 3" formats "1 && # foo\n 2 &&\n 3" formats "def foo : (A | B(C))\n nil\nend" formats "def foo : (A | B(C))\n nil\nend" formats "# Here is the doc of a method, and contains an example:\n#\n# ```\n# result = foo\n#\n# puts result\n# ```\ndef foo\n # ...\nend\n" formats "# Here is the doc of a method, and contains an example:\n#\n# ```\n# result = foo\n#\n# puts result\n# ```\ndef foo\n # ...\nend\n" formats "macro foo\n 1 + 2\nend" formats "macro foo\n 1 + 2\nend" formats "foo a , b , x: 1" formats "foo a , b , x: 1" formats "macro foo\n def bar \n end \n end" formats "macro foo\n def bar \n end \n end" formats "a = if 1\n2\n3\nend" formats "a = if 1\n2\n3\nend" formats "macro foo\n {% 1 + 2 %}\nend" formats "macro foo\n {% 1 + 2 %}\nend" formats "def foo(**z : Foo)\nend" formats "def foo(**z : Foo)\nend" formats "\" \" * 2" formats "\" \" * 2" formats "foo(<<-X,\na\nX\n 1)" formats "foo(<<-X,\na\nX\n 1)" formats "def foo(x : X) forall X , Y; end" formats "def foo(x : X) forall X , Y; end" formats "def foo\n 1 #\nrescue\nend" formats "def foo\n 1 #\nrescue\nend" formats "a = 1\ndef bar\nend" formats "a = 1\ndef bar\nend" formats "{\n a: 1,\n foo: bar,\n}" formats "{\n a: 1,\n foo: bar,\n}" formats "def foo(x : (self)?)\nend" formats "def foo(x : (self)?)\nend" formats "x : Int32" formats "x : Int32" formats "[c.x]\n .foo" formats "[c.x]\n .foo" formats "lib Foo\nstruct Foo\nx , y , z : Int32\nend\nend" formats "lib Foo\nstruct Foo\nx , y , z : Int32\nend\nend" formats "def run\n\nrescue\n 2\n 3\nend" formats "def run\n\nrescue\n 2\n 3\nend" formats "1 &&\n2 &&\n3" formats "1 &&\n2 &&\n3" formats "# foo\na = 1 # bar" formats "# foo\na = 1 # bar" formats "begin\n1\nrescue ex\n3\nelse\n4\nend" formats "begin\n1\nrescue ex\n3\nelse\n4\nend" formats "getter foo # comment\n\ndef foo\nend" formats "getter foo # comment\n\ndef foo\nend" formats "alias Foo::Bar=Baz" formats "alias Foo::Bar=Baz" formats "-> : Int32[1] {}" formats "-> : Int32[1] {}" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" )" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" )" formats "break *1 ,2" formats "break *1 ,2" formats "foo.bar += 2" formats "foo.bar += 2" formats "enum Foo : Int32\nA = 1\nend" formats "enum Foo : Int32\nA = 1\nend" formats "1 \\\n+ 2" formats "1 \\\n+ 2" formats "macro foo\n {% for x in y %} 2 {% end %}\nend" formats "macro foo\n {% for x in y %} 2 {% end %}\nend" formats "next 1 , 2" formats "next 1 , 2" formats "->{}" formats "->{}" formats "x: Int32" formats "x: Int32" formats "-> { }" formats "-> { }" formats "-> :: foo?" formats "-> :: foo?" formats "foo (1).bar" formats "foo (1).bar" formats "select \n when foo then 2 \n end" formats "select \n when foo then 2 \n end" formats "is_a? Foo" formats "is_a? Foo" formats "foo(\"bar\" \\\n\"baz\")" formats "foo(\"bar\" \\\n\"baz\")" formats "1 +\n # foo\n 2" formats "1 +\n # foo\n 2" formats "->@foo.foo!" formats "->@foo.foo!" formats "asm(\n\"nop\" : \"a\"(0), \"b\"(1) )" formats "asm(\n\"nop\" : \"a\"(0), \"b\"(1) )" formats "あ.い = 1" formats "あ.い = 1" formats "%w(\n one two\n three four\n)" formats "%w(\n one two\n three four\n)" formats "foo\n \nbar" formats "foo\n \nbar" formats "Union(Foo::Bar?, Baz?, Qux(T, U?))" formats "Union(Foo::Bar?, Baz?, Qux(T, U?))" formats "\n# hello\n1" formats "\n# hello\n1" formats "foo \\\n 1,\n 2" formats "foo \\\n 1,\n 2" formats "foo . is_a? Bar" formats "foo . is_a? Bar" formats "unless a\n2\nelse\nend" formats "unless a\n2\nelse\nend" formats "foo &.as(T).bar" formats "foo &.as(T).bar" formats "x : Int32 = 1" formats "x : Int32 = 1" formats "def foo(x, *, y, **z)\nend" formats "def foo(x, *, y, **z)\nend" formats "<<-FOO\nFOO" formats "<<-FOO\nFOO" formats " case 1\n when 2\n 3\n else #:newline, :eof\n 1 if 2\n return 3\n end\n" formats " case 1\n when 2\n 3\n else #:newline, :eof\n 1 if 2\n return 3\n end\n" formats "...\n2" formats "...\n2" formats "select \n when foo \n 2 \n when bar \n 3 \n end" formats "select \n when foo \n 2 \n when bar \n 3 \n end" formats "class Actor\n macro inherited\n\nend\nend\n" formats "class Actor\n macro inherited\n\nend\nend\n" formats "foo &.[]" formats "foo &.[]" formats "->() do x end" formats "->() do x end" formats "macro foo\n {% if true %}if true{% end %}\n {% if true %}end{% end %}\nend" formats "macro foo\n {% if true %}if true{% end %}\n {% if true %}end{% end %}\nend" formats "if 1 &&\n (2 || 3)\n 1\nelse\n 2\nend" formats "if 1 &&\n (2 || 3)\n 1\nelse\n 2\nend" formats "def foo( x , & block : Int32->Float64)\nend" formats "def foo( x , & block : Int32->Float64)\nend" formats "foo do\n bar do\n foo <<-X\n bar\n X\n end\nend" formats "foo do\n bar do\n foo <<-X\n bar\n X\n end\nend" formats "x 1, \\\n 2" formats "x 1, \\\n 2" formats "1\n..2" formats "1\n..2" formats "{\n 1 => 2,\n 10 => 30,\n 30 => 40,\n \"foobar\" => 50,\n \"coco\" => 60,\n}" formats "{\n 1 => 2,\n 10 => 30,\n 30 => 40,\n \"foobar\" => 50,\n \"coco\" => 60,\n}" formats "foo.[1, 2] = 3" formats "foo.[1, 2] = 3" formats "b &.[c]?.d" formats "b &.[c]?.d" formats "x : {\"foo bar\": Int32}" formats "x : {\"foo bar\": Int32}" formats " Array( {x: Int32, y: String } )" formats " Array( {x: Int32, y: String } )" formats "class X; annotation FooAnnotation ; end ; end" formats "class X; annotation FooAnnotation ; end ; end" formats "foo\n .bar(\n 1\n )" formats "foo\n .bar(\n 1\n )" formats "case foo\nwhen 1\n # A\nelse\n# B\nend\n" formats "case foo\nwhen 1\n # A\nelse\n# B\nend\n" formats "abstract def foo \n 1" formats "abstract def foo \n 1" formats "def foo(\n &block\n)\nend" formats "def foo(\n &block\n)\nend" formats "foo(a: //, b: //)" formats "foo(a: //, b: //)" formats "foo((1..3))" formats "foo((1..3))" formats "foo : ( A | B )" formats "foo : ( A | B )" formats "foo do\n {% foo <<-X\n bar\n X\n %}\nend" formats "foo do\n {% foo <<-X\n bar\n X\n %}\nend" formats "lib Foo\nfun foo () : Int32\nend" formats "lib Foo\nfun foo () : Int32\nend" formats "macro foo\n {{ 1 + 2 }}\nend" formats "macro foo\n {{ 1 + 2 }}\nend" formats "1\n..\n2" formats "1\n..\n2" formats "foo(\n 1, 2,\n&block)" formats "foo(\n 1, 2,\n&block)" formats "module Foo # foo\nend" formats "module Foo # foo\nend" formats "if / /\nend" formats "if / /\nend" formats "lib Foo\n fun Foo = Bar\nend" formats "lib Foo\n fun Foo = Bar\nend" formats "{% if true %}\n # x\n # y\n{% end %}" formats "{% if true %}\n # x\n # y\n{% end %}" formats "macro foo(\n a,\n **b,\n)\nend" formats "macro foo(\n a,\n **b,\n)\nend" formats "{ 1 => 2 ,\n 3 => 4 }" formats "{ 1 => 2 ,\n 3 => 4 }" formats "case 1 \n in Int32 \n 3 \n end" formats "case 1 \n in Int32 \n 3 \n end" formats "alias X = ((Y, Z) ->)" formats "alias X = ((Y, Z) ->)" formats "foo &.is_a?(T).bar" formats "foo &.is_a?(T).bar" formats "-> { 1 }" formats "-> { 1 }" formats "def foo(x) forall T # bar\n # baz\nend" formats "def foo(x) forall T # bar\n # baz\nend" formats "1 # foo" formats "1 # foo" formats "1\n.as?(Int32)" formats "1\n.as?(Int32)" formats "a = case 1\nwhen 2\n3\nend" formats "a = case 1\nwhen 2\n3\nend" formats "\"foo\" \\\n \"bar\"" formats "\"foo\" \\\n \"bar\"" formats "a = while 1\n2\nend" formats "a = while 1\n2\nend" formats "lib Foo\n fun foo = \"bar\"(Int32) : Int32\nend" formats "lib Foo\n fun foo = \"bar\"(Int32) : Int32\nend" formats "{ } of A => B" formats "{ } of A => B" formats "foo . bar( x , y )" formats "foo . bar( x , y )" formats "case 1\nend" formats "case 1\nend" formats "def func # comment\n (1 + 2) / 3\nend" formats "def func # comment\n (1 + 2) / 3\nend" formats "foo.[ 1 , 2 ]" formats "foo.[ 1 , 2 ]" formats "foo(\n 1,\n) do\n 2\nend" formats "foo(\n 1,\n) do\n 2\nend" formats "a-1" formats "a-1" formats "break( *1 , *2 )" formats "break( *1 , *2 )" formats "\"\#{ # foo\n foo = 1\n}\"" formats "\"\#{ # foo\n foo = 1\n}\"" formats "def foo( x , & block : Int32 )\nend" formats "def foo( x , & block : Int32 )\nend" formats "unless a\n2; 3\nelse\n3\nend" formats "unless a\n2; 3\nelse\n3\nend" formats "foo.\nbar" formats "foo.\nbar" formats "p = Foo[1, 2, 3,\n 4, 5, 6,\n ]" formats "p = Foo[1, 2, 3,\n 4, 5, 6,\n ]" formats "case 1 \n when 2 ,\n 3 \n 4 \n end" formats "case 1 \n when 2 ,\n 3 \n 4 \n end" formats "macro bar\n 1\nend\n\ncase 1\nwhen 2 then 3\nwhen 45 then 6\nend" formats "macro bar\n 1\nend\n\ncase 1\nwhen 2 then 3\nwhen 45 then 6\nend" formats "enum Foo; A = 1; end" formats "enum Foo; A = 1; end" formats "[1, 2, 3]" formats "[1, 2, 3]" formats "case\nelse\n 1\nend" formats "case\nelse\n 1\nend" formats "def foo( & \n )\nend" formats "def foo( & \n )\nend" formats "return *1" formats "return *1" formats ":/" formats ":/" formats "if 1\nfoo do | x , y | \n x \n end\nend" formats "if 1\nfoo do | x , y | \n x \n end\nend" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "1\n2\n# foo" formats "1\n2\n# foo" formats "a = 1;;; b = 2" formats "a = 1;;; b = 2" formats "alias A = ( A | B )" formats "alias A = ( A | B )" formats "foo = 1\n->foo.[](Int32)" formats "foo = 1\n->foo.[](Int32)" formats "foo.[ 1 , 2 ] =3" formats "foo.[ 1 , 2 ] =3" formats "Set { 1 , 2 }" formats "Set { 1 , 2 }" formats " {% for x in y %} 2 {% end %}" formats " {% for x in y %} 2 {% end %}" formats "# Hello\n#\n# ```crystal\n# 1\n# ```\n# Bye" formats "# Hello\n#\n# ```crystal\n# 1\n# ```\n# Bye" formats "NamedTuple(\n a: Int32,\n)" formats "NamedTuple(\n a: Int32,\n)" formats "foo &.bar" formats "foo &.bar" formats "1 + # foo\n2" formats "1 + # foo\n2" formats "->{ x }" formats "->{ x }" formats "def foo( x , & : Int32 )\nend" formats "def foo( x , & : Int32 )\nend" formats "10 ** a" formats "10 ** a" formats "# foo\ndef foo\nend\n# bar\ndef bar\nend" formats "# foo\ndef foo\nend\n# bar\ndef bar\nend" formats "FOO = 2 + 3\nA = 1 - 10" formats "FOO = 2 + 3\nA = 1 - 10" formats "foo.as? Int32*" formats "foo.as? Int32*" formats "->(x : Int32) {}" formats "->(x : Int32) {}" formats "class Foo\n macro foo\n 1 + 2 \n end\n end" formats "class Foo\n macro foo\n 1 + 2 \n end\n end" formats "args.any? &.name.baz" formats "args.any? &.name.baz" formats "1.==() { 3 }" formats "1.==() { 3 }" formats "1 + \\\n2" formats "1 + \\\n2" formats "1.!= { 3 }" formats "1.!= { 3 }" formats " 1" formats " 1" formats "<<-HEREDOC\n \#{foo}\n H\#{bar}\n HEREDOC" formats "<<-HEREDOC\n \#{foo}\n H\#{bar}\n HEREDOC" formats "{ 1 => 2 , 3 => 4 }" formats "{ 1 => 2 , 3 => 4 }" formats "macro foo\n {{ 1 + 2 }}\\\nend" formats "macro foo\n {{ 1 + 2 }}\\\nend" formats "if 1\nelse\n2 # foo\nend" formats "if 1\nelse\n2 # foo\nend" formats "unless a\n2\n3\nend" formats "unless a\n2\n3\nend" formats "def foo\n case x\n # z\n when 1\n end\nend" formats "def foo\n case x\n # z\n when 1\n end\nend" formats "Foo::Bar?" formats "Foo::Bar?" formats "foo \\\n foo: 1,\n bar: 2" formats "foo \\\n foo: 1,\n bar: 2" formats "{\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "{\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "def foo(x = __FILE__ )\nend" formats "def foo(x = __FILE__ )\nend" formats "10**a" formats "10**a" formats "join io, &.inspect" formats "join io, &.inspect" formats "def foo \n end" formats "def foo \n end" formats "while true\n1\n\n# foo\nend" formats "while true\n1\n\n# foo\nend" formats "fun foo(\n x : Int32,\n ...\n) : Int32\n 1\nend" formats "fun foo(\n x : Int32,\n ...\n) : Int32\n 1\nend" formats "{\n1 => 2 ,\n 3 => 4 }" formats "{\n1 => 2 ,\n 3 => 4 }" formats "begin 0[1] rescue 2 end" formats "begin 0[1] rescue 2 end" formats "enum Foo\n A; B; C\nend\n" formats "enum Foo\n A; B; C\nend\n" formats "Foo( x: Int32 )" formats "Foo( x: Int32 )" formats "enum Foo;end" formats "enum Foo;end" formats "foo &.nil?()" formats "foo &.nil?()" formats "a = foo(bar([\n 1,\n]))" formats "a = foo(bar([\n 1,\n]))" formats "def foo( x , & block )\nend" formats "def foo( x , & block )\nend" formats "def foo(\n @[MyAnn] bar\n); end" formats "def foo(\n @[MyAnn] bar\n); end" formats "-> : Int32 { }" formats "-> : Int32 { }" formats "Foo" formats "Foo" formats "as Foo" formats "as Foo" formats "&+ 1" formats "&+ 1" formats "$~ = 1" formats "$~ = 1" formats "@[Foo()]" formats "@[Foo()]" formats "a &.b.c.as(C)" formats "a &.b.c.as(C)" formats "1 +\n # foo\n 2" formats "1 +\n # foo\n 2" formats "a &.b.c.as C" formats "a &.b.c.as C" formats "if 1\n2\nend\nif 3\nend" formats "if 1\n2\nend\nif 3\nend" formats "1.>= { 3 }" formats "1.>= { 3 }" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" : \"volatile\" , \"alignstack\" )" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" : \"volatile\" , \"alignstack\" )" formats "foo : (String -> Array(String)?) | (String -> Array(String)) | Nil" formats "foo : (String -> Array(String)?) | (String -> Array(String)) | Nil" formats "a = # foo\n bar(1)" formats "a = # foo\n bar(1)" formats "\n# hello\n\n\n1" formats "\n# hello\n\n\n1" formats "enum Foo\n A = 10\n FOO = 123\n BARBAZ = 1234\nend\n" formats "enum Foo\n A = 10\n FOO = 123\n BARBAZ = 1234\nend\n" formats "a = \nif 1\n2\nend" formats "a = \nif 1\n2\nend" formats "lib Bar\n enum Foo\n A = 1\n end\nend" formats "lib Bar\n enum Foo\n A = 1\n end\nend" formats "-> : Int32 {}" formats "-> : Int32 {}" formats "break *1 , *2" formats "break *1 , *2" formats "def foo ( @x, @y) \n end" formats "def foo ( @x, @y) \n end" formats "{% verbatim do %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "{% verbatim do %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "-> :: foo=" formats "-> :: foo=" formats "10//a" formats "10//a" formats "\"\" + <<-END\n bar\n END" formats "\"\" + <<-END\n bar\n END" formats "foo a: 1\nb" formats "foo a: 1\nb" formats "def foo(@[MyAnn] v); end" formats "def foo(@[MyAnn] v); end" formats "def foo(a : T) forall T\n #\n\n\nend" formats "def foo(a : T) forall T\n #\n\n\nend" formats "def foo ( ) \n1\nend" formats "def foo ( ) \n1\nend" formats "def a\n b(\n 1, # x\n # y\n 2\n )\nend" formats "def a\n b(\n 1, # x\n # y\n 2\n )\nend" formats "foo . bar = 1" formats "foo . bar = 1" formats "lib Foo\n $foo = hello : Int32 \nend" formats "lib Foo\n $foo = hello : Int32 \nend" formats "macro foo()\nend" formats "macro foo()\nend" formats "foo.%(bar)" formats "foo.%(bar)" formats "1.== { 3 }" formats "1.== { 3 }" formats "if 1\n foo(\n bar\n # comment\n )\nend" formats "if 1\n foo(\n bar\n # comment\n )\nend" formats "$0.bar" formats "$0.bar" formats "{%\n unless true\n 1\n else\n 2\n end\n%}" formats "{%\n unless true\n 1\n else\n 2\n end\n%}" formats "foo . is_a? ( Bar )" formats "foo . is_a? ( Bar )" formats "as? Foo" formats "as? Foo" formats "{\n foo: 1,\n b: 2,\n barbaz: 3,\n}" formats "{\n foo: 1,\n b: 2,\n barbaz: 3,\n}" formats "A = 1\nFOO = 2\n\nEX = 3" formats "A = 1\nFOO = 2\n\nEX = 3" formats "foo &.>=(2)" formats "foo &.>=(2)" formats "enum E\n A # hello\n B # hello; C # hello\nend" formats "enum E\n A # hello\n B # hello; C # hello\nend" formats "foo = [1, [2,\n 3],\n 4]" formats "foo = [1, [2,\n 3],\n 4]" formats "[] of (Array(T))" formats "[] of (Array(T))" formats "return" formats "return" formats "asm(\"nop\" :::: \"volatile\" )" formats "asm(\"nop\" :::: \"volatile\" )" formats "\"foo\#{\"bar\"} Baz \#{\"qux\"} \"" formats "\"foo\#{\"bar\"} Baz \#{\"qux\"} \"" formats "Tuple()" formats "Tuple()" formats "foo { | a, ( b , (c, d) ) | a + b + c }" formats "foo { | a, ( b , (c, d) ) | a + b + c }" formats "x.is_a? T\n3\n" formats "x.is_a? T\n3\n" formats "1 && 2" formats "1 && 2" formats "-> :: Foo . foo?" formats "-> :: Foo . foo?" formats "b &.[c].d" formats "b &.[c].d" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] @[MyAnn] baz,\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] @[MyAnn] baz,\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "foo(\n # foo\n1,\n\n # bar\n2, \n)" formats "foo(\n # foo\n1,\n\n # bar\n2, \n)" formats "foo { | a, ( b , c, ), | a + b + c }" formats "foo { | a, ( b , c, ), | a + b + c }" formats "next *1 , *2" formats "next *1 , *2" formats " <<-EOF\n 1\n EOF" formats " <<-EOF\n 1\n EOF" formats "begin\n array[\n 0 # Zero\n ]\nend" formats "begin\n array[\n 0 # Zero\n ]\nend" formats "{/ / => / /, / / => / /}" formats "{/ / => / /, / / => / /}" formats "def foo(x @y)\nend" formats "def foo(x @y)\nend" formats "Foo:: Bar" formats "Foo:: Bar" formats "foo(baz(x, y) do\n 1 + 2\nend)" formats "foo(baz(x, y) do\n 1 + 2\nend)" formats "+ a + d" formats "+ a + d" formats "class Foo\n NamedTuple(\n a: Int32,\n )\nend" formats "class Foo\n NamedTuple(\n a: Int32,\n )\nend" formats "@[Foo(\n foo: 1,\n)]\ndef foo\nend" formats "@[Foo(\n foo: 1,\n)]\ndef foo\nend" formats "case 1\nwhen 2\n\n#comment\nend" formats "case 1\nwhen 2\n\n#comment\nend" formats "foo : (String -> String?) | (String)" formats "foo : (String -> String?) | (String)" formats "def a\n [\n 1, # x\n # y\n ]\nend" formats "def a\n [\n 1, # x\n # y\n ]\nend" formats "def foo\n 1\n #\n\n\nrescue\nend" formats "def foo\n 1\n #\n\n\nrescue\nend" formats "[\n1, # a\n2, # b\n 3 # c\n]" formats "[\n1, # a\n2, # b\n 3 # c\n]" formats "def self . foo\nend" formats "def self . foo\nend" formats "{{ foo <<-X\nbar\nX\n}}" formats "{{ foo <<-X\nbar\nX\n}}" formats "next( *1 , *2 )" formats "next( *1 , *2 )" formats "def foo\n ((((((((((((((((0_u64\n ) | ptr[0]) << 8\n ) | ptr[1]) << 8\n ) | ptr[2]) << 8\n ) | ptr[3]) << 8\n ) | ptr[4]) << 8\n ) | ptr[5]) << 8\n ) | ptr[6]) << 8\n ) | ptr[7])\nend" formats "def foo\n ((((((((((((((((0_u64\n ) | ptr[0]) << 8\n ) | ptr[1]) << 8\n ) | ptr[2]) << 8\n ) | ptr[3]) << 8\n ) | ptr[4]) << 8\n ) | ptr[5]) << 8\n ) | ptr[6]) << 8\n ) | ptr[7])\nend" formats "a , b = 1 , 2" formats "a , b = 1 , 2" formats "1.[]= { 3 }" formats "1.[]= { 3 }" formats "def execute\n begin\n 1\n ensure\n 2\n end\n 3\nend" formats "def execute\n begin\n 1\n ensure\n 2\n end\n 3\nend" formats "foo.bar.baz\n.qux" formats "foo.bar.baz\n.qux" formats "foo &.as(T)" formats "foo &.as(T)" formats "@x[ 1 ] ||= 2" formats "@x[ 1 ] ||= 2" formats "foo(a: //)" formats "foo(a: //)" formats "foo(1, 2,\n)" formats "foo(1, 2,\n)" formats "1 if 2\n# foo" formats "1 if 2\n# foo" formats "case 1\nwhen 2 # a\n # b\nend" formats "case 1\nwhen 2 # a\n # b\nend" formats "begin\n begin\n a\n # b\n end\nend" formats "begin\n begin\n a\n # b\n end\nend" formats "foo.bar\n .baz(\n 1\n )" formats "foo.bar\n .baz(\n 1\n )" formats " {% if 1 %} 2 {% end %}" formats " {% if 1 %} 2 {% end %}" formats "1 + \\\n2 + \\\n3" formats "1 + \\\n2 + \\\n3" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n\n @[MyAnn]\n\n biz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n\n @[MyAnn]\n\n biz\n); end" formats "foo = 1\n->foo.foo" formats "foo = 1\n->foo.foo" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\\v\\f\\e\"" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\\v\\f\\e\"" formats "~ 1" formats "~ 1" formats "1#foo" formats "1#foo" formats "foo(bar(\n 1,\n 2,\n))" formats "foo(bar(\n 1,\n 2,\n))" formats "macro foo\n %foo{x,y}\nend" formats "macro foo\n %foo{x,y}\nend" formats "alias Foo::Bar =Baz" formats "alias Foo::Bar =Baz" formats "$1.bar" formats "$1.bar" formats " {% if 1 %} {% if 2 %} 2 {% end %} {% end %}" formats " {% if 1 %} {% if 2 %} 2 {% end %} {% end %}" formats "[1,\n2,\n3]" formats "[1,\n2,\n3]" formats "case 1\nwhen 1 then\n2\nwhen 3\n4\nend" formats "case 1\nwhen 1 then\n2\nwhen 3\n4\nend" formats "macro flags\n {% if 1 %}\\\n 1 {% else %}\\\n {% end %}\\\nend" formats "macro flags\n {% if 1 %}\\\n 1 {% else %}\\\n {% end %}\\\nend" formats "{ {% begin %}1{% end %}, nil }" formats "{ {% begin %}1{% end %}, nil }" formats "1 ... 2" formats "1 ... 2" formats "(1 .. )" formats "(1 .. )" formats "foo()" formats "foo()" formats "case 1\nwhen \"foo\" then 3\nwhen \"lalalala\" then 4\nelse 5\nend" formats "case 1\nwhen \"foo\" then 3\nwhen \"lalalala\" then 4\nelse 5\nend" formats "def foo\nend\ndef bar\nend" formats "def foo\nend\ndef bar\nend" formats "a.!" formats "a.!" formats "lib Foo\nfun foo\nend" formats "lib Foo\nfun foo\nend" formats "" formats "" formats "def foo : Int32 \n end" formats "def foo : Int32 \n end" formats "page= <<-HTML\n \#{1}foo\nHTML" formats "page= <<-HTML\n \#{1}foo\nHTML" formats "[1,\n2,\n3\n]" formats "[1,\n2,\n3\n]" formats "<<-FOO\nfoobar\nFOO" formats "<<-FOO\nfoobar\nFOO" formats "class Foo # foo\nend" formats "class Foo # foo\nend" formats "def foo ( @@select) \n end" formats "def foo ( @@select) \n end" formats "->@@foo.foo!" formats "->@@foo.foo!" formats "foo.responds_to? :bar\n1" formats "foo.responds_to? :bar\n1" formats "class Foo\n@x : Int32\nend" formats "class Foo\n@x : Int32\nend" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar\n); end" formats "alias Foo=Bar" formats "alias Foo=Bar" formats "lib Bar\n enum Foo\n end\nend" formats "lib Bar\n enum Foo\n end\nend" formats "foo{|x|\n x}" formats "foo{|x|\n x}" formats "a&-1" formats "a&-1" formats "alias Foo::Bar= Baz" formats "alias Foo::Bar= Baz" formats "lib Foo\nfun foo(x : Int32,\ny : Float64) : Int32\nend" formats "lib Foo\nfun foo(x : Int32,\ny : Float64) : Int32\nend" formats "begin\n call\n # comment\nrescue\n call\n # comment\nelse\n call\n # comment\nensure\n call\n # comment\nend" formats "begin\n call\n # comment\nrescue\n call\n # comment\nelse\n call\n # comment\nensure\n call\n # comment\nend" formats " {%\na = 1 %}" formats " {%\na = 1 %}" formats "1.=== { 3 }" formats "1.=== { 3 }" formats "lib Foo\n fun foo =\n bar(Int32,\n Int32) : Int32\nend" formats "lib Foo\n fun foo =\n bar(Int32,\n Int32) : Int32\nend" formats "yield 1" formats "yield 1" formats "def foo ( x ) \n end" formats "def foo ( x ) \n end" formats "def foo\n {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}\nend" formats "def foo\n {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}\nend" formats "[foo <<-X\nbar\nX\n]" formats "[foo <<-X\nbar\nX\n]" formats "{% for a in %w() %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "{% for a in %w() %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "case 1\nelse # foo\n # bar\nend" formats "case 1\nelse # foo\n # bar\nend" formats " _ , *_ ,\na.foo ,a.bar = 1 , 2,3" formats " _ , *_ ,\na.foo ,a.bar = 1 , 2,3" formats "break { 1 , 2 }" formats "break { 1 , 2 }" formats "lib Foo\n $foo : Int32 \nend" formats "lib Foo\n $foo : Int32 \nend" formats "asm(\"nop\" : \"a\"(0) )" formats "asm(\"nop\" : \"a\"(0) )" formats "x = <<-FOO\n hello\n FOO\n\ndef bar\nend" formats "x = <<-FOO\n hello\n FOO\n\ndef bar\nend" formats "def foo(a,\n &block)\nend" formats "def foo(a,\n &block)\nend" formats "foo\n .bar\n .baz(\n 1\n )" formats "foo\n .bar\n .baz(\n 1\n )" formats "alias A = ((B(C | D) | E) | F)" formats "alias A = ((B(C | D) | E) | F)" formats "a = 1 + # foo\n2" formats "a = 1 + # foo\n2" formats " [ 1, \n 2 , \n 3 ] " formats " [ 1, \n 2 , \n 3 ] " formats "class Foo\n macro foo\n 1\n end\nend" formats "class Foo\n macro foo\n 1\n end\nend" formats "$1" formats "$1" formats "bla.select(&.all?{ |x| x } )" formats "bla.select(&.all?{ |x| x } )" formats ":&-" formats ":&-" formats "case 1 \n when 2 ;\n 3 \n end" formats "case 1 \n when 2 ;\n 3 \n end" formats "$~" formats "$~" formats "Foo(\"bar\": Int32, \"baz qux\": Float64)" formats "Foo(\"bar\": Int32, \"baz qux\": Float64)" formats "def foo ( x , y , ) \n end" formats "def foo ( x , y , ) \n end" formats "foo(bar(baz3 do\nend))" formats "foo(bar(baz3 do\nend))" formats "<<-HTML\n \#{\"foo\"}\n HTML" formats "<<-HTML\n \#{\"foo\"}\n HTML" formats "def foo(a,\n **b)\nend" formats "def foo(a,\n **b)\nend" formats "if 1\nelse\n# nothing\nend" formats "if 1\nelse\n# nothing\nend" formats "[1, 2, 3, ]" formats "[1, 2, 3, ]" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n}" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n}" formats "macro foo\n {{1 + 2}}\nend" formats "macro foo\n {{1 + 2}}\nend" formats "[\n <<-EOF,\n foo\n EOF\n]" formats "[\n <<-EOF,\n foo\n EOF\n]" formats "foo { |x, *y| }" formats "foo { |x, *y| }" formats "lib Foo\n fun foo =\n bar : Void\nend" formats "lib Foo\n fun foo =\n bar : Void\nend" formats "struct Foo(T)\n# bar\n1\nend" formats "struct Foo(T)\n# bar\n1\nend" formats "def foo\n a = 1; # foo\n a = 2; # bar\nend\n" formats "def foo\n a = 1; # foo\n a = 2; # bar\nend\n" formats "lib Foo\n fun Bar\nend" formats "lib Foo\n fun Bar\nend" formats "foo do # a\n # b\n bar\nend" formats "foo do # a\n # b\n bar\nend" formats "foo do \n x \n end" formats "foo do \n x \n end" formats "next { {1, 2}, {3, 4} }" formats "next { {1, 2}, {3, 4} }" formats "'\\n'" formats "'\\n'" formats "alias A = ({A, (B)})" formats "alias A = ({A, (B)})" formats "offsetof( String, @length )" formats "offsetof( String, @length )" formats "foo(1 ||\n # foo\n 2)" formats "foo(1 ||\n # foo\n 2)" formats "asm(\"nop\" :: \"r\"(0))" formats "asm(\"nop\" :: \"r\"(0))" formats "begin\n 1\nend\n\n1\n" formats "begin\n 1\nend\n\n1\n" formats "alias Foo =Bar" formats "alias Foo =Bar" formats "class X\n annotation FooAnnotation \n end \n end" formats "class X\n annotation FooAnnotation \n end \n end" formats "foo self // 1" formats "foo self // 1" formats "long_variable_name = [1, 2, 3, # foo\n 4, 5, 6]" formats "long_variable_name = [1, 2, 3, # foo\n 4, 5, 6]" formats "NamedTuple()" formats "NamedTuple()" formats "alias Foo::Bar = Baz" formats "alias Foo::Bar = Baz" formats "return { {1, 2}, {3, 4} }" formats "return { {1, 2}, {3, 4} }" formats "\"\#{foo = 1\n}\"" formats "\"\#{foo = 1\n}\"" formats "case 1 \n when 2 , 3 \n 4 \n end" formats "case 1 \n when 2 , 3 \n 4 \n end" formats "@[Foo( 1, 2, foo: 3 )]" formats "@[Foo( 1, 2, foo: 3 )]" formats "def foo(a : T) forall T \n #\nend" formats "def foo(a : T) forall T \n #\nend" formats ":&" formats ":&" formats "def foo(&block: Int32)\nend" formats "def foo(&block: Int32)\nend" formats "if 1\n2\nelsif\n3\n4\nelse\n6\nend" formats "if 1\n2\nelsif\n3\n4\nelse\n6\nend" formats "lib Foo\nstruct Foo\nend\nend" formats "lib Foo\nstruct Foo\nend\nend" formats "1 + \n2" formats "1 + \n2" formats "if 1 # foo\nend" formats "if 1 # foo\nend" formats "asm(\"a\" : : : : \"volatile\")" formats "asm(\"a\" : : : : \"volatile\")" formats "foo(out x)" formats "foo(out x)" formats "{% if z %}\n 1\n{% end %}\n\ndef foo\n z =\n 123 + # foo\n 4 # bar\n\n 1\nend" formats "{% if z %}\n 1\n{% end %}\n\ndef foo\n z =\n 123 + # foo\n 4 # bar\n\n 1\nend" formats "select\nwhen foo # foo\n # bar\nelse # foo\n # bar\nend" formats "select\nwhen foo # foo\n # bar\nelse # foo\n # bar\nend" formats "foo . bar()" formats "foo . bar()" formats "a = 1\na ||= begin\n 1\nend" formats "a = 1\na ||= begin\n 1\nend" formats "1" formats "1" formats "x = 1\nx += 1" formats "x = 1\nx += 1" formats "class Foo\n1\n\n# foo\nend" formats "class Foo\n1\n\n# foo\nend" formats "foo (1; 2)" formats "foo (1; 2)" formats "{ %w() }" formats "{ %w() }" formats "lib Foo\n fun foo =\n\n\n bar(Int32) : Int32\nend" formats "lib Foo\n fun foo =\n\n\n bar(Int32) : Int32\nend" formats "1&+2&*3" formats "1&+2&*3" formats "-> :: foo!" formats "-> :: foo!" formats "while 1 # foo\n # bar\n 2\nend" formats "while 1 # foo\n # bar\n 2\nend" formats "foo = 1\n->foo.foo=" formats "foo = 1\n->foo.foo=" formats "/ /" formats "/ /" formats "foo = {1, {2,\n 3},\n 4}" formats "foo = {1, {2,\n 3},\n 4}" formats "def foo(a : T) forall T\n #\n\nend" formats "def foo(a : T) forall T\n #\n\nend" formats "macro foo\n def bar\n {{\n 1 + 2\n }}\n end\nend" formats "macro foo\n def bar\n {{\n 1 + 2\n }}\n end\nend" formats "begin\n begin\n\n end\nend" formats "begin\n begin\n\n end\nend" formats "%{hello}" formats "%{hello}" formats "1 #=>2" formats "1 #=>2" formats "foo . responds_to?( :bar )" formats "foo . responds_to?( :bar )" formats "loop do\n 1\nrescue\n 2\nend" formats "loop do\n 1\nrescue\n 2\nend" formats "asm(\"a\" : \"b\"(1), \"c\"(2) : \"d\"(3) : : \"volatile\")" formats "asm(\"a\" : \"b\"(1), \"c\"(2) : \"d\"(3) : : \"volatile\")" formats "case 1 # foo\nwhen 2 then 3 # bar\nwhen 4 then 5 # baz\nelse 6 # zzz\nend" formats "case 1 # foo\nwhen 2 then 3 # bar\nwhen 4 then 5 # baz\nelse 6 # zzz\nend" formats "case 1 \n when 2 \n 3 \n end" formats "case 1 \n when 2 \n 3 \n end" formats "begin\n1\nensure\n2\nend" formats "begin\n1\nensure\n2\nend" formats "foo(1 &- 2)" formats "foo(1 &- 2)" formats "break *1" formats "break *1" formats "until 1\n2\nend" formats "until 1\n2\nend" formats "foo(1, ) do\nend" formats "foo(1, ) do\nend" formats "foo = 1\n->foo.bar(Int32*)" formats "foo = 1\n->foo.bar(Int32*)" formats "foo[x: 1, &.bar] ||= 1" formats "foo[x: 1, &.bar] ||= 1" formats "-> :: Foo . foo=" formats "-> :: Foo . foo=" formats "->@@foo.foo?" formats "->@@foo.foo?" formats "foo . responds_to? :bar" formats "foo . responds_to? :bar" formats "foo(bar([\n 1,\n]))" formats "foo(bar([\n 1,\n]))" formats "foo do # hello\nend" formats "foo do # hello\nend" formats "class Foo\nx = 1\nend" formats "class Foo\nx = 1\nend" formats "Foo::Bar(T, U?)?" formats "Foo::Bar(T, U?)?" formats "alias A = (B)" formats "alias A = (B)" formats "1.>= do\nend" formats "1.>= do\nend" Crystal::Repl::Interpreter types does class method on virtual metaclass casted to generic metaclass (#12302) does class method on virtual metaclass casted to generic metaclass (#12302) discards .class discards .class discards Path discards Path interprets path to type interprets path to type interprets class for virtual_type type (struct) interprets class for virtual_type type (struct) discards typeof discards typeof interprets class_crystal_instance_type_id interprets class_crystal_instance_type_id discards class for virtual_type type discards class for virtual_type type discards class for non-union type discards class for non-union type discards generic discards generic discards crystal_type_id discards crystal_type_id interprets class for non-union type interprets class for non-union type interprets crystal_type_id for nil interprets crystal_type_id for nil interprets crystal_type_id for non-nil interprets crystal_type_id for non-nil interprets class for module type (#12203) interprets class for module type (#12203) interprets crystal_type_id for virtual metaclass type (#12228) interprets crystal_type_id for virtual metaclass type (#12228) interprets class for virtual_type type interprets class for virtual_type type Code gen: c enum codegens enum with 10 // 2 codegens enum with 10 // 2 codegens enum with 3 &* 2 codegens enum with 3 &* 2 codegens enum with ~1 codegens enum with ~1 codegens enum that refers to another enum constant codegens enum that refers to another enum constant codegens enum value codegens enum value codegens enum with -1 codegens enum with -1 codegens enum that refers to another constant codegens enum that refers to another constant codegens enum with 10 ^ 3 codegens enum with 10 ^ 3 codegens enum with +1 codegens enum with +1 codegens enum value 3 codegens enum value 3 codegens enum with (1 + 2) * 3 codegens enum with (1 + 2) * 3 codegens enum with 3 &- 2 codegens enum with 3 &- 2 codegens enum with 100 >> 3 codegens enum with 100 >> 3 codegens enum with 10 | 3 codegens enum with 10 | 3 codegens enum value 4 codegens enum value 4 codegens enum with 3 - 2 codegens enum with 3 - 2 codegens enum value 2 codegens enum value 2 codegens enum with 3 * 2 codegens enum with 3 * 2 codegens enum with 1 + 2 codegens enum with 1 + 2 codegens enum with 1 &+ 2 codegens enum with 1 &+ 2 codegens enum with 1 << 3 codegens enum with 1 << 3 codegens enum with 10 & 3 codegens enum with 10 & 3 codegens enum with 10 % 3 codegens enum with 10 % 3 Lexer macro lexes macro with embedded string with %[ lexes macro with embedded string with %[ lexes macro var lexes macro var lexes macro with nested macro lexes macro with nested macro lexes macro with nested embedded string with %( lexes macro with nested embedded string with %( lexes macro with embedded char and sharp lexes macro with embedded char and sharp lexes macro with semicolon before end lexes macro with semicolon before end lexes macro with curly escape lexes macro with curly escape lexes begin end lexes begin end lexes macro with embedded string with %< ignores begin lexes macro with embedded string with %< ignores begin lexes with for inside escaped macro (#1029) lexes with for inside escaped macro (#1029) lexes macro with embedded string lexes macro with embedded string lexes macro with string interpolation and double curly brace lexes macro with string interpolation and double curly brace lexes macro with nested annotation lexes macro with nested annotation lexes macro with nested struct lexes macro with nested struct reaches end reaches end lexes macro with comments lexes macro with comments doesn't lex macro var if escaped doesn't lex macro var if escaped lexes with if/end inside escaped macro (#1029) lexes with if/end inside escaped macro (#1029) lexes macro with embedded string with %[ ignores begin lexes macro with embedded string with %[ ignores begin lexes macro with nested def lexes macro with nested def lexes bug #654 lexes bug #654 lexes macro with nested class lexes macro with nested class lexes macro with nested while lexes macro with nested while lexes macro with curly escape in comment lexes macro with curly escape in comment lexes macro with embedded string and expression lexes macro with embedded string and expression lexes macro with if as suffix after return lexes macro with if as suffix after return lexes macro with nested abstract struct lexes macro with nested abstract struct lexes macro without nested if lexes macro without nested if lexes macro with embedded string and backslash lexes macro with embedded string and backslash keeps correct line number after lexes the part of keyword and newline (#4656) keeps correct line number after lexes the part of keyword and newline (#4656) lexes macro with nested abstract class lexes macro with nested abstract class lexes macro with nested begin lexes macro with nested begin skips whitespace skips whitespace lexes macro with slash not followed by curly lexes macro with slash not followed by curly lexes macro with if as suffix lexes macro with if as suffix lexes macro with expression lexes macro with expression lexes macro with nested lib lexes macro with nested lib lexes macro with nested case lexes macro with nested case lexes macro with comments and expressions lexes macro with comments and expressions lexes macro with nested abstract def lexes macro with nested abstract def lexes macro with nested union lexes macro with nested union lexes macro with embedded string with %( ignores begin lexes macro with embedded string with %( ignores begin lexes macro with nested do lexes macro with nested do lexes macro with embedded string with %< lexes macro with embedded string with %< lexes macro with embedded string with %( lexes macro with embedded string with %( lexes macro with nested module lexes macro with nested module keeps correct column and line numbers keeps correct column and line numbers lexes macro with nested select lexes macro with nested select lexes macro with if after assign lexes macro with if after assign lexes macro with nested enum lexes macro with nested enum lexes macro with nested fun lexes macro with nested fun lexes macro with control lexes macro with control lexes with unless inside escaped macro (#5664) lexes with unless inside escaped macro (#5664) lexes macro with nested if lexes macro with nested if lexes simple macro lexes simple macro lexes macro with nested until lexes macro with nested until lexes macro with nested unless lexes macro with nested unless lexes escaped quote inside string (#895) lexes escaped quote inside string (#895) Parser doc includes doc for macro includes doc for macro disables doc parsing inside defs disables doc parsing inside defs includes doc for def includes doc for def includes doc for class includes doc for class includes doc for call without obj includes doc for call without obj includes doc for struct includes doc for struct includes doc for constant assign includes doc for constant assign includes doc for abstract class includes doc for abstract class includes doc for fun def includes doc for fun def includes doc for module includes doc for module includes doc for alias includes doc for alias includes doc for enum def includes doc for enum def includes doc for annotation includes doc for annotation includes doc for abstract def includes doc for abstract def includes doc for private def includes doc for private def Semantic: splat overloads with type restriction and splat (7) overloads with type restriction and splat (7) uses splat restriction with concrete type uses splat restriction with concrete type matches with type var splat inside explicit Union, when one splat fails entirely matches with type var splat inside explicit Union, when one splat fails entirely matches with type var splat inside explicit Union, when all splat elements match matches with type var splat inside explicit Union, when all splat elements match overloads with splat against method with two arguments (#986) (2) overloads with splat against method with two arguments (#986) (2) matches type splat with splat in generic type (2) matches type splat with splat in generic type (2) works if matches splat with type restriction works if matches splat with type restriction overloads with type restriction and splat (3) overloads with type restriction and splat (3) splats splats gives correct error when forwarding splat (2) gives correct error when forwarding splat (2) errors with too few non-splat type arguments (2) errors with too few non-splat type arguments (2) overloads with type restriction and splat (2) overloads with type restriction and splat (2) says missing argument because positional args don't match past splat says missing argument because positional args don't match past splat errors with too few non-splat type arguments (1) errors with too few non-splat type arguments (1) Crystal::Splat with splat with splat without splat without splat accesses T when empty, via module accesses T when empty, via module doesn't shift a call's location doesn't shift a call's location matches with tuple splat inside explicit Union matches with tuple splat inside explicit Union calls super with implicit splat arg (#1001) calls super with implicit splat arg (#1001) matches with type var splat inside explicit Union (2) matches with type var splat inside explicit Union (2) overloads with type restriction and splat (5) overloads with type restriction and splat (5) method with splat and optional named argument matches zero args call (#2746) method with splat and optional named argument matches zero args call (#2746) errors with too many non-splat type arguments errors with too many non-splat type arguments uses splat restriction after non-splat arguments (#5037) uses splat restriction after non-splat arguments (#5037) matches type splat with splat in generic type (1) matches type splat with splat in generic type (1) forwards tuple with an extra argument forwards tuple with an extra argument overloads with type restriction and splat (4) overloads with type restriction and splat (4) uses bare * uses bare * matches with type var and splat of itself inside explicit Union matches with type var and splat of itself inside explicit Union errors if using two splat indices on restriction errors if using two splat indices on restriction splats arg and splat against splat (1) (#1042) splats arg and splat against splat (1) (#1042) matches with splat matches with splat matches with type var and splat of itself inside explicit Union (2) matches with type var and splat of itself inside explicit Union (2) uses splat restriction, matches empty uses splat restriction, matches empty says no overload matches on type restrictions past the splat arg says no overload matches on type restrictions past the splat arg uses bare *, doesn't let more args uses bare *, doesn't let more args uses splat restriction uses splat restriction errors if doesn't match splat with type restriction errors if doesn't match splat with type restriction overloads with type restriction and splat (6) overloads with type restriction and splat (6) redefines method with splat (bug #248) redefines method with splat (bug #248) gives correct error when forwarding splat gives correct error when forwarding splat matches with type var splat inside explicit Union matches with type var splat inside explicit Union errors if splatting non-tuple type in return values errors if splatting non-tuple type in return values errors on zero args with named arg and splat errors on zero args with named arg and splat allows default value after splat index allows default value after splat index forwards tuple in return statement forwards tuple in return statement matches with type var splat inside explicit Union, when non-splat vars fail matches with type var splat inside explicit Union, when non-splat vars fail doesn't match splat in generic type with unsplatted tuple (#10164) doesn't match splat in generic type with unsplatted tuple (#10164) matches with type var and splat of itself inside explicit Union (3) matches with type var and splat of itself inside explicit Union (3) overloads with type restriction and splat (1) overloads with type restriction and splat (1) matches instantiated generic with splat in generic type matches instantiated generic with splat in generic type errors if doesn't match splat with type restriction because of zero arguments errors if doesn't match splat with type restriction because of zero arguments can splat after type filter left it as a tuple (#442) can splat after type filter left it as a tuple (#442) doesn't crash on non-match (#2521) doesn't crash on non-match (#2521) splats arg and splat against splat (2) (#1042) splats arg and splat against splat (2) (#1042) errors if splatting union errors if splatting union matches partially instantiated generic with splat in generic type matches partially instantiated generic with splat in generic type doesn't match free var type splats inside explicit Union doesn't match free var type splats inside explicit Union errors if splatting non-tuple type in call arguments errors if splatting non-tuple type in call arguments overloads with splat against method with two arguments (#986) (1) overloads with splat against method with two arguments (#986) (1) method with default arguments and splat matches call with one arg (#2766) method with default arguments and splat matches call with one arg (#2766) Semantic: yield with scope infer type of block body infer type of block body uses method of enclosing scope uses method of enclosing scope infer type of block body with yield scope and arguments infer type of block body with yield scope and arguments finds macro finds macro errors if using instance variable at top level errors if using instance variable at top level mentions with yield scope and current scope in error mentions with yield scope and current scope in error passes #229 passes #229 infer type of empty block body infer type of empty block body invokes nested calls invokes nested calls uses instance variable of enclosing scope uses instance variable of enclosing scope infer type of block body with yield scope infer type of block body with yield scope Crystal::Playground::Agent should send json messages and return inspected value should send json messages and return inspected value Code gen: regex literal spec works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) works in a class variable (#10951) Semantic: double splat double splats named argument into arguments (1) double splats named argument into arguments (1) errors if duplicate keys on call side with double splat and named args errors if duplicate keys on call side with double splat and named args uses double splat restriction, matches empty uses double splat restriction, matches empty uses restriction on double splat, doesn't match with empty named tuple (2) uses restriction on double splat, doesn't match with empty named tuple (2) matches double splat on method with named args and regular args matches double splat on method with named args and regular args uses restriction on double splat, means all types must be that type uses restriction on double splat, means all types must be that type matches named args producing an empty double splat (#2678) matches named args producing an empty double splat (#2678) matches double splat on method (empty) matches double splat on method (empty) matches double splat with regular splat matches double splat with regular splat errors if duplicate keys on call side with two double splats errors if duplicate keys on call side with two double splats uses double splat in new uses double splat in new errors missing argument with double splat errors missing argument with double splat uses double splat restriction uses double splat restriction matches double splat on method with named args matches double splat on method with named args double splats named argument into arguments (2) double splats named argument into arguments (2) overloads based on double splat restriction overloads based on double splat restriction uses restriction on double splat, doesn't match with empty named tuple uses restriction on double splat, doesn't match with empty named tuple uses double splat restriction with concrete type uses double splat restriction with concrete type Crystal::Init::InitProject correctly uses git config correctly uses git config has proper contents has proper contents Crystal::Command clear_cache clears any cached compiler files clears any cached compiler files Code gen: void codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens void assignment in case with local variable codegens unreachable code codegens unreachable code allows passing void as argument to method allows passing void as argument to method codegens no return assignment codegens no return assignment codegens void assignment codegens void assignment codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case codegens void assignment in case returns void from nil functions, doesn't crash when passing value returns void from nil functions, doesn't crash when passing value Semantic: ReferenceStorage errors if T is a value type errors if T is a value type errors if T is a struct type errors if T is a struct type errors if T is a nilable type errors if T is a nilable type allows a different name allows a different name errors if T is a union type errors if T is a union type Crystal::Repl::Interpreter literals interprets an UInt128 interprets an UInt128 interprets a Float32 interprets a Float32 interprets a bool (false) interprets a bool (false) precomputes string literal length precomputes string literal length interprets an UInt32 interprets an UInt32 interprets an UInt64 interprets an UInt64 interprets an Int16 interprets an Int16 uses a string pool uses a string pool interprets a Float64 interprets a Float64 interprets an Int32 interprets an Int32 interprets an Int64 interprets an Int64 interprets a String literal interprets a String literal interprets an Int8 interprets an Int8 interprets an UInt16 interprets an UInt16 interprets an Int128 interprets an Int128 interprets an UInt8 interprets an UInt8 interprets a char interprets a char interprets a bool (true) interprets a bool (true) interprets nil interprets nil comparisons interprets Int32 != UInt64 (true) interprets Int32 != UInt64 (true) interprets UInt64 != Int32 (false) interprets UInt64 != Int32 (false) interprets UInt8 < Int32 (false, right is less than zero) interprets UInt8 < Int32 (false, right is less than zero) interprets Int32 == UInt64 (false) interprets Int32 == UInt64 (false) interprets Int32 != UInt64 (false) interprets Int32 != UInt64 (false) interprets UInt32 < Int32 (false) interprets UInt32 < Int32 (false) interprets UInt64 > UInt32 (false) interprets UInt64 > UInt32 (false) interprets Int32 != Int32 (true) interprets Int32 != Int32 (true) interprets Int32 == UInt64 (true) interprets Int32 == UInt64 (true) interprets UInt64 == Int32 (true when Int32 >= 0) interprets UInt64 == Int32 (true when Int32 >= 0) interprets Bool != Bool (true) interprets Bool != Bool (true) interprets Bool == Bool (false) interprets Bool == Bool (false) interprets UInt8 < Int32 (false, right is greater than zero) interprets UInt8 < Int32 (false, right is greater than zero) interprets UInt64 < Int32 (false, right is less than zero) interprets UInt64 < Int32 (false, right is less than zero) interprets Char == Char (false) interprets Char == Char (false) interprets Int32 == Int32 (true) interprets Int32 == Int32 (true) interprets Int128 == Int128 (false) interprets Int128 == Int128 (false) interprets UInt64.unsafe_mod(UInt64) interprets UInt64.unsafe_mod(UInt64) discards comparison discards comparison interprets Float64 < Float64 interprets Float64 < Float64 interprets Int128 == Int128 (true) interprets Int128 == Int128 (true) interprets UInt64 != Int32 (true) interprets UInt64 != Int32 (true) interprets Float32 / Int32 interprets Float32 / Int32 interprets UInt64 == Int32 (false when Int32 >= 0) interprets UInt64 == Int32 (false when Int32 >= 0) interprets Int32 < Float64 interprets Int32 < Float64 interprets UInt32 < Int32 (true) interprets UInt32 < Int32 (true) interprets Float64 / Float64 interprets Float64 / Float64 interprets Int32 < Int32 interprets Int32 < Int32 interprets Float32 fdiv Float64 interprets Float32 fdiv Float64 interprets UInt64 > UInt32 (true) interprets UInt64 > UInt32 (true) interprets Float64 < Int32 interprets Float64 < Int32 interprets Bool == Bool (true) interprets Bool == Bool (true) interprets Bool != Bool (false) interprets Bool != Bool (false) interprets Int32 > Float64 (true) interprets Int32 > Float64 (true) interprets UInt64 < Int32 (false, right is greater than zero) interprets UInt64 < Int32 (false, right is greater than zero) interprets Float64 fdiv Float32 interprets Float64 fdiv Float32 interprets Int32 == Float64 (true) interprets Int32 == Float64 (true) interprets UInt8 < Int32 (true, right is greater than zero) interprets UInt8 < Int32 (true, right is greater than zero) interprets Int32 != Int32 (false) interprets Int32 != Int32 (false) interprets UInt64 == Int32 (false when Int32 < 0) interprets UInt64 == Int32 (false when Int32 < 0) interprets UInt64 < Int32 (true, right is greater than zero) interprets UInt64 < Int32 (true, right is greater than zero) interprets Float32 / Float32 interprets Float32 / Float32 interprets Int32 == Float64 (false) interprets Int32 == Float64 (false) interprets Char == Char (true) interprets Char == Char (true) interprets Int32 == Int32 (false) interprets Int32 == Int32 (false) interprets Int32 > Float64 (false) interprets Int32 > Float64 (false) local variables interprets uninitialized interprets uninitialized interprets variable set interprets variable set doesn't declare variable with no type doesn't declare variable with no type interprets variable set and get interprets variable set and get assigns to underscore assigns to underscore interprets variable set and get, second local var interprets variable set and get, second local var interprets variable set with type restriction (#13023) interprets variable set with type restriction (#13023) interprets at the class level interprets at the class level doesn't declare variable with no type inside method doesn't declare variable with no type inside method interprets local variable declaration (#12229) interprets local variable declaration (#12229) interprets variable set and get with operations interprets variable set and get with operations doesn't discard underscore right hand side doesn't discard underscore right hand side conversion interprets Int8::MIN#to_f32! interprets Int8::MIN#to_f32! interprets Int8::MAX#to_f64! interprets Int8::MAX#to_f64! interprets Int64::MIN#to_f64! interprets Int64::MIN#to_f64! interprets Int64::MAX#to_i32! interprets Int64::MAX#to_i32! interprets Int64::MAX#to_u64! interprets Int64::MAX#to_u64! interprets Int32::MIN#to_i8! interprets Int32::MIN#to_i8! interprets Int16::MAX#to_i! interprets Int16::MAX#to_i! interprets Int32::MAX#to_u64! interprets Int32::MAX#to_u64! interprets Int64::MAX#to_i8! interprets Int64::MAX#to_i8! interprets Float64#to_i64! (negative) interprets Float64#to_i64! (negative) interprets UInt8::MAX#to_f32! interprets UInt8::MAX#to_f32! interprets UInt16::MAX#to_i! interprets UInt16::MAX#to_i! interprets Int16::MAX#to_u32! interprets Int16::MAX#to_u32! interprets Float64#to_i8! (negative) interprets Float64#to_i8! (negative) interprets UInt16::MAX#to_u16! interprets UInt16::MAX#to_u16! interprets UInt64::MAX#to_u64! interprets UInt64::MAX#to_u64! interprets Int8::MIN#to_i16! interprets Int8::MIN#to_i16! interprets Int64::MAX#to_u32! interprets Int64::MAX#to_u32! interprets Int16::MAX#to_i64! interprets Int16::MAX#to_i64! interprets Float64#to_i64! (positive) interprets Float64#to_i64! (positive) interprets Int64::MIN#to_i16! interprets Int64::MIN#to_i16! interprets Int64::MIN#to_u16! interprets Int64::MIN#to_u16! interprets Int16::MIN#to_u64! interprets Int16::MIN#to_u64! interprets Float32#to_f32! (negative) interprets Float32#to_f32! (negative) interprets UInt64::MAX#to_f64! interprets UInt64::MAX#to_f64! discards conversion discards conversion interprets UInt8::MAX#to_i32! interprets UInt8::MAX#to_i32! interprets UInt8::MAX#to_f64! interprets UInt8::MAX#to_f64! interprets UInt32::MAX#to_i8! interprets UInt32::MAX#to_i8! interprets Int32::MIN#to_u! interprets Int32::MIN#to_u! interprets Int8::MAX#to_u16! interprets Int8::MAX#to_u16! interprets UInt64::MAX#to_i64! interprets UInt64::MAX#to_i64! interprets Int32::MAX#to_i16! interprets Int32::MAX#to_i16! interprets Int16::MAX#to_i16! interprets Int16::MAX#to_i16! interprets Float32#to_i32! (positive) interprets Float32#to_i32! (positive) interprets Float32#to_i8! (positive) interprets Float32#to_i8! (positive) interprets Float32#to_i16! (positive) interprets Float32#to_i16! (positive) interprets Int32::MAX#to_u16! interprets Int32::MAX#to_u16! interprets Int32::MIN#to_i! interprets Int32::MIN#to_i! interprets Int16::MAX#to_i32! interprets Int16::MAX#to_i32! interprets UInt32::MAX#to_u64! interprets UInt32::MAX#to_u64! discards conversion with local var discards conversion with local var interprets Int16::MIN#to_u8! interprets Int16::MIN#to_u8! interprets UInt8::MAX#to_i8! interprets UInt8::MAX#to_i8! interprets Int64::MIN#to_f32! interprets Int64::MIN#to_f32! interprets Int64::MIN#to_u32! interprets Int64::MIN#to_u32! interprets UInt8::MAX#to_i16! interprets UInt8::MAX#to_i16! interprets Int64::MAX#to_i64! interprets Int64::MAX#to_i64! interprets Float32#to_i! (negative) interprets Float32#to_i! (negative) interprets Float32#to_u32! (positive) interprets Float32#to_u32! (positive) interprets Float64#to_f64! (negative) interprets Float64#to_f64! (negative) interprets Int32::MIN#to_u64! interprets Int32::MIN#to_u64! interprets UInt8::MAX#to_u8! interprets UInt8::MAX#to_u8! interprets Float32#to_f64! (positive) interprets Float32#to_f64! (positive) interprets Int32::MIN#to_f64! interprets Int32::MIN#to_f64! interprets Float64#to_u! (positive) interprets Float64#to_u! (positive) interprets Float64#to_f32! (negative) interprets Float64#to_f32! (negative) interprets Int64::MIN#to_u64! interprets Int64::MIN#to_u64! interprets Int64::MIN#to_u! interprets Int64::MIN#to_u! interprets Int8::MAX#to_i64! interprets Int8::MAX#to_i64! interprets Float64#to_i32! (positive) interprets Float64#to_i32! (positive) interprets UInt8::MAX#to_u64! interprets UInt8::MAX#to_u64! interprets UInt16::MAX#to_i16! interprets UInt16::MAX#to_i16! interprets Int8::MIN#to_u32! interprets Int8::MIN#to_u32! interprets UInt32::MAX#to_u! interprets UInt32::MAX#to_u! interprets Int32::MAX#to_i32! interprets Int32::MAX#to_i32! interprets UInt64::MAX#to_i32! interprets UInt64::MAX#to_i32! interprets UInt16::MAX#to_f64! interprets UInt16::MAX#to_f64! interprets Int32::MIN#to_i64! interprets Int32::MIN#to_i64! interprets UInt8::MAX#to_u16! interprets UInt8::MAX#to_u16! interprets UInt16::MAX#to_u32! interprets UInt16::MAX#to_u32! interprets UInt64::MAX#to_u8! interprets UInt64::MAX#to_u8! interprets Float32#to_i32! (negative) interprets Float32#to_i32! (negative) interprets UInt32::MAX#to_i16! interprets UInt32::MAX#to_i16! interprets Int32::MIN#to_i16! interprets Int32::MIN#to_i16! interprets Int16::MIN#to_u32! interprets Int16::MIN#to_u32! interprets UInt64::MAX#to_i! interprets UInt64::MAX#to_i! interprets UInt16::MAX#to_u64! interprets UInt16::MAX#to_u64! Int32#unsafe_chr Int32#unsafe_chr interprets UInt64::MAX#to_i8! interprets UInt64::MAX#to_i8! interprets Int16::MIN#to_i64! interprets Int16::MIN#to_i64! interprets Int64::MIN#to_u8! interprets Int64::MIN#to_u8! interprets Int32::MIN#to_u8! interprets Int32::MIN#to_u8! interprets Float32#to_i64! (negative) interprets Float32#to_i64! (negative) interprets Float32#to_i64! (positive) interprets Float32#to_i64! (positive) interprets UInt32::MAX#to_i! interprets UInt32::MAX#to_i! interprets Int64::MAX#to_i! interprets Int64::MAX#to_i! interprets Int64::MIN#to_i32! interprets Int64::MIN#to_i32! interprets Int16::MAX#to_f32! interprets Int16::MAX#to_f32! interprets Int64::MAX#to_u16! interprets Int64::MAX#to_u16! interprets Int8::MAX#to_i32! interprets Int8::MAX#to_i32! interprets Float32#to_i! (positive) interprets Float32#to_i! (positive) interprets UInt32::MAX#to_u8! interprets UInt32::MAX#to_u8! interprets Int32::MIN#to_i32! interprets Int32::MIN#to_i32! interprets Int64::MAX#to_u! interprets Int64::MAX#to_u! interprets Float64#to_f64! (positive) interprets Float64#to_f64! (positive) interprets Int8::MIN#to_u8! interprets Int8::MIN#to_u8! interprets UInt64::MAX#to_u32! interprets UInt64::MAX#to_u32! interprets Float64#to_u64! (positive) interprets Float64#to_u64! (positive) interprets Int16::MAX#to_i8! interprets Int16::MAX#to_i8! interprets Int32::MIN#to_f32! interprets Int32::MIN#to_f32! interprets Float32#to_f32! (positive) interprets Float32#to_f32! (positive) interprets Int64::MIN#to_i! interprets Int64::MIN#to_i! interprets Float64#to_u8! (positive) interprets Float64#to_u8! (positive) interprets UInt32::MAX#to_u16! interprets UInt32::MAX#to_u16! interprets Int64::MIN#to_i8! interprets Int64::MIN#to_i8! interprets Float64#to_u32! (positive) interprets Float64#to_u32! (positive) interprets Int64::MAX#to_u8! interprets Int64::MAX#to_u8! interprets Int16::MAX#to_u8! interprets Int16::MAX#to_u8! interprets Int8::MAX#to_u32! interprets Int8::MAX#to_u32! interprets Int32::MAX#to_u32! interprets Int32::MAX#to_u32! interprets Int8::MAX#to_u8! interprets Int8::MAX#to_u8! interprets UInt16::MAX#to_u8! interprets UInt16::MAX#to_u8! interprets Float64#to_f32! (positive) interprets Float64#to_f32! (positive) interprets Int8::MAX#to_u64! interprets Int8::MAX#to_u64! interprets Int8::MIN#to_i64! interprets Int8::MIN#to_i64! interprets UInt16::MAX#to_u! interprets UInt16::MAX#to_u! interprets Float32#to_u16! (positive) interprets Float32#to_u16! (positive) interprets Float64#to_i! (negative) interprets Float64#to_i! (negative) interprets Int8::MAX#to_u! interprets Int8::MAX#to_u! interprets Int16::MIN#to_u! interprets Int16::MIN#to_u! interprets Float32#to_u64! (positive) interprets Float32#to_u64! (positive) interprets UInt64::MAX#to_i16! interprets UInt64::MAX#to_i16! interprets Int32::MAX#to_u! interprets Int32::MAX#to_u! interprets UInt8::MAX#to_u! interprets UInt8::MAX#to_u! interprets Int8::MIN#to_u64! interprets Int8::MIN#to_u64! interprets Int16::MAX#to_f64! interprets Int16::MAX#to_f64! interprets Float64#to_i8! (positive) interprets Float64#to_i8! (positive) interprets Int16::MIN#to_i32! interprets Int16::MIN#to_i32! interprets Float32#to_i16! (negative) interprets Float32#to_i16! (negative) interprets Int32::MAX#to_i64! interprets Int32::MAX#to_i64! interprets Int16::MIN#to_f64! interprets Int16::MIN#to_f64! interprets Int8::MAX#to_i16! interprets Int8::MAX#to_i16! interprets Int16::MIN#to_f32! interprets Int16::MIN#to_f32! interprets Int8::MIN#to_u16! interprets Int8::MIN#to_u16! interprets UInt64::MAX#to_u16! interprets UInt64::MAX#to_u16! interprets Float32#to_i8! (negative) interprets Float32#to_i8! (negative) interprets Int64::MIN#to_i64! interprets Int64::MIN#to_i64! interprets Int16::MAX#to_u64! interprets Int16::MAX#to_u64! interprets UInt16::MAX#to_f32! interprets UInt16::MAX#to_f32! interprets Int32::MIN#to_u16! interprets Int32::MIN#to_u16! interprets UInt8::MAX#to_i64! interprets UInt8::MAX#to_i64! interprets UInt16::MAX#to_i8! interprets UInt16::MAX#to_i8! interprets UInt8::MAX#to_i! interprets UInt8::MAX#to_i! interprets Int32::MIN#to_u32! interprets Int32::MIN#to_u32! interprets UInt32::MAX#to_f32! interprets UInt32::MAX#to_f32! interprets Int64::MAX#to_i16! interprets Int64::MAX#to_i16! interprets UInt32::MAX#to_f64! interprets UInt32::MAX#to_f64! interprets UInt32::MAX#to_i64! interprets UInt32::MAX#to_i64! interprets Int32::MAX#to_i! interprets Int32::MAX#to_i! interprets Int8::MIN#to_i! interprets Int8::MIN#to_i! interprets UInt32::MAX#to_u32! interprets UInt32::MAX#to_u32! interprets UInt8::MAX#to_u32! interprets UInt8::MAX#to_u32! interprets Float32#to_f64! (negative) interprets Float32#to_f64! (negative) interprets Int16::MIN#to_u16! interprets Int16::MIN#to_u16! interprets UInt32::MAX#to_i32! interprets UInt32::MAX#to_i32! interprets Int8::MAX#to_i8! interprets Int8::MAX#to_i8! interprets Float64#to_i16! (negative) interprets Float64#to_i16! (negative) interprets Int32::MAX#to_f64! interprets Int32::MAX#to_f64! interprets Int32::MAX#to_i8! interprets Int32::MAX#to_i8! interprets Int8::MIN#to_f64! interprets Int8::MIN#to_f64! interprets Float64#to_i32! (negative) interprets Float64#to_i32! (negative) interprets Int8::MIN#to_u! interprets Int8::MIN#to_u! interprets Int64::MAX#to_f64! interprets Int64::MAX#to_f64! interprets Int32::MAX#to_u8! interprets Int32::MAX#to_u8! interprets Int8::MIN#to_i32! interprets Int8::MIN#to_i32! interprets UInt16::MAX#to_i64! interprets UInt16::MAX#to_i64! interprets Float32#to_u! (positive) interprets Float32#to_u! (positive) interprets Int32::MAX#to_f32! interprets Int32::MAX#to_f32! interprets Float64#to_u16! (positive) interprets Float64#to_u16! (positive) interprets UInt64::MAX#to_f32! interprets UInt64::MAX#to_f32! interprets Char#ord interprets Char#ord interprets Int16::MAX#to_u! interprets Int16::MAX#to_u! UInt8#unsafe_chr UInt8#unsafe_chr interprets Float32#to_u8! (positive) interprets Float32#to_u8! (positive) interprets UInt64::MAX#to_u! interprets UInt64::MAX#to_u! interprets Float64#to_i16! (positive) interprets Float64#to_i16! (positive) interprets Int8::MIN#to_i8! interprets Int8::MIN#to_i8! interprets Int8::MAX#to_f32! interprets Int8::MAX#to_f32! interprets Int16::MAX#to_u16! interprets Int16::MAX#to_u16! interprets Float64#to_i! (positive) interprets Float64#to_i! (positive) interprets UInt16::MAX#to_i32! interprets UInt16::MAX#to_i32! interprets Int16::MIN#to_i! interprets Int16::MIN#to_i! interprets Int64::MAX#to_f32! interprets Int64::MAX#to_f32! interprets Int16::MIN#to_i16! interprets Int16::MIN#to_i16! interprets Int16::MIN#to_i8! interprets Int16::MIN#to_i8! interprets Int8::MAX#to_i! interprets Int8::MAX#to_i! overflow * overlows on 20 * 214748364 overlows on 20 * 214748364 overlows on 10_u16 * 6600 overlows on 10_u16 * 6600 overlows on 10_i8 * 14 overlows on 10_i8 * 14 overlows on 10_i16 * 3300 overlows on 10_i16 * 3300 overlows on 20_u64 * 1844674407370955161_i64 overlows on 20_u64 * 1844674407370955161_i64 overlows on 20_i64 * 922337203685477580_i64 overlows on 20_i64 * 922337203685477580_i64 overlows on 20_u32 * 429496729 overlows on 20_u32 * 429496729 overlows on 10_u8 * 26 overlows on 10_u8 * 26 - overlows on 1_i64 - 9223372036854775810_u64 overlows on 1_i64 - 9223372036854775810_u64 overlows on 1_u16 - 2 overlows on 1_u16 - 2 overlows on 1_i16 - 32770 overlows on 1_i16 - 32770 overlows on 1_u64 - 2 overlows on 1_u64 - 2 overlows on 1_u8 - 2 overlows on 1_u8 - 2 overlows on 1_u32 - 2 overlows on 1_u32 - 2 overlows on 1 - 2147483650_i64 overlows on 1 - 2147483650_i64 overlows on 1_i8 - 256 overlows on 1_i8 - 256 conversion overlows on -1_i16.to_u64 overlows on -1_i16.to_u64 overlows on 32768_f64.to_i16 overlows on 32768_f64.to_i16 overlows on 128_f64.to_i8 overlows on 128_f64.to_i8 overlows on 128_u32.to_i8 overlows on 128_u32.to_i8 overlows on 256_f64.to_u8 overlows on 256_f64.to_u8 overlows on -1_i8.to_u64 overlows on -1_i8.to_u64 overlows on 65536_f32.to_u16 overlows on 65536_f32.to_u16 overlows on 256_f32.to_u8 overlows on 256_f32.to_u8 overlows on 2147483648_u32.to_i32 overlows on 2147483648_u32.to_i32 overlows on 32768_u32.to_i16 overlows on 32768_u32.to_i16 overlows on -1_i64.to_u8 overlows on -1_i64.to_u8 overlows on -1.to_u32 overlows on -1.to_u32 overlows on -1_i16.to_u16 overlows on -1_i16.to_u16 overlows on 128_f32.to_i8 overlows on 128_f32.to_i8 overlows on -1_i8.to_u8 overlows on -1_i8.to_u8 overlows on 1.7976931348623157e+308.to_f32 overlows on 1.7976931348623157e+308.to_f32 overlows on -1_i64.to_u16 overlows on -1_i64.to_u16 overlows on 65536_f64.to_u16 overlows on 65536_f64.to_u16 overlows on 128_u64.to_i8 overlows on 128_u64.to_i8 overlows on 2147483648_f64.to_i32 overlows on 2147483648_f64.to_i32 overlows on -1_i64.to_u64 overlows on -1_i64.to_u64 overlows on -1.to_u64 overlows on -1.to_u64 overlows on 32768_u64.to_i16 overlows on 32768_u64.to_i16 overlows on -1.to_u16 overlows on -1.to_u16 overlows on -1_i16.to_u8 overlows on -1_i16.to_u8 overlows on 128_u16.to_i8 overlows on 128_u16.to_i8 overlows on 2147483648_u64.to_i32 overlows on 2147483648_u64.to_i32 overlows on 128_u8.to_i8 overlows on 128_u8.to_i8 overlows on -1.to_u8 overlows on -1.to_u8 overlows on -1_i8.to_u32 overlows on -1_i8.to_u32 overlows on -1_i64.to_u32 overlows on -1_i64.to_u32 overlows on 32768_f32.to_i16 overlows on 32768_f32.to_i16 overlows on 9223372036854775808_u64.to_i64 overlows on 9223372036854775808_u64.to_i64 overlows on 32768_u16.to_i16 overlows on 32768_u16.to_i16 overlows on 4294967296_f64.to_u32 overlows on 4294967296_f64.to_u32 overlows on -1_i8.to_u16 overlows on -1_i8.to_u16 overlows on -1_i16.to_u32 overlows on -1_i16.to_u32 + overlows on 1_u8 + 255 overlows on 1_u8 + 255 overlows on 1_u32 + 4294967295_i64 overlows on 1_u32 + 4294967295_i64 overlows on 1_i64 + 9223372036854775807_i64 overlows on 1_i64 + 9223372036854775807_i64 overlows on 1_u16 + 65535 overlows on 1_u16 + 65535 overlows on 1_u64 + 18446744073709551615_u64 overlows on 1_u64 + 18446744073709551615_u64 overlows on 1 + 2147483647 overlows on 1 + 2147483647 overlows on 1_i16 + 32767 overlows on 1_i16 + 32767 overlows on 1_i8 + 128 overlows on 1_i8 + 128 logical operations does math primitive on union does math primitive on union interprets not for generic class instance type interprets not for generic class instance type interprets not for bool false interprets not for bool false interprets not for nilable proc type (false) interprets not for nilable proc type (false) interprets not for mixed union (false) interprets not for mixed union (false) interprets not for mixed union (true) interprets not for mixed union (true) interprets not for generic module interprets not for generic module interprets not for nilable type (true) interprets not for nilable type (true) does math convert on union does math convert on union interprets not for bool true interprets not for bool true interprets not for bool false interprets not for bool false interprets not for nilable type (true) interprets not for nilable type (true) interprets not for nil type interprets not for nil type discards nil not discards nil not interprets not for generic module metaclass interprets not for generic module metaclass interprets not for nilable type (false) interprets not for nilable type (false) discards bool not discards bool not interprets not for nilable proc type (true) interprets not for nilable proc type (true) interprets not for mixed union (nil) interprets not for mixed union (nil) interprets not for module (#12918) interprets not for module (#12918) interprets not for nilable type (false) interprets not for nilable type (false) interprets not for generic class instance metaclass interprets not for generic class instance metaclass interprets not for mixed union (other) interprets not for mixed union (other) interprets not for nil interprets not for nil math interprets Float64 * Float64 interprets Float64 * Float64 interprets UInt32 - Int32 interprets UInt32 - Int32 interprets Float64 + Float64 interprets Float64 + Float64 interprets Int32 + Float64 interprets Int32 + Float64 interprets UInt64 & Int32 interprets UInt64 & Int32 interprets Float32 + Float64 interprets Float32 + Float64 interprets Float64 - Float64 interprets Float64 - Float64 interprets Int32 * Int32 interprets Int32 * Int32 interprets Int128 + Int32 interprets Int128 + Int32 interprets Int8 + Int8 interprets Int8 + Int8 interprets Int32 &+ Int32 interprets Int32 &+ Int32 interprets Int32.unsafe_shl(Int32) with self interprets Int32.unsafe_shl(Int32) with self interprets UInt64 | UInt32 interprets UInt64 | UInt32 interprets Float64 + Int32 interprets Float64 + Int32 interprets Int64 + Int64 interprets Int64 + Int64 interprets UInt8 | Int32 interprets UInt8 | Int32 interprets Int32 &* Int32 interprets Int32 &* Int32 interprets Int32 - Int32 interprets Int32 - Int32 interprets Int32 + Int32 interprets Int32 + Int32 discards math discards math interprets UInt64 * Int32 interprets UInt64 * Int32 interprets Int32 &- Int32 interprets Int32 &- Int32 Semantic: NoReturn computes NoReturn in a lazy way inside if then (#314) (4) computes NoReturn in a lazy way inside if then (#314) (4) computes NoReturn in a lazy way inside if then (#314) (1) computes NoReturn in a lazy way inside if then (#314) (1) computes NoReturn in a lazy way inside if then (#314) (3) computes NoReturn in a lazy way inside if then (#314) (3) types union of NoReturn and something else types union of NoReturn and something else computes NoReturn in a lazy way inside if else (#314) (4) computes NoReturn in a lazy way inside if else (#314) (4) computes NoReturn in a lazy way inside if else (#314) (3) computes NoReturn in a lazy way inside if else (#314) (3) computes NoReturn in a lazy way inside if then (#314) (5) computes NoReturn in a lazy way inside if then (#314) (5) types as NoReturn even if Nil return type is forced (#3096) types as NoReturn even if Nil return type is forced (#3096) computes NoReturn in a lazy way inside if else (#314) (1) computes NoReturn in a lazy way inside if else (#314) (1) types as NoReturn if typeof(exp)'s exp is NoReturn types as NoReturn if typeof(exp)'s exp is NoReturn assumes if condition's type filters when else is no return assumes if condition's type filters when else is no return types call to LibC.exit as NoReturn types call to LibC.exit as NoReturn types exception handler as NoReturn if ensure is NoReturn types exception handler as NoReturn if ensure is NoReturn types with no return even if code follows types with no return even if code follows types union of NoReturns types union of NoReturns computes NoReturn in a lazy way inside if then (#314) (2) computes NoReturn in a lazy way inside if then (#314) (2) computes NoReturn in a lazy way inside if else (#314) (5) computes NoReturn in a lazy way inside if else (#314) (5) computes NoReturn in a lazy way inside if else (#314) (2) computes NoReturn in a lazy way inside if else (#314) (2) types raise as NoReturn types raise as NoReturn Code gen: hash literal spec creates custom generic hash via alias (1) creates custom generic hash via alias (1) assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works assignment in hash-like literal works creates custom generic hash in module (#5684) creates custom generic hash in module (#5684) creates custom generic hash with type vars creates custom generic hash with type vars doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) doesn't crash on hash literal with proc pointer (#646) creates custom non-generic hash creates custom non-generic hash assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works assignment in hash literal works creates custom generic hash creates custom generic hash creates custom generic hash via alias (2) creates custom generic hash via alias (2) creates custom non-generic hash in module creates custom non-generic hash in module unreachable finds instance methods finds instance methods finds method called from expanded macro finds method called from expanded macro finds instance methods in nested types finds instance methods in nested types finds method with `previous_def` finds method with `previous_def` finds method called from expanded macro expression finds method called from expanded macro expression finds top level methods finds top level methods finds initializer finds initializer ignores autogenerated enum predicates ignores autogenerated enum predicates finds method called from block finds method called from block finds class methods finds class methods finds method with `super` finds method with `super` handles circular hierarchy references (#14034) handles circular hierarchy references (#14034) finds abstract method finds abstract method finds virtual method finds virtual method finds method called from proc finds method called from proc tallies calls tallies calls finds shadowed method finds shadowed method finds yielding methods finds yielding methods finds methods called from reachable code finds methods called from reachable code finds method called from instance variable initializer finds method called from instance variable initializer finds method in abstract type finds method in abstract type finds methods with proc parameter finds methods with proc parameter finds method with free variable finds method with free variable finds methods in generic type finds methods in generic type Code gen: experimental errors if too many arguments errors if too many arguments compiles with single string argument compiles with single string argument errors if missing link arguments errors if missing link arguments compiles with no argument compiles with no argument errors if invalid argument type errors if invalid argument type Crystal::Repl::Interpreter structs does call receiver by value from VirtualType abstract struct to union does call receiver by value from VirtualType abstract struct to union does constructor does constructor discards allocate discards allocate does allocate, set instance var and get instance var does allocate, set instance var and get instance var mutates struct inside union mutates struct inside union interprets read instance var of struct interprets read instance var of struct inlines struct method that returns self (#12253) inlines struct method that returns self (#12253) does complex class instance var initializer does complex class instance var initializer does simple class instance var initializer does simple class instance var initializer does class instance var initializer inheritance does class instance var initializer inheritance does call receiver by value from VirtualType abstract struct to concrete struct (#12190) does call receiver by value from VirtualType abstract struct to concrete struct (#12190) sets multiple instance vars in virtual abstract struct call (#12187) sets multiple instance vars in virtual abstract struct call (#12187) does simple struct instance var initializer does simple struct instance var initializer mutates struct stored in class var mutates struct stored in class var casts def body to def type casts def body to def type Codegen: private doesn't include filename for private types doesn't include filename for private types codegens private def in same file codegens private def in same file codegens class vars of private types with same name (#11620) codegens class vars of private types with same name (#11620) codegens class var of private type with same name as public type (#11620) codegens class var of private type with same name as public type (#11620) codegens overloaded private def in same file codegens overloaded private def in same file Semantic: const types a nested constant types a nested constant finds current type only for first path item (2) finds current type only for first path item (2) types a nested type with same name types a nested type with same name doesn't error if using c enum doesn't error if using c enum doesn't errors if constant depends on another one defined later through method, but constant is simple (~ 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (~ 2) errors on dynamic constant assignment inside block errors on dynamic constant assignment inside block doesn't errors if constant depends on another one defined later through method, but constant is simple (- 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (- 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED &- 1) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED &- 1) errors if using const in proc notation parameter type errors if using const in proc notation parameter type types a constant using Path types a constant using Path errors if constant has NoReturn type (#6139) errors if constant has NoReturn type (#6139) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED - 1) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED - 1) doesn't errors if constant depends on another one defined later through method, but constant is simple (1 + ZED) doesn't errors if constant depends on another one defined later through method, but constant is simple (1 + ZED) errors if using const in restriction errors if using const in restriction creates container module if not exist when using Path creates container module if not exist when using Path finds current type before parents (#4086) finds current type before parents (#4086) finds current type first finds current type first types a nested constant using Path types a nested constant using Path doesn't errors if constant depends on another one defined later through method, but constant is simple (+ 1) doesn't errors if constant depends on another one defined later through method, but constant is simple (+ 1) errors if can't infer constant type (#3240, #3948) errors if can't infer constant type (#3240, #3948) doesn't crash with const used in initialize (bug) doesn't crash with const used in initialize (bug) doesn't count parent types as current type doesn't count parent types as current type finds nearest constant first finds nearest constant first doesn't errors if constant depends on another one defined later through method, but constant is simple (true) doesn't errors if constant depends on another one defined later through method, but constant is simple (true) doesn't errors if constant depends on another one defined later through method, but constant is simple (1) doesn't errors if constant depends on another one defined later through method, but constant is simple (1) errors if using const in type declaration errors if using const in type declaration types a constant reference types a constant reference errors if using const in uninitialized errors if using const in uninitialized doesn't errors if constant depends on another one defined later through method, but constant is simple (1 &+ ZED) doesn't errors if constant depends on another one defined later through method, but constant is simple (1 &+ ZED) finds constant in module that includes module (#205) finds constant in module that includes module (#205) doesn't errors if constant depends on another one defined later through method, but constant is simple (1 + 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (1 + 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED &* 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED &* 2) doesn't errors if constant depends on another one defined later through method, but constant is simple ("foo") doesn't errors if constant depends on another one defined later through method, but constant is simple ("foo") doesn't errors if constant depends on another one defined later through method, but constant is simple (nil) doesn't errors if constant depends on another one defined later through method, but constant is simple (nil) doesn't errors if constant depends on another one defined later through method, but constant is simple ('a') doesn't errors if constant depends on another one defined later through method, but constant is simple ('a') doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED * 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED * 2) types a global constant reference in method types a global constant reference in method can use constant defined later (#2906) can use constant defined later (#2906) types a global constant reference in static method types a global constant reference in static method types a constant inside a def types a constant inside a def errors if using return inside constant value (#5391) errors if using return inside constant value (#5391) errors on dynamic constant assignment inside if errors on dynamic constant assignment inside if keeps type of container when using Path keeps type of container when using Path errors if using const in proc notation return type errors if using const in proc notation return type finds const from restriction finds const from restriction finds constant in class that extends class (#205) finds constant in class that extends class (#205) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED // 2) doesn't errors if constant depends on another one defined later through method, but constant is simple (ZED // 2) errors if using const in var declaration errors if using const in var declaration errors if using constant as generic type (#3240) errors if using constant as generic type (#3240) doesn't share variables with global scope doesn't share variables with global scope types a constant types a constant finds current type only for first path item (1) finds current type only for first path item (1) Semantic: def overload matches a generic module argument with free var matches a generic module argument with free var filter union type with virtual filter union type with virtual matches on partial union matches on partial union does not consider global paths as free variables (2) does not consider global paths as free variables (2) treats single splats with same restriction as equivalent (2) (#12579) treats single splats with same restriction as equivalent (2) (#12579) types a call with overload self in included module other type types a call with overload self in included module other type types a call with overload Object type first overload types a call with overload Object type first overload matches a union argument with free var matches a union argument with free var compare self type with others compare self type with others says `no overload matches` instead of `can't instantiate abstract class` on wrong argument in new method says `no overload matches` instead of `can't instantiate abstract class` on wrong argument in new method lookup matches in virtual type inside union lookup matches in virtual type inside union uses long name when no overload matches and name is the same (#1030) uses long name when no overload matches and name is the same (#1030) types a call with overload self types a call with overload self types a call with overload with yield the other way types a call with overload with yield the other way errors when binding free variable to different types (2) errors when binding free variable to different types (2) types a call with overload type first overload types a call with overload type first overload doesn't match tuples of different sizes doesn't match tuples of different sizes matches types with free variables matches types with free variables accepts overload with nilable type restriction accepts overload with nilable type restriction can call overload with generic restriction can call overload with generic restriction errors if union restriction has multiple free vars errors if union restriction has multiple free vars prefers more specific overload than one with free variables prefers more specific overload than one with free variables dispatches with named arg dispatches with named arg gets free variable from union restriction without a union gets free variable from union restriction without a union matches a generic module argument matches a generic module argument restrict matches to minimum necessary 1 restrict matches to minimum necessary 1 compare_strictness subsumption conflicts named vs named named vs named single splat vs named single splat vs named single splat vs double splat single splat vs double splat positional vs positional positional vs positional named vs double splat named vs double splat positional vs named positional vs named positional vs single splat positional vs single splat positional vs double splat positional vs double splat specificity conflicts, named vs named (required > optional) vs (required > optional) (required > optional) vs (required > optional) (required > splat) vs (optional > splat) (required > splat) vs (optional > splat) (required > splat) vs (required > splat) (required > splat) vs (required > splat) (optional > splat) vs (optional > splat) (optional > splat) vs (optional > splat) (required > optional) vs (optional > splat) (required > optional) vs (optional > splat) (required > optional) vs (required > splat) (required > optional) vs (required > splat) specificity conflicts, positional vs named (required > splat) vs (required > optional) (required > splat) vs (required > optional) (optional > splat) vs (optional > splat) (optional > splat) vs (optional > splat) (required > optional) vs (optional > splat) (required > optional) vs (optional > splat) (required > splat) vs (required > splat) (required > splat) vs (required > splat) (required > optional) vs (required > splat) (required > optional) vs (required > splat) (required > splat) vs (optional > splat) (required > splat) vs (optional > splat) (required > optional) vs (required > optional) (required > optional) vs (required > optional) (optional > splat) vs (required > optional) (optional > splat) vs (required > optional) (optional > splat) vs (required > splat) (optional > splat) vs (required > splat) named parameters named parameter with restriction vs double splat with stricter restriction named parameter with restriction vs double splat with stricter restriction named parameter with stricter restriction vs double splat with restriction named parameter with stricter restriction vs double splat with restriction named parameter vs double splat with restriction named parameter vs double splat with restriction named parameter with restriction vs double splat (#5328) named parameter with restriction vs double splat (#5328) double splat restriction vs double splat with stricter restriction double splat restriction vs double splat with stricter restriction double splat vs double splat with restriction double splat vs double splat with restriction specificity specificity positional parameters positional parameter vs single splat with restriction positional parameter vs single splat with restriction specificity specificity single splat restriction vs single splat with stricter restriction single splat restriction vs single splat with stricter restriction positional parameter with restriction vs single splat with stricter restriction positional parameter with restriction vs single splat with stricter restriction positional parameter with stricter restriction vs single splat with restriction positional parameter with stricter restriction vs single splat with restriction positional parameter with restriction vs single splat positional parameter with restriction vs single splat single splat vs single splat with restriction (#3134) single splat vs single splat with restriction (#3134) subsumption has higher precedence over specificity same positional parameter, optional > single splat same positional parameter, optional > single splat named vs (required positional > optional positional) named vs (required positional > optional positional) named vs (optional named > double splat) named vs (optional named > double splat) single splat vs (optional named > double splat) single splat vs (optional named > double splat) positional vs (optional named > double splat) positional vs (optional named > double splat) positional vs (optional positional > single splat) positional vs (optional positional > single splat) same positional parameter, required > single splat same positional parameter, required > single splat same named parameter, required > double splat same named parameter, required > double splat positional vs (required positional > optional positional) positional vs (required positional > optional positional) single splat vs (required named > double splat) single splat vs (required named > double splat) double splat vs (required positional > single splat) double splat vs (required positional > single splat) double splat vs (required positional > optional positional) double splat vs (required positional > optional positional) single splat vs (required named > optional named) single splat vs (required named > optional named) positional vs (required positional > single splat) positional vs (required positional > single splat) positional vs (required named > optional named) positional vs (required named > optional named) double splat vs (optional positional > single splat) double splat vs (optional positional > single splat) same named parameter, optional > double splat same named parameter, optional > double splat named vs (required positional > single splat) named vs (required positional > single splat) named vs (required named > optional named) named vs (required named > optional named) positional vs (required named > double splat) positional vs (required named > double splat) named vs (optional positional > single splat) named vs (optional positional > single splat) named vs (required named > double splat) named vs (required named > double splat) same positional parameter, required > optional same positional parameter, required > optional same named parameter, required > optional same named parameter, required > optional types a call with overload self in included module types a call with overload self in included module includes splat symbol in error message includes splat symbol in error message resets free vars after a partial match is rejected (#10270) resets free vars after a partial match is rejected (#10270) restrict virtual type with virtual type restrict virtual type with virtual type types a call with overload types a call with overload types a call with overload selecting the most restrictive types a call with overload selecting the most restrictive uses method defined in base class if the restriction doesn't match uses method defined in base class if the restriction doesn't match overloads on metaclass (#2916) overloads on metaclass (#2916) matches a union argument with free var, more types (1) matches a union argument with free var, more types (1) matches tuples and uses free var matches tuples and uses free var types a call with overload selecting the most restrictive 2 types a call with overload selecting the most restrictive 2 matches virtual type to union matches virtual type to union types a call with overload matches virtual 2 types a call with overload matches virtual 2 does not consider global paths as free variables (1) does not consider global paths as free variables (1) matches tuples of different sizes matches tuples of different sizes can call overload with aliased generic restriction can call overload with aliased generic restriction gets free variable from union restriction gets free variable from union restriction matches a generic module argument with free var (2) matches a generic module argument with free var (2) gives correct error message, looking up parent defs, when no overload matches gives correct error message, looking up parent defs, when no overload matches types a call with overload self with inherited type types a call with overload self with inherited type overloads with named argument (#4465) overloads with named argument (#4465) restricts union to generic class restricts union to generic class overloads union against non-union (#2904) overloads union against non-union (#2904) types a call with overload with yield after typing another call without yield types a call with overload with yield after typing another call without yield types a call with overload matches virtual 3 types a call with overload matches virtual 3 restricts on generic type without type arg restricts on generic type without type arg gets free variable from union restriction (2) gets free variable from union restriction (2) resets free vars after a partial match is rejected (2) (#10185) resets free vars after a partial match is rejected (2) (#10185) doesn't match with wrong number of type arguments (#313) doesn't match with wrong number of type arguments (#313) types a call with overload type second overload types a call with overload type second overload errors if no overload matches on union against named arg with external param name (#10516) errors if no overload matches on union against named arg with external param name (#10516) finds method after including module in generic module (#1201) finds method after including module in generic module (#1201) treats single splats with same restriction as equivalent (#12579) treats single splats with same restriction as equivalent (#12579) errors when binding free variable to different types errors when binding free variable to different types gives better error message with consecutive arguments sizes gives better error message with consecutive arguments sizes doesn't crash on unknown metaclass doesn't crash on unknown metaclass dispatch call to def with restrictions dispatch call to def with restrictions considers NamedTuple in a module's including types (#10380) considers NamedTuple in a module's including types (#10380) overloads on metaclass (2) (#2916) overloads on metaclass (2) (#2916) types a call with overload matches virtual types a call with overload matches virtual matches a union metaclass argument with free var (#8071) matches a union metaclass argument with free var (#8071) single type restriction wins over union single type restriction wins over union types a call with overload with yield types a call with overload with yield matches tuple with underscore matches tuple with underscore matches a union argument with free var, more types (2) matches a union argument with free var, more types (2) types a call with overload self other match types a call with overload self other match errors if generic type doesn't match errors if generic type doesn't match reports no overload matches with correct method owner (#2083) reports no overload matches with correct method owner (#2083) errors if union restriction has multiple free vars (2) errors if union restriction has multiple free vars (2) dispatch call to def with restrictions dispatch call to def with restrictions errors if no overload matches on union against named arg (#2640) errors if no overload matches on union against named arg (#2640) overloads on metaclass (3) (#2916) overloads on metaclass (3) (#2916) matches generic class instance type with another one matches generic class instance type with another one restricts on generic type with free type arg restricts on generic type with free type arg Parser parses "foo.responds_to? :foo" parses "foo.responds_to? :foo" parses ":foo" parses ":foo" parses "x = 1; foo x { }" parses "x = 1; foo x { }" parses "foo &.[0] = 1" parses "foo &.[0] = 1" parses "a : Foo()*" parses "a : Foo()*" parses "def self.===; end;" parses "def self.===; end;" parses "-@foo" parses "-@foo" parses "case :foo; when :bar; 2; end" parses "case :foo; when :bar; 2; end" parses "Set() {1, 2, 3}" parses "Set() {1, 2, 3}" says syntax error on "def foo\nabstract\nend" says syntax error on "def foo\nabstract\nend" parses "{% begin %}%i{ %s }{% end %}" parses "{% begin %}%i{ %s }{% end %}" parses "a = 1\ncase 1\nwhen a then 1\nend" parses "a = 1\ncase 1\nwhen a then 1\nend" parses "property lib : Int32" parses "property lib : Int32" parses "a, *b = 1" parses "a, *b = 1" parses "foo.==(1, 2)" parses "foo.==(1, 2)" parses "def foo(@@var); 1; end" parses "def foo(@@var); 1; end" parses "break 1 if true" parses "break 1 if true" parses "foo.<(1, 2)" parses "foo.<(1, 2)" parses "foo(&.as(T))" parses "foo(&.as(T))" parses ":\"\\\"foo\"" parses ":\"\\\"foo\"" parses ":&**" parses ":&**" sets correct location of global path in annotation sets correct location of global path in annotation says syntax error on "def foo(self); end" says syntax error on "def foo(self); end" parses "Int[8, 4,]" parses "Int[8, 4,]" says syntax error on "break ? 1 : 2" says syntax error on "break ? 1 : 2" says syntax error on "def foo(foo private); end" says syntax error on "def foo(foo private); end" parses "\"hello \\\n world\"" parses "\"hello \\\n world\"" parses ":>" parses ":>" parses "if (\ntrue\n)\n1\nend" parses "if (\ntrue\n)\n1\nend" parses "def self./; end;" parses "def self./; end;" parses "{% begin %}%Q< %s >{% end %}" parses "{% begin %}%Q< %s >{% end %}" parses "/foo/imximx" parses "/foo/imximx" parses "foo[\n1\n]" parses "foo[\n1\n]" says syntax error on "foo { |(false)| }" says syntax error on "foo { |(false)| }" parses "{\"foo\": 1, \"bar\": 2}" parses "{\"foo\": 1, \"bar\": 2}" parses "Foo(T, 1, U)" parses "Foo(T, 1, U)" says syntax error on "pointerof(self)" says syntax error on "pointerof(self)" parses "1 <= 2" parses "1 <= 2" parses "foo(z: 0, a: n &** 2)" parses "foo(z: 0, a: n &** 2)" parses "def !=; end;" parses "def !=; end;" parses "def foo(x @@end); end" parses "def foo(x @@end); end" says syntax error on "*a, b, c, d, e = 1, 2" says syntax error on "*a, b, c, d, e = 1, 2" says syntax error on "macro foo(x y z); end" says syntax error on "macro foo(x y z); end" parses "foo 1;" parses "foo 1;" parses "+ 1" parses "+ 1" says syntax error on "def foo(unless); end" says syntax error on "def foo(unless); end" parses "{% begin %}%w[ %s ]{% end %}" parses "{% begin %}%w[ %s ]{% end %}" parses "x[0] ? 1 : 0" parses "x[0] ? 1 : 0" parses "macro foo; 1 + 2; end" parses "macro foo; 1 + 2; end" parses "def foo(\nvar\n); end" parses "def foo(\nvar\n); end" parses "foo(z: 0, a: n >> 2)" parses "foo(z: 0, a: n >> 2)" parses "def foo(x @@lib); end" parses "def foo(x @@lib); end" parses "@[Foo(\n1, foo: 2\n)]" parses "@[Foo(\n1, foo: 2\n)]" says syntax error on "def foo(**a foo); end" says syntax error on "def foo(**a foo); end" parses "foo.=== do end" parses "foo.=== do end" parses "{% begin %}%i[ %s ]{% end %}" parses "{% begin %}%i[ %s ]{% end %}" parses "foo { |(_, c)| c }" parses "foo { |(_, c)| c }" parses "foo.< do end" parses "foo.< do end" parses "foo = 1; ->foo.>(Int32)" parses "foo = 1; ->foo.>(Int32)" parses "foo.^(1, 2) { 3 }" parses "foo.^(1, 2) { 3 }" parses "macro foo;unless %var;true;end;end" parses "macro foo;unless %var;true;end;end" parses "foo.- do end" parses "foo.- do end" parses "foo &.each {\n}" parses "foo &.each {\n}" parses "/fo\\so/" parses "/fo\\so/" parses "def self.&(); end;" parses "def self.&(); end;" says syntax error on "def foo(macro); end" says syntax error on "def foo(macro); end" says syntax error on "foo { |(require)| }" says syntax error on "foo { |(require)| }" says syntax error on "1 while 3" says syntax error on "1 while 3" parses "{{ foo.nil? }}" parses "{{ foo.nil? }}" parses "nil : Int32" parses "nil : Int32" parses "def foo(x @if); end" parses "def foo(x @if); end" parses "1.foo do; 1; end" parses "1.foo do; 1; end" parses "*a = 1" parses "*a = 1" parses "def foo(x = 1, *y); 1; end" parses "def foo(x = 1, *y); 1; end" parses "def =~; end" parses "def =~; end" says syntax error on "<<-HERE\n One\n wrong\n Zero\n HERE" says syntax error on "<<-HERE\n One\n wrong\n Zero\n HERE" parses "class Foo(T1); end" parses "class Foo(T1); end" parses "def foo;{{@type}};end" parses "def foo;{{@type}};end" parses "foo.+(1, 2)" parses "foo.+(1, 2)" parses "fun foo : Int32; 1; end; 2" parses "fun foo : Int32; 1; end; 2" parses "macro foo\n'\\''\nend" parses "macro foo\n'\\''\nend" parses "when : Int32" parses "when : Int32" parses "-1" parses "-1" parses "{%\na = 1\n%}" parses "{%\na = 1\n%}" parses "macro &;end" parses "macro &;end" parses "Foo({x: X, typeof: Y})" parses "Foo({x: X, typeof: Y})" parses "lib LibC; {{ 1 }}; end" parses "lib LibC; {{ 1 }}; end" says syntax error on "macro foo(**x, y)" says syntax error on "macro foo(**x, y)" parses "as(Bar)" parses "as(Bar)" parses "macro foo(a, @[Foo] var);end" parses "macro foo(a, @[Foo] var);end" says syntax error on "case 1 == 1; when 2 a; end" says syntax error on "case 1 == 1; when 2 a; end" parses "{% x if 1 %}" parses "{% x if 1 %}" parses "1;-2" parses "1;-2" parses "def foo(x @until); end" parses "def foo(x @until); end" parses "enum Foo; @[Bar]; end" parses "enum Foo; @[Bar]; end" parses "lib LibC\nfun SomeFun\nend" parses "lib LibC\nfun SomeFun\nend" says syntax error on "foo { |yield| }" says syntax error on "foo { |yield| }" parses "1 ^ 2" parses "1 ^ 2" says syntax error on "Hash {foo: 1} of Int32 => Int32" says syntax error on "Hash {foo: 1} of Int32 => Int32" says syntax error on "return[0]" says syntax error on "return[0]" sets correct location of annotation in lib sets correct location of annotation in lib parses "->Foo.foo?" parses "->Foo.foo?" parses "macro : Int32" parses "macro : Int32" parses "begin; 1; rescue ::Foo; 2; end" parses "begin; 1; rescue ::Foo; 2; end" parses "extend self" parses "extend self" parses "foo.>" parses "foo.>" parses "macro foo(x, *y);end" parses "macro foo(x, *y);end" parses "1.as Bar" parses "1.as Bar" says syntax error on "class Foo(T U)" says syntax error on "class Foo(T U)" parses "sizeof(X)" parses "sizeof(X)" says syntax error on "a, b, c, d, *e = 1, 2, 3" says syntax error on "a, b, c, d, *e = 1, 2, 3" parses "1 +2.0" parses "1 +2.0" parses "def foo(@end); end" parses "def foo(@end); end" parses "macro foo;bar{% if x %}body{% end %}baz;end" parses "macro foo;bar{% if x %}body{% end %}baz;end" parses "<<-HERE\n \#{1}One\n \#{2}Zero\n HERE" parses "<<-HERE\n \#{1}One\n \#{2}Zero\n HERE" parses "def self.=~; end;" parses "def self.=~; end;" parses "def foo(x, *, y); 1; end" parses "def foo(x, *, y); 1; end" parses "&+ 1" parses "&+ 1" parses "abstract def foo : Int32" parses "abstract def foo : Int32" says syntax error on "macro is_a?; end" says syntax error on "macro is_a?; end" parses "def foo(a, &block : Int, Float -> Double); end" parses "def foo(a, &block : Int, Float -> Double); end" parses "@foo/2" parses "@foo/2" parses "property require : Int32" parses "property require : Int32" says syntax error on "return << 1" says syntax error on "return << 1" parses "->Foo.===(Int32)" parses "->Foo.===(Int32)" parses "lib LibC; struct Foo; {% if 1 %}2{% end %}; end; end" parses "lib LibC; struct Foo; {% if 1 %}2{% end %}; end; end" says syntax error on "macro foo.bar;end" says syntax error on "macro foo.bar;end" parses "property macro : Int32" parses "property macro : Int32" parses "1 !~ 2" parses "1 !~ 2" says syntax error on "foo { |select| }" says syntax error on "foo { |select| }" parses "alias : Int32" parses "alias : Int32" parses "a = 1; a &+= 1" parses "a = 1; a &+= 1" parses "[] of ->\n1" parses "[] of ->\n1" parses "macro %;end" parses "macro %;end" parses ":[]?" parses ":[]?" parses "def foo(@@true); end" parses "def foo(@@true); end" says syntax error on "break when true" says syntax error on "break when true" says syntax error on "A = foo { B = 1 }" says syntax error on "A = foo { B = 1 }" parses "begin\n1\nend\nif true; end" parses "begin\n1\nend\nif true; end" parses "foo.=~ 1, 2" parses "foo.=~ 1, 2" parses "foo %i" parses "foo %i" says syntax error on "return - 1" says syntax error on "return - 1" says syntax error on "def as; end" says syntax error on "def as; end" parses "foo = 1; ->foo.foo=" parses "foo = 1; ->foo.foo=" parses "<<-HERE\r\n One\r\n Zero\r\n HERE" parses "<<-HERE\r\n One\r\n Zero\r\n HERE" parses "foo./(1, 2) { 3 }" parses "foo./(1, 2) { 3 }" parses "foo +1.0" parses "foo +1.0" parses "def &(); end" parses "def &(); end" says syntax error on "foo { |(case)| }" says syntax error on "foo { |(case)| }" parses "def &; end;" parses "def &; end;" parses "-> do; 1; rescue; 2; end" parses "-> do; 1; rescue; 2; end" parses "def ^(); end;" parses "def ^(); end;" says syntax error on "foo { |pointerof| }" says syntax error on "foo { |pointerof| }" parses "select\nwhen foo\n2\nwhen bar\n4\nend" parses "select\nwhen foo\n2\nwhen bar\n4\nend" parses "foo = 1; ->foo.-(Int32)" parses "foo = 1; ->foo.-(Int32)" parses "case : Int32" parses "case : Int32" parses "lib LibC; struct Foo; end end" parses "lib LibC; struct Foo; end end" parses "def foo(def foo); end" parses "def foo(def foo); end" parses "def foo(select foo); end" parses "def foo(select foo); end" says syntax error on "def foo(instance_sizeof); end" says syntax error on "def foo(instance_sizeof); end" parses "::A::B" parses "::A::B" parses "case\nend" parses "case\nend" parses "1 || 2" parses "1 || 2" says syntax error on "def foo(x y, x z); end" says syntax error on "def foo(x y, x z); end" parses "foo.<=" parses "foo.<=" parses "foo.*(1, 2)" parses "foo.*(1, 2)" parses "{1 =>\n2, 3 =>\n4}" parses "{1 =>\n2, 3 =>\n4}" parses ":<=>" parses ":<=>" parses "def : Int32" parses "def : Int32" parses "def foo(@private); end" parses "def foo(@private); end" parses "def foo(@lib); end" parses "def foo(@lib); end" parses "`foo\#{1}bar`" parses "`foo\#{1}bar`" says syntax error on "foo(&block) {}" says syntax error on "foo(&block) {}" says syntax error on "foo { |class| }" says syntax error on "foo { |class| }" parses "a = 1; a[2] ||= 3" parses "a = 1; a[2] ||= 3" parses "yield : Int32" parses "yield : Int32" says syntax error on "a = 1; b = 2; a, b += 1, 2" says syntax error on "a = 1; b = 2; a, b += 1, 2" parses "def ~(); end;" parses "def ~(); end;" says syntax error on "def foo(foo abstract); end" says syntax error on "def foo(foo abstract); end" says syntax error on "foo { |lib| }" says syntax error on "foo { |lib| }" says syntax error on "foo { |offsetof| }" says syntax error on "foo { |offsetof| }" parses "a ? 1 : b ? 2 : c ? 3 : 0" parses "a ? 1 : b ? 2 : c ? 3 : 0" parses "macro !=;end" parses "macro !=;end" parses "property return : Int32" parses "property return : Int32" parses "case 1\nelse\n2\nend" parses "case 1\nelse\n2\nend" parses "begin; 1; rescue ex; 2; end" parses "begin; 1; rescue ex; 2; end" parses "module Foo(T); end" parses "module Foo(T); end" parses "def foo(lib foo); end" parses "def foo(lib foo); end" parses "1 > 2" parses "1 > 2" says syntax error on "<<-HERE\n One\nwrong\n Zero\n HERE" says syntax error on "<<-HERE\n One\nwrong\n Zero\n HERE" sets correct location of tuple type sets correct location of tuple type parses "def foo(@instance_sizeof); end" parses "def foo(@instance_sizeof); end" parses "begin; / /; end" parses "begin; / /; end" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2) : \"eax\", \"ebx\" : \"volatile\", \"alignstack\", \"intel\")" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2) : \"eax\", \"ebx\" : \"volatile\", \"alignstack\", \"intel\")" parses "def foo(abstract foo); end" parses "def foo(abstract foo); end" parses "enum Foo : UInt16; end" parses "enum Foo : UInt16; end" says syntax error on "def foo(foo break); end" says syntax error on "def foo(foo break); end" parses "def self.~; end;" parses "def self.~; end;" says syntax error on "a.b() = 1" says syntax error on "a.b() = 1" parses "foo.+ 1, 2" parses "foo.+ 1, 2" parses "def foo; yield(1); end" parses "def foo; yield(1); end" parses "1 / -2" parses "1 / -2" parses "foo a, / /" parses "foo a, / /" parses "1 +2_i64" parses "1 +2_i64" parses "foo %q()" parses "foo %q()" says syntax error on "<<-FOO\n1\nFOO + 2" says syntax error on "<<-FOO\n1\nFOO + 2" parses "n >= 2" parses "n >= 2" parses "`foo`" parses "`foo`" parses "foo.!~ 1, 2" parses "foo.!~ 1, 2" parses "def []=(*args, **opts, &); end" parses "def []=(*args, **opts, &); end" parses "call(foo : A, end : B)" parses "call(foo : A, end : B)" says syntax error on "case 1\nin 1; 2" says syntax error on "case 1\nin 1; 2" says syntax error on "case 1\nin Int32; 2; when 2" says syntax error on "case 1\nin Int32; 2; when 2" says syntax error on "@@foo :: Foo" says syntax error on "@@foo :: Foo" parses "def foo(@nil); end" parses "def foo(@nil); end" parses "a : Foo" parses "a : Foo" parses "def foo(return foo); end" parses "def foo(return foo); end" parses "def foo(@return); end" parses "def foo(@return); end" parses "def self.^(); end;" parses "def self.^(); end;" parses "[1, 2] of Int" parses "[1, 2] of Int" says syntax error on "Foo(T, x: U)" says syntax error on "Foo(T, x: U)" parses "def foo(fun foo); end" parses "def foo(fun foo); end" parses "puts %w{one two}" parses "puts %w{one two}" parses "a = 1; a >>=\n1" parses "a = 1; a >>=\n1" parses "class Foo\ndef foo; end; end" parses "class Foo\ndef foo; end; end" parses "macro foo(a, @[Foo] &block);end" parses "macro foo(a, @[Foo] &block);end" parses "def self.&; end;" parses "def self.&; end;" parses "def foo(x @@offsetof); end" parses "def foo(x @@offsetof); end" says syntax error on "a {} = 1" says syntax error on "a {} = 1" says syntax error on "def foo(fun); end" says syntax error on "def foo(fun); end" says syntax error on "next + 1" says syntax error on "next + 1" parses "asm(\"nop\" ::)" parses "asm(\"nop\" ::)" parses "->(x : Int32) : Int32 { }" parses "->(x : Int32) : Int32 { }" parses "def <(); end;" parses "def <(); end;" parses "asm(\"nop\" ::::)" parses "asm(\"nop\" ::::)" parses "x, y, z = <<-FOO, <<-BAR, <<-BAZ\nhello\nFOO\nworld\nBAR\n!\nBAZ" parses "x, y, z = <<-FOO, <<-BAR, <<-BAZ\nhello\nFOO\nworld\nBAR\n!\nBAZ" says syntax error on "def foo(x : U) forall U,; end" says syntax error on "def foo(x : U) forall U,; end" parses "foo.> 1, 2" parses "foo.> 1, 2" says syntax error on "a.[]() += 1" says syntax error on "a.[]() += 1" parses "nil" parses "nil" parses "foo % i()" parses "foo % i()" parses "foo[0] = 1" parses "foo[0] = 1" parses "a.foo(&block)" parses "a.foo(&block)" parses "property sizeof : Int32" parses "property sizeof : Int32" parses "foo(n > 2)" parses "foo(n > 2)" parses "property fun : Int32" parses "property fun : Int32" parses "foo(a: n &** 2)" parses "foo(a: n &** 2)" parses "def []?; end" parses "def []?; end" parses "def foo(@@protected); end" parses "def foo(@@protected); end" parses "def foo(x @@abstract); end" parses "def foo(x @@abstract); end" parses "def foo(@def); end" parses "def foo(@def); end" parses "foo { |(a, *b, c)| }" parses "foo { |(a, *b, c)| }" parses "def foo(x @yield); end" parses "def foo(x @yield); end" parses "def -; end;" parses "def -; end;" parses "foo(0, n == 2)" parses "foo(0, n == 2)" parses "protected def foo; end" parses "protected def foo; end" parses "foo { |(a, (b, (c, d)))| }" parses "foo { |(a, (b, (c, d)))| }" parses "def foo(@@next); end" parses "def foo(@@next); end" parses "x.foo(a: 1, b: 2)" parses "x.foo(a: 1, b: 2)" parses "foo.==(1, 2) { 3 }" parses "foo.==(1, 2) { 3 }" parses "%q{hello \#{foo} world}" parses "%q{hello \#{foo} world}" says syntax error on "foo(foo(&.block)" says syntax error on "foo(foo(&.block)" parses "Foo(X, instance_sizeof(Int32))" parses "Foo(X, instance_sizeof(Int32))" parses "A = 1" parses "A = 1" parses "fun : Int32" parses "fun : Int32" says syntax error on "next === 1" says syntax error on "next === 1" parses "def |; end;" parses "def |; end;" parses "foo(0, n > 2)" parses "foo(0, n > 2)" parses "def foo(@@def); end" parses "def foo(@@def); end" parses "yield if true" parses "yield if true" parses "foo.=~(1, 2)" parses "foo.=~(1, 2)" parses "Foo(T?)" parses "Foo(T?)" parses "n ** 2" parses "n ** 2" parses "Foo(_)" parses "Foo(_)" parses "begin\n1\nensure\n2\nend" parses "begin\n1\nensure\n2\nend" says syntax error on "{a: 1, \"\": 2}" says syntax error on "{a: 1, \"\": 2}" parses "@[Foo(1, foo: 2)]" parses "@[Foo(1, foo: 2)]" says syntax error on "def foo(class); end" says syntax error on "def foo(class); end" says syntax error on "alias Foo?" says syntax error on "alias Foo?" parses "foo.>= do end" parses "foo.>= do end" parses "foo 1, **bar" parses "foo 1, **bar" parses "1 &* 2" parses "1 &* 2" parses "foo(0, n ^ 2)" parses "foo(0, n ^ 2)" parses "a = 1\nfoo -a" parses "a = 1\nfoo -a" parses "Set(Int32) {1, 2, 3}" parses "Set(Int32) {1, 2, 3}" parses "[\n1\n]" parses "[\n1\n]" parses "foo(a: n >> 2)" parses "foo(a: n >> 2)" parses "def foo; a; end" parses "def foo; a; end" parses "def foo(macro foo); end" parses "def foo(macro foo); end" says syntax error on "def foo(foo next); end" says syntax error on "def foo(foo next); end" parses "->@foo.foo" parses "->@foo.foo" parses "T/1" parses "T/1" parses ":===" parses ":===" parses "+1.0" parses "+1.0" parses "->foo!" parses "->foo!" parses "<<-'EOF'.x\n foo\nEOF" parses "<<-'EOF'.x\n foo\nEOF" parses "@[Foo()]" parses "@[Foo()]" parses "extend Foo" parses "extend Foo" says syntax error on "def foo(**args = 1); end" says syntax error on "def foo(**args = 1); end" parses "->@@foo.foo" parses "->@@foo.foo" parses "def foo(a, &block : -> Double); end" parses "def foo(a, &block : -> Double); end" parses "def foo(@@select); end" parses "def foo(@@select); end" parses "begin; 1; rescue; 2; else; 3; end" parses "begin; 1; rescue; 2; else; 3; end" parses "foo x do\n//\nend" parses "foo x do\n//\nend" says syntax error on "def foo(foo include); end" says syntax error on "def foo(foo include); end" parses "def foo(x @end); end" parses "def foo(x @end); end" parses "foo.!=" parses "foo.!=" parses "select\nwhen foo\n2\nelse\n3\nend" parses "select\nwhen foo\n2\nelse\n3\nend" says syntax error on "foo[1] = break" says syntax error on "foo[1] = break" parses "def foo(protected foo); end" parses "def foo(protected foo); end" parses "@[Foo(1, foo: 2\n)]" parses "@[Foo(1, foo: 2\n)]" parses "def &*(); end" parses "def &*(); end" says syntax error on "if next; end" says syntax error on "if next; end" parses "next 1, *2" parses "next 1, *2" sets correct location of named tuple type sets correct location of named tuple type says syntax error on "-> :Int32 { }" says syntax error on "-> :Int32 { }" says syntax error on "foo { |case| }" says syntax error on "foo { |case| }" parses "macro foo;bar{% for x in y %}body{% end %}baz;end" parses "macro foo;bar{% for x in y %}body{% end %}baz;end" parses "def !~; end;" parses "def !~; end;" parses "macro *;end" parses "macro *;end" parses "def -(); end" parses "def -(); end" parses "Foo(\nx:\nT,\ny:\nU,\n)" parses "Foo(\nx:\nT,\ny:\nU,\n)" sets correct location of annotation in enum sets correct location of annotation in enum parses "foo(z: 0, a: n < 2)" parses "foo(z: 0, a: n < 2)" says syntax error on "[\n\"foo\"\n\"bar\"\n]" says syntax error on "[\n\"foo\"\n\"bar\"\n]" parses "{\"foo\": 1}" parses "{\"foo\": 1}" says syntax error on "return // 1" says syntax error on "return // 1" parses "next if true" parses "next if true" parses "foo = 1; ->foo.>=(Int32)" parses "foo = 1; ->foo.>=(Int32)" parses "next 1, 2" parses "next 1, 2" parses "def ==; end;" parses "def ==; end;" parses "->Foo.^(Int32)" parses "->Foo.^(Int32)" says syntax error on "class Foo(); end" says syntax error on "class Foo(); end" parses "f.x //= 2" parses "f.x //= 2" parses "def foo(x @@self); end" parses "def foo(x @@self); end" says syntax error on "def foo(foo lib); end" says syntax error on "def foo(foo lib); end" parses "property false : Int32" parses "property false : Int32" parses "foo { |a, (b, c), (d, e)| a; b; c; d; e }" parses "foo { |a, (b, c), (d, e)| a; b; c; d; e }" says syntax error on "offsetof(X, 1.0)" says syntax error on "offsetof(X, 1.0)" parses "def ~; end;" parses "def ~; end;" parses "foo.bar" parses "foo.bar" says syntax error on "x[1:-2]" says syntax error on "x[1:-2]" parses "def self./(); end;" parses "def self./(); end;" says syntax error on "macro nil?; end" says syntax error on "macro nil?; end" says syntax error on "$foo :: Foo" says syntax error on "$foo :: Foo" parses "a.b &*=\n1" parses "a.b &*=\n1" parses "def /(); end;" parses "def /(); end;" says syntax error on "next ^ 1" says syntax error on "next ^ 1" parses ":>>" parses ":>>" parses "def foo(x @@macro); end" parses "def foo(x @@macro); end" parses "foo(0, n !~ 2)" parses "foo(0, n !~ 2)" says syntax error on "[1 1]" says syntax error on "[1 1]" parses "break if true" parses "break if true" parses "foo ensure 2" parses "foo ensure 2" parses "def foo(x); end; x" parses "def foo(x); end; x" parses "foo(n >= 2)" parses "foo(n >= 2)" parses "{% begin %}%x< %s >{% end %}" parses "{% begin %}%x< %s >{% end %}" parses "foo(\n1)" parses "foo(\n1)" parses "<<-HERE\n One\n \n Zero\n HERE" parses "<<-HERE\n One\n \n Zero\n HERE" says syntax error on "def foo\nfun\nend" says syntax error on "def foo\nfun\nend" parses "next;" parses "next;" parses "def foo(x @@protected); end" parses "def foo(x @@protected); end" parses "foo(n == 2)" parses "foo(n == 2)" parses "typeof(\n 1\n)" parses "typeof(\n 1\n)" parses "\"hello \" \\\r\n \"world\"" parses "\"hello \" \\\r\n \"world\"" says syntax error on "macro foo(**x, **y)" says syntax error on "macro foo(**x, **y)" parses "lib LibC\n$errno : B, C -> D\nend" parses "lib LibC\n$errno : B, C -> D\nend" says syntax error on "break >= 1" says syntax error on "break >= 1" parses "Foo({\"foo\": X, \"bar\": Y})" parses "Foo({\"foo\": X, \"bar\": Y})" parses "->foo?" parses "->foo?" says syntax error on "def self.nil?; end" says syntax error on "def self.nil?; end" parses "foo(\"foo bar\": 1, \"baz\": 2)" parses "foo(\"foo bar\": 1, \"baz\": 2)" says syntax error on " (1, 2, 3 end" says syntax error on " (1, 2, 3 end" says syntax error on "a = a" says syntax error on "a = a" parses "def foo(@in); end" parses "def foo(@in); end" parses "a.b <<=\n1" parses "a.b <<=\n1" parses "foo[0] = 1 if 2" parses "foo[0] = 1 if 2" parses "foo.==" parses "foo.==" parses "next" parses "next" parses "foo.===" parses "foo.===" parses "def foo(@false); end" parses "def foo(@false); end" parses "%r(foo(bar))" parses "%r(foo(bar))" parses "lib LibC; struct Foo; x, y, z : Int; end end" parses "lib LibC; struct Foo; x, y, z : Int; end end" parses "def %(); end;" parses "def %(); end;" says syntax error on "foo { |(break)| }" says syntax error on "foo { |(break)| }" parses "1 rescue 2" parses "1 rescue 2" parses "1 ensure 2" parses "1 ensure 2" parses "def foo(next foo); end" parses "def foo(next foo); end" says syntax error on "while 1 == 1 a; end" says syntax error on "while 1 == 1 a; end" parses "lib LibC; type A = B*; end" parses "lib LibC; type A = B*; end" parses "def foo(x = 1, **args)\n1\nend" parses "def foo(x = 1, **args)\n1\nend" parses "->Foo.-(Int32)" parses "->Foo.-(Int32)" parses "case \nwhen 1\n2\nend" parses "case \nwhen 1\n2\nend" parses "def foo(include foo); end" parses "def foo(include foo); end" says syntax error on "break[]" says syntax error on "break[]" parses "a.foo &block" parses "a.foo &block" parses "-1.0" parses "-1.0" parses "foo(&.is_a?(T))" parses "foo(&.is_a?(T))" says syntax error on "x { |*a, *b| }" says syntax error on "x { |*a, *b| }" parses "{% x unless 1 %}" parses "{% x unless 1 %}" parses "def self.**(); end;" parses "def self.**(); end;" parses "foo % r()" parses "foo % r()" parses "->Foo.*(Int32)" parses "->Foo.*(Int32)" parses "(1 .. )" parses "(1 .. )" parses "[] of {String, ->}" parses "[] of {String, ->}" parses "typeof(1)" parses "typeof(1)" says syntax error on "->::@foo.foo" says syntax error on "->::@foo.foo" parses "a/b" parses "a/b" parses "def foo(private foo); end" parses "def foo(private foo); end" parses "->::foo" parses "->::foo" says syntax error on "{1 => 2, 3 => 4 5 => 6}" says syntax error on "{1 => 2, 3 => 4 5 => 6}" says syntax error on "return == 1" says syntax error on "return == 1" says syntax error on "{a: 1, a: 2}" says syntax error on "{a: 1, a: 2}" parses "if : Int32" parses "if : Int32" says syntax error on "foo { |x, x| }" says syntax error on "foo { |x, x| }" parses "def <=(*args, **opts); end" parses "def <=(*args, **opts); end" parses "def foo(var : (Int, Float -> Double)); end" parses "def foo(var : (Int, Float -> Double)); end" parses "1 if 3" parses "1 if 3" parses "foo(/ /, / /)" parses "foo(/ /, / /)" parses "def /(); end" parses "def /(); end" parses "->Foo.**(Int32)" parses "->Foo.**(Int32)" parses "def foo(x : *T -> R); end" parses "def foo(x : *T -> R); end" parses "def foo(@@self); end" parses "def foo(@@self); end" parses "return *1" parses "return *1" parses "foo.=~(1, 2) { 3 }" parses "foo.=~(1, 2) { 3 }" parses "foo.-(1, 2)" parses "foo.-(1, 2)" parses "foo(a: n > 2)" parses "foo(a: n > 2)" parses "a ? 1\n : b ? 2\n : c ? 3\n : 0" parses "a ? 1\n : b ? 2\n : c ? 3\n : 0" says syntax error on "break <= 1" says syntax error on "break <= 1" parses "f.x <<= 2" parses "f.x <<= 2" parses "a { |x| x } / b" parses "a { |x| x } / b" parses "foo &.block[0]" parses "foo &.block[0]" parses "def *(); end" parses "def *(); end" sets correct location of argument in named tuple type sets correct location of argument in named tuple type parses "def foo(x @out); end" parses "def foo(x @out); end" parses "def foo(x @@struct); end" parses "def foo(x @@struct); end" parses "foo(a: n + 2)" parses "foo(a: n + 2)" parses "case {1}\nin {nil}; 2; end" parses "case {1}\nin {nil}; 2; end" parses "foo.** do end" parses "foo.** do end" parses "property offsetof : Int32" parses "property offsetof : Int32" parses "foo(x: result : Int32); result" parses "foo(x: result : Int32); result" parses "def foo(var = 1); end" parses "def foo(var = 1); end" parses "foo = 1; foo &x" parses "foo = 1; foo &x" parses "foo(\n1\n)" parses "foo(\n1\n)" parses "def foo(x @private); end" parses "def foo(x @private); end" parses "foo x do\nend" parses "foo x do\nend" parses "\"hello \"\\\r\n\"world\"" parses "\"hello \"\\\r\n\"world\"" parses "(1 ... )" parses "(1 ... )" says syntax error on "case 1; when return; end; end" says syntax error on "case 1; when return; end; end" parses "foo { a = 1 }; a" parses "foo { a = 1 }; a" parses "1.[]=(2, 3)" parses "1.[]=(2, 3)" parses "call \"foo\"" parses "call \"foo\"" says syntax error on "def foo(foo instance_sizeof); end" says syntax error on "def foo(foo instance_sizeof); end" says syntax error on "foo { |unless| }" says syntax error on "foo { |unless| }" parses "foo.+ do end" parses "foo.+ do end" parses "if foo; 1; end" parses "if foo; 1; end" says syntax error on "def self.is_a?; end" says syntax error on "def self.is_a?; end" parses "foo%w" parses "foo%w" parses "def [](x); end" parses "def [](x); end" parses "def foo(@@yield); end" parses "def foo(@@yield); end" says syntax error on "foo { |(fun)| }" says syntax error on "foo { |(fun)| }" parses "macro foo\n{%\nif 1\n2\nelse\n3\nend\n%}end" parses "macro foo\n{%\nif 1\n2\nelse\n3\nend\n%}end" says syntax error on "def foo(foo pointerof); end" says syntax error on "def foo(foo pointerof); end" parses "break 1, 2" parses "break 1, 2" parses "1.x; foo do\nend" parses "1.x; foo do\nend" says syntax error on "self, x = 1, 2" says syntax error on "self, x = 1, 2" parses "def foo(x @@private); end" parses "def foo(x @@private); end" parses "case;end" parses "case;end" says syntax error on "x : String, a = 4" says syntax error on "x : String, a = 4" parses ":-" parses ":-" says syntax error on "->(x : Int32, x : Int32) {}" says syntax error on "->(x : Int32, x : Int32) {}" parses "a.b /2/" parses "a.b /2/" says syntax error on "{a: 1, b: 2 c: 3}" says syntax error on "{a: 1, b: 2 c: 3}" says syntax error on "macro foo;{%end};end" says syntax error on "macro foo;{%end};end" parses "->Foo.==(Int32)" parses "->Foo.==(Int32)" parses "a = 1; b = 2; c = 3; a-b -c" parses "a = 1; b = 2; c = 3; a-b -c" parses "property do : Int32" parses "property do : Int32" parses ":!" parses ":!" parses "@foo = 1" parses "@foo = 1" parses "a = 1; a %=\n1" parses "a = 1; a %=\n1" parses "{% begin %}%w< %s >{% end %}" parses "{% begin %}%w< %s >{% end %}" parses "begin; 1; rescue Foo | Bar; 2; end" parses "begin; 1; rescue Foo | Bar; 2; end" parses "def foo; 1; 2; end" parses "def foo; 1; 2; end" says syntax error on "def !; end" says syntax error on "def !; end" says syntax error on "next - 1" says syntax error on "next - 1" parses "def foo(@@out); end" parses "def foo(@@out); end" parses "asm(\"nop\" : \"a\"(0) : \"b\"(1), \"c\"(2))" parses "asm(\"nop\" : \"a\"(0) : \"b\"(1), \"c\"(2))" parses "property module : Int32" parses "property module : Int32" parses "->() : Int32 do end" parses "->() : Int32 do end" parses "foo 1.bar do\nend" parses "foo 1.bar do\nend" parses "def foo(@out); end" parses "def foo(@out); end" says syntax error on "def foo\nmacro\nend" says syntax error on "def foo\nmacro\nend" parses "macro -;end" parses "macro -;end" parses "def foo(@require); end" parses "def foo(@require); end" parses "&- 1" parses "&- 1" parses ":+" parses ":+" parses "_, _ = 1, 2" parses "_, _ = 1, 2" parses "foo(n &* 2)" parses "foo(n &* 2)" parses "def foo(a, & : Int -> Double); end" parses "def foo(a, & : Int -> Double); end" parses ":foo" parses ":foo" says syntax error on "A = foo(B = 1)" says syntax error on "A = foo(B = 1)" parses "1.as?(Bar)" parses "1.as?(Bar)" parses "->foo(Void*)" parses "->foo(Void*)" parses "a.b **=\n1" parses "a.b **=\n1" parses "puts ~1" parses "puts ~1" parses "def foo(@macro); end" parses "def foo(@macro); end" parses "with : Int32" parses "with : Int32" parses "n >> 2" parses "n >> 2" parses "a, b = 1, 2 if 3" parses "a, b = 1, 2 if 3" says syntax error on "def foo 1; end" says syntax error on "def foo 1; end" parses "{% a = 1 if 2 %}" parses "{% a = 1 if 2 %}" parses "->foo(Int32, Float64)" parses "->foo(Int32, Float64)" parses "- 1" parses "- 1" parses "foo.[]=(1, 2)" parses "foo.[]=(1, 2)" sets correct location of annotation on method parameter sets correct location of annotation on method parameter parses "->::Foo.foo" parses "->::Foo.foo" parses "foo % x()" parses "foo % x()" says syntax error on "def foo!=; end" says syntax error on "def foo!=; end" parses "foo.[]= 1, 2" parses "foo.[]= 1, 2" parses "1 + /foo/" parses "1 + /foo/" parses "def foo(begin foo); end" parses "def foo(begin foo); end" parses "def foo(@@abstract); end" parses "def foo(@@abstract); end" says syntax error on "def foo(foo require); end" says syntax error on "def foo(foo require); end" calls with blocks within index operator (#12818) parses "foo[bar { 1 }]" parses "foo[bar { 1 }]" parses "foo.[](bar do; 1; end)" parses "foo.[](bar do; 1; end)" parses "foo.[bar { 1 }]" parses "foo.[bar { 1 }]" parses "foo.[bar do; 1; end]" parses "foo.[bar do; 1; end]" parses "foo.[](bar { 1 })" parses "foo.[](bar { 1 })" parses "foo[bar do; 1; end]" parses "foo[bar do; 1; end]" parses "foo(a: n <= 2)" parses "foo(a: n <= 2)" parses "foo.!~(1, 2) { 3 }" parses "foo.!~(1, 2) { 3 }" parses "def foo(&@block); end" parses "def foo(&@block); end" parses "foo(n << 2)" parses "foo(n << 2)" parses "foo(Bar { 1 })" parses "foo(Bar { 1 })" says syntax error on "foo[1] = return" says syntax error on "foo[1] = return" says syntax error on "break &* 1" says syntax error on "break &* 1" says syntax error on "foo { |(protected)| }" says syntax error on "foo { |(protected)| }" parses "1 * 2" parses "1 * 2" parses "->Foo.>>(Int32)" parses "->Foo.>>(Int32)" parses "*_ = 1, 2" parses "*_ = 1, 2" parses "while true; end\nif true; end" parses "while true; end\nif true; end" parses "foo = 1; ->foo.|(Int32)" parses "foo = 1; ->foo.|(Int32)" parses "foo %Q" parses "foo %Q" parses "foo.&(1, 2) { 3 }" parses "foo.&(1, 2) { 3 }" parses "foo(a: n // 2)" parses "foo(a: n // 2)" parses "def foo(x @macro); end" parses "def foo(x @macro); end" parses "def self.|; end;" parses "def self.|; end;" parses "a.b ^=\n1" parses "a.b ^=\n1" parses "foo(bar:\"a\", baz:\"b\")" parses "foo(bar:\"a\", baz:\"b\")" says syntax error on ":bar foo" says syntax error on ":bar foo" says syntax error on "1 ? : 2 : 3" says syntax error on "1 ? : 2 : 3" says syntax error on "enum Foo < UInt16; end" says syntax error on "enum Foo < UInt16; end" says syntax error on "def foo(include); end" says syntax error on "def foo(include); end" parses "foo do; 1; end" parses "foo do; 1; end" parses "macro foo; 1 + 2 {{ foo }} 3 + 4; end" parses "macro foo; 1 + 2 {{ foo }} 3 + 4; end" parses "foo.<= 1, 2" parses "foo.<= 1, 2" parses "def foo(x @in); end" parses "def foo(x @in); end" parses "abstract struct Foo; end" parses "abstract struct Foo; end" parses "lib LibC\nfun getchar(...)\nend" parses "lib LibC\nfun getchar(...)\nend" says syntax error on "a.[]() = 1" says syntax error on "a.[]() = 1" parses "def foo : Int32\n1\nend" parses "def foo : Int32\n1\nend" parses "@@foo = 1" parses "@@foo = 1" says syntax error on "foo { |(a b)| }" says syntax error on "foo { |(a b)| }" parses "x.y=(1).to_s" parses "x.y=(1).to_s" parses "foo.is_a?(Foo | Bar)" parses "foo.is_a?(Foo | Bar)" parses "->Foo.foo!" parses "->Foo.foo!" parses "Foo.bar x.y do\nend" parses "Foo.bar x.y do\nend" says syntax error on "Foo(T U)" says syntax error on "Foo(T U)" parses ":!=" parses ":!=" says syntax error on "next % 1" says syntax error on "next % 1" parses "lib LibC\n$errno : Int32\n$errno2 : Int32\nend" parses "lib LibC\n$errno : Int32\n$errno2 : Int32\nend" parses "abstract def foo(x) : Int32" parses "abstract def foo(x) : Int32" says syntax error on "foo(**bar, out x)" says syntax error on "foo(**bar, out x)" parses "macro foo;var unless true;end" parses "macro foo;var unless true;end" says syntax error on "1 unless break" says syntax error on "1 unless break" parses "foo(n - 2)" parses "foo(n - 2)" says syntax error on "<<-HERE\n One\n \#{1}\n wrong\n HERE" says syntax error on "<<-HERE\n One\n \#{1}\n wrong\n HERE" says syntax error on "{1, ->do\n|x| x\end }" says syntax error on "{1, ->do\n|x| x\end }" parses "f.x ^= 2" parses "f.x ^= 2" parses "foo./ 1, 2" parses "foo./ 1, 2" parses "1.tap do; 1; rescue; 2; end" parses "1.tap do; 1; rescue; 2; end" parses "asm(\"nop\" \n)" parses "asm(\"nop\" \n)" parses "foo { |a, b| 1 }" parses "foo { |a, b| 1 }" parses "def foo(x @@next); end" parses "def foo(x @@next); end" parses "def foo(@@struct); end" parses "def foo(@@struct); end" parses "yield;" parses "yield;" says syntax error on "1 2" says syntax error on "1 2" parses "lib LibC\nfun getchar : (->)?\nend" parses "lib LibC\nfun getchar : (->)?\nend" says syntax error on "foo { |(out)| }" says syntax error on "foo { |(out)| }" parses "1 \\\n + 2" parses "1 \\\n + 2" parses "{\n1\n}" parses "{\n1\n}" parses "foo = 1; ->foo.&*(Int32)" parses "foo = 1; ->foo.&*(Int32)" parses "a.b -=\n1" parses "a.b -=\n1" parses "1.=~(2)" parses "1.=~(2)" says syntax error on "def foo(**x, &x); end" says syntax error on "def foo(**x, &x); end" says syntax error on "foo **bar, 1" says syntax error on "foo **bar, 1" parses "foo\n\n .bar" parses "foo\n\n .bar" parses "~ 1" parses "~ 1" parses "foo &.!" parses "foo &.!" says syntax error on "a = 1; a += return" says syntax error on "a = 1; a += return" parses "foo(n ^ 2)" parses "foo(n ^ 2)" parses "{} of Int32 -> Int32 => Int32" parses "{} of Int32 -> Int32 => Int32" says syntax error on "macro foo&&;end" says syntax error on "macro foo&&;end" parses "-> do end" parses "-> do end" says syntax error on "def foo @@var, █ end" says syntax error on "def foo @@var, █ end" parses "f.x = - 1" parses "f.x = - 1" parses "foo(0, n * 2)" parses "foo(0, n * 2)" parses "Foo::Bar" parses "Foo::Bar" parses "def >; end;" parses "def >; end;" parses "foo(regex: //)" parses "foo(regex: //)" says syntax error on "next.foo" says syntax error on "next.foo" says syntax error on "def foo var\n end" says syntax error on "def foo var\n end" says syntax error on "foo { |nil| }" says syntax error on "foo { |nil| }" parses "macro foo;bar{% unless x %}body{% end %}baz;end" parses "macro foo;bar{% unless x %}body{% end %}baz;end" parses "instance_alignof(\n Int32\n)" parses "instance_alignof(\n Int32\n)" parses "def foo(x @asm); end" parses "def foo(x @asm); end" parses "->::foo!" parses "->::foo!" parses "asm : Int32" parses "asm : Int32" says syntax error on "def foo\nstruct\nend" says syntax error on "def foo\nstruct\nend" says syntax error on "foo { |(macro)| }" says syntax error on "foo { |(macro)| }" parses "foo.<(1, 2) { 3 }" parses "foo.<(1, 2) { 3 }" says syntax error on "self += 1" says syntax error on "self += 1" parses "lib LibC; Foo = 1; end" parses "lib LibC; Foo = 1; end" parses "def foo(@@asm); end" parses "def foo(@@asm); end" parses "foo(z: 0, a: n ** 2)" parses "foo(z: 0, a: n ** 2)" parses "def -(); end;" parses "def -(); end;" says syntax error on "foo { |(unless)| }" says syntax error on "foo { |(unless)| }" says syntax error on "Foo(x: T y: U)" says syntax error on "Foo(x: T y: U)" parses "as?(Bar)" parses "as?(Bar)" parses "property else : Int32" parses "property else : Int32" parses "@a : Foo" parses "@a : Foo" parses "def +; end;" parses "def +; end;" parses "a = 1; class Foo; @x = a; end" parses "a = 1; class Foo; @x = a; end" says syntax error on "def foo &block ; end" says syntax error on "def foo &block ; end" says syntax error on "return ** 1" says syntax error on "return ** 1" parses "responds_to?(:foo)" parses "responds_to?(:foo)" parses "def foo(var : self?); end" parses "def foo(var : self?); end" parses "{A::B => 1, C::D => 2}" parses "{A::B => 1, C::D => 2}" parses "/foo/m" parses "/foo/m" parses "{a: 1}" parses "{a: 1}" parses "<<-HERE\n \#{1} \#{2}\n HERE" parses "<<-HERE\n \#{1} \#{2}\n HERE" parses "enum Foo; A = 1\ndef foo; 1; end\ndef bar; 2; end\nend" parses "enum Foo; A = 1\ndef foo; 1; end\ndef bar; 2; end\nend" says syntax error on "foo { |(def)| }" says syntax error on "foo { |(def)| }" parses "foo do |a|; 1; end" parses "foo do |a|; 1; end" says syntax error on "@:Foo" says syntax error on "@:Foo" parses "foo &./(1)" parses "foo &./(1)" parses "def foo(@@offsetof); end" parses "def foo(@@offsetof); end" parses "def foo(var : self); end" parses "def foo(var : self); end" parses "call ->foo" parses "call ->foo" parses "def =~(); end" parses "def =~(); end" parses "def foo(@[Foo] *args); end" parses "def foo(@[Foo] *args); end" parses "foo(z: 0, a: n ^ 2)" parses "foo(z: 0, a: n ^ 2)" parses "case 1\nin nil; 2; end" parses "case 1\nin nil; 2; end" parses "def foo(@pointerof); end" parses "def foo(@pointerof); end" parses "def foo(bar = 1\n); 2; end" parses "def foo(bar = 1\n); 2; end" parses "foo.*" parses "foo.*" parses "'a'" parses "'a'" parses "def foo(@select); end" parses "def foo(@select); end" parses "property with : Int32" parses "property with : Int32" parses "def self.~(); end;" parses "def self.~(); end;" says syntax error on "def foo?=(x); end" says syntax error on "def foo?=(x); end" says syntax error on "if 1\n foo 1,\nend" says syntax error on "if 1\n foo 1,\nend" parses "f.x **= 2" parses "f.x **= 2" parses "<<-HERE\nHERE" parses "<<-HERE\nHERE" parses "break 1" parses "break 1" parses "macro foo(\na = 0\n)\nend" parses "macro foo(\na = 0\n)\nend" says syntax error on "break << 1" says syntax error on "break << 1" parses "case {1}\nin {_}; 2; end" parses "case {1}\nin {_}; 2; end" parses "lib LibC\nfun getchar(a : Int, b : Float) : Int\nend" parses "lib LibC\nfun getchar(a : Int, b : Float) : Int\nend" says syntax error on "case 1 == 1 a; when 2; end" says syntax error on "case 1 == 1 a; when 2; end" parses " macro foo(\n @[Foo]\n id,\n @[Bar] name\n );end" parses " macro foo(\n @[Foo]\n id,\n @[Bar] name\n );end" says syntax error on "return[0]= 1" says syntax error on "return[0]= 1" parses "def foo(@until); end" parses "def foo(@until); end" parses "macro foo(x)\n 1 + 2; end" parses "macro foo(x)\n 1 + 2; end" parses "def self.>(); end;" parses "def self.>(); end;" parses "lib LibC\nfun getchar\nend" parses "lib LibC\nfun getchar\nend" parses "a = 1; a +=\n1" parses "a = 1; a +=\n1" parses "a = 1; a ||= 1" parses "a = 1; a ||= 1" parses "foo.[]=(1, 2) { 3 }" parses "foo.[]=(1, 2) { 3 }" parses "x = 0; a, b = x += 1" parses "x = 0; a, b = x += 1" says syntax error on "require 1" says syntax error on "require 1" parses "foo &.as(T)" parses "foo &.as(T)" parses " def foo(\n @[Foo]\n id : Int32,\n @[Bar] name : String\n ); end" parses " def foo(\n @[Foo]\n id : Int32,\n @[Bar] name : String\n ); end" parses "{% begin %}%x[ %s ]{% end %}" parses "{% begin %}%x[ %s ]{% end %}" parses "1 ensure 2 if 3" parses "1 ensure 2 if 3" parses "{{ foo.nil?(foo) }}" parses "{{ foo.nil?(foo) }}" parses "def >=(*args, **opts); end" parses "def >=(*args, **opts); end" parses "foo(z: 0, a: n << 2)" parses "foo(z: 0, a: n << 2)" says syntax error on "{a: 1 b: 2}" says syntax error on "{a: 1 b: 2}" parses "(a;\nb)" parses "(a;\nb)" parses "def foo(require foo); end" parses "def foo(require foo); end" parses "foo (1 + 2), 3" parses "foo (1 + 2), 3" parses "Foo(\"foo bar\": U)" parses "Foo(\"foo bar\": U)" parses "foo(a: 1, &block)" parses "foo(a: 1, &block)" parses "a = 1; a |=\n1" parses "a = 1; a |=\n1" says syntax error on "def foo(private); end" says syntax error on "def foo(private); end" parses "def <=(*args, **opts, &); end" parses "def <=(*args, **opts, &); end" parses "f.x %= 2" parses "f.x %= 2" parses "Foo({->})" parses "Foo({->})" parses "break;" parses "break;" parses "def foo; x { |_| 1 }; end" parses "def foo; x { |_| 1 }; end" parses "class Foo; end" parses "class Foo; end" parses "case 1\nwhen .as(T)\n2\nend" parses "case 1\nwhen .as(T)\n2\nend" parses "foo.<= do end" parses "foo.<= do end" parses "foo &.nil?" parses "foo &.nil?" parses "def self.=~(); end;" parses "def self.=~(); end;" parses "foo(z: 0, a: n - 2)" parses "foo(z: 0, a: n - 2)" says syntax error on "<<-'HERE\n" says syntax error on "<<-'HERE\n" parses "macro <<;end" parses "macro <<;end" parses "a = 1; a ^= 1" parses "a = 1; a ^= 1" parses "instance_sizeof : Int32" parses "instance_sizeof : Int32" says syntax error on "{one: :two, three: :four} of Symbol => Symbol" says syntax error on "{one: :two, three: :four} of Symbol => Symbol" parses "foo(z: 0, a: n &* 2)" parses "foo(z: 0, a: n &* 2)" parses "typeof(a = 1); a" parses "typeof(a = 1); a" parses "def foo(a, &block : Int -> ); end" parses "def foo(a, &block : Int -> ); end" says syntax error on "foo **bar, out x" says syntax error on "foo **bar, out x" parses "def foo(nil foo); end" parses "def foo(nil foo); end" parses ":&" parses ":&" says syntax error on "foo { |x, (x)| }" says syntax error on "foo { |x, (x)| }" parses "foo[\nfoo[\n1\n]\n]" parses "foo[\nfoo[\n1\n]\n]" says syntax error on "until break; end" says syntax error on "until break; end" parses "macro foo(x); 1 + 2; end" parses "macro foo(x); 1 + 2; end" parses "def self.<=; end;" parses "def self.<=; end;" parses "lib LibC; fun foo : Int**; end" parses "lib LibC; fun foo : Int**; end" parses "foo.[0]" parses "foo.[0]" says syntax error on "*a, *b = 1" says syntax error on "*a, *b = 1" parses "{\n{1}\n}" parses "{\n{1}\n}" parses "foo(&.bar.baz)" parses "foo(&.bar.baz)" parses "1 &+ 2" parses "1 &+ 2" parses "<<-'HERE COMES HEREDOC'\n hello \\n world\n \#{1}\n HERE COMES HEREDOC" parses "<<-'HERE COMES HEREDOC'\n hello \\n world\n \#{1}\n HERE COMES HEREDOC" says syntax error on "next &** 1" says syntax error on "next &** 1" says syntax error on "+break" says syntax error on "+break" says syntax error on "def foo(foo offsetof); end" says syntax error on "def foo(foo offsetof); end" parses "-1.0_f32" parses "-1.0_f32" parses "/=/" parses "/=/" says syntax error on "break.foo" says syntax error on "break.foo" parses "foo..2" parses "foo..2" parses "foo &.block = 0" parses "foo &.block = 0" parses "qux \"foo\#{bar do end}baz\"" parses "qux \"foo\#{bar do end}baz\"" parses "a = 1; a //= 1" parses "a = 1; a //= 1" parses "*a.foo, a.bar = 1" parses "*a.foo, a.bar = 1" parses "def self.foo=()\n1\nend" parses "def self.foo=()\n1\nend" parses "Foo(typeof(1))" parses "Foo(typeof(1))" says syntax error on "return < 1" says syntax error on "return < 1" parses "foo[*baz]" parses "foo[*baz]" says syntax error on "{% unless 1 %} 2 {% elsif 3 %} 3 {% end %}" says syntax error on "{% unless 1 %} 2 {% elsif 3 %} 3 {% end %}" parses "@[Foo(\"hello\")]" parses "@[Foo(\"hello\")]" parses "def self.+(); end;" parses "def self.+(); end;" parses "def foo(x @@return); end" parses "def foo(x @@return); end" parses "foo\n #comment\n .bar" parses "foo\n #comment\n .bar" parses "a = 1; a -= 1" parses "a = 1; a -= 1" parses "puts {{1}}" parses "puts {{1}}" parses "1.as(\n Int32\n)" parses "1.as(\n Int32\n)" parses "foo &.block(1)" parses "foo &.block(1)" parses "macro foo\n\"\\\\\"\nend" parses "macro foo\n\"\\\\\"\nend" parses "puts ::foo" parses "puts ::foo" parses "a : Foo()[12]" parses "a : Foo()[12]" parses "{{ 1 // 2 }}" parses "{{ 1 // 2 }}" parses "enum Foo; macro foo;end; end" parses "enum Foo; macro foo;end; end" parses "def >>(); end" parses "def >>(); end" parses "def foo(@self); end" parses "def foo(@self); end" parses "{% begin %}%q< %s >{% end %}" parses "{% begin %}%q< %s >{% end %}" parses "next *{1, 2}" parses "next *{1, 2}" parses "foo /;/" parses "foo /;/" parses "{% begin %}{% if true %}if true{% end %}\n{% if true %}end{% end %}{% end %}" parses "{% begin %}{% if true %}if true{% end %}\n{% if true %}end{% end %}{% end %}" says syntax error on "*a" says syntax error on "*a" parses "def foo(x @nil); end" parses "def foo(x @nil); end" parses "def foo(\n&block\n); end" parses "def foo(\n&block\n); end" parses "def foo(var : self*); end" parses "def foo(var : self*); end" parses "foo &.block=(0)" parses "foo &.block=(0)" parses "->::Foo.foo=" parses "->::Foo.foo=" parses "foo(1, **bar, &block)" parses "foo(1, **bar, &block)" parses "f.x -= 2" parses "f.x -= 2" parses "->Foo.>=(Int32)" parses "->Foo.>=(Int32)" parses "foo.responds_to?(:foo)" parses "foo.responds_to?(:foo)" parses "macro <;end" parses "macro <;end" parses "property case : Int32" parses "property case : Int32" parses "macro &**;end" parses "macro &**;end" parses "a = 1; a **= 1" parses "a = 1; a **= 1" parses "def foo(@alias); end" parses "def foo(@alias); end" says syntax error on "def foo\nalias\nend" says syntax error on "def foo\nalias\nend" parses "def foo(yield foo); end" parses "def foo(yield foo); end" parses "{% begin %}%( %s ){% end %}" parses "{% begin %}%( %s ){% end %}" parses "foo%q" parses "foo%q" parses "def foo(@include); end" parses "def foo(@include); end" parses "asm(\"nop\" : : )" parses "asm(\"nop\" : : )" says syntax error on "def foo(foo end); end" says syntax error on "def foo(foo end); end" parses "{% begin %}%q{ %s }{% end %}" parses "{% begin %}%q{ %s }{% end %}" parses "property begin : Int32" parses "property begin : Int32" parses "x = 1; foo x {\n}" parses "x = 1; foo x {\n}" parses "foo(0, n / 2)" parses "foo(0, n / 2)" parses "<<-HERE\nHello, mom! I am HERE.\nHER dress is beautiful.\nHE is OK.\n HERESY\nHERE" parses "<<-HERE\nHello, mom! I am HERE.\nHER dress is beautiful.\nHE is OK.\n HERESY\nHERE" says syntax error on "1 until 3" says syntax error on "1 until 3" parses "foo 1\n" parses "foo 1\n" parses "class Foo(T, *U); end" parses "class Foo(T, *U); end" parses "lib LibC; {% if 1 %}2{% end %}; end" parses "lib LibC; {% if 1 %}2{% end %}; end" says syntax error on "{{ {% begin %} }}" says syntax error on "{{ {% begin %} }}" parses "def foo\n1\nend\nif 1\nend" parses "def foo\n1\nend\nif 1\nend" parses "/foo/i" parses "/foo/i" parses "\"hello \" \\\n \"world\"" parses "\"hello \" \\\n \"world\"" parses "1 / 2" parses "1 / 2" parses "{[] of Foo, ::foo}" parses "{[] of Foo, ::foo}" says syntax error on "def foo(offsetof); end" says syntax error on "def foo(offsetof); end" parses "a.b /=\n1" parses "a.b /=\n1" parses "foo(0, n >= 2)" parses "foo(0, n >= 2)" says syntax error on "def foo(x = 1, y); end" says syntax error on "def foo(x = 1, y); end" says syntax error on "return 1 foo" says syntax error on "return 1 foo" parses "1 - 2" parses "1 - 2" parses "abstract def foo" parses "abstract def foo" parses "a = 1; a %= 1" parses "a = 1; a %= 1" says syntax error on "break ** 1" says syntax error on "break ** 1" parses "asm(\"nop\" :: : :)" parses "asm(\"nop\" :: : :)" says syntax error on "next[0]= 1" says syntax error on "next[0]= 1" parses "foo.bar(1).baz" parses "foo.bar(1).baz" parses "foo %x" parses "foo %x" parses "false : Int32" parses "false : Int32" says syntax error on "foo { |(return)| }" says syntax error on "foo { |(return)| }" parses "foo(0, n & 2)" parses "foo(0, n & 2)" parses "require \"foo\"" parses "require \"foo\"" parses "foo(0, n &- 2)" parses "foo(0, n &- 2)" parses "(bar do\nend)" parses "(bar do\nend)" parses "lib LibC\nfun getchar(Int, Float)\nend" parses "lib LibC\nfun getchar(Int, Float)\nend" says syntax error on "self = 1" says syntax error on "self = 1" says syntax error on "1 as? Bar" says syntax error on "1 as? Bar" parses "[1] /2" parses "[1] /2" says syntax error on "{1, ->{ |x| x } }" says syntax error on "{1, ->{ |x| x } }" parses "property break : Int32" parses "property break : Int32" parses "__DIR__" parses "__DIR__" parses "foo out x; x" parses "foo out x; x" parses "foo &.as?(T)" parses "foo &.as?(T)" parses "yield 1" parses "yield 1" parses "property true : Int32" parses "property true : Int32" says syntax error on "1 if return" says syntax error on "1 if return" parses "foo -1.0, -2.0" parses "foo -1.0, -2.0" says syntax error on "<<-FOO\n1\nFOO.bar" says syntax error on "<<-FOO\n1\nFOO.bar" parses "foo.Bar" parses "foo.Bar" says syntax error on "next | 1" says syntax error on "next | 1" parses "x = 1; foo x do\nend" parses "x = 1; foo x do\nend" parses ":!~" parses ":!~" parses "x : *T -> R" parses "x : *T -> R" says syntax error on "return <= 1" says syntax error on "return <= 1" parses "def foo(@@instance_sizeof); end" parses "def foo(@@instance_sizeof); end" parses "1\n-2" parses "1\n-2" says syntax error on "def foo(foo nil); end" says syntax error on "def foo(foo nil); end" parses "def self.!~; end;" parses "def self.!~; end;" parses "{% begin %}%Q[ %s ]{% end %}" parses "{% begin %}%Q[ %s ]{% end %}" says syntax error on "return[]" says syntax error on "return[]" parses "x = 2; foo do bar x end" parses "x = 2; foo do bar x end" parses "foo *bar" parses "foo *bar" parses "enum Foo; A = 1\ndef foo; 1; end; end" parses "enum Foo; A = 1\ndef foo; 1; end; end" parses "->::Foo.foo?" parses "->::Foo.foo?" parses "foo &.bar.baz" parses "foo &.bar.baz" parses "foo(a: n / 2)" parses "foo(a: n / 2)" parses "f.x *= 2" parses "f.x *= 2" parses "foo = 1; ->foo.&+(Int32)" parses "foo = 1; ->foo.&+(Int32)" parses "{% begin %}%q| %s |{% end %}" parses "{% begin %}%q| %s |{% end %}" says syntax error on "def is_a?; end" says syntax error on "def is_a?; end" parses "<<-SOME\n Sa\n Se\n SOME" parses "<<-SOME\n Sa\n Se\n SOME" says syntax error on "select\nwhen 1\n2\nend" says syntax error on "select\nwhen 1\n2\nend" parses "asm(\"nop\" : \"a\"(0), \"b\"(1) : \"c\"(2), \"d\"(3))" parses "asm(\"nop\" : \"a\"(0), \"b\"(1) : \"c\"(2), \"d\"(3))" parses "alias Foo::Bar = Baz" parses "alias Foo::Bar = Baz" parses "{% a = 1 %}" parses "{% a = 1 %}" parses "case / /\nwhen / /\n/ /\nelse\n/ /\nend" parses "case / /\nwhen / /\n/ /\nelse\n/ /\nend" parses "def >=(other, file = 1); end" parses "def >=(other, file = 1); end" parses "def self.<; end;" parses "def self.<; end;" parses "def foo(@@if); end" parses "def foo(@@if); end" says syntax error on "foo { |(begin)| }" says syntax error on "foo { |(begin)| }" parses "macro foo\n'\\\\'\nend" parses "macro foo\n'\\\\'\nend" parses "next : Int32" parses "next : Int32" says syntax error on "Set {1, 2, 3} of Int32" says syntax error on "Set {1, 2, 3} of Int32" says syntax error on "return % 1" says syntax error on "return % 1" says syntax error on "def foo(foo protected); end" says syntax error on "def foo(foo protected); end" parses "foo(a: n * 2)" parses "foo(a: n * 2)" parses "def foo(x @module); end" parses "def foo(x @module); end" parses "macro foo;%var{1, x} = hello;end" parses "macro foo;%var{1, x} = hello;end" parses "1 +\n2" parses "1 +\n2" parses "call foo : A, end : B" parses "call foo : A, end : B" parses "require \"foo\"; [1]" parses "require \"foo\"; [1]" says syntax error on "{a[]: 1}" says syntax error on "{a[]: 1}" parses "Foo(typeof(1), typeof(2))" parses "Foo(typeof(1), typeof(2))" says syntax error on "def foo(typeof); end" says syntax error on "def foo(typeof); end" parses "1..;" parses "1..;" says syntax error on "def foo x y; end" says syntax error on "def foo x y; end" parses "->@foo.foo?" parses "->@foo.foo?" parses "2 * 3 + 4 * 5" parses "2 * 3 + 4 * 5" parses "case 1; when 1 then 2; else; 3; end" parses "case 1; when 1 then 2; else; 3; end" parses "foo 1" parses "foo 1" parses "foo(n + 2)" parses "foo(n + 2)" parses "n &+ 2" parses "n &+ 2" parses "macro foo;%var if true;end" parses "macro foo;%var if true;end" parses "[] of ->\n" parses "[] of ->\n" parses "def foo(@protected); end" parses "def foo(@protected); end" parses "a.b() /3" parses "a.b() /3" parses "[1, 2]" parses "[1, 2]" parses "1/2" parses "1/2" parses "[..2]" parses "[..2]" says syntax error on "next ** 1" says syntax error on "next ** 1" parses "def foo(while foo); end" parses "def foo(while foo); end" parses "foo(bar:a, baz:b)" parses "foo(bar:a, baz:b)" parses "def foo(@fun); end" parses "def foo(@fun); end" parses "->::foo=" parses "->::foo=" says syntax error on "macro def foo : String; 1; end" says syntax error on "macro def foo : String; 1; end" parses "macro >;end" parses "macro >;end" parses "foo.|" parses "foo.|" parses "begin; 1; rescue ex : Foo | Bar; 2; end" parses "begin; 1; rescue ex : Foo | Bar; 2; end" parses "case {1, 2}\nwhen {.foo, .bar}\n5\nend" parses "case {1, 2}\nwhen {.foo, .bar}\n5\nend" parses "def foo; yield 1; end" parses "def foo; yield 1; end" says syntax error on "def foo(foo true); end" says syntax error on "def foo(foo true); end" parses "n - 2" parses "n - 2" parses "@[Foo::Bar]" parses "@[Foo::Bar]" says syntax error on "def foo(in); end" says syntax error on "def foo(in); end" parses "macro foo;unless var;true;end;end" parses "macro foo;unless var;true;end;end" parses "macro foo;bar{% for x, y in z %}body{% end %}baz;end" parses "macro foo;bar{% for x, y in z %}body{% end %}baz;end" parses "n ^ 2" parses "n ^ 2" parses "<<-HERE1; <<-HERE2\nHERE1\nHERE2" parses "<<-HERE1; <<-HERE2\nHERE1\nHERE2" says syntax error on "foo { |protected| }" says syntax error on "foo { |protected| }" parses "foo.** 1, 2" parses "foo.** 1, 2" says syntax error on "def foo &block : Int -> Double ; end" says syntax error on "def foo &block : Int -> Double ; end" parses "def foo(x) : Int32\n1\nend" parses "def foo(x) : Int32\n1\nend" parses "foo.**(1, 2) { 3 }" parses "foo.**(1, 2) { 3 }" parses "def foo(x @var); end" parses "def foo(x @var); end" parses "until : Int32" parses "until : Int32" parses "1 % 2" parses "1 % 2" says syntax error on "*a, 1 = 2" says syntax error on "*a, 1 = 2" parses "a = 1; a <<= 1" parses "a = 1; a <<= 1" parses "1 -2.0" parses "1 -2.0" says syntax error on "until next; end" says syntax error on "until next; end" parses "{% if true %}\n{% end %}\n{% if true %}\n{% end %}" parses "{% if true %}\n{% end %}\n{% if true %}\n{% end %}" parses "return {1 => 2}" parses "return {1 => 2}" parses "foo.is_a?(Const)" parses "foo.is_a?(Const)" parses "def foo(a, &block : Foo); end" parses "def foo(a, &block : Foo); end" says syntax error on "offsetof(X, 'c')" says syntax error on "offsetof(X, 'c')" parses "macro |;end" parses "macro |;end" parses "property next : Int32" parses "property next : Int32" parses "->@@foo.foo?" parses "->@@foo.foo?" says syntax error on "foo(next)" says syntax error on "foo(next)" parses "<<-'HERE'\n hello \\n world\n \#{1}\n HERE" parses "<<-'HERE'\n hello \\n world\n \#{1}\n HERE" parses "def foo(x @select); end" parses "def foo(x @select); end" parses "def !=(*args, **opts, &); end" parses "def !=(*args, **opts, &); end" parses "lib LibC; fun foo(a : Int**); end" parses "lib LibC; fun foo(a : Int**); end" says syntax error on "def foo(foo yield); end" says syntax error on "def foo(foo yield); end" parses "case\nwhen true\n1\nend" parses "case\nwhen true\n1\nend" parses "->::Foo.foo!" parses "->::Foo.foo!" says syntax error on "->::@@foo.foo" says syntax error on "->::@@foo.foo" says syntax error on "foo **bar, *x" says syntax error on "foo **bar, *x" parses "macro foo;bar{% if x %}body{% else %}body2{%end%}baz;end" parses "macro foo;bar{% if x %}body{% else %}body2{%end%}baz;end" parses "def foo(x @@instance_sizeof); end" parses "def foo(x @@instance_sizeof); end" says syntax error on "A = B = 1" says syntax error on "A = B = 1" parses "def foo(x @def); end" parses "def foo(x @def); end" parses "instance_alignof(X)" parses "instance_alignof(X)" parses "{1}" parses "{1}" parses "self" parses "self" says syntax error on "enum Foo; A B; end" says syntax error on "enum Foo; A B; end" parses "[\n1,2\n]" parses "[\n1,2\n]" parses "/foo/" parses "/foo/" says syntax error on "break &** 1" says syntax error on "break &** 1" parses "foo %x()" parses "foo %x()" says syntax error on "def f end" says syntax error on "def f end" sets correct location of private method in enum sets correct location of private method in enum parses "1 & 2" parses "1 & 2" parses "def foo(@case); end" parses "def foo(@case); end" parses "property if : Int32" parses "property if : Int32" says syntax error on "def self.responds_to?; end" says syntax error on "def self.responds_to?; end" parses "foo(0, n | 2)" parses "foo(0, n | 2)" parses "def foo(@@include); end" parses "def foo(@@include); end" parses "{% begin %}%q[ %s ]{% end %}" parses "{% begin %}%q[ %s ]{% end %}" parses "property end : Int32" parses "property end : Int32" parses "n &** 2" parses "n &** 2" parses "break 1, *2" parses "break 1, *2" parses "b.c &&= 1" parses "b.c &&= 1" parses "abstract : Int32" parses "abstract : Int32" parses "->Foo.[](Int32)" parses "->Foo.[](Int32)" parses "a : Foo | Int32" parses "a : Foo | Int32" parses "1 ? a : b ? c : 3" parses "1 ? a : b ? c : 3" says syntax error on "{\n1 => 2\n3 => 4\n}" says syntax error on "{\n1 => 2\n3 => 4\n}" says syntax error on "a() += 1" says syntax error on "a() += 1" parses "foo.as(Bar)" parses "foo.as(Bar)" parses "{% if x %}body{% end %}" parses "{% if x %}body{% end %}" parses "def foo(var1, var2); end" parses "def foo(var1, var2); end" says syntax error on "foo { |(typeof)| }" says syntax error on "foo { |(typeof)| }" parses "foo &->bar" parses "foo &->bar" says syntax error on "def self.as?; end" says syntax error on "def self.as?; end" says syntax error on "foo { |out| }" says syntax error on "foo { |out| }" parses "->Foo.foo=" parses "->Foo.foo=" parses "def ^(); end" parses "def ^(); end" parses ":\"foo\"" parses ":\"foo\"" says syntax error on "{\n}" says syntax error on "{\n}" parses "def !=(other, file = 1); end" parses "def !=(other, file = 1); end" single splats inside container literals parses "{*1, 2}" parses "{*1, 2}" parses "{*1 * 2}" parses "{*1 * 2}" parses "[*1]" parses "[*1]" parses "[*1, *2]" parses "[*1, *2]" parses "[1, *2]" parses "[1, *2]" parses "x = {*1}" parses "x = {*1}" parses "{*1, *2}" parses "{*1, *2}" parses "{1, *2, 3, *4, 5}" parses "{1, *2, 3, *4, 5}" says syntax error on "{*a: 1}" says syntax error on "{*a: 1}" says syntax error on "case {1}\nwhen {*2}; 3; end" says syntax error on "case {1}\nwhen {*2}; 3; end" parses "[*1 ** 2]" parses "[*1 ** 2]" parses "Set {*1, 2, *3}" parses "Set {*1, 2, *3}" parses "Set {*{1} * 2}" parses "Set {*{1} * 2}" says syntax error on "{*1 => 2}" says syntax error on "{*1 => 2}" parses "[1, *2, 3, *4, 5]" parses "[1, *2, 3, *4, 5]" parses "{1, *2}" parses "{1, *2}" says syntax error on "{a: 1, *2}" says syntax error on "{a: 1, *2}" parses "case 1\nwhen {*2}; 3; end" parses "case 1\nwhen {*2}; 3; end" says syntax error on "{1 => 2, *3}" says syntax error on "{1 => 2, *3}" parses "[*[*[1]], *[2]]" parses "[*[*[1]], *[2]]" parses "{*1}" parses "{*1}" says syntax error on "case {*1}\nwhen {2}; 3; end" says syntax error on "case {*1}\nwhen {2}; 3; end" parses "[*1, 2]" parses "[*1, 2]" says syntax error on "def foo(break); end" says syntax error on "def foo(break); end" parses "a b() {}" parses "a b() {}" parses "lib LibC\nalias Foo = Bar\nend" parses "lib LibC\nalias Foo = Bar\nend" says syntax error on "unless next; end" says syntax error on "unless next; end" parses "{% begin %}%Q| %s |{% end %}" parses "{% begin %}%Q| %s |{% end %}" parses "def foo(x : U) forall U; end" parses "def foo(x : U) forall U; end" parses "def foo(@@break); end" parses "def foo(@@break); end" says syntax error on "def foo(foo fun); end" says syntax error on "def foo(foo fun); end" parses "def foo(@[Foo] &@block); end" parses "def foo(@[Foo] &@block); end" parses "foo(z: 0, a: n | 2)" parses "foo(z: 0, a: n | 2)" parses "def foo(x @@fun); end" parses "def foo(x @@fun); end" parses "def Foo.foo\n1\nend" parses "def Foo.foo\n1\nend" parses "1.[](2)" parses "1.[](2)" parses "/fo\#{1}o/" parses "/fo\#{1}o/" parses "property yield : Int32" parses "property yield : Int32" says syntax error on "def =\nend" says syntax error on "def =\nend" parses "(baz; bar do\nend)" parses "(baz; bar do\nend)" says syntax error on "*a, b, c, d = 1, 2" says syntax error on "*a, b, c, d = 1, 2" parses "def []=(value); end" parses "def []=(value); end" parses "{1 => 2 / 3}" parses "{1 => 2 / 3}" parses "def foo; x { |a| a }; end" parses "def foo; x { |a| a }; end" parses "foo = 1; foo a: 1" parses "foo = 1; foo a: 1" parses ":[]=" parses ":[]=" parses "macro =~;end" parses "macro =~;end" says syntax error on "yield break" says syntax error on "yield break" says syntax error on "def foo(module); end" says syntax error on "def foo(module); end" says syntax error on "if return; end" says syntax error on "if return; end" says syntax error on "+next" says syntax error on "+next" parses "r = 1; r.x += 2" parses "r = 1; r.x += 2" parses "def foo(x @enum); end" parses "def foo(x @enum); end" says syntax error on "def foo(foo macro); end" says syntax error on "def foo(foo macro); end" parses "foo.!~(1, 2)" parses "foo.!~(1, 2)" parses "def self.%; end;" parses "def self.%; end;" says syntax error on "case 1; when next; end; end" says syntax error on "case 1; when next; end; end" parses "1 =~ 2" parses "1 =~ 2" parses "def foo(x @self); end" parses "def foo(x @self); end" parses "begin; 1; rescue Foo; 2; end" parses "begin; 1; rescue Foo; 2; end" says syntax error on "def foo(x : U) forall U, U; end" says syntax error on "def foo(x : U) forall U, U; end" says syntax error on "foo 1," says syntax error on "foo 1," parses "...2" parses "...2" parses "1 <=> 2" parses "1 <=> 2" says syntax error on "foo { |fun| }" says syntax error on "foo { |fun| }" parses "macro foo;end" parses "macro foo;end" parses "def foo(x @alias); end" parses "def foo(x @alias); end" parses "def |(); end;" parses "def |(); end;" parses "def foo(var : Int**); end" parses "def foo(var : Int**); end" parses "foo = 1; foo -1" parses "foo = 1; foo -1" says syntax error on "def foo=(a = 1, b = 2); end" says syntax error on "def foo=(a = 1, b = 2); end" parses "a = 1\nfoo - a" parses "a = 1\nfoo - a" parses "(bar do\nend)" parses "(bar do\nend)" parses "yield 1 if true" parses "yield 1 if true" parses ":|" parses ":|" parses "macro foo; bar class: 1; end" parses "macro foo; bar class: 1; end" parses "protected : Int32" parses "protected : Int32" parses "var.@foo" parses "var.@foo" says syntax error on "class Foo; require \"bar\"; end" says syntax error on "class Foo; require \"bar\"; end" parses "asm(\n\"nop\"\n:\n\"a\"(0)\n:\n\"b\"(1),\n\"c\"(2)\n)" parses "asm(\n\"nop\"\n:\n\"a\"(0)\n:\n\"b\"(1),\n\"c\"(2)\n)" says syntax error on "foo {1, 2}" says syntax error on "foo {1, 2}" parses "def <=(); end" parses "def <=(); end" parses "case a\nwhen b\n1 / 2\nelse\n1 / 2\nend" parses "case a\nwhen b\n1 / 2\nelse\n1 / 2\nend" says syntax error on "def foo @var, █ end" says syntax error on "def foo @var, █ end" parses "macro foo=;end" parses "macro foo=;end" parses "a = 1; pointerof(a)" parses "a = 1; pointerof(a)" parses "foo(1, **bar)" parses "foo(1, **bar)" parses "<<-FOO\n \t1\n \tFOO" parses "<<-FOO\n \t1\n \tFOO" parses "1.responds_to?(\n :foo\n)" parses "1.responds_to?(\n :foo\n)" parses "lib LibC; struct Foo; include Bar; end; end" parses "lib LibC; struct Foo; include Bar; end; end" says syntax error on "a, b, *c, d = 1, 2" says syntax error on "a, b, *c, d = 1, 2" parses "a = 1; a /b" parses "a = 1; a /b" says syntax error on "def foo(\"\" y); y; end" says syntax error on "def foo(\"\" y); y; end" parses "1 ... 2" parses "1 ... 2" parses ":~" parses ":~" parses "case {1, 2}\nwhen foo\n5\nend" parses "case {1, 2}\nwhen foo\n5\nend" parses "def foo(if foo); end" parses "def foo(if foo); end" parses "1 < 2" parses "1 < 2" parses "foo(n <= 2)" parses "foo(n <= 2)" parses "begin; 1; ensure; 2; end" parses "begin; 1; ensure; 2; end" says syntax error on "->::foo.foo" says syntax error on "->::foo.foo" parses "def ===(other, file = 1); end" parses "def ===(other, file = 1); end" parses "def foo(var : Int, Float -> Double); end" parses "def foo(var : Int, Float -> Double); end" parses "{% begin %}%r{\\A}{% end %}" parses "{% begin %}%r{\\A}{% end %}" says syntax error on "break * 1" says syntax error on "break * 1" parses "macro &*;end" parses "macro &*;end" parses "def foo(x @@until); end" parses "def foo(x @@until); end" says syntax error on "foo { |with| }" says syntax error on "foo { |with| }" parses "def foo(x @next); end" parses "def foo(x @next); end" parses "1 / 2" parses "1 / 2" says syntax error on "foo { |instance_sizeof| }" says syntax error on "foo { |instance_sizeof| }" parses "enum Foo; @@foo = 1\n A \n end" parses "enum Foo; @@foo = 1\n A \n end" parses "<<-HERE\n One\n Zero\n HERE" parses "<<-HERE\n One\n Zero\n HERE" parses "Foo??" parses "Foo??" parses "lib LibC\n$errno = Foo : Int32\nend" parses "lib LibC\n$errno = Foo : Int32\nend" says syntax error on "def foo() :String\nend" says syntax error on "def foo() :String\nend" parses "->Foo.>(Int32)" parses "->Foo.>(Int32)" parses "Foo(x: U)" parses "Foo(x: U)" parses "foo %i()" parses "foo %i()" parses "def foo(x @@begin); end" parses "def foo(x @@begin); end" parses "break {1, 2}" parses "break {1, 2}" says syntax error on "{\n1 => 2, 3 => 4\n5 => 6}" says syntax error on "{\n1 => 2, 3 => 4\n5 => 6}" parses "foo = 1; foo {}" parses "foo = 1; foo {}" parses "+1" parses "+1" says syntax error on "foo { |in| }" says syntax error on "foo { |in| }" parses "foo.>(1, 2) { 3 }" parses "foo.>(1, 2) { 3 }" parses "foo(x) do\n//\nend" parses "foo(x) do\n//\nend" parses "case 1; end" parses "case 1; end" says syntax error on "next &- 1" says syntax error on "next &- 1" says syntax error on "next.as(Int32)" says syntax error on "next.as(Int32)" parses "foo(n &- 2)" parses "foo(n &- 2)" parses "foo.bar= *baz" parses "foo.bar= *baz" parses "foo(n | 2)" parses "foo(n | 2)" parses "foo(n &** 2)" parses "foo(n &** 2)" parses "def foo(&block : Int ->\n); end" parses "def foo(&block : Int ->\n); end" parses "foo = 1; ->foo.*(Int32)" parses "foo = 1; ->foo.*(Int32)" parses "a = 1; a *=\n1" parses "a = 1; a *=\n1" says syntax error on "return === 1" says syntax error on "return === 1" says syntax error on "*a if true" says syntax error on "*a if true" parses "def foo(@true); end" parses "def foo(@true); end" parses "a = 1; a <<=\n1" parses "a = 1; a <<=\n1" parses "def self.>; end;" parses "def self.>; end;" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2) : \"eax\", \"ebx\"\n: \"volatile\", \"alignstack\"\n,\n\"intel\"\n)" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2) : \"eax\", \"ebx\"\n: \"volatile\", \"alignstack\"\n,\n\"intel\"\n)" says syntax error on "def foo\nmodule\nend" says syntax error on "def foo\nmodule\nend" says syntax error on "def foo(foo false); end" says syntax error on "def foo(foo false); end" says syntax error on "next > 1" says syntax error on "next > 1" parses "foo(z: 0, a: n >= 2)" parses "foo(z: 0, a: n >= 2)" parses "{% if 1; 2; end %}" parses "{% if 1; 2; end %}" parses "def self.%(); end;" parses "def self.%(); end;" parses "def foo(x @@in); end" parses "def foo(x @@in); end" parses "->Foo.!~(Int32)" parses "->Foo.!~(Int32)" says syntax error on "a.b(), c.d = 1" says syntax error on "a.b(), c.d = 1" parses "property private : Int32" parses "property private : Int32" parses "foo %w()" parses "foo %w()" parses "a.foo, a.bar = 1, 2" parses "a.foo, a.bar = 1, 2" says syntax error on "{foo: 1, bar: 2\nbaz: 3}" says syntax error on "{foo: 1, bar: 2\nbaz: 3}" says syntax error on "def foo(*x, **x); end" says syntax error on "def foo(*x, **x); end" parses "x = 1 ensure 2" parses "x = 1 ensure 2" says syntax error on "a = return" says syntax error on "a = return" parses "def foo(); 1; rescue; 2; end" parses "def foo(); 1; rescue; 2; end" parses "end : Int32" parses "end : Int32" parses "begin; 1; rescue ::Foo | ::Bar; 2; end" parses "begin; 1; rescue ::Foo | ::Bar; 2; end" says syntax error on "macro foo *y;end" says syntax error on "macro foo *y;end" parses "def foo; a = 1; a; end" parses "def foo; a = 1; a; end" parses "case {1}\nin {Int32.class}; 2; end" parses "case {1}\nin {Int32.class}; 2; end" parses "enum Foo; def foo; 1; end; end" parses "enum Foo; def foo; 1; end; end" parses "def foo(x @@extend); end" parses "def foo(x @@extend); end" parses "{/ /, / /}" parses "{/ /, / /}" parses "def Foo::Bar.foo\n1\nend" parses "def Foo::Bar.foo\n1\nend" parses "1.as?(\n Int32\n)" parses "1.as?(\n Int32\n)" says syntax error on "foo { |(module)| }" says syntax error on "foo { |(module)| }" says syntax error on "case next; when 1; end; end" says syntax error on "case next; when 1; end; end" says syntax error on "1 .. break" says syntax error on "1 .. break" parses "foo.bar=(*baz)" parses "foo.bar=(*baz)" says syntax error on "fun foo\nFoo = 1" says syntax error on "fun foo\nFoo = 1" parses "sizeof(\n Int32\n)" parses "sizeof(\n Int32\n)" parses ":\"\\a\\b\\n\\r\\t\\v\\f\\e\"" parses ":\"\\a\\b\\n\\r\\t\\v\\f\\e\"" parses "{% for x in y %}body{% end %}" parses "{% for x in y %}body{% end %}" parses "def !=(); end;" parses "def !=(); end;" parses "Foo({String, ->, ->})" parses "Foo({String, ->, ->})" parses "foo result : Int32; result" parses "foo result : Int32; result" parses "case a\nwhen b\n/ /\n\nelse\n/ /\nend" parses "case a\nwhen b\n/ /\n\nelse\n/ /\nend" parses "def ===(); end;" parses "def ===(); end;" parses "Foo?" parses "Foo?" parses "->Foo.&(Int32)" parses "->Foo.&(Int32)" parses "foo.!=(1, 2)" parses "foo.!=(1, 2)" parses "a() /3" parses "a() /3" says syntax error on "\"foo\" \"bar\"" says syntax error on "\"foo\" \"bar\"" parses "x[1, ..2]" parses "x[1, ..2]" parses "lib LibC; union Foo; end end" parses "lib LibC; union Foo; end end" parses "Foo(T, 1)" parses "Foo(T, 1)" parses "1.!(\n)" parses "1.!(\n)" says syntax error on "def foo; A = 1; end" says syntax error on "def foo; A = 1; end" parses "def foo(a, &block); end" parses "def foo(a, &block); end" says syntax error on "foo { |while| }" says syntax error on "foo { |while| }" parses "\"hello \"\\\n\"world\"" parses "\"hello \"\\\n\"world\"" parses "property abstract : Int32" parses "property abstract : Int32" parses "def foo(@[Foo] var : Int32); end" parses "def foo(@[Foo] var : Int32); end" parses "foo(a: n & 2)" parses "foo(a: n & 2)" parses "asm(\"nop\" : \"a\"(0) : \"b\"(1))" parses "asm(\"nop\" : \"a\"(0) : \"b\"(1))" says syntax error on "def foo(foo out); end" says syntax error on "def foo(foo out); end" parses "macro `;end" parses "macro `;end" parses "def foo(x @pointerof); end" parses "def foo(x @pointerof); end" parses "foo(1 + 2)" parses "foo(1 + 2)" parses "foo(a: n < 2)" parses "foo(a: n < 2)" parses "def **; end;" parses "def **; end;" parses "a.b //=\n1" parses "a.b //=\n1" parses "def foo(x, *, y, &); 1; end" parses "def foo(x, *, y, &); 1; end" parses "1 if /x/" parses "1 if /x/" parses "foo z: out x; x" parses "foo z: out x; x" says syntax error on "def foo(begin); end" says syntax error on "def foo(begin); end" parses "return 1.bar do\nend" parses "return 1.bar do\nend" parses "def foo(@struct); end" parses "def foo(@struct); end" parses "foo = 1; foo(+1)" parses "foo = 1; foo(+1)" parses "def ==(); end;" parses "def ==(); end;" parses "`foo\\``" parses "`foo\\``" says syntax error on "foo { |(if)| }" says syntax error on "foo { |(if)| }" says syntax error on "'''" says syntax error on "'''" parses "f.x /= 2" parses "f.x /= 2" says syntax error on "def foo(pointerof); end" says syntax error on "def foo(pointerof); end" says syntax error on "next >= 1" says syntax error on "next >= 1" says syntax error on "def foo=(&block); end" says syntax error on "def foo=(&block); end" parses "foo.|(1, 2) { 3 }" parses "foo.|(1, 2) { 3 }" parses "def foo(x @@module); end" parses "def foo(x @@module); end" parses "foo.- 1, 2" parses "foo.- 1, 2" parses "foo = 1; ->foo.[]=(Int32)" parses "foo = 1; ->foo.[]=(Int32)" parses "def foo(@unless); end" parses "def foo(@unless); end" parses "while : Int32" parses "while : Int32" parses "puts %w(one two)" parses "puts %w(one two)" parses "x[a: 1, b: 2,]" parses "x[a: 1, b: 2,]" parses "def []=(other, file = 1); end" parses "def []=(other, file = 1); end" parses "foo(a: n == 2)" parses "foo(a: n == 2)" parses "foo(0, n >> 2)" parses "foo(0, n >> 2)" says syntax error on "def foo(x @x); 1; end" says syntax error on "def foo(x @x); 1; end" parses "foo.>=(1, 2)" parses "foo.>=(1, 2)" parses "unless foo; 1; else; 2; end" parses "unless foo; 1; else; 2; end" says syntax error on "def responds_to?; end" says syntax error on "def responds_to?; end" says syntax error on "def foo var; end" says syntax error on "def foo var; end" parses "->() : Int32 { }" parses "->() : Int32 { }" parses "def foo; yield 1; yield; end" parses "def foo; yield 1; yield; end" parses "foo.===(1, 2)" parses "foo.===(1, 2)" parses "property asm : Int32" parses "property asm : Int32" parses "f.x >>= 2" parses "f.x >>= 2" parses "->@foo.foo!" parses "->@foo.foo!" parses "def foo(offsetof foo); end" parses "def foo(offsetof foo); end" parses "foo &.@bar" parses "foo &.@bar" says syntax error on "def foo(foo unless); end" says syntax error on "def foo(foo unless); end" global regex match data says syntax error on "$0, a = {1, 2}" says syntax error on "$0, a = {1, 2}" parses "$? = 1" parses "$? = 1" parses "$~" parses "$~" parses "$~ = 1" parses "$~ = 1" parses "$?" parses "$?" says syntax error on "$99999999999999999999999?" says syntax error on "$99999999999999999999999?" parses "foo $?" parses "foo $?" parses "foo $1" parses "foo $1" parses "$1" parses "$1" says syntax error on "$0, $1 = [1, 2]" says syntax error on "$0, $1 = [1, 2]" says syntax error on "$2147483648" says syntax error on "$2147483648" parses "$0" parses "$0" says syntax error on "$0 = 1" says syntax error on "$0 = 1" parses "$1?" parses "$1?" parses "$?.foo" parses "$?.foo" parses "$~.foo" parses "$~.foo" parses "foo { |a, b, | 1 }" parses "foo { |a, b, | 1 }" says syntax error on "def foo\nclass\nend" says syntax error on "def foo\nclass\nend" parses "def <<(); end" parses "def <<(); end" parses "foo.>(1, 2)" parses "foo.>(1, 2)" parses "foo = 1; ->foo.bar(Int32)" parses "foo = 1; ->foo.bar(Int32)" says syntax error on "asm(\"\" ::: \"\"(var))" says syntax error on "asm(\"\" ::: \"\"(var))" parses "case {1}\nin {.bar?}; 2; end" parses "case {1}\nin {.bar?}; 2; end" parses "foo a: b(1) do\nend" parses "foo a: b(1) do\nend" says syntax error on "def foo(var = 1 : Int32); end" says syntax error on "def foo(var = 1 : Int32); end" parses "def foo(a); a; end" parses "def foo(a); a; end" parses "def foo(**args)\n1\nend" parses "def foo(**args)\n1\nend" parses "{% begin %}%[ %s ]{% end %}" parses "{% begin %}%[ %s ]{% end %}" parses "a.b/2" parses "a.b/2" says syntax error on "foo { |self| }" says syntax error on "foo { |self| }" parses "n =~ 2" parses "n =~ 2" parses "property unless : Int32" parses "property unless : Int32" parses ":*" parses ":*" says syntax error on "break | 1" says syntax error on "break | 1" parses "enum Foo; {% if 1 %}2{% end %}; end" parses "enum Foo; {% if 1 %}2{% end %}; end" parses "/ /" parses "/ /" parses "<<-FOO\n\t 1\n\t FOO" parses "<<-FOO\n\t 1\n\t FOO" parses "{{ //.options }}" parses "{{ //.options }}" says syntax error on "return & 1" says syntax error on "return & 1" parses "def foo(@@alias); end" parses "def foo(@@alias); end" parses "foo(n < 2)" parses "foo(n < 2)" parses "foo + 1" parses "foo + 1" parses "def foo(struct foo); end" parses "def foo(struct foo); end" parses "def foo(x @@out); end" parses "def foo(x @@out); end" parses "foo if 3" parses "foo if 3" parses "def foo(**args : **Foo)\n1\nend" parses "def foo(**args : **Foo)\n1\nend" parses "foo.=== 1, 2" parses "foo.=== 1, 2" parses "foo(&.as?(T))" parses "foo(&.as?(T))" parses "ensure : Int32" parses "ensure : Int32" parses "%r(\\/)" parses "%r(\\/)" parses "lib LibC; enum Foo; A\nB; C\nD = 1; end end" parses "lib LibC; enum Foo; A\nB; C\nD = 1; end end" parses "{% unless 1; 2; end %}" parses "{% unless 1; 2; end %}" parses "case 1\nwhen .as?(T)\n2\nend" parses "case 1\nwhen .as?(T)\n2\nend" parses "foo.| 1, 2" parses "foo.| 1, 2" parses "n // 2" parses "n // 2" says syntax error on "foo x: 1, x: 1" says syntax error on "foo x: 1, x: 1" parses "!1" parses "!1" parses "{{ nil?(foo) }}" parses "{{ nil?(foo) }}" says syntax error on "def foo(false); end" says syntax error on "def foo(false); end" parses "struct : Int32" parses "struct : Int32" parses "foo.& do end" parses "foo.& do end" says syntax error on "foo { |struct| }" says syntax error on "foo { |struct| }" parses "def !~(); end" parses "def !~(); end" parses "a = 1; a &-= 1" parses "a = 1; a &-= 1" parses "case when 1\n2\nend" parses "case when 1\n2\nend" parses "def foo(@@class); end" parses "def foo(@@class); end" parses "offsetof(\n Foo,\n @foo\n)" parses "offsetof(\n Foo,\n @foo\n)" says syntax error on "Hash{\"foo\": 1}" says syntax error on "Hash{\"foo\": 1}" parses "foo[] /2" parses "foo[] /2" parses "def foo(@@lib); end" parses "def foo(@@lib); end" says syntax error on "foo[next]" says syntax error on "foo[next]" parses "foo out @x; @x" parses "foo out @x; @x" says syntax error on "foo[1] = next" says syntax error on "foo[1] = next" says syntax error on "def foo(foo extend); end" says syntax error on "def foo(foo extend); end" says syntax error on "a() = 1" says syntax error on "a() = 1" parses "until true; 1; end;" parses "until true; 1; end;" parses "foo.bar(1, 2) { 3 }" parses "foo.bar(1, 2) { 3 }" parses "@a : Foo | Int32" parses "@a : Foo | Int32" says syntax error on "1 unless return" says syntax error on "1 unless return" parses "->Foo.&**(Int32)" parses "->Foo.&**(Int32)" parses "foo(0, n + 2)" parses "foo(0, n + 2)" sets correct location of parameter in proc literal sets correct location of parameter in proc literal parses "def foo(x @@require); end" parses "def foo(x @@require); end" parses "def foo(@sizeof); end" parses "def foo(@sizeof); end" says syntax error on "def foo(lib); end" says syntax error on "def foo(lib); end" says syntax error on "case when .foo? then 1; end" says syntax error on "case when .foo? then 1; end" parses "a.b |=\n1" parses "a.b |=\n1" says syntax error on "def foo(foo with); end" says syntax error on "def foo(foo with); end" says syntax error on "foo { |a b| }" says syntax error on "foo { |a b| }" parses "n << 2" parses "n << 2" parses "foo.-(1, 2) { 3 }" parses "foo.-(1, 2) { 3 }" says syntax error on "1 unless next" says syntax error on "1 unless next" says syntax error on "A = begin; 1; rescue; B = 1; end" says syntax error on "A = begin; 1; rescue; B = 1; end" parses "a = 1; a &*= 1" parses "a = 1; a &*= 1" says syntax error on "a = break" says syntax error on "a = break" parses "sizeof : Int32" parses "sizeof : Int32" parses "foo(0, n &+ 2)" parses "foo(0, n &+ 2)" parses "x[+ 1]" parses "x[+ 1]" parses "_, *_, _, _ = 1, 2, 3" parses "_, *_, _, _ = 1, 2, 3" parses "def foo(@with); end" parses "def foo(@with); end" parses "macro !~;end" parses "macro !~;end" parses "f.x &*= 2" parses "f.x &*= 2" parses "def foo(x @@alias); end" parses "def foo(x @@alias); end" parses "a = 1; a /=\n1" parses "a = 1; a /=\n1" parses "property nil : Int32" parses "property nil : Int32" says syntax error on "foo { |if| }" says syntax error on "foo { |if| }" parses "foo.* 1, 2" parses "foo.* 1, 2" parses "a[0], a[1] = 1, 2" parses "a[0], a[1] = 1, 2" parses "property alias : Int32" parses "property alias : Int32" parses "def foo(@[Foo] var); end" parses "def foo(@[Foo] var); end" parses "/ /\n/ /" parses "/ /\n/ /" parses "macro foo;bar{% if x %}body{% elsif y %}body2{%end%}baz;end" parses "macro foo;bar{% if x %}body{% elsif y %}body2{%end%}baz;end" says syntax error on "1 if next" says syntax error on "1 if next" parses "[1,\n 2,]" parses "[1,\n 2,]" sets correct location of instance variable in proc pointer sets correct location of instance variable in proc pointer parses "def foo(x @@var); end" parses "def foo(x @@var); end" parses "def foo(@class); end" parses "def foo(@class); end" parses "a = 1; pointerof(a)" parses "a = 1; pointerof(a)" parses "@a, b = 1, 2" parses "@a, b = 1, 2" parses "def &-(); end" parses "def &-(); end" parses "def foo(x, **args)\n1\nend" parses "def foo(x, **args)\n1\nend" parses ":\"\\\"foo\\\"\"" parses ":\"\\\"foo\\\"\"" says syntax error on "def foo(enum); end" says syntax error on "def foo(enum); end" parses "def <=(); end;" parses "def <=(); end;" parses "lib LibC; enum Foo; A = 1; B; end end" parses "lib LibC; enum Foo; A = 1; B; end end" parses "<<-HERE\n One \\n Two\n Zero\n HERE" parses "<<-HERE\n One \\n Two\n Zero\n HERE" says syntax error on "def foo(sizeof); end" says syntax error on "def foo(sizeof); end" says syntax error on "foo { |(struct)| }" says syntax error on "foo { |(struct)| }" parses "1.tap do |x|; 1; rescue; x; end" parses "1.tap do |x|; 1; rescue; x; end" parses "1.as? Bar" parses "1.as? Bar" parses "foo %q" parses "foo %q" parses "1 - 2" parses "1 - 2" parses "foo.>=(1, 2) { 3 }" parses "foo.>=(1, 2) { 3 }" parses "::Foo{\"x\" => \"y\"}" parses "::Foo{\"x\" => \"y\"}" says syntax error on "return | 1" says syntax error on "return | 1" says syntax error on "foo { |(instance_sizeof)| }" says syntax error on "foo { |(instance_sizeof)| }" parses "Foo({X: X, Y: Y})" parses "Foo({X: X, Y: Y})" parses "def foo(@@return); end" parses "def foo(@@return); end" parses "{1 => 2, 3 => 4}" parses "{1 => 2, 3 => 4}" parses "if foo\n1\nend" parses "if foo\n1\nend" parses "foo(a: n ** 2)" parses "foo(a: n ** 2)" parses "def foo(@@sizeof); end" parses "def foo(@@sizeof); end" parses "foo.**(1, 2)" parses "foo.**(1, 2)" parses "def foo; x { |a, *b| b }; end" parses "def foo; x { |a, *b| b }; end" parses "def foo(@begin); end" parses "def foo(@begin); end" parses "def foo(@@with); end" parses "def foo(@@with); end" parses "foo(n =~ 2)" parses "foo(n =~ 2)" says syntax error on "foo { |(until)| }" says syntax error on "foo { |(until)| }" parses "!a && b" parses "!a && b" parses "def foo(@@nil); end" parses "def foo(@@nil); end" parses "%x(`which(foo)`)" parses "%x(`which(foo)`)" parses "a : Foo = 1" parses "a : Foo = 1" parses "def foo(@extend); end" parses "def foo(@extend); end" parses "return 1" parses "return 1" says syntax error on "asm(\"nop\" ::: \"\#{foo}\")" says syntax error on "asm(\"nop\" ::: \"\#{foo}\")" parses ":**" parses ":**" parses "foo.**" parses "foo.**" parses "def foo(a, @[Foo] var); end" parses "def foo(a, @[Foo] var); end" parses "foo.>=" parses "foo.>=" parses "<<-HERE\n foo\#{1}bar\n baz\n HERE" parses "<<-HERE\n foo\#{1}bar\n baz\n HERE" parses "macro foo(@[Foo] var);end" parses "macro foo(@[Foo] var);end" parses "foo = 1; ->foo.===(Int32)" parses "foo = 1; ->foo.===(Int32)" parses "puts {{\n1\n}}" parses "puts {{\n1\n}}" says syntax error on "foo { |(pointerof)| }" says syntax error on "foo { |(pointerof)| }" parses "foo(z: 0, a: n !~ 2)" parses "foo(z: 0, a: n !~ 2)" parses "a = 1; (a)/b" parses "a = 1; (a)/b" parses "macro foo(@[Foo] var);end" parses "macro foo(@[Foo] var);end" parses "def foo(x @struct); end" parses "def foo(x @struct); end" says syntax error on "def foo(foo if); end" says syntax error on "def foo(foo if); end" parses "\"hello \#{1}\" \\\r\n \"\#{2} world\"" parses "\"hello \#{1}\" \\\r\n \"\#{2} world\"" parses "foo.nil?( )" parses "foo.nil?( )" parses "break" parses "break" says syntax error on "lib LibC\n$Errno : Int32\nend" says syntax error on "lib LibC\n$Errno : Int32\nend" parses "a.b &+=\n1" parses "a.b &+=\n1" parses "foo(0, n <= 2)" parses "foo(0, n <= 2)" parses "Foo(X: U, Y: V)" parses "Foo(X: U, Y: V)" parses "abstract class Foo; end" parses "abstract class Foo; end" parses "def foo(x @require); end" parses "def foo(x @require); end" parses "def foo(x @class); end" parses "def foo(x @class); end" says syntax error on "a = 1, b = 2" says syntax error on "a = 1, b = 2" parses ":<<" parses ":<<" parses "case 1; when 2 then /foo/; end" parses "case 1; when 2 then /foo/; end" parses "[/ /, / /]" parses "[/ /, / /]" parses "1 ** 2" parses "1 ** 2" says syntax error on "break > 1" says syntax error on "break > 1" parses "def foo(x @@if); end" parses "def foo(x @@if); end" parses "n / 2" parses "n / 2" says syntax error on "next <= 1" says syntax error on "next <= 1" parses "return *{1, 2}" parses "return *{1, 2}" parses "{% begin %}%x( %s ){% end %}" parses "{% begin %}%x( %s ){% end %}" parses ":foo!" parses ":foo!" parses "next 1" parses "next 1" says syntax error on "def foo(foo in); end" says syntax error on "def foo(foo in); end" parses "def foo(enum foo); end" parses "def foo(enum foo); end" says syntax error on "next < 1" says syntax error on "next < 1" parses "def foo(\"bar qux\" y); y; end" parses "def foo(\"bar qux\" y); y; end" parses "f.x &= 2" parses "f.x &= 2" parses "def foo(pointerof foo); end" parses "def foo(pointerof foo); end" parses "def foo(x @@include); end" parses "def foo(x @@include); end" parses ":\u304B\u305F\u306A" parses ":\u304B\u305F\u306A" parses "1 == 2 == 3 == 4" parses "1 == 2 == 3 == 4" parses "def self.foo\n1\nend" parses "def self.foo\n1\nend" parses ":\"\"" parses ":\"\"" parses "lib LibC\nfun getchar(a : Int)\nend" parses "lib LibC\nfun getchar(a : Int)\nend" says syntax error on "return + 1" says syntax error on "return + 1" parses "<<-HERE\n \#{1} \\n \#{2}\n HERE" parses "<<-HERE\n \#{1} \\n \#{2}\n HERE" says syntax error on "case 1\nwhen Int32; 2; in 2" says syntax error on "case 1\nwhen Int32; 2; in 2" says syntax error on "return > 1" says syntax error on "return > 1" parses "lib LibC; struct Foo; x : Int**; end end" parses "lib LibC; struct Foo; x : Int**; end end" says syntax error on "<<-HERE\n One\n \#{1}\n HERE" says syntax error on "<<-HERE\n One\n \#{1}\n HERE" parses "call @foo.bar" parses "call @foo.bar" parses "1;+2" parses "1;+2" says syntax error on "\"\#{<<-HERE}\"\nHERE" says syntax error on "\"\#{<<-HERE}\"\nHERE" parses "lib LibC; fun foo : Int*; end" parses "lib LibC; fun foo : Int*; end" says syntax error on "while next; end" says syntax error on "while next; end" parses "1 .. 2" parses "1 .. 2" parses "foo +1_i64" parses "foo +1_i64" parses "lib LibC; struct Foo; x : Int*; end end" parses "lib LibC; struct Foo; x : Int*; end end" parses "{[] of Foo, self.foo}" parses "{[] of Foo, self.foo}" parses "foo rescue 2" parses "foo rescue 2" parses "->::foo?" parses "->::foo?" says syntax error on "case break; when 1; end; end" says syntax error on "case break; when 1; end; end" parses "foo { 1 }" parses "foo { 1 }" parses "a.b +=\n1" parses "a.b +=\n1" says syntax error on "def foo; require \"bar\"; end" says syntax error on "def foo; require \"bar\"; end" parses "<<-HERE\r\n One\r\n Zero\r\n HERE\r\n" parses "<<-HERE\r\n One\r\n Zero\r\n HERE\r\n" parses "def **(); end;" parses "def **(); end;" parses "foo.!" parses "foo.!" says syntax error on "A = begin; B = 1; end" says syntax error on "A = begin; B = 1; end" parses "n &- 2" parses "n &- 2" parses "(bar {})" parses "(bar {})" parses "macro foo(x = __LINE__);end" parses "macro foo(x = __LINE__);end" parses "foo = 1; ->foo.%(Int32)" parses "foo = 1; ->foo.%(Int32)" parses "extend : Int32" parses "extend : Int32" says syntax error on "def foo(struct); end" says syntax error on "def foo(struct); end" parses "{/ / => / /, / / => / /}" parses "{/ / => / /, / / => / /}" parses "foo unless 3" parses "foo unless 3" says syntax error on "{foo: 1\nbar: 2}" says syntax error on "{foo: 1\nbar: 2}" parses "foo.=~ do end" parses "foo.=~ do end" says syntax error on "foo &.&&()" says syntax error on "foo &.&&()" says syntax error on "def foo():String\nend" says syntax error on "def foo():String\nend" parses "foo(/ /)" parses "foo(/ /)" parses "struct Foo; end" parses "struct Foo; end" parses "next {1 => 2}" parses "next {1 => 2}" says syntax error on "return .. 1" says syntax error on "return .. 1" says syntax error on "def foo(foo class); end" says syntax error on "def foo(foo class); end" parses "class Foo(Type); end" parses "class Foo(Type); end" parses "macro foo\n\"\\'\"\nend" parses "macro foo\n\"\\'\"\nend" parses "def foo; with a yield 1; end" parses "def foo; with a yield 1; end" parses "-1_i64" parses "-1_i64" parses "def ===(*args, **opts); end" parses "def ===(*args, **opts); end" parses "/ hi /" parses "/ hi /" parses "@@foo/2" parses "@@foo/2" parses "def foo(until foo); end" parses "def foo(until foo); end" parses "yield foo do\nend" parses "yield foo do\nend" parses "def !=(*args, **opts); end" parses "def !=(*args, **opts); end" says syntax error on "foo { |(enum)| }" says syntax error on "foo { |(enum)| }" parses "class Foo\nend" parses "class Foo\nend" parses "n + 2" parses "n + 2" parses "Int[]" parses "Int[]" parses "1 >> 2" parses "1 >> 2" parses "f.x Foo.new" parses "f.x Foo.new" parses "foo = 1; ->foo.foo!" parses "foo = 1; ->foo.foo!" parses "def >(); end" parses "def >(); end" parses "foo.> do end" parses "foo.> do end" parses "def foo(x)\n x\nend; foo = 1; b = 2; foo +b" parses "def foo(x)\n x\nend; foo = 1; b = 2; foo +b" says syntax error on "case {1, 2}; when {3}; 4; end" says syntax error on "case {1, 2}; when {3}; 4; end" parses "n == 2" parses "n == 2" parses "a[], a[] = 1, 2" parses "a[], a[] = 1, 2" parses "\"foo\#{\"bar\"}baz\"" parses "\"foo\#{\"bar\"}baz\"" parses "private def foo; end" parses "private def foo; end" parses "foo(//)" parses "foo(//)" parses "foo = 1; ->foo.**(Int32)" parses "foo = 1; ->foo.**(Int32)" says syntax error on "case 1\nin .nil?; 2" says syntax error on "case 1\nin .nil?; 2" says syntax error on "b, 1 == 2, a = 4" says syntax error on "b, 1 == 2, a = 4" parses "return if true" parses "return if true" parses "@a = uninitialized Foo" parses "@a = uninitialized Foo" parses "property pointerof : Int32" parses "property pointerof : Int32" says syntax error on "Hash{\"foo\": 1, \"bar\": 2}" says syntax error on "Hash{\"foo\": 1, \"bar\": 2}" parses "foo[1] /2" parses "foo[1] /2" parses "case 1\nwhen 1\n2\nelse\n3\nend" parses "case 1\nwhen 1\n2\nelse\n3\nend" parses "def foo(with foo); end" parses "def foo(with foo); end" parses "x([] of Foo, Bar.new)" parses "x([] of Foo, Bar.new)" parses "foo %w" parses "foo %w" parses "foo x, y do\nend" parses "foo x, y do\nend" parses "a; if / /\n/ /\nelsif / /\n/ /\nend" parses "a; if / /\n/ /\nelsif / /\n/ /\nend" parses "foo = 1; foo +1" parses "foo = 1; foo +1" parses "foo(a: 1\n)" parses "foo(a: 1\n)" parses "def foo(@[Foo] var); end" parses "def foo(@[Foo] var); end" parses "macro foo;if var;true;end;end" parses "macro foo;if var;true;end;end" says syntax error on "def foo(foo module); end" says syntax error on "def foo(foo module); end" says syntax error on "break // 1" says syntax error on "break // 1" parses "def foo(false foo); end" parses "def foo(false foo); end" parses "lib LibC\nfun getchar : Int\nend" parses "lib LibC\nfun getchar : Int\nend" parses "2 * (3 + 4)" parses "2 * (3 + 4)" parses "foo(z: 0, a: n & 2)" parses "foo(z: 0, a: n & 2)" says syntax error on "unless 1 == 1 a; end" says syntax error on "unless 1 == 1 a; end" parses "def foo(asm foo); end" parses "def foo(asm foo); end" says syntax error on "foo { |include| }" says syntax error on "foo { |include| }" parses "def foo(*y : *T); 1; end" parses "def foo(*y : *T); 1; end" parses "1 | 2" parses "1 | 2" parses "foo = 1; ->foo.<(Int32)" parses "foo = 1; ->foo.<(Int32)" parses "<<-FOO\n\t1\n\tFOO" parses "<<-FOO\n\t1\n\tFOO" parses "property enum : Int32" parses "property enum : Int32" says syntax error on "def foo(*a foo); end" says syntax error on "def foo(*a foo); end" parses "foo(z: 0, a: n &+ 2)" parses "foo(z: 0, a: n &+ 2)" parses "foo = 1; ->foo.[](Int32)" parses "foo = 1; ->foo.[](Int32)" parses "def ^; end;" parses "def ^; end;" parses ":<=" parses ":<=" parses "2 / 3 + 4 / 5" parses "2 / 3 + 4 / 5" parses "1.~" parses "1.~" parses "macro /;end" parses "macro /;end" says syntax error on "def foo(\"bar\");end" says syntax error on "def foo(\"bar\");end" says syntax error on "a, B = 1, 2" says syntax error on "a, B = 1, 2" parses "def foo ; 1 ; end" parses "def foo ; 1 ; end" parses "def self.|(); end;" parses "def self.|(); end;" says syntax error on "break / 1" says syntax error on "break / 1" parses "b.c ||= 1" parses "b.c ||= 1" parses "asm(\"nop\" ::: :)" parses "asm(\"nop\" ::: :)" parses "T::U/1" parses "T::U/1" says syntax error on "foo { |sizeof| }" says syntax error on "foo { |sizeof| }" parses "Foo(\nT\n)" parses "Foo(\nT\n)" says syntax error on "case return; when 1; end; end" says syntax error on "case return; when 1; end; end" parses "def foo(x, *y : Int32); 1; end" parses "def foo(x, *y : Int32); 1; end" says syntax error on "foo { |return| }" says syntax error on "foo { |return| }" parses "{% begin %}%{ %s }{% end %}" parses "{% begin %}%{ %s }{% end %}" parses "def =~(); end;" parses "def =~(); end;" says syntax error on "foo(1 2)" says syntax error on "foo(1 2)" parses "self / number" parses "self / number" parses "foo ..2" parses "foo ..2" parses "begin : Int32" parses "begin : Int32" parses "foo(x, *bar, *baz, y)" parses "foo(x, *bar, *baz, y)" parses "case 1\nwhen .foo\n2\nend" parses "case 1\nwhen .foo\n2\nend" parses "lib LibC\nfun getch = \"get.char\" : Int32\nend" parses "lib LibC\nfun getch = \"get.char\" : Int32\nend" parses "macro foo(**args)\n1\nend" parses "macro foo(**args)\n1\nend" says syntax error on "def foo\nlib\nend" says syntax error on "def foo\nlib\nend" says syntax error on "macro foo x\n 1 + 2; end" says syntax error on "macro foo x\n 1 + 2; end" parses "foo x, *bar" parses "foo x, *bar" says syntax error on "return.foo" says syntax error on "return.foo" parses "lib LibC\nfun getch = GetChar\nend" parses "lib LibC\nfun getch = GetChar\nend" says syntax error on "a {}, b = 1" says syntax error on "a {}, b = 1" parses "{% for _, x, _ in y %}body{% end %}" parses "{% for _, x, _ in y %}body{% end %}" parses "a : Foo[12]" parses "a : Foo[12]" parses "def foo; with a yield; end" parses "def foo; with a yield; end" parses "false" parses "false" says syntax error on "$foo" says syntax error on "$foo" parses "Foo(\n)" parses "Foo(\n)" says syntax error on "return.as(Int32)" says syntax error on "return.as(Int32)" parses "[] of ->;" parses "[] of ->;" parses "foo%Q" parses "foo%Q" parses "foo 1, **bar, &block" parses "foo 1, **bar, &block" parses "foo = 1; ->foo.^(Int32)" parses "foo = 1; ->foo.^(Int32)" parses "lib LibC\nfun getch = \"get.char\"\nend" parses "lib LibC\nfun getch = \"get.char\"\nend" parses "foo \"foo bar\": 1, \"baz\": 2" parses "foo \"foo bar\": 1, \"baz\": 2" parses "a.b *=\n1" parses "a.b *=\n1" parses "a == / /" parses "a == / /" parses "1_i64" parses "1_i64" says syntax error on "foo { |typeof| }" says syntax error on "foo { |typeof| }" parses "macro []=;end" parses "macro []=;end" parses "foo Bar { 1 }" parses "foo Bar { 1 }" parses "lib LibFoo\nend\nif true\nend" parses "lib LibFoo\nend\nif true\nend" parses "def foo(@@unless); end" parses "def foo(@@unless); end" says syntax error on "while break; end" says syntax error on "while break; end" says syntax error on "{\"foo\" => 1, \"bar\": 2}" says syntax error on "{\"foo\" => 1, \"bar\": 2}" parses "enum Foo::Bar; A = 1; end" parses "enum Foo::Bar; A = 1; end" parses "macro foo;bar{% if x %}body{% elsif y %}body2{% else %}body3{%end%}baz;end" parses "macro foo;bar{% if x %}body{% elsif y %}body2{% else %}body3{%end%}baz;end" parses "macro [];end" parses "macro [];end" parses "foo.!= do end" parses "foo.!= do end" parses "a = 1; yield a rescue a" parses "a = 1; yield a rescue a" parses "enum Foo; A\nB; C\nD = 1; end" parses "enum Foo; A\nB; C\nD = 1; end" parses "case;when true;1;end" parses "case;when true;1;end" parses "{% if 1\n x\nend %}" parses "{% if 1\n x\nend %}" says syntax error on "a.b {}, c = 1" says syntax error on "a.b {}, c = 1" says syntax error on "def self.as; end" says syntax error on "def self.as; end" parses "def foo; end" parses "def foo; end" parses "foo.!( )" parses "foo.!( )" parses "\"\"" parses "\"\"" parses "%r(\\ )" parses "%r(\\ )" parses "Int[8]" parses "Int[8]" parses "foo.&(1, 2)" parses "foo.&(1, 2)" parses "def foo(@@end); end" parses "def foo(@@end); end" parses "::foo" parses "::foo" parses "def foo(x @offsetof); end" parses "def foo(x @offsetof); end" parses "def foo(@asm); end" parses "def foo(@asm); end" parses "{{a = 1 if 2}}" parses "{{a = 1 if 2}}" parses "foo.*(1, 2) { 3 }" parses "foo.*(1, 2) { 3 }" parses "macro ===;end" parses "macro ===;end" parses "foo.[]=" parses "foo.[]=" parses "def &**(); end" parses "def &**(); end" parses "def foo(var : Int32 = 1); end" parses "def foo(var : Int32 = 1); end" parses "a = 1; yield a ensure a" parses "a = 1; yield a ensure a" parses "x[a: 1, b: 2]" parses "x[a: 1, b: 2]" says syntax error on "foo { |(offsetof)| }" says syntax error on "foo { |(offsetof)| }" parses "foo.[]= do end" parses "foo.[]= do end" parses "a.b >>=\n1" parses "a.b >>=\n1" parses "x = 1; foo.bar x do\nend" parses "x = 1; foo.bar x do\nend" says syntax error on "foo(**bar, *x)" says syntax error on "foo(**bar, *x)" parses "instance_sizeof(X)" parses "instance_sizeof(X)" says syntax error on "fun Foo : Int64\nend" says syntax error on "fun Foo : Int64\nend" parses "def self.<(); end;" parses "def self.<(); end;" parses "\"foo\#{bar}baz\"" parses "\"foo\#{bar}baz\"" parses "x : Foo(A, *B, C)" parses "x : Foo(A, *B, C)" parses "->Foo.|(Int32)" parses "->Foo.|(Int32)" parses "{% begin %}%w{ %s }{% end %}" parses "{% begin %}%w{ %s }{% end %}" parses "property typeof : Int32" parses "property typeof : Int32" parses "break *1, 2" parses "break *1, 2" parses "/ /; / /" parses "/ /; / /" parses "case {1}\nin {false}; 2; end" parses "case {1}\nin {false}; 2; end" says syntax error on "A = (B = 1)" says syntax error on "A = (B = 1)" parses "foo(n / 2)" parses "foo(n / 2)" parses "\u3042.\u3044, \u3046.\u3048.\u304A = 1, 2" parses "\u3042.\u3044, \u3046.\u3048.\u304A = 1, 2" parses "<<-EOF.x\n foo\nEOF" parses "<<-EOF.x\n foo\nEOF" parses "case {1}\nin {Int32}; 2; end" parses "case {1}\nin {Int32}; 2; end" parses "->@@foo.foo=" parses "->@@foo.foo=" parses "case 1\nwhen 1\n2\nend" parses "case 1\nwhen 1\n2\nend" parses "Foo({*X, *{Y}})" parses "Foo({*X, *{Y}})" parses "def foo(**args : Foo)\n1\nend" parses "def foo(**args : Foo)\n1\nend" parses "def foo(@var); 1; end" parses "def foo(@var); 1; end" parses "a = / /" parses "a = / /" parses "+1_i64" parses "+1_i64" parses "def foo(instance_sizeof foo); end" parses "def foo(instance_sizeof foo); end" parses "foo.!.!" parses "foo.!.!" parses ":\"\\u{61}\"" parses ":\"\\u{61}\"" parses "foo.<" parses "foo.<" says syntax error on "fun foo\nclass" says syntax error on "fun foo\nclass" parses "@@a : Foo" parses "@@a : Foo" says syntax error on "nil foo" says syntax error on "nil foo" parses "__FILE__" parses "__FILE__" parses "case\n1\nwhen 1\n2\nend\nif a\nend" parses "case\n1\nwhen 1\n2\nend\nif a\nend" parses "foo(0, n &* 2)" parses "foo(0, n &* 2)" parses "asm(\"nop\" : \"a\"(0))" parses "asm(\"nop\" : \"a\"(0))" parses "def self.[]?; end" parses "def self.[]?; end" parses "1 >= 2" parses "1 >= 2" parses "2.3_f32" parses "2.3_f32" says syntax error on "a {} += 1" says syntax error on "a {} += 1" parses "foo % q()" parses "foo % q()" parses "{% begin %}%< %s >{% end %}" parses "{% begin %}%< %s >{% end %}" parses "foo(**bar)" parses "foo(**bar)" parses "foo.bar = (1).abs" parses "foo.bar = (1).abs" parses "Foo({X, Y,})" parses "Foo({X, Y,})" parses "1_u128" parses "1_u128" parses "def foo(@typeof); end" parses "def foo(@typeof); end" says syntax error on "foo { |(select)| }" says syntax error on "foo { |(select)| }" parses "{% begin %}%x| %s |{% end %}" parses "{% begin %}%x| %s |{% end %}" says syntax error on "return ? 1 : 2" says syntax error on "return ? 1 : 2" parses "def foo(x @@def); end" parses "def foo(x @@def); end" parses "a = 1; a &*=\n1" parses "a = 1; a &*=\n1" says syntax error on "def foo(end); end" says syntax error on "def foo(end); end" says syntax error on "foo(\"bar\" \"baz\")" says syntax error on "foo(\"bar\" \"baz\")" parses "x, y = <<-FOO, <<-BAR\nhello\nFOO\nworld\nBAR" parses "x, y = <<-FOO, <<-BAR\nhello\nFOO\nworld\nBAR" parses "def %(); end" parses "def %(); end" parses "{% begin %}%x{ %s }{% end %}" parses "{% begin %}%x{ %s }{% end %}" parses "@foo" parses "@foo" sets correct location of protected macro in enum sets correct location of protected macro in enum parses "foo %Q()" parses "foo %Q()" says syntax error on "{\"\": 1}" says syntax error on "{\"\": 1}" parses "1\\\r\n + 2" parses "1\\\r\n + 2" parses "macro foo; 1 + 2 {{foo}} 3 + 4; end" parses "macro foo; 1 + 2 {{foo}} 3 + 4; end" parses "def foo(x @@pointerof); end" parses "def foo(x @@pointerof); end" parses "case 1\nwhen 1\n2\nend\nif a\nend" parses "case 1\nwhen 1\n2\nend\nif a\nend" parses "def ==(other, file = 1); end" parses "def ==(other, file = 1); end" says syntax error on "1 ... return" says syntax error on "1 ... return" says syntax error on "\"hello\" foo" says syntax error on "\"hello\" foo" parses "def foo(out foo); end" parses "def foo(out foo); end" says syntax error on "def foo(foo while); end" says syntax error on "def foo(foo while); end" parses "def foo(@next); end" parses "def foo(@next); end" parses "include Foo" parses "include Foo" says syntax error on "def foo(foo case); end" says syntax error on "def foo(foo case); end" parses "_ = 1" parses "_ = 1" parses "1 + 2" parses "1 + 2" parses "<<-HERE\n One\n\n Zero\n HERE" parses "<<-HERE\n One\n\n Zero\n HERE" parses "->(x : Int32) { }" parses "->(x : Int32) { }" says syntax error on "macro Foo.bar;end" says syntax error on "macro Foo.bar;end" parses "foo &.block" parses "foo &.block" parses "a.b &=\n1" parses "a.b &=\n1" parses "class Foo < self; end" parses "class Foo < self; end" says syntax error on "def foo\ndef\nend" says syntax error on "def foo\ndef\nend" parses "def |(); end" parses "def |(); end" parses "begin; 1; 2; 3; end;" parses "begin; 1; 2; 3; end;" parses "@@a = uninitialized Foo" parses "@@a = uninitialized Foo" parses "a.b %=\n1" parses "a.b %=\n1" parses "Int[8]?" parses "Int[8]?" parses "->Foo.=~(Int32)" parses "->Foo.=~(Int32)" parses "1.[]?(2)" parses "1.[]?(2)" parses "def foo(x @@typeof); end" parses "def foo(x @@typeof); end" parses "a = 1; a &= 1" parses "a = 1; a &= 1" parses "%q{hello \\n world}" parses "%q{hello \\n world}" says syntax error on "while return; end" says syntax error on "while return; end" parses "def foo(var : Int -> Double); end" parses "def foo(var : Int -> Double); end" parses "1" parses "1" says syntax error on "def foo(out); end" says syntax error on "def foo(out); end" parses "{A: 1, B: 2}" parses "{A: 1, B: 2}" says syntax error on " {1, 2, 3 end" says syntax error on " {1, 2, 3 end" parses "->Foo.<=(Int32)" parses "->Foo.<=(Int32)" parses "{a: 1, b: 2}" parses "{a: 1, b: 2}" parses "return 1, *2" parses "return 1, *2" parses "def /(); end;" parses "def /(); end;" parses "def self.*(); end;" parses "def self.*(); end;" parses "abstract def foo\n1" parses "abstract def foo\n1" parses "asm(\"bl trap\" :::: \"unwind\")" parses "asm(\"bl trap\" :::: \"unwind\")" parses "Foo({X, Y})" parses "Foo({X, Y})" parses "foo = 1; ->foo.foo?" parses "foo = 1; ->foo.foo?" parses "{1.. => 2};" parses "{1.. => 2};" says syntax error on "{a[0]: 1}" says syntax error on "{a[0]: 1}" parses "macro []?;end" parses "macro []?;end" parses "foo(a: n =~ 2)" parses "foo(a: n =~ 2)" parses "1 << 2" parses "1 << 2" parses "+1.0_f32" parses "+1.0_f32" parses "class Foo(T); end" parses "class Foo(T); end" parses "is_a?(Const)" parses "is_a?(Const)" parses "{%\nif 1; 2; end\n%}" parses "{%\nif 1; 2; end\n%}" parses "1 // 2" parses "1 // 2" says syntax error on "{1 2}" says syntax error on "{1 2}" parses "macro foo\n <<-FOO, <<-BAR + \"\"\n FOO\n BAR\nend" parses "macro foo\n <<-FOO, <<-BAR + \"\"\n FOO\n BAR\nend" parses "offsetof : Int32" parses "offsetof : Int32" parses "foo = 1; ->foo.<=(Int32)" parses "foo = 1; ->foo.<=(Int32)" parses "n <= 2" parses "n <= 2" parses "macro //;end" parses "macro //;end" parses "foo(&.as?(T).bar)" parses "foo(&.as?(T).bar)" says syntax error on "def as?; end" says syntax error on "def as?; end" says syntax error on "macro foo(x : Int32); end" says syntax error on "macro foo(x : Int32); end" parses "def foo(x = __FILE__); end" parses "def foo(x = __FILE__); end" says syntax error on "next &* 1" says syntax error on "next &* 1" parses "foo.%(1, 2)" parses "foo.%(1, 2)" parses "macro foo;%var;end" parses "macro foo;%var;end" parses "a.b / 2" parses "a.b / 2" says syntax error on "asm(\"\" : 1)" says syntax error on "asm(\"\" : 1)" parses "foo = 1; ->foo.=~(Int32)" parses "foo = 1; ->foo.=~(Int32)" parses "foo(0, n < 2)" parses "foo(0, n < 2)" parses "1.is_a?(\n Int32\n)" parses "1.is_a?(\n Int32\n)" parses "1 * -2" parses "1 * -2" parses "def foo(x @@unless); end" parses "def foo(x @@unless); end" says syntax error on "def foo(abstract); end" says syntax error on "def foo(abstract); end" parses "foo out _" parses "foo out _" parses "%r(/)" parses "%r(/)" parses "return;" parses "return;" says syntax error on "def foo=(a,b); end" says syntax error on "def foo=(a,b); end" parses "foo(a: n ^ 2)" parses "foo(a: n ^ 2)" says syntax error on "{\"x\": [] of Int32,\n}\n1.foo(" says syntax error on "{\"x\": [] of Int32,\n}\n1.foo(" parses "while true; end;" parses "while true; end;" parses "def foo(@if); end" parses "def foo(@if); end" parses "%Q{hello \\n world}" parses "%Q{hello \\n world}" says syntax error on "if break; end" says syntax error on "if break; end" parses "property class : Int32" parses "property class : Int32" says syntax error on "def foo(nil); end" says syntax error on "def foo(nil); end" parses "def foo(@@pointerof); end" parses "def foo(@@pointerof); end" says syntax error on "break % 1" says syntax error on "break % 1" parses "a ?\n b ? b1 : b2\n : c ? 3\n : 0" parses "a ?\n b ? b1 : b2\n : c ? 3\n : 0" parses "a = 1; a >>= 1" parses "a = 1; a >>= 1" parses "->Foo.+(Int32)" parses "->Foo.+(Int32)" parses "def foo\n1\nend" parses "def foo\n1\nend" parses "macro <=>;end" parses "macro <=>;end" says syntax error on "1 ... next" says syntax error on "1 ... next" parses "/foo/x" parses "/foo/x" parses "lib Foo::Bar\nend" parses "lib Foo::Bar\nend" parses "n | 2" parses "n | 2" parses "foo 1, 2" parses "foo 1, 2" parses "enum Foo; A = 1\ndef self.foo; 1; end\nend" parses "enum Foo; A = 1\ndef self.foo; 1; end\nend" parses "asm(\"nop\" :::: \"volatile\")" parses "asm(\"nop\" :::: \"volatile\")" parses "->foo=" parses "->foo=" parses "def foo(x = __DIR__); end" parses "def foo(x = __DIR__); end" parses "def self.!=(); end;" parses "def self.!=(); end;" parses "def foo(&block :\n Int ->); end" parses "def foo(&block :\n Int ->); end" parses "->Foo.&+(Int32)" parses "->Foo.&+(Int32)" parses "foo = 1; ->foo.+(Int32)" parses "foo = 1; ->foo.+(Int32)" parses "var.@foo.@bar" parses "var.@foo.@bar" says syntax error on "def foo(protected); end" says syntax error on "def foo(protected); end" parses "->@foo.foo=" parses "->@foo.foo=" parses "def ===; end;" parses "def ===; end;" parses "lib LibC\nfun getch = \"get.char\"(x : Int32)\nend" parses "lib LibC\nfun getch = \"get.char\"(x : Int32)\nend" parses "{{ foo }}" parses "{{ foo }}" says syntax error on "return >= 1" says syntax error on "return >= 1" parses "foo.bar [1]" parses "foo.bar [1]" parses "@@a, b = 1, 2" parses "@@a, b = 1, 2" parses "1_i128" parses "1_i128" parses "Set {1, 2, 3}" parses "Set {1, 2, 3}" parses "a = uninitialized Foo; a" parses "a = uninitialized Foo; a" says syntax error on "A = begin; 1; ensure; B = 1; end" says syntax error on "A = begin; 1; ensure; B = 1; end" parses "next {1, 2}" parses "next {1, 2}" parses "foo(a: n - 2)" parses "foo(a: n - 2)" parses "Foo::Bar?" parses "Foo::Bar?" says syntax error on "1 == 2, a = 4" says syntax error on "1 == 2, a = 4" says syntax error on "1 then" says syntax error on "1 then" parses "{foo:'a', bar:'b'}" parses "{foo:'a', bar:'b'}" says syntax error on "return &- 1" says syntax error on "return &- 1" parses "lib LibC; type A = B**; end" parses "lib LibC; type A = B**; end" parses "yield" parses "yield" parses "foo.===(1, 2) { 3 }" parses "foo.===(1, 2) { 3 }" parses "def foo(x @@nil); end" parses "def foo(x @@nil); end" parses "foo\n .bar" parses "foo\n .bar" parses "def self.!=; end;" parses "def self.!=; end;" parses "->(x : Int32) { x }" parses "->(x : Int32) { x }" says syntax error on "break + 1" says syntax error on "break + 1" parses "macro ^;end" parses "macro ^;end" parses "foo(n // 2)" parses "foo(n // 2)" parses "def foo;bar(end: 1);end" parses "def foo;bar(end: 1);end" parses "def foo(a, b = a); end" parses "def foo(a, b = a); end" parses "{% begin %}%q( %s ){% end %}" parses "{% begin %}%q( %s ){% end %}" says syntax error on "break & 1" says syntax error on "break & 1" says syntax error on "foo[break]" says syntax error on "foo[break]" says syntax error on "1 if break" says syntax error on "1 if break" parses "*a = 1, 2" parses "*a = 1, 2" says syntax error on "return ... 1" says syntax error on "return ... 1" says syntax error on "foo { |(nil)| }" says syntax error on "foo { |(nil)| }" parses "abstract def foo(x)" parses "abstract def foo(x)" parses "1 -2" parses "1 -2" says syntax error on "1 as Bar" says syntax error on "1 as Bar" parses "{%\n1\n2\n3\n%}" parses "{%\n1\n2\n3\n%}" says syntax error on "foo { |(while)| }" says syntax error on "foo { |(while)| }" parses "->Foo::Bar::Baz.foo" parses "->Foo::Bar::Baz.foo" parses "{foo:\"a\", bar:\"b\"}" parses "{foo:\"a\", bar:\"b\"}" parses "foo *{1}" parses "foo *{1}" parses "unless : Int32" parses "unless : Int32" parses "def &+(); end" parses "def &+(); end" parses "def foo(x = / /); end" parses "def foo(x = / /); end" says syntax error on "foo { |(asm)| }" says syntax error on "foo { |(asm)| }" parses "foo(n % 2)" parses "foo(n % 2)" parses "begin; 1; rescue; 2; end" parses "begin; 1; rescue; 2; end" parses "a\nwhile / /; / /; end" parses "a\nwhile / /; / /; end" parses "alignof(\n Int32\n)" parses "alignof(\n Int32\n)" parses "def foo(x @instance_sizeof); end" parses "def foo(x @instance_sizeof); end" says syntax error on "foo { |(self)| }" says syntax error on "foo { |(self)| }" parses "{[] of Foo, Bar::Baz.new}" parses "{[] of Foo, Bar::Baz.new}" sets correct location of global path in class def sets correct location of global path in class def parses "break *{1, 2}" parses "break *{1, 2}" parses "def foo(x @true); end" parses "def foo(x @true); end" parses "foo(1, a: 1, b: 2)" parses "foo(1, a: 1, b: 2)" says syntax error on "macro responds_to?; end" says syntax error on "macro responds_to?; end" parses "foo do\n//\nend" parses "foo do\n//\nend" parses "{% begin %}%| %s |{% end %}" parses "{% begin %}%| %s |{% end %}" parses "def >=(*args, **opts, &); end" parses "def >=(*args, **opts, &); end" parses "{% begin %}%w| %s |{% end %}" parses "{% begin %}%w| %s |{% end %}" parses "1\n+2" parses "1\n+2" parses "foo.% 1, 2" parses "foo.% 1, 2" parses "macro foo;bar{% begin %}body{% end %}baz;end" parses "macro foo;bar{% begin %}body{% end %}baz;end" parses "{% begin %}%r(\\A){% end %}" parses "{% begin %}%r(\\A){% end %}" parses "include Foo\nif true; end" parses "include Foo\nif true; end" says syntax error on "def foo(if); end" says syntax error on "def foo(if); end" parses "foo(a: n % 2)" parses "foo(a: n % 2)" parses "if foo.responds_to? :foo\nx = 1\nend" parses "if foo.responds_to? :foo\nx = 1\nend" says syntax error on "{1, ->{ |_| x } }" says syntax error on "{1, ->{ |_| x } }" says syntax error on "(1, 2 3)" says syntax error on "(1, 2 3)" says syntax error on "break - 1" says syntax error on "break - 1" parses "def `(cmd); 1; end" parses "def `(cmd); 1; end" says syntax error on "foo { |(next)| }" says syntax error on "foo { |(next)| }" parses "def foo(@@macro); end" parses "def foo(@@macro); end" sets correct location of splat in multiple assignment sets correct location of splat in multiple assignment parses "def foo; end; if false; 1; else; 2; end" parses "def foo; end; if false; 1; else; 2; end" parses "macro foo;if %var;true;end;end" parses "macro foo;if %var;true;end;end" parses "->Foo./(Int32)" parses "->Foo./(Int32)" parses "def foo(a, &block : self -> self); end" parses "def foo(a, &block : self -> self); end" parses "def foo(@yield); end" parses "def foo(@yield); end" parses "a = /=/" parses "a = /=/" parses "macro foo(@[Foo] **args);end" parses "macro foo(@[Foo] **args);end" parses "foo(1)" parses "foo(1)" parses "->Foo.&-(Int32)" parses "->Foo.&-(Int32)" parses "def foo(x, *args, y = 2); 1; end" parses "def foo(x, *args, y = 2); 1; end" says syntax error on "break >> 1" says syntax error on "break >> 1" parses "a, b, *c = 1, 2" parses "a, b, *c = 1, 2" says syntax error on "def foo(def); end" says syntax error on "def foo(def); end" parses "def **(); end" parses "def **(); end" says syntax error on "1 .. return" says syntax error on "1 .. return" says syntax error on "next ? 1 : 2" says syntax error on "next ? 1 : 2" parses "1 ? 2 : 3" parses "1 ? 2 : 3" parses "foo(z: 0, a: n =~ 2)" parses "foo(z: 0, a: n =~ 2)" says syntax error on "1 ... break" says syntax error on "1 ... break" parses "1.as(Bar)" parses "1.as(Bar)" parses "macro foo;bar{% for x in y %}\\ \n body{% end %}\\ baz;end" parses "macro foo;bar{% for x in y %}\\ \n body{% end %}\\ baz;end" parses ":[]=" parses ":[]=" says syntax error on "macro foo(\"\" y); end" says syntax error on "macro foo(\"\" y); end" parses "macro foo\n <<-FOO\n %foo\n FOO\nend" parses "macro foo\n <<-FOO\n %foo\n FOO\nend" says syntax error on "foo &.||()" says syntax error on "foo &.||()" says syntax error on "def foo(case); end" says syntax error on "def foo(case); end" parses "/ /" parses "/ /" parses "{\"\".id}" parses "{\"\".id}" parses "offsetof(X, 1)" parses "offsetof(X, 1)" parses ":/" parses ":/" parses "def foo(x @lib); end" parses "def foo(x @lib); end" says syntax error on "next << 1" says syntax error on "next << 1" parses "foo(z: 0, a: n + 2)" parses "foo(z: 0, a: n + 2)" parses "foo(*bar)" parses "foo(*bar)" parses "elsif : Int32" parses "elsif : Int32" says syntax error on "def foo(until); end" says syntax error on "def foo(until); end" parses "class Foo; end\nwhile true; end" parses "class Foo; end\nwhile true; end" parses "n &* 2" parses "n &* 2" parses "def foo(x, *y); 1; end" parses "def foo(x, *y); 1; end" parses "def foo(@break); end" parses "def foo(@break); end" parses "def foo(x, *args, y = 2, w, z = 3); 1; end" parses "def foo(x, *args, y = 2, w, z = 3); 1; end" parses "foo.| do end" parses "foo.| do end" says syntax error on "foo &.||" says syntax error on "foo &.||" parses "foo(&.as(T).bar)" parses "foo(&.as(T).bar)" parses "{} of Int => Double" parses "{} of Int => Double" parses "-> : Int32 { }" parses "-> : Int32 { }" parses "enum : Int32" parses "enum : Int32" parses "foo.>= 1, 2" parses "foo.>= 1, 2" says syntax error on "foo { |(include)| }" says syntax error on "foo { |(include)| }" says syntax error on "return &* 1" says syntax error on "return &* 1" says syntax error on "def foo(yield); end" says syntax error on "def foo(yield); end" parses ":foo?" parses ":foo?" parses "def foo(x @with); end" parses "def foo(x @with); end" says syntax error on "if 1 == 1 a; end" says syntax error on "if 1 == 1 a; end" parses "macro foo;{% verbatim do %}1{% foo %}2{% end %};end" parses "macro foo;{% verbatim do %}1{% foo %}2{% end %};end" parses "enum Foo; private def foo; 1; end; end" parses "enum Foo; private def foo; 1; end; end" parses "def +(); end;" parses "def +(); end;" says syntax error on "foo.responds_to?" says syntax error on "foo.responds_to?" parses "def self.^; end;" parses "def self.^; end;" parses "def foo(x @while); end" parses "def foo(x @while); end" says syntax error on "next // 1" says syntax error on "next // 1" parses "def foo(@var); end" parses "def foo(@var); end" parses "Foo(Bar(T | U))" parses "Foo(Bar(T | U))" says syntax error on "foo &.&&" says syntax error on "foo &.&&" parses "a, *b = 1, 2" parses "a, *b = 1, 2" parses "property include : Int32" parses "property include : Int32" parses "begin\n/ /\nend" parses "begin\n/ /\nend" parses "->() { }" parses "->() { }" parses "foo = 1; ->foo.//(Int32)" parses "foo = 1; ->foo.//(Int32)" parses "{% unless 1; 2; else 3; end %}" parses "{% unless 1; 2; else 3; end %}" parses "property elsif : Int32" parses "property elsif : Int32" parses "foo.-" parses "foo.-" parses "foo { |(_, c, )| c }" parses "foo { |(_, c, )| c }" says syntax error on "def self.!; end" says syntax error on "def self.!; end" parses "def =~; end;" parses "def =~; end;" parses "def foo(x y); y; end" parses "def foo(x y); y; end" parses "def []; end" parses "def []; end" says syntax error on "foo { |asm| }" says syntax error on "foo { |asm| }" parses "a = 1; a &-=\n1" parses "a = 1; a &-=\n1" parses "enum Foo; {{1}}; end" parses "enum Foo; {{1}}; end" parses "def foo(&block); end" parses "def foo(&block); end" parses "1 unless 3" parses "1 unless 3" says syntax error on "{1, 2 3}" says syntax error on "{1, 2 3}" parses "foo = 1; ->foo.&(Int32)" parses "foo = 1; ->foo.&(Int32)" says syntax error on "asm(\"nop\" :::: \"\#{volatile}\")" says syntax error on "asm(\"nop\" :::: \"\#{volatile}\")" parses "foo = 1; ->foo.&-(Int32)" parses "foo = 1; ->foo.&-(Int32)" parses "x.foo a: 1, b: 2 " parses "x.foo a: 1, b: 2 " parses "return 1 if true" parses "return 1 if true" says syntax error on "def foo\ninclude\nend" says syntax error on "def foo\ninclude\nend" parses "a.b &-=\n1" parses "a.b &-=\n1" says syntax error on "foo { |alias| }" says syntax error on "foo { |alias| }" parses "foo(out x); x" parses "foo(out x); x" parses "enum Foo; protected def foo; 1; end; end" parses "enum Foo; protected def foo; 1; end; end" parses "foo(a: n << 2)" parses "foo(a: n << 2)" parses "case {1}\nin {Foo(Int32)}; 2; end" parses "case {1}\nin {Foo(Int32)}; 2; end" parses "def foo; a = 1; x { a }; end" parses "def foo; a = 1; x { a }; end" parses "n !~ 2" parses "n !~ 2" parses "def foo(x @@while); end" parses "def foo(x @@while); end" says syntax error on "return &+ 1" says syntax error on "return &+ 1" parses "def self.>=; end;" parses "def self.>=; end;" parses "foo &.%(1)" parses "foo &.%(1)" parses "def foo(@@require); end" parses "def foo(@@require); end" parses "def type(type); end" parses "def type(type); end" parses "return {1, 2}" parses "return {1, 2}" parses "macro foo(@[Foo] *args);end" parses "macro foo(@[Foo] *args);end" parses ":\"\\\\foo\"" parses ":\"\\\\foo\"" says syntax error on "next * 1" says syntax error on "next * 1" parses "(1)\nif true; end" parses "(1)\nif true; end" parses "macro foo;var if true;end" parses "macro foo;var if true;end" says syntax error on "foo { |(abstract)| }" says syntax error on "foo { |(abstract)| }" parses "def foo(@@while); end" parses "def foo(@@while); end" says syntax error on "foo { |(extend)| }" says syntax error on "foo { |(extend)| }" parses "def foo(@@enum); end" parses "def foo(@@enum); end" says syntax error on "def foo(var : Foo+); end" says syntax error on "def foo(var : Foo+); end" parses "def ==(*args, **opts); end" parses "def ==(*args, **opts); end" says syntax error on "def foo(**args, x); end" says syntax error on "def foo(**args, x); end" says syntax error on "foo { |def| }" says syntax error on "foo { |def| }" parses "->Foo.&*(Int32)" parses "->Foo.&*(Int32)" says syntax error on "a = next" says syntax error on "a = next" parses "module Foo(*T); end" parses "module Foo(*T); end" says syntax error on "def foo\nextend\nend" says syntax error on "def foo\nextend\nend" says syntax error on "next &+ 1" says syntax error on "next &+ 1" parses "->Foo.foo" parses "->Foo.foo" parses "break : Int32" parses "break : Int32" says syntax error on "'a' foo" says syntax error on "'a' foo" says syntax error on "foo { |private| }" says syntax error on "foo { |private| }" says syntax error on "foo { |break| }" says syntax error on "foo { |break| }" says syntax error on "def foo(with); end" says syntax error on "def foo(with); end" says syntax error on "a = 1, 2, 3" says syntax error on "a = 1, 2, 3" parses "puts __LINE__" parses "puts __LINE__" parses "-> { }" parses "-> { }" parses "def foo(x : U) : Int32 forall T, U; end" parses "def foo(x : U) : Int32 forall T, U; end" parses "def self.!~(); end;" parses "def self.!~(); end;" parses "f.x += 2" parses "f.x += 2" parses ":>=" parses ":>=" parses "<<-HERE1; <<-HERE2\nHERE1\nhere2\nHERE2" parses "<<-HERE1; <<-HERE2\nHERE1\nhere2\nHERE2" says syntax error on "a, b.<=" says syntax error on "a, b.<=" parses "->Foo.<<(Int32)" parses "->Foo.<<(Int32)" parses "def self.<=(); end;" parses "def self.<=(); end;" says syntax error on "foo { |false| }" says syntax error on "foo { |false| }" says syntax error on "foo { |require| }" says syntax error on "foo { |require| }" says syntax error on "def foo(foo asm); end" says syntax error on "def foo(foo asm); end" parses "def ===(); end" parses "def ===(); end" parses "lib LibC; fun getchar(a : Int, b : Float) : Int; end" parses "lib LibC; fun getchar(a : Int, b : Float) : Int; end" parses "foo &.as(T).bar" parses "foo &.as(T).bar" parses "def self./; end;" parses "def self./; end;" parses "@a : Foo = 1" parses "@a : Foo = 1" parses "foo.^ 1, 2" parses "foo.^ 1, 2" says syntax error on "*a if true = 2" says syntax error on "*a if true = 2" parses "foo(&.responds_to?(:foo))" parses "foo(&.responds_to?(:foo))" parses "foo(0, n === 2)" parses "foo(0, n === 2)" parses "require : Int32" parses "require : Int32" parses "lib LibC; fun foo(a : Int*); end" parses "lib LibC; fun foo(a : Int*); end" says syntax error on "def foo(x x); 1; end" says syntax error on "def foo(x x); 1; end" says syntax error on "break === 1" says syntax error on "break === 1" parses "foo(0, n - 2)" parses "foo(0, n - 2)" says syntax error on "foo { |(with)| }" says syntax error on "foo { |(with)| }" parses "foo()" parses "foo()" says syntax error on "foo { |(alias)| }" says syntax error on "foo { |(alias)| }" parses "puts __FILE__" parses "puts __FILE__" parses "foo bar.baz(1) do\nend" parses "foo bar.baz(1) do\nend" parses "macro foo;%var unless true;end" parses "macro foo;%var unless true;end" parses "puts {{*1}}" parses "puts {{*1}}" parses "a = b = 2" parses "a = b = 2" parses "1 && 2" parses "1 && 2" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2))" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2))" parses "def foo; a = 1; a {}; end" parses "def foo; a = 1; a {}; end" parses "foo.<=(1, 2) { 3 }" parses "foo.<=(1, 2) { 3 }" parses "macro ==;end" parses "macro ==;end" parses "def foo(a, &block : *Int -> ); end" parses "def foo(a, &block : *Int -> ); end" parses "/(fo\#{\"bar\"}\#{1}o)/" parses "/(fo\#{\"bar\"}\#{1}o)/" parses "foo.%(1, 2) { 3 }" parses "foo.%(1, 2) { 3 }" parses "def foo(@@typeof); end" parses "def foo(@@typeof); end" parses "a = 1; b = 2; c = 3; a-b-c" parses "a = 1; b = 2; c = 3; a-b-c" parses "foo = 1; ->foo.>>(Int32)" parses "foo = 1; ->foo.>>(Int32)" says syntax error on "Foo({x: X, x: Y})" says syntax error on "Foo({x: X, x: Y})" parses "foo.is_a? Const" parses "foo.is_a? Const" says syntax error on "def foo :String\nend" says syntax error on "def foo :String\nend" parses "f.x &+= 2" parses "f.x &+= 2" says syntax error on "\n lib LibFoo\n fun foo(x : Int32\n y : Float64)\n end\n " says syntax error on "\n lib LibFoo\n fun foo(x : Int32\n y : Float64)\n end\n " says syntax error on "def foo(x : U) forall; end" says syntax error on "def foo(x : U) forall; end" parses "foo(0, n &** 2)" parses "foo(0, n &** 2)" parses "def foo; yield; end" parses "def foo; yield; end" parses "1 &- 2" parses "1 &- 2" parses "pointerof(@a)" parses "pointerof(@a)" parses "{[] of Foo, ::Bar::Baz.new}" parses "{[] of Foo, ::Bar::Baz.new}" parses "foo(Foo: 1, Bar: 2)" parses "foo(Foo: 1, Bar: 2)" parses "->\n:\nInt32\n{\n}" parses "->\n:\nInt32\n{\n}" parses "x = 1; ->{ x }" parses "x = 1; ->{ x }" parses "foo = 1; b = 2; foo +b" parses "foo = 1; b = 2; foo +b" parses "(foo bar do\nend)" parses "(foo bar do\nend)" parses "foo(*{1})" parses "foo(*{1})" parses "case 1\nin Int32.class; 2; end" parses "case 1\nin Int32.class; 2; end" parses "pointerof(@a)" parses "pointerof(@a)" parses "a()/3" parses "a()/3" parses "(/ /)" parses "(/ /)" parses "def foo=(value); end" parses "def foo=(value); end" parses "foo.!= 1, 2" parses "foo.!= 1, 2" parses "1\\\n + 2" parses "1\\\n + 2" says syntax error on "yield return" says syntax error on "yield return" parses "foo &.as?(T).bar" parses "foo &.as?(T).bar" parses "begin; 1; end;" parses "begin; 1; end;" parses "def self.==; end;" parses "def self.==; end;" parses "(1; 2; 3)" parses "(1; 2; 3)" parses "def foo(x : U) forall T, U; end" parses "def foo(x : U) forall T, U; end" says syntax error on "foo[return]" says syntax error on "foo[return]" parses "foo(\n &.block\n)" parses "foo(\n &.block\n)" parses "foo(\na: 1,\n)" parses "foo(\na: 1,\n)" parses "class Foo < Bar; end" parses "class Foo < Bar; end" parses "case {1}\nin {true}; 2; end" parses "case {1}\nin {true}; 2; end" parses "foo.^(1, 2)" parses "foo.^(1, 2)" parses "foo.% do end" parses "foo.% do end" parses "f ->{ a do\n end\n }" parses "f ->{ a do\n end\n }" parses "foo.* do end" parses "foo.* do end" says syntax error on "def foo(next); end" says syntax error on "def foo(next); end" parses "macro foo;bar(end: 1);end" parses "macro foo;bar(end: 1);end" parses "foo(a: n | 2)" parses "foo(a: n | 2)" parses "foo(z: 0, a: n <= 2)" parses "foo(z: 0, a: n <= 2)" parses "foo%r" parses "foo%r" parses "def foo(self foo); end" parses "def foo(self foo); end" says syntax error on "[\n]" says syntax error on "[\n]" parses "Foo(X, alignof(Int32))" parses "Foo(X, alignof(Int32))" parses "macro **;end" parses "macro **;end" says syntax error on "return ^ 1" says syntax error on "return ^ 1" parses "Foo{\"x\" => \"y\"}" parses "Foo{\"x\" => \"y\"}" parses "begin; rescue; end" parses "begin; rescue; end" parses "class : Int32" parses "class : Int32" parses "foo(..2)" parses "foo(..2)" parses "1 !~ 2" parses "1 !~ 2" parses "foo(0, n // 2)" parses "foo(0, n // 2)" parses "macro foo\n <<-FOO\n \#{ %var }\n FOO\nend" parses "macro foo\n <<-FOO\n \#{ %var }\n FOO\nend" parses "Foo(X, instance_alignof(Int32))" parses "Foo(X, instance_alignof(Int32))" says syntax error on "FOO, BAR = 1, 2" says syntax error on "FOO, BAR = 1, 2" parses "foo(0, n ** 2)" parses "foo(0, n ** 2)" says syntax error on "break ^ 1" says syntax error on "break ^ 1" parses "{% unless 1\n x\nend %}" parses "{% unless 1\n x\nend %}" parses "macro x\n%{}\nend" parses "macro x\n%{}\nend" parses "def foo(@var = 1); 1; end" parses "def foo(@var = 1); 1; end" parses "a.foo, *a.bar = 1" parses "a.foo, *a.bar = 1" parses "a, b = 1, 2" parses "a, b = 1, 2" parses "def foo(var : (Int, Float) -> Double); end" parses "def foo(var : (Int, Float) -> Double); end" parses "def foo(@@false); end" parses "def foo(@@false); end" parses "foo &block" parses "foo &block" parses "nil?" parses "nil?" says syntax error on "foo { |(sizeof)| }" says syntax error on "foo { |(sizeof)| }" parses "def foo(x @fun); end" parses "def foo(x @fun); end" parses "Foo(T)" parses "Foo(T)" says syntax error on "<<-HERE\n One\n \#{1}\n Zero\n HERE" says syntax error on "<<-HERE\n One\n \#{1}\n Zero\n HERE" parses "def self.**; end;" parses "def self.**; end;" parses "\"hello \\\r\n world\"" parses "\"hello \\\r\n world\"" parses "property extend : Int32" parses "property extend : Int32" parses "Foo(X, sizeof(Int32))" parses "Foo(X, sizeof(Int32))" parses "{A::B}" parses "{A::B}" parses "def self.-; end;" parses "def self.-; end;" parses "def foo(var : Int?); end" parses "def foo(var : Int?); end" parses "break *1" parses "break *1" parses "Foo(T | U)" parses "Foo(T | U)" parses "f.x &-= 2" parses "f.x &-= 2" says syntax error on "next == 1" says syntax error on "next == 1" parses "lib LibC; type A = B.class; end" parses "lib LibC; type A = B.class; end" parses "1 rescue 2 if 3" parses "1 rescue 2 if 3" says syntax error on "foo { |next| }" says syntax error on "foo { |next| }" parses "macro foo; 1 + 2 {{foo}}\\ 3 + 4; end" parses "macro foo; 1 + 2 {{foo}}\\ 3 + 4; end" parses "case 1\nin .bar?; 2; end" parses "case 1\nin .bar?; 2; end" parses ":=~" parses ":=~" parses "a = 1; a *= 1" parses "a = 1; a *= 1" parses "def *(); end;" parses "def *(); end;" parses "lib LibC; fun foo(a : ::B, ::C -> ::D); end" parses "lib LibC; fun foo(a : ::B, ::C -> ::D); end" parses "def <(); end" parses "def <(); end" parses "property def : Int32" parses "property def : Int32" says syntax error on "def foo(foo struct); end" says syntax error on "def foo(foo struct); end" parses "Int[8, 4]" parses "Int[8, 4]" parses "foo = 1; ->foo.foo" parses "foo = 1; ->foo.foo" parses "f.x |= 2" parses "f.x |= 2" parses "def foo(extend foo); end" parses "def foo(extend foo); end" parses "n & 2" parses "n & 2" parses "module Foo; end" parses "module Foo; end" parses "1+0" parses "1+0" parses "module : Int32" parses "module : Int32" says syntax error on "foo { |(x, x)| }" says syntax error on "foo { |(x, x)| }" parses "\"foo\"" parses "\"foo\"" parses "foo.bar = {} of Int32 => Int32" parses "foo.bar = {} of Int32 => Int32" parses "def foo(@@in); end" parses "def foo(@@in); end" parses "def self.+; end;" parses "def self.+; end;" parses "property protected : Int32" parses "property protected : Int32" parses "1..\n2.." parses "1..\n2.." says syntax error on "case 1\nin Int32; 2; else" says syntax error on "case 1\nin Int32; 2; else" parses "->Foo.<(Int32)" parses "->Foo.<(Int32)" says syntax error on "foo { |until| }" says syntax error on "foo { |until| }" says syntax error on "case 1\nin _;" says syntax error on "case 1\nin _;" says syntax error on "next .. 1" says syntax error on "next .. 1" parses "case 1\nin Foo(Int32); 2; end" parses "case 1\nin Foo(Int32); 2; end" parses "true" parses "true" parses "foo %r()" parses "foo %r()" parses "call(foo.as Bar, Baz)" parses "call(foo.as Bar, Baz)" parses "n < 2" parses "n < 2" says syntax error on "foo { |module| }" says syntax error on "foo { |module| }" parses "foo(a: n !~ 2)" parses "foo(a: n !~ 2)" parses "def foo(@@extend); end" parses "def foo(@@extend); end" parses "def ==(*args, **opts, &); end" parses "def ==(*args, **opts, &); end" says syntax error on "@foo :: Foo" says syntax error on "@foo :: Foo" parses "foo(&block)" parses "foo(&block)" parses "Foo(T, U, 1)" parses "Foo(T, U, 1)" says syntax error on "foo { |(private)| }" says syntax error on "foo { |(private)| }" parses "->Foo.[]=(Int32)" parses "->Foo.[]=(Int32)" parses "puts _" parses "puts _" says syntax error on "{\n\"foo\"\n\"bar\"\n}" says syntax error on "{\n\"foo\"\n\"bar\"\n}" parses "def foo(var : Char[N]); end" parses "def foo(var : Char[N]); end" says syntax error on "macro foo" says syntax error on "macro foo" parses "def %; end;" parses "def %; end;" parses "foo(a: n >= 2)" parses "foo(a: n >= 2)" parses "property instance_sizeof : Int32" parses "property instance_sizeof : Int32" parses "foo(z: 0, a: n > 2)" parses "foo(z: 0, a: n > 2)" parses "foo &.+(2)" parses "foo &.+(2)" parses "foo./(1, 2)" parses "foo./(1, 2)" parses "def <; end;" parses "def <; end;" says syntax error on "def foo(x @@x); 1; end" says syntax error on "def foo(x @@x); 1; end" parses "1 &** 2" parses "1 &** 2" parses "Foo(\"foo\": U, \"bar\": V)" parses "Foo(\"foo\": U, \"bar\": V)" parses "foo +1" parses "foo +1" parses "->foo" parses "->foo" parses "[\n1, 2]" parses "[\n1, 2]" parses "foo(&.block)" parses "foo(&.block)" says syntax error on "def foo(x :Int32); end" says syntax error on "def foo(x :Int32); end" says syntax error on "->(x, y z) { }" says syntax error on "->(x, y z) { }" parses "a = 1; a &+=\n1" parses "a = 1; a &+=\n1" parses "property struct : Int32" parses "property struct : Int32" parses "foo = 1; ->foo./(Int32)" parses "foo = 1; ->foo./(Int32)" parses "foo.bar.as(Bar)" parses "foo.bar.as(Bar)" says syntax error on "def foo(true); end" says syntax error on "def foo(true); end" says syntax error on "Foo{one: :two, three: :four}" says syntax error on "Foo{one: :two, three: :four}" parses "1 === 2" parses "1 === 2" says syntax error on "foo { |abstract| }" says syntax error on "foo { |abstract| }" parses "case 1\nwhen .!()\n2\nend" parses "case 1\nwhen .!()\n2\nend" says syntax error on "def foo(x, *); 1; end" says syntax error on "def foo(x, *); 1; end" parses "foo[*baz] = 1" parses "foo[*baz] = 1" says syntax error on "foo { |(true)| }" says syntax error on "foo { |(true)| }" parses "def foo(@@var = 1); 1; end" parses "def foo(@@var = 1); 1; end" says syntax error on "foo { |enum| }" says syntax error on "foo { |enum| }" parses "else : Int32" parses "else : Int32" parses "unless foo; 1; end" parses "unless foo; 1; end" parses "def foo(x @case); end" parses "def foo(x @case); end" parses "return *1, 2" parses "return *1, 2" parses "\"\#{1\n}\"" parses "\"\#{1\n}\"" parses "pointerof : Int32" parses "pointerof : Int32" parses "1+2*3" parses "1+2*3" parses "def foo(var : self.class); end" parses "def foo(var : self.class); end" parses "foo = 1; ->foo.!~(Int32)" parses "foo = 1; ->foo.!~(Int32)" parses "def foo(@abstract); end" parses "def foo(@abstract); end" parses "a = 1; a += 1" parses "a = 1; a += 1" parses "a, b, *c = 1" parses "a, b, *c = 1" says syntax error on "macro as; end" says syntax error on "macro as; end" parses "\"hello \#{1}\" \\\n \"\#{2} world\"" parses "\"hello \#{1}\" \\\n \"\#{2} world\"" parses "a = 1; a ^=\n1" parses "a = 1; a ^=\n1" parses "puts %i(one two)" parses "puts %i(one two)" parses "def foo(x @@select); end" parses "def foo(x @@select); end" parses "def foo(var : Int); end" parses "def foo(var : Int); end" parses "lib LibC\nend" parses "lib LibC\nend" parses "foo(z: 0, a: n % 2)" parses "foo(z: 0, a: n % 2)" says syntax error on "return >> 1" says syntax error on "return >> 1" parses "def self.*; end;" parses "def self.*; end;" parses "def foo(x @@enum); end" parses "def foo(x @@enum); end" parses "if foo; 1; elsif bar; 2; else 3; end" parses "if foo; 1; elsif bar; 2; else 3; end" parses "def foo(x @extend); end" parses "def foo(x @extend); end" parses "a = 1; a &&= 1" parses "a = 1; a &&= 1" says syntax error on "def foo:String\nend" says syntax error on "def foo:String\nend" parses "/\\ /" parses "/\\ /" parses "1 * 2" parses "1 * 2" says syntax error on "->(x y) { }" says syntax error on "->(x y) { }" parses "property rescue : Int32" parses "property rescue : Int32" parses "begin; 1; rescue ex; 2; end; ex" parses "begin; 1; rescue ex; 2; end; ex" parses "Foo(1)" parses "Foo(1)" parses "a = 1; a += 10 if a += 20" parses "a = 1; a += 10 if a += 20" parses "1 -\n2" parses "1 -\n2" parses "2**3**4" parses "2**3**4" says syntax error on "a.b() += 1" says syntax error on "a.b() += 1" parses "def >=; end;" parses "def >=; end;" parses "next 1 if true" parses "next 1 if true" parses "foo.+(1, 2) { 3 }" parses "foo.+(1, 2) { 3 }" says syntax error on "def Foo(Int32).bar;end" says syntax error on "def Foo(Int32).bar;end" parses "Foo(\nT,\nU,\n)" parses "Foo(\nT,\nU,\n)" parses "def //(); end" parses "def //(); end" says syntax error on "a = 1; a += next" says syntax error on "a = 1; a += next" says syntax error on "def foo(extend); end" says syntax error on "def foo(extend); end" says syntax error on "Foo(T, U V)" says syntax error on "Foo(T, U V)" says syntax error on "false foo" says syntax error on "false foo" parses "def foo; / /; end" parses "def foo; / /; end" parses "def foo(\nvar); end" parses "def foo(\nvar); end" parses "foo(z: 0, a: n / 2)" parses "foo(z: 0, a: n / 2)" parses "foo(&.!)" parses "foo(&.!)" parses "Foo(*T)" parses "Foo(*T)" says syntax error on "foo { |(end)| }" says syntax error on "foo { |(end)| }" says syntax error on "def foo(*args = 1); end" says syntax error on "def foo(*args = 1); end" parses "foo(n ** 2)" parses "foo(n ** 2)" parses "a = 1; a //=\n1" parses "a = 1; a //=\n1" says syntax error on "foo.&&()" says syntax error on "foo.&&()" says syntax error on "fun foo(Int32); end" says syntax error on "fun foo(Int32); end" parses "/\\//" parses "/\\//" parses "def self.==(); end;" parses "def self.==(); end;" parses "case / /; when / /; / /; else; / /; end" parses "case / /; when / /; / /; else; / /; end" parses "def foo(@module); end" parses "def foo(@module); end" parses "foo.!~ do end" parses "foo.!~ do end" says syntax error on "def foo(foo typeof); end" says syntax error on "def foo(foo typeof); end" parses "def foo(x @false); end" parses "def foo(x @false); end" parses "foo.nil?" parses "foo.nil?" parses "def <=(other, file = 1); end" parses "def <=(other, file = 1); end" says syntax error on " {1 => end" says syntax error on " {1 => end" parses "foo.!=(1, 2) { 3 }" parses "foo.!=(1, 2) { 3 }" says syntax error on "return do\nend" says syntax error on "return do\nend" parses "def downto(n)\n1\nend" parses "def downto(n)\n1\nend" parses "macro >>;end" parses "macro >>;end" says syntax error on "a = 1; a += break" says syntax error on "a = 1; a += break" parses "n % 2" parses "n % 2" says syntax error on "foo.&&" says syntax error on "foo.&&" says syntax error on "case 1; when break; end; end" says syntax error on "case 1; when break; end; end" parses "def foo(x @break); end" parses "def foo(x @break); end" parses "{% begin %}%i( %s ){% end %}" parses "{% begin %}%i( %s ){% end %}" parses "def foo; a = 1; with a yield a; end" parses "def foo; a = 1; with a yield a; end" parses "Foo(T)?" parses "Foo(T)?" says syntax error on "macro foo(x, *); 1; end" says syntax error on "macro foo(x, *); 1; end" parses "begin; 1; rescue ex : ::Foo | ::Bar; 2; end" parses "begin; 1; rescue ex : ::Foo | ::Bar; 2; end" says syntax error on "foo { |begin| }" says syntax error on "foo { |begin| }" parses "foo./ do end" parses "foo./ do end" parses "macro &-;end" parses "macro &-;end" parses "1 \\\r\n + 2" parses "1 \\\r\n + 2" says syntax error on "a += 1" says syntax error on "a += 1" says syntax error on "return * 1" says syntax error on "return * 1" parses "def foo(true foo); end" parses "def foo(true foo); end" parses "[] of Int" parses "[] of Int" parses "foo(0, n % 2)" parses "foo(0, n % 2)" parses "foo !false" parses "foo !false" parses "case 1\nwhen .is_a?(T)\n2\nend" parses "case 1\nwhen .is_a?(T)\n2\nend" says syntax error on "def foo(foo begin); end" says syntax error on "def foo(foo begin); end" parses "macro >=;end" parses "macro >=;end" parses "def /; end;" parses "def /; end;" parses "a = 1; a /= 1" parses "a = 1; a /= 1" parses "foo(a: n &* 2)" parses "foo(a: n &* 2)" says syntax error on "def foo(alias); end" says syntax error on "def foo(alias); end" parses "Foo(X, offsetof(Foo, @a))" parses "Foo(X, offsetof(Foo, @a))" parses "def foo(@[Foo] @var); end" parses "def foo(@[Foo] @var); end" parses "foo(0, n =~ 2)" parses "foo(0, n =~ 2)" parses "foo(1.., 2)" parses "foo(1.., 2)" parses "-@@foo" parses "-@@foo" parses "foo.^ do end" parses "foo.^ do end" says syntax error on "macro !;end" says syntax error on "macro !;end" parses "pointerof(\n foo\n)" parses "pointerof(\n foo\n)" parses "def foo(@@module); end" parses "def foo(@@module); end" parses "foo(0, n << 2)" parses "foo(0, n << 2)" parses "macro +;end" parses "macro +;end" parses "def !~(); end;" parses "def !~(); end;" parses "foo.bar(1, 2)" parses "foo.bar(1, 2)" says syntax error on "def foo(asm); end" says syntax error on "def foo(asm); end" parses "a, b = 1" parses "a, b = 1" parses "a = 1; a/b" parses "a = 1; a/b" parses "foo a: 1, b: 2" parses "foo a: 1, b: 2" parses "def foo(x @@yield); end" parses "def foo(x @@yield); end" parses "foo\n.bar" parses "foo\n.bar" says syntax error on "return false foo" says syntax error on "return false foo" parses "def foo(alias foo); end" parses "def foo(alias foo); end" says syntax error on "x--" says syntax error on "x--" parses "Foo({String, ->})" parses "Foo({String, ->})" parses "foo = 1; ->foo.<<(Int32)" parses "foo = 1; ->foo.<<(Int32)" parses ":[]?" parses ":[]?" says syntax error on "break &- 1" says syntax error on "break &- 1" parses "n * 2" parses "n * 2" parses "def self.foo=\n1\nend" parses "def self.foo=\n1\nend" parses "def self./(); end;" parses "def self./(); end;" parses "case {1, 2}\nwhen {3, 4}, {5, 6}\n7\nend" parses "case {1, 2}\nwhen {3, 4}, {5, 6}\n7\nend" says syntax error on "lib Foo; fun foo(x : Int32, x : Int64); end" says syntax error on "lib Foo; fun foo(x : Int32, x : Int64); end" parses "foo(bar { })" parses "foo(bar { })" parses "foo.%" parses "foo.%" parses "def foo(x @begin); end" parses "def foo(x @begin); end" parses "def *; end;" parses "def *; end;" parses ":%" parses ":%" parses "while true; 1; end;" parses "while true; 1; end;" parses "def foo(sizeof foo); end" parses "def foo(sizeof foo); end" parses "def foo(@[Foo] **args); end" parses "def foo(@[Foo] **args); end" parses "{% begin %}%r[\\A]{% end %}" parses "{% begin %}%r[\\A]{% end %}" parses "def self.[]; end" parses "def self.[]; end" parses "if foo; 1; else; 2; end" parses "if foo; 1; else; 2; end" says syntax error on "break ... 1" says syntax error on "break ... 1" parses "def foo(in foo); end" parses "def foo(in foo); end" parses "def foo(x @@asm); end" parses "def foo(x @@asm); end" parses "a @b-1\nc" parses "a @b-1\nc" parses "next *1, 2" parses "next *1, 2" says syntax error on "{% unless 1; 2; elsif 3; 4; end %}" says syntax error on "{% unless 1; 2; elsif 3; 4; end %}" parses "enum Foo; A = 1; B; end" parses "enum Foo; A = 1; B; end" says syntax error on "def foo=(**kwargs); end" says syntax error on "def foo=(**kwargs); end" parses "1.nil?(\n)" parses "1.nil?(\n)" end locations gets corrects end location for "alias Foo = Bar" gets corrects end location for "alias Foo = Bar" sets correct location of `else` of unless statement sets correct location of `else` of unless statement says syntax error on "case x; when X; 2; when X; end" says syntax error on "case x; when X; 2; when X; end" gets corrects end location for "include Foo" gets corrects end location for "include Foo" gets corrects end location for "def foo; rescue ex; end" gets corrects end location for "def foo; rescue ex; end" parses "%i{foo\\nbar baz}" parses "%i{foo\\nbar baz}" gets corrects end location for "sizeof(Foo)" gets corrects end location for "sizeof(Foo)" gets corrects end location for "foo.bar(x) do; end" gets corrects end location for "foo.bar(x) do; end" gets corrects end location for "->{ }" gets corrects end location for "->{ }" sets correct location of var in proc pointer sets correct location of var in proc pointer gets corrects end location for "x : Foo(A, *B, C)" gets corrects end location for "x : Foo(A, *B, C)" gets corrects end location for "foo 1, 2" gets corrects end location for "foo 1, 2" sets location of += sets location of += gets corrects end location for "foo.bar= *baz" gets corrects end location for "foo.bar= *baz" gets corrects end location for "f.x=(*foo)" gets corrects end location for "f.x=(*foo)" gets corrects end location for "x : Foo ->" gets corrects end location for "x : Foo ->" gets corrects end location for "nil" gets corrects end location for "nil" says syntax error on "case x; when 1, _; end" says syntax error on "case x; when 1, _; end" says syntax error on "Foo(x: X\n,y: Y)" says syntax error on "Foo(x: X\n,y: Y)" sets correct location of call name sets correct location of call name says syntax error on "{1 => 2\n,3 => 4}" says syntax error on "{1 => 2\n,3 => 4}" gets corrects end location for block with do ... end gets corrects end location for block with do ... end gets corrects end location for "pointerof(@foo)" gets corrects end location for "pointerof(@foo)" gets corrects end location for "1 rescue 2" gets corrects end location for "1 rescue 2" gets corrects end location for block with { ... } gets corrects end location for block with { ... } gets correct location of empty exception handler inside def gets correct location of empty exception handler inside def sets correct location and end location of parenthesized block sets correct location and end location of parenthesized block gets corrects end location for "'a'" gets corrects end location for "'a'" gets corrects end location for "@a = uninitialized Foo" gets corrects end location for "@a = uninitialized Foo" parses "%w{one two}" parses "%w{one two}" says syntax error on "case x; when 1..2; 2; when 1..2; end" says syntax error on "case x; when 1..2; 2; when 1..2; end" gets corrects end location for "begin; 1; end" gets corrects end location for "begin; 1; end" sets correct location of element in array literal sets correct location of element in array literal sets correct location of `else` of if statement sets correct location of `else` of if statement gets corrects end location for "foo bar, out baz" gets corrects end location for "foo bar, out baz" says syntax error on "def foo(x : Array({sizeof(Int32), 2})); end" says syntax error on "def foo(x : Array({sizeof(Int32), 2})); end" says syntax error on "case x; when 'a'; 2; when 'a'; end" says syntax error on "case x; when 'a'; 2; when 'a'; end" parses "%i{(one two)}" parses "%i{(one two)}" gets corrects end location for "begin; 1; 2; 3; end" gets corrects end location for "begin; 1; 2; 3; end" gets corrects end location for "1 if 2" gets corrects end location for "1 if 2" gets corrects end location for "foo" gets corrects end location for "foo" gets corrects end location for "[1, 2]" gets corrects end location for "[1, 2]" gets corrects end location for "123.45" gets corrects end location for "123.45" gets corrects end location for "foo ->self.bar=" gets corrects end location for "foo ->self.bar=" gets corrects end location for "{} of Int32 => String" gets corrects end location for "{} of Int32 => String" gets corrects end location for "puts obj.foo" gets corrects end location for "puts obj.foo" says syntax error on "case x; when :a; 2; when :a; end" says syntax error on "case x; when :a; 2; when :a; end" says syntax error on "%w{one}}" says syntax error on "%w{one}}" gets corrects end location for "/foo/" gets corrects end location for "/foo/" gets corrects end location for "f.x=(foo).bar" gets corrects end location for "f.x=(foo).bar" gets corrects end location for "a && b" gets corrects end location for "a && b" gets corrects end location for "foo ->@bar.baz" gets corrects end location for "foo ->@bar.baz" gets corrects end location for "[] of Int32" gets corrects end location for "[] of Int32" gets corrects end location for var + var gets corrects end location for var + var gets corrects end location for "yield" gets corrects end location for "yield" sets correct location of var in type declaration sets correct location of var in type declaration sets correct location for fun def with body sets correct location for fun def with body gets corrects end location for "class Foo; end" gets corrects end location for "class Foo; end" sets correct location of call name in operator assignment sets correct location of call name in operator assignment gets corrects end location for "123" gets corrects end location for "123" sets location of enum method sets location of enum method gets corrects end location for "1..3" gets corrects end location for "1..3" sets location of top-level fun name sets location of top-level fun name gets corrects end location for "return 1" gets corrects end location for "return 1" gets corrects end location for "foo.nil?" gets corrects end location for "foo.nil?" gets corrects end location for "foo.[0] = 1" gets corrects end location for "foo.[0] = 1" gets corrects end location for "foo ->@@bar.baz=" gets corrects end location for "foo ->@@bar.baz=" gets corrects end location for "1.." gets corrects end location for "1.." sets correct location for fun def sets correct location for fun def gets corrects end location for "struct Foo; end" gets corrects end location for "struct Foo; end" gets corrects end location for "foo ->Bar.baz=" gets corrects end location for "foo ->Bar.baz=" sets correct locations of macro if / else sets correct locations of macro if / else says syntax error on "case x; when {1, 2}; 2; when {1, 2}; end" says syntax error on "case x; when {1, 2}; 2; when {1, 2}; end" gets corrects end location for "foo : Foo.class" gets corrects end location for "foo : Foo.class" gets corrects end location for "x : Foo -> Bar" gets corrects end location for "x : Foo -> Bar" gets corrects end location for "foo.responds_to?(:foo)" gets corrects end location for "foo.responds_to?(:foo)" gets corrects end location for "@@foo" gets corrects end location for "@@foo" gets corrects end location for "{a: 1}" gets corrects end location for "{a: 1}" gets corrects end location for "def foo; 1; end" gets corrects end location for "def foo; 1; end" says syntax error on "%w(" says syntax error on "%w(" says syntax error on "case x; when 1; when _; end" says syntax error on "case x; when 1; when _; end" sets correct location and end location of `begin` block sets correct location and end location of `begin` block sets correct location for fun def with return type sets correct location for fun def with return type gets corrects end location for "a = 123" gets corrects end location for "a = 123" gets corrects end location for "foo : Foo?" gets corrects end location for "foo : Foo?" sets correct location and end location of parenthesized empty block sets correct location and end location of parenthesized empty block gets corrects end location for "abstract def foo(x)" gets corrects end location for "abstract def foo(x)" says syntax error on "foo(1\n,2)" says syntax error on "foo(1\n,2)" sets correct location of trailing rescue sets correct location of trailing rescue says syntax error on "def foo(x : Int32 | (Int32, Int32)); end" says syntax error on "def foo(x : Int32 | (Int32, Int32)); end" sets correct locations of macro if / elsif sets correct locations of macro if / elsif sets correct location of vars in C struct sets correct location of vars in C struct says syntax error on "macro foo(x\n,y); 1; end" says syntax error on "macro foo(x\n,y); 1; end" gets corrects end location for "f.x = foo" gets corrects end location for "f.x = foo" says syntax error on "%r(" says syntax error on "%r(" says syntax error on "case x; when /x/; 2; when /x/; end" says syntax error on "case x; when /x/; 2; when /x/; end" parses "annotation Foo; end" parses "annotation Foo; end" sets correct locations of keywords of exception handler sets correct locations of keywords of exception handler gets corrects end location for "foo.nil?( )" gets corrects end location for "foo.nil?( )" gets corrects end location for "foo.responds_to? :foo" gets corrects end location for "foo.responds_to? :foo" gets corrects end location for "unless 1; 2; end" gets corrects end location for "unless 1; 2; end" gets corrects end location for "[1, 2,]" gets corrects end location for "[1, 2,]" gets corrects end location for "macro foo;end" gets corrects end location for "macro foo;end" says syntax error on "def foo(x : {sizeof(Int32), 2}); end" says syntax error on "def foo(x : {sizeof(Int32), 2}); end" says syntax error on "case x; when 1; 2; when 1; end" says syntax error on "case x; when 1; 2; when 1; end" says syntax error on "%Q(" says syntax error on "%Q(" says syntax error on "{\"a\" : 1}" says syntax error on "{\"a\" : 1}" says syntax error on "Foo(X\n,Y)" says syntax error on "Foo(X\n,Y)" says syntax error on "{1\n,2}" says syntax error on "{1\n,2}" gets corrects end location for "@foo" gets corrects end location for "@foo" sets location of obj.x += as call sets location of obj.x += as call says syntax error on "case x; when true; 2; when true; end" says syntax error on "case x; when true; 2; when true; end" gets corrects end location for "if 1; else; 2; end" gets corrects end location for "if 1; else; 2; end" parses "annotation Foo\nend\nrequire \"bar\"" parses "annotation Foo\nend\nrequire \"bar\"" gets corrects end location for "\"hello\"" gets corrects end location for "\"hello\"" gets corrects end location for "foo.!" gets corrects end location for "foo.!" says syntax error on "[1\n,2]" says syntax error on "[1\n,2]" sets correct location of implicit tuple literal of multi-return sets correct location of implicit tuple literal of multi-return says syntax error on "%i{one}}" says syntax error on "%i{one}}" says syntax error on "def foo(x\n,y); 1; end" says syntax error on "def foo(x\n,y); 1; end" gets corrects end location for "if 1; elseif; 2; end" gets corrects end location for "if 1; elseif; 2; end" says syntax error on "<<-HEREDOC\n" says syntax error on "<<-HEREDOC\n" gets corrects end location for "offsetof(Foo, @a)" gets corrects end location for "offsetof(Foo, @a)" gets corrects end location for "!foo" gets corrects end location for "!foo" gets corrects end location for "{1, 2}" gets corrects end location for "{1, 2}" parses "annotation Foo::Bar\n\nend" parses "annotation Foo::Bar\n\nend" gets corrects end location for "foo(\n &.block\n)" gets corrects end location for "foo(\n &.block\n)" gets corrects end location for "offsetof({X, Y}, 1)" gets corrects end location for "offsetof({X, Y}, 1)" gets corrects end location for "foo.@foo" gets corrects end location for "foo.@foo" says syntax error on "%w{{one}" says syntax error on "%w{{one}" gets corrects end location for "foo : Foo**" gets corrects end location for "foo : Foo**" gets corrects end location for ":foo" gets corrects end location for ":foo" says syntax error on "{\"a\": 1, \"b\" : 2}" says syntax error on "{\"a\": 1, \"b\" : 2}" sets correct location of var in macro for loop sets correct location of var in macro for loop sets correct location of `elsif` of if statement sets correct location of `elsif` of if statement says syntax error on "case x; when \"a\"; 2; when \"a\"; end" says syntax error on "case x; when \"a\"; 2; when \"a\"; end" sets correct location of receiver var in method def sets correct location of receiver var in method def gets corrects end location for "macro foo; 123; end" gets corrects end location for "macro foo; 123; end" says syntax error on "def foo(x : *Int32); end" says syntax error on "def foo(x : *Int32); end" gets corrects end location for "foo ->@bar.baz=" gets corrects end location for "foo ->@bar.baz=" gets corrects end location for "module Foo; end" gets corrects end location for "module Foo; end" gets corrects end location for "{%\nif foo\n bar\n end\n%}" gets corrects end location for "{%\nif foo\n bar\n end\n%}" gets corrects end location for "a, b = 1, 2" gets corrects end location for "a, b = 1, 2" says syntax error on "case x; when [1, 2]; 2; when [1, 2]; end" says syntax error on "case x; when [1, 2]; 2; when [1, 2]; end" gets corrects end location for "false" gets corrects end location for "false" says syntax error on "%x(" says syntax error on "%x(" gets corrects end location for "require \"foo\"" gets corrects end location for "require \"foo\"" gets corrects end location for "foo ->Bar.baz" gets corrects end location for "foo ->Bar.baz" gets correct location after macro with yield gets correct location after macro with yield gets corrects end location for "foo(1, 2)" gets corrects end location for "foo(1, 2)" gets corrects end location for "::foo" gets corrects end location for "::foo" says syntax error on "{1, 2\n,3}" says syntax error on "{1, 2\n,3}" sets correct location of trailing ensure sets correct location of trailing ensure says syntax error on "case x; when nil; 2; when nil; end" says syntax error on "case x; when nil; 2; when nil; end" gets corrects end location for "@@a = uninitialized Foo" gets corrects end location for "@@a = uninitialized Foo" gets corrects end location for "return" gets corrects end location for "return" sets correct locations of macro if / else / elsif sets correct locations of macro if / else / elsif gets corrects end location for "foo.!()" gets corrects end location for "foo.!()" gets corrects end location for "foo ->bar=" gets corrects end location for "foo ->bar=" gets corrects of ~ gets corrects of ~ gets corrects end location for "extend Foo" gets corrects end location for "extend Foo" says syntax error on "%i{{one}" says syntax error on "%i{{one}" gets corrects end location for "Foo?" gets corrects end location for "Foo?" says syntax error on "def foo(x : Int32, Int32); end" says syntax error on "def foo(x : Int32, Int32); end" says syntax error on "def foo(x : (Int32, Int32) | Int32); end" says syntax error on "def foo(x : (Int32, Int32) | Int32); end" gets corrects end location for "a, b = 1, 2 if 3" gets corrects end location for "a, b = 1, 2 if 3" parses "%w{one{} two}" parses "%w{one{} two}" gets corrects end location for "while 1; end" gets corrects end location for "while 1; end" gets correct location with (#1558) gets correct location with (#1558) gets corrects end location for var gets corrects end location for var parses "%w{one\ttwo}" parses "%w{one\ttwo}" parses "%i(foo(bar) baz)" parses "%i(foo(bar) baz)" gets corrects end location for "yield 1" gets corrects end location for "yield 1" parses "%w{\n}" parses "%w{\n}" sets location of lib fun name sets location of lib fun name gets corrects end location for "Int[8]?" gets corrects end location for "Int[8]?" gets corrects end location for "abstract def foo : Int32" gets corrects end location for "abstract def foo : Int32" gets corrects end location for "abstract def foo" gets corrects end location for "abstract def foo" says syntax error on "class Foo(X\n,Y); 1; end" says syntax error on "class Foo(X\n,Y); 1; end" says syntax error on "%q(" says syntax error on "%q(" says syntax error on "def foo(x : (Int32, Int32)); end" says syntax error on "def foo(x : (Int32, Int32)); end" gets corrects end location for "foo ->@@bar.baz" gets corrects end location for "foo ->@@bar.baz" gets corrects end location for "foo ->self.bar" gets corrects end location for "foo ->self.bar" gets corrects end location for "a || b" gets corrects end location for "a || b" parses "annotation Foo\n\nend" parses "annotation Foo\n\nend" says syntax error on "def foo(x : (*Int32)); end" says syntax error on "def foo(x : (*Int32)); end" gets correct location after macro with yield gets correct location after macro with yield correctly computes line number after `\{% ` (#9857) correctly computes line number after `\{% ` (#9857) says syntax error on "foo(a: 1\n,b: 2)" says syntax error on "foo(a: 1\n,b: 2)" parses "%w{\\{one}" parses "%w{\\{one}" says syntax error on "def foo(x : 1); end" says syntax error on "def foo(x : 1); end" gets corrects end location for "1.as(Int32)" gets corrects end location for "1.as(Int32)" gets corrects end location for "foo ->bar" gets corrects end location for "foo ->bar" gets corrects end location for "foo : Foo[42]" gets corrects end location for "foo : Foo[42]" parses "%w{one\\ two}" parses "%w{one\\ two}" gets corrects end location for "Foo { 1 }" gets corrects end location for "Foo { 1 }" gets corrects end location for "foo : Foo*" gets corrects end location for "foo : Foo*" gets corrects end location for "foo ->bar(Baz)" gets corrects end location for "foo ->bar(Baz)" says syntax error on "%i(" says syntax error on "%i(" gets corrects end location for "typeof(1)" gets corrects end location for "typeof(1)" gets corrects end location for "foo **bar" gets corrects end location for "foo **bar" gets corrects end location for "Foo" gets corrects end location for "Foo" parses "%w{one\ntwo}" parses "%w{one\ntwo}" says syntax error on "<<-HEREDOC" says syntax error on "<<-HEREDOC" gets corrects end location for "%w(one two)" gets corrects end location for "%w(one two)" says syntax error on "case x; when _; end" says syntax error on "case x; when _; end" doesn't override yield with macro yield doesn't override yield with macro yield sets correct location of proc literal sets correct location of proc literal parses "%w{one\\}}" parses "%w{one\\}}" says syntax error on "def foo(x : {Int32, (Int32, Int32)}); end" says syntax error on "def foo(x : {Int32, (Int32, Int32)}); end" gets corrects end location for "Foo(A)" gets corrects end location for "Foo(A)" gets corrects end location for "def foo; end" gets corrects end location for "def foo; end" parses "%i(one\\ two)" parses "%i(one\\ two)" gets corrects end location for "foo *bar" gets corrects end location for "foo *bar" gets corrects end location for "1 ensure 2" gets corrects end location for "1 ensure 2" sets correct location for fun def on multiple lines sets correct location for fun def on multiple lines parses "%i((one two))" parses "%i((one two))" parses "def foo(x)\n x\nend; foo = 1; b = 2; foo -b" parses "def foo(x)\n x\nend; foo = 1; b = 2; foo -b" parses "fun foo(x : Int32) : Int64\nx\nend" parses "fun foo(x : Int32) : Int64\nx\nend" says syntax error on "def foo(x, **x); end" says syntax error on "def foo(x, **x); end" parses "Foo()?" parses "Foo()?" parses "foo % Q()" parses "foo % Q()" parses "def foo(@enum); end" parses "def foo(@enum); end" parses "a\nwhile / /\n/ /\nend" parses "a\nwhile / /\n/ /\nend" parses "foo.=~" parses "foo.=~" parses "a : Foo*" parses "a : Foo*" says syntax error on "foo { |true| }" says syntax error on "foo { |true| }" parses "def >=(); end" parses "def >=(); end" parses "Int" parses "Int" parses "property until : Int32" parses "property until : Int32" parses "def foo(@@fun); end" parses "def foo(@@fun); end" parses "def ==(); end" parses "def ==(); end" says syntax error on "next[]" says syntax error on "next[]" parses "->(x) { x }" parses "->(x) { x }" parses "typeof : Int32" parses "typeof : Int32" says syntax error on "next[0]" says syntax error on "next[0]" parses "Foo({x: X})" parses "Foo({x: X})" parses "a = 1; a ensure a" parses "a = 1; a ensure a" parses "4./(2)" parses "4./(2)" parses "foo &.block[0] = 1" parses "foo &.block[0] = 1" parses "lib : Int32" parses "lib : Int32" parses "Foo(T, {x: X})" parses "Foo(T, {x: X})" says syntax error on "/foo)/" says syntax error on "/foo)/" parses "def foo(x @@case); end" parses "def foo(x @@case); end" parses "case 1; when x then 2; else; 3; end" parses "case 1; when x then 2; else; 3; end" parses "foo a: 1, &block" parses "foo a: 1, &block" parses "lib LibC\nfun getchar(a : Int, b : Float)\nend" parses "lib LibC\nfun getchar(a : Int, b : Float)\nend" parses "1 ? a : b" parses "1 ? a : b" parses "abstract def foo; 1" parses "abstract def foo; 1" parses "def foo(x @@with); end" parses "def foo(x @@with); end" says syntax error on "*a == 1" says syntax error on "*a == 1" parses ":==" parses ":==" says syntax error on "foo(return)" says syntax error on "foo(return)" parses "{% begin %}%r|\\A|{% end %}" parses "{% begin %}%r|\\A|{% end %}" parses "puts {{**1}}" parses "puts {{**1}}" parses "def foo(unless foo); end" parses "def foo(unless foo); end" parses "def foo(x @@break); end" parses "def foo(x @@break); end" says syntax error on "foo { |(in)| }" says syntax error on "foo { |(in)| }" says syntax error on "1 .. next" says syntax error on "1 .. next" parses "case foo; end" parses "case foo; end" parses "def foo(break foo); end" parses "def foo(break foo); end" parses "foo(x:\n begin\n result : Int32 = 1\n result\n end\n )" parses "foo(x:\n begin\n result : Int32 = 1\n result\n end\n )" parses "foo [1]" parses "foo [1]" says syntax error on "*a === 1" says syntax error on "*a === 1" parses "..2" parses "..2" says syntax error on " [1, 2, 3 end" says syntax error on " [1, 2, 3 end" says syntax error on "def foo(foo def); end" says syntax error on "def foo(foo def); end" parses "<<-FOO\n \t 1\n \t FOO" parses "<<-FOO\n \t 1\n \t FOO" parses "def foo(x @@sizeof); end" parses "def foo(x @@sizeof); end" says syntax error on "x++" says syntax error on "x++" says syntax error on "def foo(&a foo); end" says syntax error on "def foo(&a foo); end" parses "foo(a: n &- 2)" parses "foo(a: n &- 2)" says syntax error on "def foo(foo alias); end" says syntax error on "def foo(foo alias); end" parses "foo %r" parses "foo %r" says syntax error on "A = begin; 1; rescue; 1; else; B = 1; end" says syntax error on "A = begin; 1; rescue; 1; else; B = 1; end" parses "a = 1; a **=\n1" parses "a = 1; a **=\n1" says syntax error on "def foo(foo sizeof); end" says syntax error on "def foo(foo sizeof); end" parses "{foo:a, bar:b}" parses "{foo:a, bar:b}" parses "@@foo" parses "@@foo" says syntax error on "def foo(require); end" says syntax error on "def foo(require); end" parses "def foo(class foo); end" parses "def foo(class foo); end" parses "foo &.each do\nend" parses "foo &.each do\nend" parses "foo(a: n === 2)" parses "foo(a: n === 2)" parses "return 1, 2" parses "return 1, 2" parses "a = 1; a |= 1" parses "a = 1; a |= 1" parses "Foo({x: X, y: Y})" parses "Foo({x: X, y: Y})" parses "if foo\n1\nelse\n2\nend" parses "if foo\n1\nelse\n2\nend" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2) ::)" parses "asm(\"nop\" :: \"b\"(1), \"c\"(2) ::)" says syntax error on "foo(\"\": 1)" says syntax error on "foo(\"\": 1)" says syntax error on "def foo(foo enum); end" says syntax error on "def foo(foo enum); end" parses "foo%i" parses "foo%i" parses "foo(n & 2)" parses "foo(n & 2)" parses "{% begin %}%i< %s >{% end %}" parses "{% begin %}%i< %s >{% end %}" parses "->@@foo.foo!" parses "->@@foo.foo!" says syntax error on "macro foo x; 1 + 2; end" says syntax error on "macro foo x; 1 + 2; end" says syntax error on "def foo(foo self); end" says syntax error on "def foo(foo self); end" parses "lib LibC\n@[Bar]; end" parses "lib LibC\n@[Bar]; end" parses "foo = 1; b = 2; foo -b" parses "foo = 1; b = 2; foo -b" parses "foo(n === 2)" parses "foo(n === 2)" parses "Foo()" parses "Foo()" parses "@[Foo(1)]" parses "@[Foo(1)]" parses "{..2}" parses "{..2}" parses "foo.|(1, 2)" parses "foo.|(1, 2)" parses "def <=; end;" parses "def <=; end;" parses "def foo(&\n); end" parses "def foo(&\n); end" parses "foo(n * 2)" parses "foo(n * 2)" parses "def foo(x @typeof); end" parses "def foo(x @typeof); end" parses "::T/1" parses "::T/1" says syntax error on "break.as(Int32)" says syntax error on "break.as(Int32)" parses "def foo(x @@class); end" parses "def foo(x @@class); end" parses "foo = 1; ->foo.==(Int32)" parses "foo = 1; ->foo.==(Int32)" parses "def &(); end;" parses "def &(); end;" parses "instance_sizeof(\n Int32\n)" parses "instance_sizeof(\n Int32\n)" parses "puts a if true" parses "puts a if true" parses "x = 1 rescue 2" parses "x = 1 rescue 2" parses "foo { |a| 1 }" parses "foo { |a| 1 }" parses "a = 1; a[2] &&= 3" parses "a = 1; a[2] &&= 3" says syntax error on "yield next" says syntax error on "yield next" parses "foo(\n begin\n result : Int32 = 1\n result\n end\n )" parses "foo(\n begin\n result : Int32 = 1\n result\n end\n )" parses "lib LibC; struct Foo; x : Int; y : Float; end end" parses "lib LibC; struct Foo; x : Int; y : Float; end end" parses "1 rescue 2" parses "1 rescue 2" says syntax error on "next >> 1" says syntax error on "next >> 1" parses "1.0" parses "1.0" parses "foo &.baz.qux do\nend" parses "foo &.baz.qux do\nend" parses "def foo(@[Foo] outer inner); end" parses "def foo(@[Foo] outer inner); end" parses ":<" parses ":<" parses "x[{1}]" parses "x[{1}]" says syntax error on "{{ {{ 1 }} }}" says syntax error on "{{ {{ 1 }} }}" parses "macro <=;end" parses "macro <=;end" parses "module Foo\ndef foo; end; end" parses "module Foo\ndef foo; end; end" parses "case 1; when 1; 2; else; 3; end" parses "case 1; when 1; 2; else; 3; end" parses "1 +2" parses "1 +2" says syntax error on "break[0]" says syntax error on "break[0]" parses "lib LibC; struct Foo; {{ 1 }}; end; end" parses "lib LibC; struct Foo; {{ 1 }}; end; end" parses "a ? 1 :\n b ? 2 :\n c ? 3\n : 0" parses "a ? 1 :\n b ? 2 :\n c ? 3\n : 0" parses "foo.!~" parses "foo.!~" parses "def self.foo()\n1\nend" parses "def self.foo()\n1\nend" parses "def foo(case foo); end" parses "def foo(case foo); end" parses "a; if / /; / /; elsif / /; / /; end" parses "a; if / /; / /; elsif / /; / /; end" says syntax error on "next / 1" says syntax error on "next / 1" says syntax error on "lib Foo%end" says syntax error on "lib Foo%end" parses "\n class Foo\n def bar\n print as Foo\n end\n end\n " parses "\n class Foo\n def bar\n print as Foo\n end\n end\n " says syntax error on "def foo(_ y); y; end" says syntax error on "def foo(_ y); y; end" says syntax error on "macro foo; {% foo = 1 }; end" says syntax error on "macro foo; {% foo = 1 }; end" parses "1 -2_i64" parses "1 -2_i64" parses "foo.+" parses "foo.+" parses "until true; end;" parses "until true; end;" says syntax error on "unless return; end" says syntax error on "unless return; end" parses "foo(n &+ 2)" parses "foo(n &+ 2)" parses "foo(z: 0, a: n &- 2)" parses "foo(z: 0, a: n &- 2)" parses "def foo(var : Int32 -> = 1); end" parses "def foo(var : Int32 -> = 1); end" parses "def foo(x @@true); end" parses "def foo(x @@true); end" parses "foo /a/" parses "foo /a/" parses "def foo(a, &block : Int -> Double); end" parses "def foo(a, &block : Int -> Double); end" parses "def foo(x @return); end" parses "def foo(x @return); end" says syntax error on "break &+ 1" says syntax error on "break &+ 1" parses "a = 1; a -=\n1" parses "a = 1; a -=\n1" parses "foo(a: 1, b: 2)" parses "foo(a: 1, b: 2)" parses "a = 1; a &=\n1" parses "a = 1; a &=\n1" says syntax error on "x, self = 1, 2" says syntax error on "x, self = 1, 2" says syntax error on "def foo(return); end" says syntax error on "def foo(return); end" parses "def self.>=(); end;" parses "def self.>=(); end;" parses "{[] of Foo, Bar::Baz ** 2}" parses "{[] of Foo, Bar::Baz ** 2}" says syntax error on "a.b, c.d() = 1" says syntax error on "a.b, c.d() = 1" parses "()" parses "()" parses "Foo({\"foo bar\": X})" parses "Foo({\"foo bar\": X})" says syntax error on "{1 => 2 3 => 4}" says syntax error on "{1 => 2 3 => 4}" says syntax error on "foo { |extend| }" says syntax error on "foo { |extend| }" parses "a = 1; a rescue a" parses "a = 1; a rescue a" parses "foo.== do end" parses "foo.== do end" says syntax error on "macro foo(*x, *y); end" says syntax error on "macro foo(*x, *y); end" parses "{[] of Foo, Bar::Baz * 2}" parses "{[] of Foo, Bar::Baz * 2}" parses "1.0_f32" parses "1.0_f32" parses "def foo(typeof foo); end" parses "def foo(typeof foo); end" parses "def foo(var : Int*); end" parses "def foo(var : Int*); end" parses "macro foo;bar{% for x in y %}\\ \n body{% end %}baz;end" parses "macro foo;bar{% for x in y %}\\ \n body{% end %}baz;end" parses ":[]" parses ":[]" parses "def foo(var : Char[256]); end" parses "def foo(var : Char[256]); end" says syntax error on "def foo(\"bar \#{1} qux\" y); y; end" says syntax error on "def foo(\"bar \#{1} qux\" y); y; end" parses "foo.bar.baz" parses "foo.bar.baz" parses "break {1 => 2}" parses "break {1 => 2}" parses "case {1, 2}\nwhen {3, 4}\n5\nend" parses "case {1, 2}\nwhen {3, 4}\n5\nend" parses "def foo(**args)\nargs\nend" parses "def foo(**args)\nargs\nend" parses "a\nunless / /\n/ /\nelse\n/ /\nend" parses "a\nunless / /\n/ /\nelse\n/ /\nend" says syntax error on "def foo(**args, *x); end" says syntax error on "def foo(**args, *x); end" says syntax error on "macro as?; end" says syntax error on "macro as?; end" parses "def foo(x @sizeof); end" parses "def foo(x @sizeof); end" parses "1.!" parses "1.!" parses "property ensure : Int32" parses "property ensure : Int32" parses "true : Int32" parses "true : Int32" parses "foo **bar" parses "foo **bar" parses "foo(/a/)" parses "foo(/a/)" parses "def foo(x = __LINE__); end" parses "def foo(x = __LINE__); end" parses "def foo(a, &block : Int, self -> Double); end" parses "def foo(a, &block : Int, self -> Double); end" parses "alignof(X)" parses "alignof(X)" parses "foo.<=(1, 2)" parses "foo.<=(1, 2)" parses "1 + 2" parses "1 + 2" parses "case 1; when 0, 1; 2; else; 3; end" parses "case 1; when 0, 1; 2; else; 3; end" parses "foo(n >> 2)" parses "foo(n >> 2)" says syntax error on "def foo(foo return); end" says syntax error on "def foo(foo return); end" parses "{1, 2, 3}" parses "{1, 2, 3}" parses "foo.^" parses "foo.^" parses "<<-HERE1; <<-HERE2\nhere1\nHERE1\nHERE2" parses "<<-HERE1; <<-HERE2\nhere1\nHERE1\nHERE2" parses "foo.[0] = 1" parses "foo.[0] = 1" parses "lib LibC; type A = B; end" parses "lib LibC; type A = B; end" says syntax error on "class Foo(*T, *U); end" says syntax error on "class Foo(*T, *U); end" parses "def foo(@offsetof); end" parses "def foo(@offsetof); end" parses "->Foo.%(Int32)" parses "->Foo.%(Int32)" says syntax error on "def nil?; end" says syntax error on "def nil?; end" parses "case 1\nin false; 2; end" parses "case 1\nin false; 2; end" parses "*a, b = 1" parses "*a, b = 1" says syntax error on "def foo(var = x : Int); end" says syntax error on "def foo(var = x : Int); end" parses "extend Foo\nif true; end" parses "extend Foo\nif true; end" says syntax error on "next ... 1" says syntax error on "next ... 1" parses "def ===(*args, **opts, &); end" parses "def ===(*args, **opts, &); end" says syntax error on "def foo(x: Int32); end" says syntax error on "def foo(x: Int32); end" says syntax error on "break == 1" says syntax error on "break == 1" parses "nil?( )" parses "nil?( )" says syntax error on "def foo(foo until); end" says syntax error on "def foo(foo until); end" parses "foo(z: 0, a: n == 2)" parses "foo(z: 0, a: n == 2)" parses "1 == 2" parses "1 == 2" says syntax error on "break[0]= 1" says syntax error on "break[0]= 1" parses "foo 1, a: 1, b: 2\n1" parses "foo 1, a: 1, b: 2\n1" parses "n > 2" parses "n > 2" says syntax error on "*1, a = 2" says syntax error on "*1, a = 2" parses "*a, b = 1, 2, 3, 4" parses "*a, b = 1, 2, 3, 4" parses "def foo(@@private); end" parses "def foo(@@private); end" parses "begin 1 end / 2" parses "begin 1 end / 2" says syntax error on "unless break; end" says syntax error on "unless break; end" parses "foo begin\nbar do\nend\nend" parses "foo begin\nbar do\nend\nend" parses "def >(); end;" parses "def >(); end;" parses "{[] of Foo, Bar::Baz + 2}" parses "{[] of Foo, Bar::Baz + 2}" parses "{% begin %}%Q( %s ){% end %}" parses "{% begin %}%Q( %s ){% end %}" sets correct location of instance variable in proc pointer sets correct location of instance variable in proc pointer parses "foo = 1; foo(-1)" parses "foo = 1; foo(-1)" parses "{% begin %}%r<\\A>{% end %}" parses "{% begin %}%r<\\A>{% end %}" says syntax error on "class Foo(T, T); end" says syntax error on "class Foo(T, T); end" parses "foo(z: 0, a: n // 2)" parses "foo(z: 0, a: n // 2)" parses "foo(a: n &+ 2)" parses "foo(a: n &+ 2)" parses "property while : Int32" parses "property while : Int32" parses "foo%x" parses "foo%x" says syntax error on "@[Foo(\"\": 1)]" says syntax error on "@[Foo(\"\": 1)]" parses "foo 1, a: 1, b: 2" parses "foo 1, a: 1, b: 2" parses "{% begin %}%i| %s |{% end %}" parses "{% begin %}%i| %s |{% end %}" says syntax error on "macro Foo;end" says syntax error on "macro Foo;end" parses "my_def def foo\nloop do\nend\nend" parses "my_def def foo\nloop do\nend\nend" parses "1 ** -x" parses "1 ** -x" says syntax error on "Foo(\"\": T)" says syntax error on "Foo(\"\": T)" says syntax error on "foo(break)" says syntax error on "foo(break)" parses "private : Int32" parses "private : Int32" parses "def foo(module foo); end" parses "def foo(module foo); end" parses "Foo(Bar())" parses "Foo(Bar())" parses "Foo.foo(count: 3).bar { }" parses "Foo.foo(count: 3).bar { }" parses "rescue : Int32" parses "rescue : Int32" parses "a = 1" parses "a = 1" parses "->Foo.//(Int32)" parses "->Foo.//(Int32)" says syntax error on "enum Foo\n A, B, C\nend\n" says syntax error on "enum Foo\n A, B, C\nend\n" says syntax error on "foo { |end| }" says syntax error on "foo { |end| }" parses "def foo(end foo); end" parses "def foo(end foo); end" says syntax error on "foo :: Foo" says syntax error on "foo :: Foo" says syntax error on "module Foo; require \"bar\"; end" says syntax error on "module Foo; require \"bar\"; end" parses "alias Foo = Bar" parses "alias Foo = Bar" parses "f.x = Foo.new" parses "f.x = Foo.new" parses "\n\n__LINE__" parses "\n\n__LINE__" says syntax error on "break .. 1" says syntax error on "break .. 1" parses "macro ~;end" parses "macro ~;end" says syntax error on "b! = 1" says syntax error on "b! = 1" parses "macro foo(@[Foo] outer inner);end" parses "macro foo(@[Foo] outer inner);end" says syntax error on "foo { |(lib)| }" says syntax error on "foo { |(lib)| }" parses "foo % w()" parses "foo % w()" says syntax error on "foo(**bar, 1)" says syntax error on "foo(**bar, 1)" parses "case 1\nin true; 2; end" parses "case 1\nin true; 2; end" parses "foo(out @x); @x" parses "foo(out @x); @x" parses "def foo(&); end" parses "def foo(&); end" says syntax error on "+return" says syntax error on "+return" says syntax error on "until return; end" says syntax error on "until return; end" parses "a; unless / /; / /; else; / /; end" parses "a; unless / /; / /; else; / /; end" parses "def foo(var : Int | Double); end" parses "def foo(var : Int | Double); end" parses "def []=(*args, **opts); end" parses "def []=(*args, **opts); end" parses "Foo?" parses "Foo?" says syntax error on "foo(1, 2, 3 end" says syntax error on "foo(1, 2, 3 end" parses "def foo(@@var); end" parses "def foo(@@var); end" says syntax error on "def foo(*x, &x); end" says syntax error on "def foo(*x, &x); end" says syntax error on "<<-HERE\n One\n \#{1}\n wrong\#{1}\n HERE" says syntax error on "<<-HERE\n One\n \#{1}\n wrong\#{1}\n HERE" parses "foo.bar do end" parses "foo.bar do end" parses "next *1" parses "next *1" parses "x[..2]" parses "x[..2]" parses "case 1\nwhen .responds_to?(:foo)\n2\nend" parses "case 1\nwhen .responds_to?(:foo)\n2\nend" parses "asm(\n\"nop\"\n:\n\"a\"(0),\n\"b\"(1)\n:\n\"c\"(2),\n\"d\"(3)\n)" parses "asm(\n\"nop\"\n:\n\"a\"(0),\n\"b\"(1)\n:\n\"c\"(2),\n\"d\"(3)\n)" says syntax error on "foo { |(yield)| }" says syntax error on "foo { |(yield)| }" parses "foo.bar 1, 2" parses "foo.bar 1, 2" parses "property when : Int32" parses "property when : Int32" parses "def self.===(); end;" parses "def self.===(); end;" parses "foo.< 1, 2" parses "foo.< 1, 2" parses "def foo(x @include); end" parses "def foo(x @include); end" parses "{% begin %}%w( %s ){% end %}" parses "{% begin %}%w( %s ){% end %}" parses "def /; end;" parses "def /; end;" parses "def >=(); end;" parses "def >=(); end;" says syntax error on "def foo(foo select); end" says syntax error on "def foo(foo select); end" parses ":^" parses ":^" parses "def foo(@@until); end" parses "def foo(@@until); end" says syntax error on "return &** 1" says syntax error on "return &** 1" parses "foo.& 1, 2" parses "foo.& 1, 2" parses "@@a : Foo = 1" parses "@@a : Foo = 1" says syntax error on "foo.||()" says syntax error on "foo.||()" parses "foo(z: 0, a: n === 2)" parses "foo(z: 0, a: n === 2)" parses "def foo(@while); end" parses "def foo(@while); end" parses "def foo(var); end" parses "def foo(var); end" parses "def foo(x, **args, &block)\n1\nend" parses "def foo(x, **args, &block)\n1\nend" parses "def foo(n); foo(n -1); end" parses "def foo(n); foo(n -1); end" parses "foo(z: 0, a: n * 2)" parses "foo(z: 0, a: n * 2)" parses "def foo(x @@false); end" parses "def foo(x @@false); end" parses "puts __DIR__" parses "puts __DIR__" parses "select\nwhen foo\n2\nend" parses "select\nwhen foo\n2\nend" parses "macro foo\neenum\nend" parses "macro foo\neenum\nend" says syntax error on "b? = 1" says syntax error on "b? = 1" parses "1 <= 2 <= 3" parses "1 <= 2 <= 3" parses "foo(bar do\nend)" parses "foo(bar do\nend)" says syntax error on "->() :Int32 { }" says syntax error on "->() :Int32 { }" parses "include : Int32" parses "include : Int32" says syntax error on "foo.||" says syntax error on "foo.||" parses "foo = 1; ->foo.&**(Int32)" parses "foo = 1; ->foo.&**(Int32)" parses "class Foo(*T); end" parses "class Foo(*T); end" parses "A.new(\"x\", B.new(\"y\"))" parses "A.new(\"x\", B.new(\"y\"))" parses "{\n1,\n2\n}" parses "{\n1,\n2\n}" parses "macro &+;end" parses "macro &+;end" says syntax error on "def foo(select); end" says syntax error on "def foo(select); end" parses "def foo(@[Foo] @[Bar] var : Int32); end" parses "def foo(@[Foo] @[Bar] var : Int32); end" says syntax error on "fun foo(x : Int32, x : Int64); end" says syntax error on "fun foo(x : Int32, x : Int64); end" parses "1 =~ 2" parses "1 =~ 2" parses "a ? 1\n : b" parses "a ? 1\n : b" parses "def foo(a, @[Foo] &block); end" parses "def foo(a, @[Foo] &block); end" parses "def foo(@@begin); end" parses "def foo(@@begin); end" parses "foo./" parses "foo./" parses "foo &.[0]" parses "foo &.[0]" says syntax error on "def foo(**args, **args2); end" says syntax error on "def foo(**args, **args2); end" parses "{% begin %}%Q{ %s }{% end %}" parses "{% begin %}%Q{ %s }{% end %}" parses "offsetof(X, @a)" parses "offsetof(X, @a)" says syntax error on "def foo=(*args); end" says syntax error on "def foo=(*args); end" says syntax error on "next & 1" says syntax error on "next & 1" parses "foo" parses "foo" parses "return : Int32" parses "return : Int32" says syntax error on "1 foo" says syntax error on "1 foo" parses "foo(Bar) { 1 }" parses "foo(Bar) { 1 }" parses "return" parses "return" parses "foo.== 1, 2" parses "foo.== 1, 2" says syntax error on "foo { |macro| }" says syntax error on "foo { |macro| }" parses "def foo(@@case); end" parses "def foo(@@case); end" says syntax error on "def foo(x, x); end" says syntax error on "def foo(x, x); end" parses "Foo(x: U, y: V)" parses "Foo(x: U, y: V)" parses "foo.&" parses "foo.&" parses "def +(); end" parses "def +(); end" says syntax error on "class Foo(T, U V)" says syntax error on "class Foo(T, U V)" parses "def foo(x @abstract); end" parses "def foo(x @abstract); end" says syntax error on "foo { |(class)| }" says syntax error on "foo { |(class)| }" says syntax error on "return / 1" says syntax error on "return / 1" parses "def foo(x @unless); end" parses "def foo(x @unless); end" parses "def self.-(); end;" parses "def self.-(); end;" says syntax error on "macro foo x y; end" says syntax error on "macro foo x y; end" parses "@[Foo]" parses "@[Foo]" parses "do : Int32" parses "do : Int32" parses "def foo(x @protected); end" parses "def foo(x @protected); end" says syntax error on "break < 1" says syntax error on "break < 1" parses "case 1\nin Int32; 2; end" parses "case 1\nin Int32; 2; end" parses "{{ foo &.nil? }}" parses "{{ foo &.nil? }}" says syntax error on "def foo *y; 1; end" says syntax error on "def foo *y; 1; end" parses "n === 2" parses "n === 2" says syntax error on "def foo(while); end" says syntax error on "def foo(while); end" parses "foo(n !~ 2)" parses "foo(n !~ 2)" Semantic: generic class can use type var that resolves to number in restriction (#6502) can use type var that resolves to number in restriction (#6502) initializes instance variable of generic type using type var (#961) initializes instance variable of generic type using type var (#961) errors if using Tuple in a generic type errors if using Tuple in a generic type errors if using Number in recursive alias errors if using Number in recursive alias errors if using Proc in a generic type errors if using Proc in a generic type unifies generic metaclass types unifies generic metaclass types inherits from generic with forwarding (1) inherits from generic with forwarding (1) gives helpful error message when generic type var is missing (#1526) gives helpful error message when generic type var is missing (#1526) can use virtual type for generic class can use virtual type for generic class allows T::Type with T a generic type allows T::Type with T a generic type errors if using Number in a generic type errors if using Number in a generic type disallow using a non-instantiated generic type as a generic type argument disallow using a non-instantiated generic type as a generic type argument finds generic type argument from method with default value finds generic type argument from method with default value restricts generic to generic with free var restricts generic to generic with free var inherits instance var type annotation from generic to generic to concrete inherits instance var type annotation from generic to generic to concrete inherits class methods from generic class inherits class methods from generic class never types Generic as virtual outside generic type parameter (#3989) never types Generic as virtual outside generic type parameter (#3989) errors on too nested generic instance, with union type errors on too nested generic instance, with union type errors if inheriting from generic and incorrect number of type vars errors if inheriting from generic and incorrect number of type vars shows error due to generic instantiation (#7083) shows error due to generic instantiation (#7083) doesn't crash when matching restriction against number literal (2) (#3157) doesn't crash when matching restriction against number literal (2) (#3157) defines empty initialize on inherited generic class defines empty initialize on inherited generic class inherits instance var type annotation from generic to concrete inherits instance var type annotation from generic to concrete doesn't duplicate overload on generic class with class method (#2385) doesn't duplicate overload on generic class with class method (#2385) errors if inheriting generic type and not specifying type vars (#460) errors if inheriting generic type and not specifying type vars (#460) can use type var that resolves to number in restriction using Int128 can use type var that resolves to number in restriction using Int128 instantiates generic variadic class, accesses T from instance method through superclass instantiates generic variadic class, accesses T from instance method through superclass inherits twice inherits twice errors if passing integer literal to Proc as generic argument (#1120) errors if passing integer literal to Proc as generic argument (#1120) doesn't find unbound type parameter in main code inside generic type (#6168) doesn't find unbound type parameter in main code inside generic type (#6168) calls super on generic type when superclass has no initialize (#933) calls super on generic type when superclass has no initialize (#933) inherits non-generic to generic (2) inherits non-generic to generic (2) errors if using Reference in a generic type errors if using Reference in a generic type restricts virtual generic instance type against generic (#3351) restricts virtual generic instance type against generic (#3351) can define instance var forward declared (#962) can define instance var forward declared (#962) inherits from generic with forwarding (2) inherits from generic with forwarding (2) instantiates generic class with default argument in initialize (#394) instantiates generic class with default argument in initialize (#394) never types Path as virtual outside generic type parameter (#3989) never types Path as virtual outside generic type parameter (#3989) inherits instance var type annotation from generic to concrete with T inherits instance var type annotation from generic to concrete with T inherits from generic with instantiation inherits from generic with instantiation instantiates generic variadic class, accesses T from instance method, more args (2) instantiates generic variadic class, accesses T from instance method, more args (2) errors if invoking new on private new in generic type (#3485) errors if invoking new on private new in generic type (#3485) errors if using Enum in a generic type errors if using Enum in a generic type recomputes on new subclass recomputes on new subclass errors if using Float in a generic type errors if using Float in a generic type instantiates generic variadic class, accesses T from instance method, more args instantiates generic variadic class, accesses T from instance method, more args inherits from generic with instantiation with instance var inherits from generic with instantiation with instance var instantiates generic variadic class, accesses T from class method through superclass instantiates generic variadic class, accesses T from class method through superclass allows initializing instance variable in inherited generic type allows initializing instance variable in inherited generic type errors if using Int in a generic type errors if using Int in a generic type errors if splatting a non-tuple (#9853) errors if splatting a non-tuple (#9853) creates pointer of generic type and uses it (2) creates pointer of generic type and uses it (2) resolves T through metaclass inheritance (#7914) resolves T through metaclass inheritance (#7914) instantiates generic variadic class, accesses T from instance method through superclass, more args instantiates generic variadic class, accesses T from instance method through superclass, more args types macro def with generic instance types macro def with generic instance creates pointer of generic type and uses it creates pointer of generic type and uses it instantiates generic variadic class, accesses T from class method instantiates generic variadic class, accesses T from class method inherits non-generic to generic (1) inherits non-generic to generic (1) errors on too nested generic instance errors on too nested generic instance instantiates generic variadic class, accesses T from instance method instantiates generic variadic class, accesses T from instance method errors if using Value in a generic type errors if using Value in a generic type errors if using StaticArray in a generic type errors if using StaticArray in a generic type errors if using Class in a generic type errors if using Class in a generic type restricts non-generic to generic restricts non-generic to generic replaces type parameters for virtual types (#3235) replaces type parameters for virtual types (#3235) disallow using a non-instantiated module type as a generic type argument disallow using a non-instantiated module type as a generic type argument errors if passing integer literal to Union as generic argument errors if passing integer literal to Union as generic argument errors if using Number in alias errors if using Number in alias restricts non-generic to generic with free var restricts non-generic to generic with free var correctly checks argument count when target type has a splat (#9855) correctly checks argument count when target type has a splat (#9855) doesn't consider unbound generic instantiations as concrete (#7200) doesn't consider unbound generic instantiations as concrete (#7200) doesn't compute generic instance var initializers in formal superclass's context (#4753) doesn't compute generic instance var initializers in formal superclass's context (#4753) nests generics with the same type var (#3297) nests generics with the same type var (#3297) errors if using Object in a generic type errors if using Object in a generic type errors if passing integer literal to Tuple as generic argument (#1120) errors if passing integer literal to Tuple as generic argument (#1120) doesn't find T type parameter of current type in superclass (#4604) doesn't find T type parameter of current type in superclass (#4604) errors if using Number | String in a generic type errors if using Number | String in a generic type gives helpful error message when generic type var is missing in block spec (#1526) gives helpful error message when generic type var is missing in block spec (#1526) doesn't crash when matching restriction against number literal (#3157) doesn't crash when matching restriction against number literal (#3157) errors if inheriting from generic when it is non-generic errors if inheriting from generic when it is non-generic errors on too nested tuple instance errors on too nested tuple instance subclasses twice with same generic class (#3423) subclasses twice with same generic class (#3423) errors if using Struct in a generic type errors if using Struct in a generic type splats generic type var splats generic type var allows initializing instance variable (#665) allows initializing instance variable (#665) error on T::Type with T a generic type that's a union error on T::Type with T a generic type that's a union restricts generic type argument through alias in a non-strict way restricts generic type argument through alias in a non-strict way errors if using Pointer in a generic type errors if using Pointer in a generic type doesn't allow union of generic class with module to be assigned to a generic class with module (#2425) doesn't allow union of generic class with module to be assigned to a generic class with module (#2425) replaces type parameters in virtual metaclasses (#10691) replaces type parameters in virtual metaclasses (#10691) virtual metaclass type implements super virtual metaclass type (#3007) virtual metaclass type implements super virtual metaclass type (#3007) Normalize: case normalizes select with assign and bang method normalizes select with assign and bang method normalizes select with assign and question method normalizes select with assign and question method normalizes select with call normalizes select with call normalizes select with assign normalizes select with assign normalizes select with else normalizes select with else Semantic: c enum errors if enum value is different from default (Int32) (#194) errors if enum value is different from default (Int32) (#194) types enum value with base type types enum value with base type allows using an enum as a type in a struct allows using an enum as a type in a struct errors if enum base type is not an integer errors if enum base type is not an integer allows using an enum as a type in a fun allows using an enum as a type in a fun types enum value types enum value MacroExpander expands macro with char expands macro with char expands macro with range expands macro with range expands macro with string interpolation expands macro with string interpolation for expands macro with for over range literal expands macro with for over range literal expands macro with for over range literal, evaluating elements expands macro with for over range literal, evaluating elements expands macro with for over array literal with index expands macro with for over array literal with index expands macro with for over range literal, evaluating elements (exclusive) expands macro with for over range literal, evaluating elements (exclusive) expands macro with for over tuple literal expands macro with for over tuple literal expands macro with for over embedded array literal expands macro with for over embedded array literal expands macro with for over hash literal with index expands macro with for over hash literal with index expands macro with for over array literal expands macro with for over array literal expands macro with for over hash literal expands macro with for over hash literal does not expand when macro expression is {% ... %} does not expand when macro expression is {% ... %} expands macro with or (1) expands macro with or (1) expands macro with tuple expands macro with tuple does regular unless does regular unless expands macro with and (1) expands macro with and (1) expands macro with var substitution expands macro with var substitution expands simple macro expands simple macro expands macro with nil expands macro with nil does regular if does regular if expands macro with and (2) expands macro with and (2) expands macro with boolean expands macro with boolean expands macro with symbol substitution expands macro with symbol substitution expands macro with argument-less call substitution expands macro with argument-less call substitution expands macro with array expands macro with array can't use `yield` outside a macro can't use `yield` outside a macro expands macro with or (2) expands macro with or (2) expands macro with string substitution expands macro with string substitution expands macro with symbol expands macro with symbol outputs invisible location pragmas outputs invisible location pragmas expands macro with string expands macro with string if expands macro with if when falsey expands macro with if when falsey expands macro with if with nop expands macro with if with nop expands macro with if with not expands macro with if with not expands macro with if when truthy expands macro with if when truthy expands macro with if else when falsey expands macro with if else when falsey expands macro with integer expands macro with integer expands macro with hash expands macro with hash Code gen: named args sends two regular arguments as named arguments sends two regular arguments as named arguments sends one regular argument as named argument sends one regular argument as named argument sends two regular arguments as named arguments in inverted position (1) sends two regular arguments as named arguments in inverted position (1) sends two regular arguments as named arguments in inverted position (2) sends two regular arguments as named arguments in inverted position (2) overloads based on required named args overloads based on required named args calls twice with different types calls twice with different types calls new with named arg calls new with named arg calls with named arg and other args calls with named arg and other args uses bare splat in new (2) uses bare splat in new (2) uses named args in dispatch uses named args in dispatch overloads based on required named args, with restrictions overloads based on required named args, with restrictions calls with named arg as object method calls with named arg as object method calls with named arg calls with named arg Crystal::Repl::Interpreter variadic calls promotes enum promotes enum promotes float promotes float promotes int promotes int command expansion expands ldflags expands ldflags Code gen: splat splats in initialize splats in initialize splats without args splats without args splats splats evaluates splat argument just once (#2677) evaluates splat argument just once (#2677) splats with default value (2) splats with default value (2) splats with another arg splats with another arg splats on call splats on call splats with default value splats with default value does #2407 does #2407 splats with default value (3) splats with default value (3) Visibility modifiers allows setting visibility modifier to macro that generates many methods (2) allows setting visibility modifier to macro that generates many methods (2) allows invoking protected method from subclass allows invoking protected method from subclass allows setting visibility modifier to macro that generates many methods (1) allows setting visibility modifier to macro that generates many methods (1) allows invoking protected method from namespaced type to namespace allows invoking protected method from namespaced type to namespace handles virtual types (#8561) handles virtual types (#8561) allows invoking private method from the same class allows invoking private method from the same class errors if applying visibility modifier to non-def or non-call errors if applying visibility modifier to non-def or non-call allows setting visibility modifier to macro allows setting visibility modifier to macro allows invoking protected method from subclass (2) allows invoking protected method from subclass (2) allows invoking protected method from the same class allows invoking protected method from the same class errors if invoking protected method from top-level errors if invoking protected method from top-level disallows invoking private method disallows invoking private method errors if invoking protected method from non-subclass errors if invoking protected method from non-subclass allows invoking private setter with self allows invoking private setter with self allows invoking protected from instance to class allows invoking protected from instance to class allows calling protected method from nested generic class (1) allows calling protected method from nested generic class (1) allows invoking protected method from virtual type allows invoking protected method from virtual type allows invoking protected method between types in the same namespace allows invoking protected method between types in the same namespace gives correct error on unknown call (#2838) gives correct error on unknown call (#2838) allows invoking protected method between types in the same namespace when inheriting allows invoking protected method between types in the same namespace when inheriting automatically makes initialize be protected automatically makes initialize be protected allows invoking protected method from namespace to namespaced type allows invoking protected method from namespace to namespaced type allows calling protected method from nested generic class (2) allows calling protected method from nested generic class (2) errors if invoking protected method from non-subclass, generated with macro that generates a macro errors if invoking protected method from non-subclass, generated with macro that generates a macro defines protected initialize (#7501) defines protected initialize (#7501) codegen: previous_def codegens previous def codegens previous def correctly passes named arguments correctly passes named arguments codegens previous def when inside fun with self codegens previous def when inside fun with self codegens previous def when inside fun and forwards args codegens previous def when inside fun and forwards args Semantic: named tuples gives error when indexing with an unknown name gives error when indexing with an unknown name doesn't unify named tuple metaclasses (#5384) doesn't unify named tuple metaclasses (#5384) can write generic type for NamedTuple can write generic type for NamedTuple gives error when using named args on a type other than NamedTuple gives error when using named args on a type other than NamedTuple types nilable named tuple access (1) types nilable named tuple access (1) gives error when using positional args with NamedTuple gives error when using positional args with NamedTuple types named tuple of two elements, follows names order types named tuple of two elements, follows names order doesn't match in type restriction doesn't match in type restriction types nilable named tuple access (2) types nilable named tuple access (2) matches in type restriction matches in type restriction matches in type restriction, different order (2) matches in type restriction, different order (2) merges two named tuple with same keys but different types merges two named tuple with same keys but different types types named tuple of two elements types named tuple of two elements matches in type restriction, different order (1) matches in type restriction, different order (1) matches in type restriction and gets free var matches in type restriction and gets free var types nilable named tuple access (6) types nilable named tuple access (6) types named tuple of one element types named tuple of one element types named tuple access (4) types named tuple access (4) allows tuple covariance allows tuple covariance doesn't error if NamedTuple has no args doesn't error if NamedTuple has no args types named tuple access (2) types named tuple access (2) merges two named tuples with the same keys and types merges two named tuples with the same keys and types doesn't crash on named tuple in not executed block (#6718) doesn't crash on named tuple in not executed block (#6718) doesn't crash on named tuple type recursion (#7162) doesn't crash on named tuple type recursion (#7162) types named tuple access (3) types named tuple access (3) types nilable named tuple access (4) types nilable named tuple access (4) can assign to union of compatible named tuple can assign to union of compatible named tuple accepts named tuple covariance in array accepts named tuple covariance in array types T as a tuple of metaclasses types T as a tuple of metaclasses gets type at compile time gets type at compile time doesn't match type restriction with instance doesn't match type restriction with instance types named tuple access (1) types named tuple access (1) accept named tuple in type restriction accept named tuple in type restriction types nilable named tuple access (3) types nilable named tuple access (3) types nilable named tuple access (5) types nilable named tuple access (5) Code gen: magic constants does __LINE__ when specifying one default arg with __FILE__ does __LINE__ when specifying one default arg with __FILE__ does __DIR__ in macro does __DIR__ in macro does __DIR__ does __DIR__ does __LINE__ does __LINE__ does __LINE__ when specifying one middle argument does __LINE__ when specifying one middle argument does __LINE__ with dispatch does __LINE__ with dispatch does __END_LINE__ without block does __END_LINE__ without block does __END_LINE__ in macro without block does __END_LINE__ in macro without block does __FILE__ does __FILE__ does __LINE__ in macro does __LINE__ in macro does __LINE__ when specifying one normal default arg does __LINE__ when specifying one normal default arg does __END_LINE__ with block does __END_LINE__ with block does __END_LINE__ in macro with block does __END_LINE__ in macro with block does __FILE__ in macro does __FILE__ in macro Code gen: next codegens next without expressions codegens next without expressions codegens next conditionally with int type (2) codegens next conditionally with int type (2) codegens next conditionally codegens next conditionally codegens next with break (2) codegens next with break (2) codegens next with while inside block codegens next with while inside block codegens next codegens next codegens next with break (3) codegens next with break (3) codegens next with break (1) codegens next with break (1) Code gen: generic class type recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) recomputes two calls that look the same due to generic type being instantiated (#7728) invokes super in generic class (#2354) invokes super in generic class (#2354) codegens inherited generic class instance var codegens inherited generic class instance var doesn't use virtual + in type arguments (#2839) doesn't use virtual + in type arguments (#2839) doesn't consider abstract generic instantiation when restricting type (#5190) doesn't consider abstract generic instantiation when restricting type (#5190) doesn't use virtual + in type arguments for NamedTuple (#2839) doesn't use virtual + in type arguments for NamedTuple (#2839) doesn't consider abstract types for including types (#7200) doesn't consider abstract types for including types (#7200) runs generic instance var initializers in superclass's metaclass context (#4753) runs generic instance var initializers in superclass's metaclass context (#4753) codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) doesn't override guessed instance var in generic type if already declared in superclass (#9431) doesn't override guessed instance var in generic type if already declared in superclass (#9431) inherited instance var initialize from generic to generic to concrete (#2128) inherited instance var initialize from generic to generic to concrete (#2128) inherited instance var initialize from generic to concrete (#2128) inherited instance var initialize from generic to concrete (#2128) declares instance var with virtual T (#1675) declares instance var with virtual T (#1675) codegens static array size after instantiating codegens static array size after instantiating doesn't crash on generic type restriction with initially no subtypes (#8411) doesn't crash on generic type restriction with initially no subtypes (#8411) instantiates generic class with default argument in initialize (#394) instantiates generic class with default argument in initialize (#394) allows initializing instance variable in inherited generic type allows initializing instance variable in inherited generic type codegens virtual generic metaclass macro method call codegens virtual generic metaclass macro method call doesn't crash on generic type restriction with no subtypes (#7583) doesn't crash on generic type restriction with no subtypes (#7583) doesn't run generic instance var initializers in formal superclass's context (#4753) doesn't run generic instance var initializers in formal superclass's context (#4753) runs generic instance var initializers in superclass's metaclass context (2) (#6482) runs generic instance var initializers in superclass's metaclass context (2) (#6482) doesn't use virtual + in type arguments for Tuple (#2839) doesn't use virtual + in type arguments for Tuple (#2839) allows initializing instance variable (#665) allows initializing instance variable (#665) Code gen: array literal spec creates custom non-generic array in module creates custom non-generic array in module creates custom generic array via alias (2) creates custom generic array via alias (2) creates custom generic array creates custom generic array creates custom non-generic array in nested module creates custom non-generic array in nested module creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates custom non-generic array, with splats creates custom non-generic array, with splats creates custom generic array with type var creates custom generic array with type var creates custom generic array via alias creates custom generic array via alias assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works creates custom generic array in module (#5684) creates custom generic array in module (#5684) creates custom generic array, with splats creates custom generic array, with splats assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works creates custom non-generic array creates custom non-generic array Normalize: proc pointer normalizes proc pointer with parameters, without object normalizes proc pointer with parameters, without object normalizes proc pointer with const receiver normalizes proc pointer with const receiver normalizes proc pointer with global const receiver normalizes proc pointer with global const receiver normalizes proc pointer with ivar receiver normalizes proc pointer with ivar receiver normalizes proc pointer with cvar receiver normalizes proc pointer with cvar receiver normalizes proc pointer with variable receiver normalizes proc pointer with variable receiver normalizes proc pointer without object normalizes proc pointer without object normalizes proc pointer of global call normalizes proc pointer of global call Semantic: if types an if with else of different type types an if with else of different type doesn't fail on new variables inside typeof condition doesn't fail on new variables inside typeof condition restricts || of more than 2 clauses (#8864) restricts || of more than 2 clauses (#8864) doesn't filter and recombine when variables don't change in if doesn't filter and recombine when variables don't change in if passes bug (related to #1729) passes bug (related to #1729) doesn't consider nil type in else branch with if with && (#7434) doesn't consider nil type in else branch with if with && (#7434) types variable after unreachable else of && (#3360) types variable after unreachable else of && (#3360) doesn't fail on Expressions condition (1) doesn't fail on Expressions condition (1) restricts && else in sub && (right) restricts && else in sub && (right) restricts type with !var.is_a?(...) and && restricts type with !var.is_a?(...) and && doesn't restrict || else in sub && (right) doesn't restrict || else in sub && (right) restricts with || but doesn't unify types to base class restricts with || but doesn't unify types to base class doesn't restrict with || on different vars doesn't restrict with || on different vars types an if without else types an if without else types an if with else of same type types an if with else of same type restricts || else in sub || (left) restricts || else in sub || (left) restricts || else (1) (#3266) restricts || else (1) (#3266) doesn't fail on nested conditionals inside typeof condition doesn't fail on nested conditionals inside typeof condition doesn't restrict || else in sub && (left) doesn't restrict || else in sub && (left) restricts with || (#2464) restricts with || (#2464) restricts type with !var and || restricts type with !var and || restricts && of !var.is_a(...) restricts && of !var.is_a(...) restricts the type of the right hand side of an || when using is_a? (#1728) restricts the type of the right hand side of an || when using is_a? (#1728) correctly filters type of variable if there's a raise with an interpolation that can't be typed correctly filters type of variable if there's a raise with an interpolation that can't be typed doesn't fail on Expressions condition (2) doesn't fail on Expressions condition (2) restricts || else (2) (#3266) restricts || else (2) (#3266) restricts and doesn't unify union types restricts and doesn't unify union types errors if requires inside if errors if requires inside if types `if` with `&&` and assignment types `if` with `&&` and assignment restricts with && always falsey restricts with && always falsey can invoke method on var that is declared on the right hand side of an and can invoke method on var that is declared on the right hand side of an and doesn't restrict with || on var and non-restricting condition doesn't restrict with || on var and non-restricting condition restricts || else (3) (#3266) restricts || else (3) (#3266) restricts && else in sub && (left) restricts && else in sub && (left) includes pointer types in falsey branch includes pointer types in falsey branch restricts type with !var.is_a?(...) and || restricts type with !var.is_a?(...) and || restricts || else in sub || (right) restricts || else in sub || (right) .validate_name digits digits empty empty underscores underscores dashes dashes uppercase uppercase invalid character invalid character length length Call errors says type mismatch for symbol against enum (did you mean) says type mismatch for symbol against enum (did you mean) replaces generic type var in named argument replaces generic type var in named argument says type mismatch for positional argument with two options says type mismatch for positional argument with two options says missing named arguments says missing named arguments says no parameter named says no parameter named says missing named argument says missing named argument says argument already specified says argument already specified says type mismatch for positional argument says type mismatch for positional argument replaces free variables in positional argument replaces free variables in positional argument errors on argument if argument matches in all overloads but with different types in other arguments errors on argument if argument matches in all overloads but with different types in other arguments says type mismatch for positional argument even if there are overloads that don't match says type mismatch for positional argument even if there are overloads that don't match errors on argument if more types are given than expected errors on argument if more types are given than expected replaces generic type var in positional argument replaces generic type var in positional argument method signatures in error traces expands single splat argument expands single splat argument expands positional and single splat argument expands positional and single splat argument expands positional and single splat argument, more elements expands positional and single splat argument, more elements expands double splat argument, more elements expands double splat argument, more elements uses `T.method` instead of `T.class#method` uses `T.method` instead of `T.class#method` includes positional and named argument includes positional and named argument expands positional and double splat argument, more elements expands positional and double splat argument, more elements expands single splat argument, more elements expands single splat argument, more elements includes named argument includes named argument uses `T.method` instead of `T:module#method` uses `T.method` instead of `T:module#method` expands positional and double splat argument, empty named tuple expands positional and double splat argument, empty named tuple expands positional and double splat argument expands positional and double splat argument expands single splat argument, empty tuple expands single splat argument, empty tuple includes named arguments includes named arguments expands double splat argument expands double splat argument expands double splat argument, empty named tuple expands double splat argument, empty named tuple expands positional and single splat argument, empty tuple expands positional and single splat argument, empty tuple says type mismatch for positional argument with three options says type mismatch for positional argument with three options says no parameters named says no parameters named says not expected to be invoked with a block says not expected to be invoked with a block says wrong number of arguments even if other overloads don't match by block says wrong number of arguments even if other overloads don't match by block says type mismatch for symbol against enum (list all possibilities when 10 or less) says type mismatch for symbol against enum (list all possibilities when 10 or less) says type mismatch for symbol against enum, named argument case says type mismatch for symbol against enum, named argument case errors on argument if more types are given than expected, shows all expected types errors on argument if more types are given than expected, shows all expected types says type mismatch for named argument says type mismatch for named argument says expected to be invoked with a block says expected to be invoked with a block says wrong number of arguments (to few arguments) says wrong number of arguments (to few arguments) replaces free variables in named argument replaces free variables in named argument Crystal::Repl::Interpreter pointers pointerof class var pointerof class var pointerof read `StaticArray#@buffer` (1) pointerof read `StaticArray#@buffer` (1) interprets pointer diff, negative interprets pointer diff, negative pointerof instance var pointerof instance var interprets pointerof, mutates pointer, read var interprets pointerof, mutates pointer, read var interprets pointer set and get (union type, setter value) interprets pointer set and get (union type, setter value) interprets pointer diff interprets pointer diff interprets pointer set and get (union type) interprets pointer set and get (union type) discards pointer diff discards pointer diff interprets pointerof and mutates memory (there are more variables) interprets pointerof and mutates memory (there are more variables) discards pointerof discards pointerof discards pointer malloc discards pointer malloc interprets pointer set and get (bool) interprets pointer set and get (bool) interprets pointer realloc interprets pointer realloc interprets pointer set and get (int) interprets pointer set and get (int) interprets pointer set and get (clear stack) interprets pointer set and get (clear stack) pointerof read instance var pointerof read instance var pointerof read `StaticArray#@buffer` (2) pointerof read `StaticArray#@buffer` (2) interprets pointer new and pointer address interprets pointer new and pointer address interprets pointerof, mutates var, read pointer interprets pointerof, mutates var, read pointer discards pointer get discards pointer get discards pointer set discards pointer set interprets nilable pointer truthiness interprets nilable pointer truthiness discards pointer add discards pointer add discards pointer new discards pointer new interprets pointer realloc wrapper interprets pointer realloc wrapper discards pointer realloc discards pointer realloc interprets pointer add interprets pointer add Semantic: class var allows class var in primitive types (#612) allows class var in primitive types (#612) errors if using self as type var but there's no self errors if using self as type var but there's no self errors if redefining class var type in subclass errors if redefining class var type in subclass declares class variable declares class variable types as nilable if doesn't have initializer types as nilable if doesn't have initializer can find class var in subclass can find class var in subclass errors if using class variable at the top level errors if using class variable at the top level errors if redefining class var type in included module errors if redefining class var type in included module types class var types class var says undefined class variable says undefined class variable errors if redefining class var type in subclass, with guess errors if redefining class var type in subclass, with guess errors when typing a class variable inside a method errors when typing a class variable inside a method allows self.class as type var in class body (#537) allows self.class as type var in class body (#537) gives correct error when trying to use Int as a class variable type gives correct error when trying to use Int as a class variable type errors on undefined constant (2) errors on undefined constant (2) infers type from T.new infers type from T.new declares uninitialized (#2935) declares uninitialized (#2935) types class var inside instance method types class var inside instance method doesn't error if accessing class variable before defined (#2941) doesn't error if accessing class variable before defined (#2941) declares class var in generic class declares class var in generic class declares class variable (2) declares class variable (2) errors on undefined constant (1) errors on undefined constant (1) can access constant from generic metaclass (#3719) can access constant from generic metaclass (#3719) infers in multiple assign for tuple type (1) infers in multiple assign for tuple type (1) errors if class variable not nilable without initializer errors if class variable not nilable without initializer doesn't error on recursive dependency if var is nilable (#2943) doesn't error on recursive dependency if var is nilable (#2943) declares class var in generic module declares class var in generic module redefines class variable type redefines class variable type errors if using local variable in initializer errors if using local variable in initializer types class var as nil if not assigned at the top level types class var as nil if not assigned at the top level infers type from number literal infers type from number literal errors when using Class (#2605) errors when using Class (#2605) types class var inside proc literal inside class types class var inside proc literal inside class can find class var through included module can find class var through included module can assign to class variable if this type can be up-casted to ancestors class variable type (#4869) can assign to class variable if this type can be up-casted to ancestors class variable type (#4869) types class var as nil if assigned for the first time inside method (#2059) types class var as nil if assigned for the first time inside method (#2059) Code gen: exception rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue rescues with types defaults to generic rescue executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body executes ensure of next inside while inside body can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) can use argument in rescue, with a different type (2) (#2844) executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return codegens exception handler with return can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) can use argument in rescue (#2844) receives exception object receives exception object receives exception object receives exception object receives exception object receives exception object receives exception object receives exception object receives exception object receives exception object executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is raised (2) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) types parenthesized expression (#5511) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) doesn't execute else if exception is raised (2) codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value codegens return from rescue with value rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union rescues a valid nested union executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers executes ensure of break inside while inside body with nested handlers doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't crash on #1988 doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) doesn't execute else if exception is raised conditionally (1) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module does not rescue just any module executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) can use argument in rescue, with a different type (1) (#2844) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (1) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) handles exception in outer block (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes else if no exception is raised (2) executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) doesn't execute else if exception is raised conditionally (2) executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of next inside block executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) can result into union (1) can result into union (1) can result into union (1) can result into union (1) can result into union (1) can result into union (1) can result into union (1) can result into union (1) can result into union (1) can result into union (1) ensure without rescue ensure without rescue ensure without rescue ensure without rescue ensure without rescue ensure without rescue ensure without rescue ensure without rescue ensure without rescue ensure without rescue codegens issue #118 (2) codegens issue #118 (2) handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions handles nested exceptions executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target closures rescue variable (#8141) closures rescue variable (#8141) executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body executes ensure of break inside while inside body handles subclass handles subclass handles subclass handles subclass handles subclass handles subclass handles subclass handles subclass handles subclass handles subclass executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised conditionally does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union does not rescue just any union can result into union (2) can result into union (2) can result into union (2) can result into union (2) can result into union (2) can result into union (2) can result into union (2) can result into union (2) can result into union (2) can result into union (2) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (1) executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes ensure of break inside while inside body with block executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure executes return inside rescue, executing ensure handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handles rescuing union between module types handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal handle exception raised by proc literal executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target executes ensure from return until target handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type handles rescuing module type executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block executes ensure of break inside block can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) codegens issue #118 (1) codegens issue #118 (1) executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue uses exception after rescue runs #2441 runs #2441 runs #2441 runs #2441 runs #2441 runs #2441 runs #2441 runs #2441 runs #2441 runs #2441 doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) doesn't execute else if exception is raised (1) codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens rescue specific leaf exception executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes ensure when the main block returns executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes body if nothing raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (1) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) handle multiple exception types (2) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) propagates raise status (#2074) rescues with type rescues with type rescues with type rescues with type rescues with type rescues with type rescues with type rescues with type rescues with type rescues with type rescues a valid union rescues a valid union rescues a valid union rescues a valid union rescues a valid union rescues a valid union rescues a valid union rescues a valid union rescues a valid union rescues a valid union executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns executes ensure when the main block yields and returns doesn't codegen duplicated ensure if unreachable (#709) doesn't codegen duplicated ensure if unreachable (#709) captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc captures exception thrown from proc handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles rescuing union between module type and class type handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (1) Normalize: regex literal StringLiteral expands to const expands to const simple simple options im im empty empty i i x x imx imx StringInterpolation simple simple Crystal::Doc::Macro args_to_s shows simple arg and double splat arg shows simple arg and double splat arg shows simple args shows simple args shows simple arg and splat arg shows simple arg and splat arg shows external name of arg with quotes and escaping shows external name of arg with quotes and escaping shows external name of arg shows external name of arg shows simple arg and block arg shows simple arg and block arg shows block arg shows block arg shows double splat arg shows double splat arg shows default value with highlighting shows default value with highlighting shows double splat arg shows double splat arg shows splat arg shows splat arg Code gen: debug correctly restores debug location after fun change (#4254) correctly restores debug location after fun change (#4254) has debug info in closure inside if (#5593) has debug info in closure inside if (#5593) stores and restores debug location after jumping to main (3) stores and restores debug location after jumping to main (3) codegens extern union (#7335) codegens extern union (#7335) stores and restores debug location after jumping to main (2) stores and restores debug location after jumping to main (2) doesn't emit incorrect debug info for closured self doesn't emit incorrect debug info for closured self codegens abstract struct (#3578) codegens abstract struct (#3578) doesn't fail on constant read calls (#11416) doesn't fail on constant read calls (#11416) codegens lib union (#7335) codegens lib union (#7335) has correct debug location after constant initialization in call with block (#4719) has correct debug location after constant initialization in call with block (#4719) codegens correct debug info for new with custom allocate (#3945) codegens correct debug info for new with custom allocate (#3945) stores and restores debug location after jumping to main (#6920) stores and restores debug location after jumping to main (#6920) codegens correct debug info for untyped expression (#4007 and #4008) codegens correct debug info for untyped expression (#4007 and #4008) doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals doesn't emit debug info for unused variable declarations (#9882) doesn't emit debug info for unused variable declarations (#9882) inlines instance var access through getter in debug mode inlines instance var access through getter in debug mode Lexer: location pushes and pops its location pushes and pops its location stores column numbers stores column numbers locations in same files are comparable based on line locations in same files are comparable based on line stores line numbers stores line numbers overrides location with pragma overrides location with pragma locations in different files have no order locations in different files have no order Location.parse raises ArgumentError if missing part raises ArgumentError if missing part parses location from string parses location from string raises ArgumentError if missing colon raises ArgumentError if missing colon raises ArgumentError if line number is invalid raises ArgumentError if line number is invalid raises ArgumentError if column number is invalid raises ArgumentError if column number is invalid locations with virtual files should be comparable locations with virtual files should be comparable assigns correct loc location to node assigns correct loc location to node parses var/call right after loc (#491) parses var/call right after loc (#491) uses two consecutive loc pragma uses two consecutive loc pragma Crystal::Doc::MarkdDocRenderer renders headline renders "## Foo Bar\n### Sub\n## Bar Baz\n### Sub" renders "## Foo Bar\n### Sub\n## Bar Baz\n### Sub" renders "## Foo Bar" renders "## Foo Bar" renders code blocks renders "```\nHello\nWorld\n```" renders "```\nHello\nWorld\n```" renders "```cr\nHello\nWorld\n```" renders "```cr\nHello\nWorld\n```" renders "```crystal\nHello\nWorld\n```" renders "```crystal\nHello\nWorld\n```" renders links renders "[foo](http://example.com/foo)" renders "[foo](http://example.com/foo)" renders "[`Foo`](http://example.com/foo)" renders "[`Foo`](http://example.com/foo)" renders "[filter](https://docs.celestine.dev/Celestine/Meta/Context.html#filter(&block:Celestine::Filter-%3ECelestine::Filter)-instance-method)" renders "[filter](https://docs.celestine.dev/Celestine/Meta/Context.html#filter(&block:Celestine::Filter-%3ECelestine::Filter)-instance-method)" renders html renders "<h1 align=\"center\">Foo</h1>" renders "<h1 align=\"center\">Foo</h1>" renders code spans renders "`<style>`" renders "`<style>`" expand_code_links finds method with question mark finds method with question mark finds method with args even with empty brackets finds method with args even with empty brackets finds operator method finds operator method does not break when referencing lib type (#9928) does not break when referencing lib type (#9928) doesn't find parents' methods doesn't find parents' methods doesn't spuriously match range literals doesn't spuriously match range literals finds types from base finds types from base finds sibling methods with self receiver finds sibling methods with self receiver finds operator method with unspecified args finds operator method with unspecified args doesn't find wrong absolute type doesn't find wrong absolute type finds nested type finds nested type doesn't match with different separator doesn't match with different separator finds constant finds constant finds method of an absolute type finds method of an absolute type finds method with zero args finds method with zero args doesn't find sibling methods of wrong type doesn't find sibling methods of wrong type doesn't find wrong kind of sibling methods doesn't find wrong kind of sibling methods finds method with args finds method with args doesn't find wrong kind of methods doesn't find wrong kind of methods doesn't find method with wrong number of args doesn't find method with wrong number of args finds sibling methods finds sibling methods doesn't find substrings for methods doesn't find substrings for methods matches methods on single-character class names matches methods on single-character class names finds methods of a type finds methods of a type doesn't find sibling methods with fake receiver doesn't find sibling methods with fake receiver finds method with exclamation mark finds method with exclamation mark finds multiple kinds of things finds multiple kinds of things doesn't find type not at word boundary doesn't find type not at word boundary doesn't find parents' methods doesn't find parents' methods finds multiple methods with brackets finds multiple methods with brackets finds method with unspecified args finds method with unspecified args finds absolute type finds absolute type finds types from nested finds types from nested doesn't find method with wrong number of args doesn't find method with wrong number of args finds sibling methods finds sibling methods Semantic: abstract def errors if implementation misses the double splat errors if implementation misses the double splat errors if implementation doesn't match splat type errors if implementation doesn't match splat type errors if implementation doesn't have a keyword argument errors if implementation doesn't have a keyword argument doesn't error if implementation have default value doesn't error if implementation have default value can implement by block signature even if yield comes later in macro code can implement by block signature even if yield comes later in macro code doesn't error if abstract method is not implemented by including module doesn't error if abstract method is not implemented by including module errors if implementation adds type restriction errors if implementation adds type restriction errors if implementation doesn't match keyword argument type errors if implementation doesn't match keyword argument type errors if abstract method is not implemented by subclass errors if abstract method is not implemented by subclass doesn't error if abstract method is implemented by including class doesn't error if abstract method is implemented by including class allow splat instead of keyword argument allow splat instead of keyword argument doesn't error if implements with parent module doesn't error if implements with parent module error shows full signature of block parameter error shows full signature of block parameter doesn't error if abstract method with args is implemented by subclass (don't check subclasses) doesn't error if abstract method with args is implemented by subclass (don't check subclasses) gives correct error when no overload matches, when an abstract method is implemented (#1406) gives correct error when no overload matches, when an abstract method is implemented (#1406) matches generic return type matches generic return type errors if implementation has more keyword arguments errors if implementation has more keyword arguments allows arguments to be collapsed into splat allows arguments to be collapsed into splat errors if abstract method is not implemented by including class errors if abstract method is not implemented by including class can implement even if yield comes later in macro code can implement even if yield comes later in macro code doesn't error if implements with included module doesn't error if implements with included module errors if different return type errors if different return type doesn't error if abstract method with args is implemented by subclass (with one default arg) doesn't error if abstract method with args is implemented by subclass (with one default arg) errors if abstract method of private type is not implemented by including class errors if abstract method of private type is not implemented by including class works on abstract def on sub-subclass works on abstract def on sub-subclass errors if missing a return type in subclass of generic subclass errors if missing a return type in subclass of generic subclass doesn't error if implements with parent class doesn't error if implements with parent class errors if double splat type doesn't match errors if double splat type doesn't match errors if using abstract def on non-abstract class errors if using abstract def on non-abstract class allow double splat argument allow double splat argument extra keyword arguments must have compatible type to double splat extra keyword arguments must have compatible type to double splat errors if abstract method with arguments is not implemented by subclass (wrong type) errors if abstract method with arguments is not implemented by subclass (wrong type) errors if abstract method is not implemented by subclass of subclass errors if abstract method is not implemented by subclass of subclass errors if abstract method of private type is not implemented by subclass errors if abstract method of private type is not implemented by subclass doesn't error if implements with generic included module instance doesn't error if implements with generic included module instance can return a more specific type can return a more specific type errors if implementation doesn't have default value errors if implementation doesn't have default value matches instantiated generic types matches instantiated generic types errors if using abstract def on metaclass errors if using abstract def on metaclass errors if using abstract def on subclass that also defines it as abstract errors if using abstract def on subclass that also defines it as abstract matches generic module (a bit more complex) matches generic module (a bit more complex) matches instantiated generic module matches instantiated generic module errors if can't find parent return type errors if can't find parent return type implements through extend (considers original type for generic lookup) (2) (#8096) implements through extend (considers original type for generic lookup) (2) (#8096) implements through extend (considers original type for generic lookup) (#8096) implements through extend (considers original type for generic lookup) (#8096) errors if using abstract def on subclass errors if using abstract def on subclass works on abstract method on abstract class works on abstract method on abstract class doesn't error with splat and args with default value doesn't error with splat and args with default value doesn't error if abstract method is implemented by subclass via module inclusion doesn't error if abstract method is implemented by subclass via module inclusion doesn't error if abstract method with args is implemented by subclass doesn't error if abstract method with args is implemented by subclass implementation is not inherited from supertype generic module generic module nongeneric module nongeneric module generic class generic class nongeneric class nongeneric class finds implements in included module in disorder (#4052) finds implements in included module in disorder (#4052) errors if abstract method with arguments is not implemented by subclass (block difference) errors if abstract method with arguments is not implemented by subclass (block difference) doesn't error if implementation has more keyword arguments with default values doesn't error if implementation has more keyword arguments with default values errors if keyword argument doesn't have the same default value errors if keyword argument doesn't have the same default value doesn't error if implements with generic parent class instance doesn't error if implements with generic parent class instance errors if abstract method with arguments is not implemented by subclass errors if abstract method with arguments is not implemented by subclass doesn't error if abstract method with args is implemented by subclass (restriction -> no restriction) doesn't error if abstract method with args is implemented by subclass (restriction -> no restriction) allow double splat when abstract doesn't have it allow double splat when abstract doesn't have it doesn't error if implementation have keyword arguments in different order doesn't error if implementation have keyword arguments in different order doesn't error if abstract method is implemented by subclass doesn't error if abstract method is implemented by subclass errors if implementation doesn't have keyword arguments errors if implementation doesn't have keyword arguments double splat must match keyword argument type double splat must match keyword argument type doesn't error if free var in arg restriction shadows another type (#10153) doesn't error if free var in arg restriction shadows another type (#10153) doesn't error if implementation matches keyword argument doesn't error if implementation matches keyword argument matches generic module matches generic module errors if missing return type errors if missing return type doesn't error if implements a NoReturn param doesn't error if implements a NoReturn param errors if implementation doesn't have the same default value errors if implementation doesn't have the same default value matches generic types matches generic types errors if abstract method is not implemented by subclass (nested in module) errors if abstract method is not implemented by subclass (nested in module) errors if can't find child return type errors if can't find child return type doesn't error with splat doesn't error with splat errors if abstract method with arguments is not implemented by subclass (wrong number of arguments) errors if abstract method with arguments is not implemented by subclass (wrong number of arguments) errors if implementation doesn't have a splat errors if implementation doesn't have a splat Code gen: enum codegens enum bitflags (2) codegens enum bitflags (2) can use macro calls inside enum value (#424) can use macro calls inside enum value (#424) adds a none? method to flags enum adds a none? method to flags enum codegens enum All redefined codegens enum All redefined uses enum value before declaration (hoisting) uses enum value before declaration (hoisting) automatically defines question method for each enum member (flags, false case) automatically defines question method for each enum member (flags, false case) can define flags enum : UInt64 with more than 32 values (#7268) can define flags enum : UInt64 with more than 32 values (#7268) codegens enum value codegens enum value codegens enum bitflags All codegens enum bitflags All can define flags enum : UInt128 with 128 values can define flags enum : UInt128 with 128 values automatically defines question method for each enum member (false case) automatically defines question method for each enum member (false case) casts All value to base type casts All value to base type codegens enum codegens enum codegens enum bitflags (4) codegens enum bitflags (4) can redefine Enum.new and use previous_def can redefine Enum.new and use previous_def can use macro calls inside enum value, macro defined outside enum (#424) can use macro calls inside enum value, macro defined outside enum (#424) codegens enum bitflags (1) codegens enum bitflags (1) can define flags enum : UInt128 with compile-time interpreted values can define flags enum : UInt128 with compile-time interpreted values codegens enum None redefined codegens enum None redefined automatically defines question method for each enum member (flags, true case) automatically defines question method for each enum member (flags, true case) codegens enum without explicit value codegens enum without explicit value creates enum from value creates enum from value does ~ at compile time for enum member does ~ at compile time for enum member allows class vars in enum allows class vars in enum codegens enum bitflags None codegens enum bitflags None automatically defines question method for each enum member (true case) automatically defines question method for each enum member (true case) can use macro calls inside enum value, with receiver (#424) can use macro calls inside enum value, with receiver (#424) Normalize: expressions normalizes expressions with begin/end normalizes expressions with begin/end normalizes an empty expression with begin/end normalizes an empty expression with begin/end normalizes an expression normalizes an expression Code gen: or codegens or with bool union as left node 3 codegens or with bool union as left node 3 codegens or with primitive type other than bool codegens or with primitive type other than bool codegens or with bool true and true codegens or with bool true and true codegens or with bool union as left node 2 codegens or with bool union as left node 2 codegens or with nil union as left node 2 codegens or with nil union as left node 2 codegens or with non-false union as left node codegens or with non-false union as left node codegens or with bool union as left node 2 codegens or with bool union as left node 2 codegens or with bool union as left node 3 codegens or with bool union as left node 3 codegens or with bool union as left node 1 codegens or with bool union as left node 1 codegens or with bool union as left node 4 codegens or with bool union as left node 4 codegens or with bool false and false codegens or with bool false and false codegens or with bool union as left node 1 codegens or with bool union as left node 1 codegens or with bool true and false codegens or with bool true and false codegens or with nilable as left node 1 codegens or with nilable as left node 1 codegens or with bool false and true codegens or with bool false and true codegens or with bool and int 2 codegens or with bool and int 2 codegens or with nil union as left node 1 codegens or with nil union as left node 1 codegens or with primitive type other than bool with union codegens or with primitive type other than bool with union codegens or with nilable as left node 2 codegens or with nilable as left node 2 codegens or with primitive type other than bool codegens or with primitive type other than bool codegens or with bool and int 1 codegens or with bool and int 1 Semantic: class type def does not reopen type from parent namespace (#11181) type def does not reopen type from parent namespace (#11181) doesn't mix classes on definition (#2352) doesn't mix classes on definition (#2352) types generic of generic type types generic of generic type types Const#new types Const#new doesn't lookup new in supermetaclass doesn't lookup new in supermetaclass types class and subclass as one type types class and subclass as one type reports uninitialized constant reports uninitialized constant errors if inheriting Gen(self) and there's no self (#2890) errors if inheriting Gen(self) and there's no self (#2890) errors if using underscore in generic class errors if using underscore in generic class correctly types #680 correctly types #680 uses self as type var uses self as type var says that instance vars are not allowed in metaclass says that instance vars are not allowed in metaclass can invoke method on abstract generic type without subclasses nor instances can invoke method on abstract generic type without subclasses nor instances reports unknown class when extending reports unknown class when extending doesn't mark instance variable as nilable if calling another initialize doesn't mark instance variable as nilable if calling another initialize errors if reading non-existent ivar errors if reading non-existent ivar errors when creating Number errors when creating Number errors when wrong arguments for new errors when wrong arguments for new reads a virtual type instance var reads a virtual type instance var says wrong number of arguments for abstract class new says wrong number of arguments for abstract class new types type var union types type var union types instance variable types instance variable errors if reopening non-generic class as generic errors if reopening non-generic class as generic types class inside class types class inside class allows defining classes inside modules or classes with :: allows defining classes inside modules or classes with :: errors if reopening generic class with different splat index (3) errors if reopening generic class with different splat index (3) errors if reopening generic class with different splat index errors if reopening generic class with different splat index allows using self in class scope allows using self in class scope doesn't error on new on abstract virtual type class doesn't error on new on abstract virtual type class infers generic type after instance was created with explicit type infers generic type after instance was created with explicit type doesn't lookup type in parents' namespaces, and lookups and in program doesn't lookup type in parents' namespaces, and lookups and in program can invoke method on abstract type without subclasses nor instances can invoke method on abstract type without subclasses nor instances hoists instance variable initializer hoists instance variable initializer can't reopen as module can't reopen as module says wrong number of arguments for abstract class new (2) says wrong number of arguments for abstract class new (2) reads an object instance var from a union type reads an object instance var from a union type does automatic type inference of new for generic types 2 does automatic type inference of new for generic types 2 doesn't crash with top-level initialize (#2601) doesn't crash with top-level initialize (#2601) inherits self twice (#5495) inherits self twice (#5495) reports undefined method when method inside a class reports undefined method when method inside a class types as no return if calling method on abstract class with generic subclasses but no instances (#6996) types as no return if calling method on abstract class with generic subclasses but no instances (#6996) can't use implicit initialize if defined in parent can't use implicit initialize if defined in parent types as no return if calling method on abstract class with all abstract subclasses (#6996) types as no return if calling method on abstract class with all abstract subclasses (#6996) types Const#allocate types Const#allocate errors if reopening generic class with different type vars (2) errors if reopening generic class with different type vars (2) says no overload matches for class new says no overload matches for class new uses self as type var uses self as type var reports undefined instance method reports undefined instance method types class and subclass as one type types class and subclass as one type inherits Gen(self) (#2890) inherits Gen(self) (#2890) errors if inherits from metaclass errors if inherits from metaclass uses number type var in class method uses number type var in class method errors if inherits from module errors if inherits from module finds in global scope if includes module finds in global scope if includes module allows declaring a variable in an initialize and using it allows declaring a variable in an initialize and using it types Const#new#method types Const#new#method doesn't use initialize from base class doesn't use initialize from base class does automatic inference of new for generic types does automatic inference of new for generic types types virtual method of generic class types virtual method of generic class reports superclass mismatch reports superclass mismatch types instance variable on getter types instance variable on getter types self inside method call without obj types self inside method call without obj types class and subclass as one type types class and subclass as one type doesn't crash on instance variable assigned a proc, and never instantiated (#923) doesn't crash on instance variable assigned a proc, and never instantiated (#923) errors when creating Value errors when creating Value errors if reading ivar from non-ivar container errors if reading ivar from non-ivar container reports can't instantiate abstract class on allocate reports can't instantiate abstract class on allocate does automatic type inference of new for nested generic type does automatic type inference of new for nested generic type can mark initialize as private can mark initialize as private types as no return if calling method on generic class with subclasses (#6996) types as no return if calling method on generic class with subclasses (#6996) doesn't use initialize from base class with virtual type doesn't use initialize from base class with virtual type can invoke method on abstract generic type with subclasses but no instances can invoke method on abstract generic type with subclasses but no instances correctly types #680 (2) correctly types #680 (2) reports wrong number of arguments for initialize reports wrong number of arguments for initialize reads an object instance var reads an object instance var types as no return if calling method on abstract generic class (#6996) types as no return if calling method on abstract generic class (#6996) types recursive type types recursive type errors if using read-instance-var with non-typed variable errors if using read-instance-var with non-typed variable can't reopen as struct can't reopen as struct inherits self (#2890) inherits self (#2890) types bug #168 (it inherits instance var even if not mentioned in initialize) types bug #168 (it inherits instance var even if not mentioned in initialize) reports can't instantiate abstract class on new reports can't instantiate abstract class on new can use short name for top-level type can use short name for top-level type errors if creating instance before typing instance variable errors if creating instance before typing instance variable errors if reopening generic class with different type vars errors if reopening generic class with different type vars errors if assigning superclass to declared instance var errors if assigning superclass to declared instance var errors if declares class inside if errors if declares class inside if errors on no method found on abstract class, class method (#2241) errors on no method found on abstract class, class method (#2241) errors if reopening generic class with different splat index (2) errors if reopening generic class with different splat index (2) allows instantiating generic class with number allows instantiating generic class with number types instance variable types instance variable preserves order of instance vars (#3050) preserves order of instance vars (#3050) Semantic: doc :ditto: amend previous doc (without empty line) amend previous doc (without empty line) stores doc for macro stores doc for macro stores doc for const stores doc for const :ditto: references last non-ditto doc :ditto: references last non-ditto doc stores doc for def stores doc for def amend previous doc amend previous doc overwrites doc for module when reopening overwrites doc for module when reopening stores doc for enum with @[Flags] stores doc for enum with @[Flags] stores doc for class stores doc for class overwrites doc for def when redefining overwrites doc for def when redefining stores doc for macro stores doc for macro stores doc for abstract class stores doc for abstract class doc before annotation attached to struct/class attached to struct/class attached to enum attached to enum attached to constant attached to constant attached to macro call attached to macro call attached to module attached to module attached to alias attached to alias attached to macro call that produces multiple types attached to macro call that produces multiple types attached to def attached to def attached to macro attached to macro attaches doc in double macro expansion (#8463) attaches doc in double macro expansion (#8463) stores doc for constant stores doc for constant stores doc for macro defined in macro call stores doc for macro defined in macro call stores doc for alias stores doc for alias overwrites doc for struct when reopening overwrites doc for struct when reopening stores doc for enum when reopening stores doc for enum when reopening stores doc for flags enum with base type stores doc for flags enum with base type overwrites doc for enum when reopening overwrites doc for enum when reopening stores doc for nodes defined in macro call (2) stores doc for nodes defined in macro call (2) attaches doc to annotation in macro expansion (#9628) attaches doc to annotation in macro expansion (#9628) stores doc for fun def stores doc for fun def stores doc for enum member stores doc for enum member stores location for implicit flag enum members stores location for implicit flag enum members stores locations for auto-generated module stores locations for auto-generated module stores doc for def with annotation stores doc for def with annotation stores doc for abstract def stores doc for abstract def stores doc for struct stores doc for struct stores doc for class when reopening stores doc for class when reopening stores doc for nodes defined in macro call stores doc for nodes defined in macro call overwrites doc for class when reopening overwrites doc for class when reopening stores doc for module when reopening stores doc for module when reopening stores doc for module stores doc for module stores doc for def stores doc for def stores doc for def with annotation stores doc for def with annotation stores doc for enum stores doc for enum overwrites doc for macro when redefining overwrites doc for macro when redefining stores doc for struct when reopening stores doc for struct when reopening stores doc for enum and doesn't mix with value stores doc for enum and doesn't mix with value stores doc for def with visibility stores doc for def with visibility Semantic: return infers return type with many returns (2) infers return type with many returns (2) flattens splats inside multiple return values flattens splats inside multiple return values infers return type with many returns (1) infers return type with many returns (1) errors on return in top level errors on return in top level errors if non-type free var cannot be inferred errors if non-type free var cannot be inferred can use type var as return type with an included generic module can use type var as return type with an included generic module can use type var as return type with an inherited generic class can use type var as return type with an inherited generic class types bug (#1823) types bug (#1823) can use non-type free var in return type (#6543) can use non-type free var in return type (#6543) infers return type infers return type allows nilable return type to match subclasses (#1735) allows nilable return type to match subclasses (#1735) can use type var as return type (#1226) can use type var as return type (#1226) types return if true types return if true can use non-type free var in return type (2) (#6543) can use non-type free var in return type (2) (#6543) doesn't confuse return type from base class doesn't confuse return type from base class can use free var in return type (#2492) can use free var in return type (#2492) allows returning NoReturn instead of the wanted type allows returning NoReturn instead of the wanted type forms a tuple from multiple return values forms a tuple from multiple return values Code gen: closure codegens multiple nested blocks codegens multiple nested blocks codegens closure with nested context without new closured vars but with block arg codegens closure with nested context without new closured vars but with block arg codegens closure inside initialize inside block with self codegens closure inside initialize inside block with self codegens closured nested in block codegens closured nested in block codegens closure with struct codegens closure with struct codegens super nested closure codegens super nested closure doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) doesn't free closure memory (bug) codegens nested closure with nested closured variable codegens nested closure with nested closured variable codegens closure with nested context without new closured vars codegens closure with nested context without new closured vars codegens closure with block that declares same var codegens closure with block that declares same var ensures it can raise from the closure check ensures it can raise from the closure check codegens closure with instance var and var codegens closure with instance var and var closures struct self closures struct self allows giving less block args when transforming block to proc literal allows giving less block args when transforming block to proc literal allows passing an external function along (2) allows passing an external function along (2) codegens nested closure with block (1) codegens nested closure with block (1) codegens closure with instance var and block codegens closure with instance var and block doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method doesn't form a closure if invoking class method transforms block to proc literal transforms block to proc literal codegens simple closure in block codegens simple closure in block doesn't incorrectly consider local as closured (#4948) doesn't incorrectly consider local as closured (#4948) codegens simple closure in function with argument codegens simple closure in function with argument allows mixing yield and block.call allows mixing yield and block.call unifies types of closured var unifies types of closured var codegens closure with block codegens closure with block allows passing block as proc literal to new and to initialize allows passing block as proc literal to new and to initialize codegens super nested closure with nested closured variable codegens super nested closure with nested closured variable doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self doesn't form a closure if invoking class method with self codegens simple closure in function codegens simple closure in function allows passing an external function along allows passing an external function along codegens closure with nested context without new closured vars codegens closure with nested context without new closured vars codegens closure with self and var codegens closure with self and var codegens closure with self and arguments codegens closure with self and arguments codegens nested closure that mentions var in both contexts codegens nested closure that mentions var in both contexts codegens closure with implicit self and var codegens closure with implicit self and var codegens proc literal with struct codegens proc literal with struct allows passing proc literal to def that captures block with & allows passing proc literal to def that captures block with & transforms block to proc literal with free var transforms block to proc literal with free var codegens closure with def that has an if codegens closure with def that has an if codegens closured nested in block with a call with a closure with same names codegens closured nested in block with a call with a closure with same names codegens nested closure with block (2) codegens nested closure with block (2) codegens closure with instance var codegens closure with instance var captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) codegen closure in instance method without self closured codegen closure in instance method without self closured codegens simple closure at global scope codegens simple closure at global scope codegens nested closure codegens nested closure codegens closured self in block (#3388) codegens closured self in block (#3388) Crystal::Repl::Interpreter casts casts nilable from mixed union type to primitive type (non-nil case) casts nilable from mixed union type to primitive type (non-nil case) casts from mixed union type to another mixed union type for caller casts from mixed union type to another mixed union type for caller does as? with no resulting type (#12327) does as? with no resulting type (#12327) casts to filtered type, not type in as(...) casts to filtered type, not type in as(...) upcasts to module type upcasts to module type upcasts between tuple types upcasts between tuple types upcasts mixed union with tuple to mixed union with compatible tuple (3) (#12331) upcasts mixed union with tuple to mixed union with compatible tuple (3) (#12331) does is_a? with virtual metaclass does is_a? with virtual metaclass casts from nilable type to mixed union type casts from nilable type to mixed union type does is_a? with virtual type (struct) does is_a? with virtual type (struct) upcasts between tuple types, respects alignment (#14036) upcasts between tuple types, respects alignment (#14036) does as? with a type that can't match (#12346) does as? with a type that can't match (#12346) raises when as fails raises when as fails puts virtual metaclass into union (#12162) puts virtual metaclass into union (#12162) casts from reference to pointer and back casts from reference to pointer and back casts nil to Void* casts nil to Void* discards cast discards cast upcasts mixed union with tuple to mixed union with compatible tuple (1) (#12331) upcasts mixed union with tuple to mixed union with compatible tuple (1) (#12331) upcasts virtual type to union upcasts virtual type to union casts from nilable type to mixed union type (2) casts from nilable type to mixed union type (2) upcasts between named tuple types, different order upcasts between named tuple types, different order upcasts mixed union with tuple to mixed union with compatible tuple (2) (#12331) upcasts mixed union with tuple to mixed union with compatible tuple (2) (#12331) upcasts between named tuple types, same order upcasts between named tuple types, same order casts from mixed union type to primitive type casts from mixed union type to primitive type casts from mixed union type to nilable proc type (#12283) casts from mixed union type to nilable proc type (#12283) casts nilable from mixed union type to primitive type (nil case) casts nilable from mixed union type to primitive type (nil case) puts tuple type inside union of different tuple type (#12243) puts tuple type inside union of different tuple type (#12243) does as? with no resulting type, not from nil (#12327) does as? with no resulting type, not from nil (#12327) upcasts in nilable cast (#12532) upcasts in nilable cast (#12532) casts from reference to nilable reference casts from reference to nilable reference upcasts between named tuple types, respects alignment (#14036) upcasts between named tuple types, respects alignment (#14036) upcasts GenericClassInstanceMetaclassType to VirtualMetaclassType upcasts GenericClassInstanceMetaclassType to VirtualMetaclassType puts named tuple type inside union of different named tuple type (#12243) puts named tuple type inside union of different named tuple type (#12243) Semantic: previous_def types previous def with named arguments, def has bare splat parameter (#8895) types previous def with named arguments, def has bare splat parameter (#8895) errors if there's no previous def errors if there's no previous def types previous def with explicit arguments types previous def with explicit arguments types previous def with forwarded arguments, def has parameters types previous def with forwarded arguments, def has parameters types previous def with restrictions types previous def with restrictions types previous def types previous def types previous def when inside fun types previous def when inside fun types previous def with named arguments, def has bare splat parameter (2) (#8895) types previous def with named arguments, def has bare splat parameter (2) (#8895) says wrong number of arguments for previous_def (#1223) says wrong number of arguments for previous_def (#1223) types previous def when inside fun and forwards args types previous def when inside fun and forwards args types previous def with forwarded arguments, different internal names (#8895) types previous def with forwarded arguments, different internal names (#8895) types previous def with forwarded arguments, def has bare splat parameter (#8895) types previous def with forwarded arguments, def has bare splat parameter (#8895) types previous def in generic class types previous def in generic class types previous def with named arguments, def has double splat parameter (#8895) types previous def with named arguments, def has double splat parameter (#8895) Semantic: exception types var as nilable inside ensure (2) types var as nilable inside ensure (2) types code with abstract exception that delegates method types code with abstract exception that delegates method types a var after begin rescue as having all possible types in begin and rescue types a var after begin rescue as having all possible types in begin and rescue errors if caught exception is a union but not all types are valid errors if caught exception is a union but not all types are valid gets a non-nilable type if all rescue are unreachable (#8751) gets a non-nilable type if all rescue are unreachable (#8751) correctly types #1988 correctly types #1988 marks instance variable as nilable if assigned inside rescue inside initialize marks instance variable as nilable if assigned inside rescue inside initialize doesn't infect type to variable before handler (#4002) doesn't infect type to variable before handler (#4002) errors if caught exception is a nested union but not all types are valid errors if caught exception is a nested union but not all types are valid type for exception handler for explicit types type for exception handler for explicit types can't return from while inside ensure (#4470) can't return from while inside ensure (#4470) marks proc literal as raises marks proc literal as raises marks method that calls another method that raises as raises, recursively marks method that calls another method that raises as raises, recursively marks method calling lib fun that raises as raises marks method calling lib fun that raises as raises remains nilable after rescue remains nilable after rescue types var as nilable if previously nilable (2) types var as nilable if previously nilable (2) types a var after begin rescue with no-return in rescue types a var after begin rescue with no-return in rescue can use break inside while inside ensure (#4470) can use break inside while inside ensure (#4470) type is union of main and rescue blocks type is union of main and rescue blocks types var as not nil if defined inside begin and defined inside rescue types var as not nil if defined inside begin and defined inside rescue doesn't crash on break inside rescue, in while (#2441) doesn't crash on break inside rescue, in while (#2441) can use next inside while inside ensure (#4470) can use next inside while inside ensure (#4470) types var assignment inside block inside exception handler (#3324) types var assignment inside block inside exception handler (#3324) types var as nilable if previously nilable (1) types var as nilable if previously nilable (1) can't use break inside while inside ensure (#4470) can't use break inside while inside ensure (#4470) transform nodes in else block transform nodes in else block types a var after begin rescue as having all possible types and nil in begin if read (2) types a var after begin rescue as having all possible types and nil in begin if read (2) can't use break inside block inside ensure (#4470) can't use break inside block inside ensure (#4470) can't return from ensure (#4470) can't return from ensure (#4470) shadows local variable (1) shadows local variable (1) can't use next inside block inside ensure (#4470) can't use next inside block inside ensure (#4470) types a var after rescue as being nilable types a var after rescue as being nilable marks def as raises marks def as raises type union with empty rescue block type union with empty rescue block says syntax error on "begin; rescue ex; rescue ex : Foo; end; ex" says syntax error on "begin; rescue ex; rescue ex : Foo; end; ex" doesn't type instance variable as nilable if assigned inside an exception handler after being assigned doesn't type instance variable as nilable if assigned inside an exception handler after being assigned types exception var with no types types exception var with no types type union with empty main block type union with empty main block marks fun as raises marks fun as raises types a var after begin rescue as having all possible types in begin and rescue (2) types a var after begin rescue as having all possible types in begin and rescue (2) doesn't consider vars as nilable inside else (#610) doesn't consider vars as nilable inside else (#610) says syntax error on "begin; else; 1; end" says syntax error on "begin; else; 1; end" detects reading nil-if-read variable after exception handler (#4723) detects reading nil-if-read variable after exception handler (#4723) correctly types variables inside conditional inside exception handler with no-return rescue (#8012) correctly types variables inside conditional inside exception handler with no-return rescue (#8012) can use next inside block inside ensure (#4470) can use next inside block inside ensure (#4470) correctly types variable assigned inside nested exception handler (#9769) correctly types variable assigned inside nested exception handler (#9769) can't return from block inside ensure (#4470) can't return from block inside ensure (#4470) errors if caught exception is not a subclass of Exception errors if caught exception is not a subclass of Exception errors if caught exception is not a subclass of Exception without var errors if caught exception is not a subclass of Exception without var assigns var inside ensure (2) (#3919) assigns var inside ensure (2) (#3919) can't use next inside while inside ensure (#4470) can't use next inside while inside ensure (#4470) types instance variable as nilable if assigned inside an exception handler (#1845) types instance variable as nilable if assigned inside an exception handler (#1845) types var as nilable inside ensure (1) types var as nilable inside ensure (1) can use break inside block inside ensure (#4470) can use break inside block inside ensure (#4470) marks method calling method that raises as raises marks method calling method that raises as raises assigns var inside ensure (1) (#3919) assigns var inside ensure (1) (#3919) says syntax error on "begin; rescue ex; rescue; end; ex" says syntax error on "begin; rescue ex; rescue; end; ex" types exception with type types exception with type Code gen: module codegens pointer of module with method with two including types with one struct (2) codegens pointer of module with method with two including types with one struct (2) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) codegens proc of a module that was never included codegens proc of a module that was never included codegens cast to module with class and struct to nilable module codegens cast to module with class and struct to nilable module can use generic module as instance variable type can use generic module as instance variable type codegens cast to module that includes bool codegens cast to module that includes bool expands modules to its including types (#1916) expands modules to its including types (#1916) codegens pointer of module with method codegens pointer of module with method codegens pointer of module and pass value to method codegens pointer of module and pass value to method expands modules to its including types (3) (#1916) expands modules to its including types (3) (#1916) can use generic module as instance variable type (2) can use generic module as instance variable type (2) codegens pointer of module with method with two including types with one struct codegens pointer of module with method with two including types with one struct casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) casts to union of module that is included in other module (#3323) expands modules to its including types (2) (#1916) expands modules to its including types (2) (#1916) codegens pointer of module with method with two including types codegens pointer of module with method with two including types declares proc with module type and invoke it with two different types that return themselves declares proc with module type and invoke it with two different types that return themselves can instantiate generic module can instantiate generic module declares and includes generic module, in macros T is a tuple literal declares and includes generic module, in macros T is a tuple literal codegens module with virtual type codegens module with virtual type codegens dispatch of union with module (#3647) codegens dispatch of union with module (#3647) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens pointer of module with block codegens proc of module when generic type includes it codegens proc of module when generic type includes it declares proc with module type declares proc with module type Code gen: def call functions defined in any order call functions defined in any order uses previous argument in default value (#1062) uses previous argument in default value (#1062) codegens with and without default arguments codegens with and without default arguments looks up matches in super classes and merges them with subclasses looks up matches in super classes and merges them with subclasses codegens recursive type with union codegens recursive type with union codegens dispatch with single def when discarding unallocated ones (2) codegens dispatch with single def when discarding unallocated ones (2) builds infinite recursive function builds infinite recursive function puts union before single type in matches preferences puts union before single type in matches preferences codegens with related types codegens with related types codegens return nil when nilable type (2) codegens return nil when nilable type (2) codegens union to union assignment of mutable arg (#3691) codegens union to union assignment of mutable arg (#3691) codegens return nil when nilable type (1) codegens return nil when nilable type (1) codegens call with args codegens call with args codegens dispatch without obj, bug 1 codegens dispatch without obj, bug 1 dispatches on virtual type implementing generic module (related to bug #165) dispatches on virtual type implementing generic module (related to bug #165) codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation codegens and doesn't break if obj is int and there's a mutation uses dispatch call type for phi (#3529) uses dispatch call type for phi (#3529) unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def unifies all calls to same def codegens dispatch without obj, bug 1 codegens dispatch without obj, bug 1 codegens dispatch with single def when discarding unallocated ones (1) codegens dispatch with single def when discarding unallocated ones (1) codegens recursive nasty code codegens recursive nasty code use target def type as return type use target def type as return type use target def type as return type use target def type as return type use target def type as return type use target def type as return type use target def type as return type use target def type as return type use target def type as return type use target def type as return type runs empty def runs empty def codegens empty def codegens empty def codegens dispatch on static method codegens dispatch on static method can match N type argument of static array (#1203) can match N type argument of static array (#1203) codegens dispatch with nilable reference union type codegens dispatch with nilable reference union type codegens def which changes type of arg codegens def which changes type of arg allows to change argument values allows to change argument values codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens bug #119 codegens with and without many default arguments codegens with and without many default arguments codegens with interesting default argument codegens with interesting default argument codegens call without args codegens call without args doesn't crash on private def as last expression doesn't crash on private def as last expression codegens yield with destructing tuple having unreachable element codegens yield with destructing tuple having unreachable element call external function 'putchar' call external function 'putchar' fixes #230: include original owner in mangled def fixes #230: include original owner in mangled def uses self uses self uses var after external uses var after external expand expands macro control {% if %} expands macro control {% if %} expands macro expression inside enum expands macro expression inside enum doesn't expand normal call doesn't expand normal call expands macro expression inside private struct expands macro expression inside private struct expands macro expression inside def of private module expands macro expression inside def of private module doesn't expand macro expression with cursor out of end doesn't expand macro expression with cursor out of end expands macro control {% for %} with cursor at end of it expands macro control {% for %} with cursor at end of it expands macro control {% for %} with cursor inside it expands macro control {% for %} with cursor inside it expands macro of module with cursor at module name expands macro of module with cursor at module name expands macros with 3 level expands macros with 3 level expands macro expression {{ ... }} with cursor inside it expands macro expression {{ ... }} with cursor inside it expands macro expression inside private def expands macro expression inside private def expands macro expression inside C union expands macro expression inside C union expands macro expression inside def of private struct expands macro expression inside def of private struct doesn't expand macro expression doesn't expand macro expression doesn't expand macro expression doesn't expand macro expression expands simple macro with cursor inside it expands simple macro with cursor inside it expands macro control {% if %} with indent expands macro control {% if %} with indent expands macro expression {% ... %} expands macro expression {% ... %} expands macro expression {{ ... }} with cursor end of it expands macro expression {{ ... }} with cursor end of it expands macro expression inside def expands macro expression inside def expands macro with doc expands macro with doc expands macro expression inside module expands macro expression inside module expands macro expression inside struct expands macro expression inside struct expands macro control {% if %} with cursor inside it expands macro control {% if %} with cursor inside it expands macro expression inside private module expands macro expression inside private module expands macro of module with cursor at dot expands macro of module with cursor at dot expands macro expression inside def of nested module expands macro expression inside def of nested module expands macro expression inside C struct expands macro expression inside C struct expands complex macro expands complex macro expands macro expression inside C struct of private lib expands macro expression inside C struct of private lib expands macro expression inside def of module expands macro expression inside def of module expands macro control {% if %} with cursor at end of it expands macro control {% if %} with cursor at end of it expands macro expression {% ... %} with cursor at end of it expands macro expression {% ... %} with cursor at end of it expands macro expression inside lib expands macro expression inside lib expands simple macro expands simple macro expands macro expression inside private enum expands macro expression inside private enum expands macro expression inside def of nested private module expands macro expression inside def of nested private module expands macro expression inside fun expands macro expression inside fun expands macro expression inside def of private enum expands macro expression inside def of private enum expands macro expression inside class expands macro expression inside class expands macro expression inside private lib expands macro expression inside private lib expands macro of module expands macro of module expands macro control {% for %} with indent expands macro control {% for %} with indent expands macro of module inside module expands macro of module inside module expands macro expression {{ ... }} expands macro expression {{ ... }} expands macro control {% for %} expands macro control {% for %} expands macros with 2 level expands macros with 2 level expands macro expression inside C union of private lib expands macro expression inside C union of private lib expands macro expression inside private class expands macro expression inside private class expands macro expression inside def of private module expands macro expression inside def of private module expands simple macro with cursor at end of it expands simple macro with cursor at end of it expands macro expression inside def of private class expands macro expression inside def of private class Crystal::Repl::Interpreter constants returns nil in the assignment returns nil in the assignment interprets self inside constant inside class interprets self inside constant inside class hoists constants hoists constants interprets complex constant interprets complex constant interprets constant literal interprets constant literal magic constants does line number does line number Semantic: named args matches specific overload with named arguments (2) (#2753) matches specific overload with named arguments (2) (#2753) errors if named arg not found errors if named arg not found matches specific overload with named arguments (#2753) matches specific overload with named arguments (#2753) sends two regular arguments as named arguments in inverted position (2) sends two regular arguments as named arguments in inverted position (2) uses bare splat in new uses bare splat in new says no overload matches with named arg says no overload matches with named arg doesn't include arguments with default values in missing arguments error doesn't include arguments with default values in missing arguments error errors if named arg already specified errors if named arg already specified errors if named arg matches splat argument errors if named arg matches splat argument sends one regular argument as named argument sends one regular argument as named argument errors if missing two arguments errors if missing two arguments errors if missing one argument errors if missing one argument says correct error when forwarding named args (#7491) says correct error when forwarding named args (#7491) sends two regular arguments as named arguments sends two regular arguments as named arguments errors if named arg already specified, but multiple overloads (#7281) errors if named arg already specified, but multiple overloads (#7281) overloads based on required named args, with restrictions overloads based on required named args, with restrictions errors if named arg matches single splat argument errors if named arg matches single splat argument errors if doesn't pass named arg restriction errors if doesn't pass named arg restriction overloads based on required named args overloads based on required named args errors if named arg already specified errors if named arg already specified errors if named arg not found in new errors if named arg not found in new allows named arg if there's a splat allows named arg if there's a splat gives correct error message with external names (#3934) gives correct error message with external names (#3934) sends two regular arguments as named arguments in inverted position (1) sends two regular arguments as named arguments in inverted position (1) passes #2696 passes #2696 errors if named arg already specified but in same position errors if named arg already specified but in same position gives correct error message for missing args after * gives correct error message for missing args after * doesn't fail on named argument with NoReturn type (#7760) doesn't fail on named argument with NoReturn type (#7760) Semantic: responds_to? restricts other types inside if else restricts other types inside if else restricts type inside if scope 1 restricts type inside if scope 1 is bool is bool restricts virtual generic superclass to subtypes restricts virtual generic superclass to subtypes restricts in assignment restricts in assignment restricts virtual generic module to including types (#8334) restricts virtual generic module to including types (#8334) Code gen: struct sets instance var to proc sets instance var to proc sets instance var to proc sets instance var to proc sets instance var to proc sets instance var to proc sets instance var to proc sets instance var to proc���������������� sets instance var to proc sets instance var to proc codegens struct property setter codegens struct property setter can access member of uninitialized struct behind type (#8774) can access member of uninitialized struct behind type (#8774) codegens struct access with -> and then . codegens struct access with -> and then . codegens assign struct to union codegens assign struct to union codegens struct set inside struct codegens struct set inside struct codegens passing pointerof(struct) to fun codegens passing pointerof(struct) to fun passes struct to method (2) passes struct to method (2) automatically converts by invoking to_unsafe automatically converts by invoking to_unsafe automatically converts numeric type in struct field assignment automatically converts numeric type in struct field assignment codegens pointer malloc of struct codegens pointer malloc of struct automatically converts numeric union type in struct field assignment automatically converts numeric union type in struct field assignment can access instance var from the outside (#1092) can access instance var from the outside (#1092) allows using named arguments for new allows using named arguments for new passes struct to method (1) passes struct to method (1) automatically converts nil to pointer automatically converts nil to pointer codegens set struct value with constant codegens set struct value with constant codegens struct property setter via pointer codegens struct property setter via pointer builds struct setter with fun type (2) builds struct setter with fun type (2) codegens struct property setter via pointer codegens struct property setter via pointer codegens struct get inside struct codegens struct get inside struct does to_s does to_s does to_s does to_s does to_s does to_s does to_s�������������� does to_s�� does to_s does to_s codegens struct property default value codegens struct property default value builds struct setter with fun type (1) builds struct setter with fun type (1) codegens union inside struct codegens union inside struct yields struct via -> yields struct via -> Code gen: pointer codegens nilable pointer type (2) codegens nilable pointer type (2) compares pointers through typedef compares pointers through typedef generates correct code for Pointer.malloc(0) (#2905) generates correct code for Pointer.malloc(0) (#2905) can assign nil to void pointer can assign nil to void pointer can use typedef pointer value get and set (#630) can use typedef pointer value get and set (#630) can pass any pointer to something expecting void* in lib call, with to_unsafe can pass any pointer to something expecting void* in lib call, with to_unsafe codegens pointer as if condition inside union (1) codegens pointer as if condition inside union (1) calculates pointer diff calculates pointer diff codegens nilable pointer type dispatch (2) codegens nilable pointer type dispatch (2) get pointer and value of it get pointer and value of it sets value of pointer to struct sets value of pointer to struct changes through var and reads from pointer changes through var and reads from pointer get value of pointer to union get value of pointer to union codegens nilable pointer type (1) codegens nilable pointer type (1) set pointer value set pointer value sets value of pointer to union sets value of pointer to union does pointerof class variable does pointerof class variable gets pointer to constant gets pointer to constant gets pointer to constant������ gets pointer to constant gets pointer to constant���� gets pointer to constant�� gets pointer to constant gets pointer to constant���� gets pointer to constant gets pointer to constant assigns nil and pointer to nilable pointer type assigns nil and pointer to nilable pointer type gets pointer of argument that is never assigned to gets pointer of argument that is never assigned to codegens null pointer as if condition codegens null pointer as if condition codegens nilable pointer type dispatch (1) codegens nilable pointer type dispatch (1) codegens pointer cast codegens pointer cast codegens realloc codegens realloc increments pointer increments pointer codegens pointer as if condition codegens pointer as if condition can dereference pointer to func can dereference pointer to func passes arguments correctly for typedef metaclass (#8544) passes arguments correctly for typedef metaclass (#8544) gets pointer of instance variable in virtual type gets pointer of instance variable in virtual type passes pointer of pointer to method passes pointer of pointer to method does pointerof read variable does pointerof read variable uses correct llvm module for typedef metaclass (#2877) uses correct llvm module for typedef metaclass (#2877) takes pointerof lib external var takes pointerof lib external var takes pointerof lib external var takes pointerof lib external var takes pointerof lib external var���������� takes pointerof lib external var takes pointerof lib external var���� takes pointerof lib external var�� takes pointerof lib external var takes pointerof lib external var codegens pointer as if condition inside union (2) codegens pointer as if condition inside union (2) creates pointer by address creates pointer by address does pointerof class variable with class does pointerof class variable with class can pass any pointer to something expecting void* in lib call can pass any pointer to something expecting void* in lib call codegens pointer cast to Nil (#8015) codegens pointer cast to Nil (#8015) get pointer of instance var get pointer of instance var codegens malloc codegens malloc Crystal::Repl::Interpreter typeof interprets typeof instance type interprets typeof instance type interprets typeof metaclass type interprets typeof metaclass type interprets typeof virtual type interprets typeof virtual type Crystal::Repl::Interpreter control flow interprets if pointer, true interprets if pointer, true interprets return Nil interprets return Nil interprets break inside while inside block interprets break inside while inside block interprets while, returns nil interprets while, returns nil interprets if bool (false) interprets if bool (false) interprets break inside while interprets break inside while discards if discards if interprets break with value inside while (through normal flow) interprets break with value inside while (through normal flow) interprets if union type with nil, false interprets if union type with nil, false interprets break inside nested while interprets break inside nested while interprets if union type with bool, false interprets if union type with bool, false interprets break with value inside while (through break) interprets break with value inside while (through break) interprets until interprets until interprets if (true literal) interprets if (true literal) interprets if (int type) interprets if (int type) interprets if (false literal) interprets if (false literal) interprets while interprets while interprets next inside while inside block interprets next inside while inside block interprets if bool (true) interprets if bool (true) discards while discards while interprets return implicit nil and Int32 interprets return implicit nil and Int32 interprets return interprets return interprets if union type with bool, true interprets if union type with bool, true interprets if (nil literal) interprets if (nil literal) interprets unless interprets unless interprets return Nil with explicit return (#12178) interprets return Nil with explicit return (#12178) interprets if (nil type) interprets if (nil type) interprets next inside while interprets next inside while interprets if pointer, false interprets if pointer, false Semantic: module calls super on included generic module and finds type var calls super on included generic module and finds type var uses :Module name for modules in errors uses :Module name for modules in errors errors if including generic module and not specifying type vars errors if including generic module and not specifying type vars correctly types type var in included module, with a restriction with a free var (bug) correctly types type var in included module, with a restriction with a free var (bug) includes but not a module includes but not a module gives helpful error message when generic type var is missing gives helpful error message when generic type var is missing instantiates generic variadic module, accesses T from instance method instantiates generic variadic module, accesses T from instance method errors when extending module that defines instance vars (#4065) errors when extending module that defines instance vars (#4065) extends generic module from generic class and calls class method (#7167) extends generic module from generic class and calls class method (#7167) includes generic module with self (check argument superclass type, success) includes generic module with self (check argument superclass type, success) includes generic module with self (check argument type, success) includes generic module with self (check argument type, success) errors if reopening generic module with different type vars (2) errors if reopening generic module with different type vars (2) errors when extending self and self defines instance vars (#9568) errors when extending self and self defines instance vars (#9568) errors if reopening generic module with different splat index errors if reopening generic module with different splat index uses type declaration inside module and gives error uses type declaration inside module and gives error declares module automatically if not previously declared when declaring a class declares module automatically if not previously declared when declaring a class gives helpful error message when generic type var is missing in block spec gives helpful error message when generic type var is missing in block spec allows overloading with included generic module allows overloading with included generic module gives error with cyclic include between non-generic and generic module gives error with cyclic include between non-generic and generic module doesn't look up initialize past module that defines initialize (#7007) doesn't look up initialize past module that defines initialize (#7007) includes generic module with self (check argument superclass type, success) includes generic module with self (check argument superclass type, success) instantiates generic variadic module, accesses T from class method instantiates generic variadic module, accesses T from class method includes generic module and errors in call includes generic module and errors in call inherits instance var type annotation from generic to generic to concrete inherits instance var type annotation from generic to generic to concrete gives error when trying to instantiate with new gives error when trying to instantiate with new types pointer of module with generic type types pointer of module with generic type instantiates generic variadic module, accesses T from instance method through generic include instantiates generic variadic module, accesses T from instance method through generic include calls super on included generic module and finds type var (2) calls super on included generic module and finds type var (2) works with range and map works with range and map includes generic module with another generic type includes generic module with another generic type gives error with cyclic include, generic module gives error with cyclic include, generic module gives error when including instantiation of self, generic module gives error when including instantiation of self, generic module errors when extending module that defines instance vars (2) (#4065) errors when extending module that defines instance vars (2) (#4065) types union of module and class that includes it types union of module and class that includes it reports can't use instance variables inside module reports can't use instance variables inside module errors if reopening generic module with different splat index (2) errors if reopening generic module with different splat index (2) uses type declaration inside module uses type declaration inside module can restrict module with module (#3029) can restrict module with module (#3029) includes generic module with type includes generic module with type types pointer of module with method types pointer of module with method includes module but wrong number of arguments includes module but wrong number of arguments types proc of module with generic class types proc of module with generic class includes module in a class includes module in a class includes module in a module includes module in a module types pointer of module with generic type types pointer of module with generic type extends self extends self initializes variable in module initializes variable in module inherits instance var type annotation from generic to concrete with T inherits instance var type annotation from generic to concrete with T errors when extending generic module that defines instance vars errors when extending generic module that defines instance vars can't reopen as struct can't reopen as struct gives error with cyclic include gives error with cyclic include gives error with cyclic include between non-generic and generic module (2) gives error with cyclic include between non-generic and generic module (2) includes generic module with self includes generic module with self types pointer of module types pointer of module errors when extending self and self defines instance vars (2) (#9568) errors when extending self and self defines instance vars (2) (#9568) types proc of module after type changes types proc of module after type changes can instantiate generic module can instantiate generic module extends generic module from generic module and calls class method (#7167) extends generic module from generic module and calls class method (#7167) includes generic module with self (check return type, error) includes generic module with self (check return type, error) errors when recursively extending module that defines instance vars (2) errors when recursively extending module that defines instance vars (2) can't pass module class to virtual metaclass (#6113) can't pass module class to virtual metaclass (#6113) includes module with Union(T*) includes module with Union(T*) extends module from generic class and calls class method (#7167) extends module from generic class and calls class method (#7167) finds in module when included finds in module when included types pointer of module with method with two including types types pointer of module with method with two including types declares module automatically if not previously declared when declaring a module declares module automatically if not previously declared when declaring a module finds types close to included module finds types close to included module includes generic module explicitly and errors includes generic module explicitly and errors includes generic module explicitly includes generic module explicitly instantiates generic variadic module, accesses T from class method through generic extend instantiates generic variadic module, accesses T from class method through generic extend errors when recursively extending module that defines instance vars errors when recursively extending module that defines instance vars gives error when trying to instantiate with allocate gives error when trying to instantiate with allocate errors if declares module inside if errors if declares module inside if includes generic module with self (check return subclass type, error) includes generic module with self (check return subclass type, error) gives error when including self gives error when including self type def does not reopen type from parent namespace (#11181) type def does not reopen type from parent namespace (#11181) includes generic module with self (check return type, success) includes generic module with self (check return type, success) finds nested type inside method in block inside module finds nested type inside method in block inside module finds constant in generic module included in another module finds constant in generic module included in another module includes generic module with self, and inherits it includes generic module with self, and inherits it can use generic module as instance variable type can use generic module as instance variable type doesn't lookup type in ancestor when matches in current type (#2982) doesn't lookup type in ancestor when matches in current type (#2982) initializes variable in module, recursive initializes variable in module, recursive gives error when including self, generic module gives error when including self, generic module calls super on included generic module calls super on included generic module instantiates generic variadic module, accesses T from instance method through generic include, more args instantiates generic variadic module, accesses T from instance method through generic include, more args works with int including enumerable works with int including enumerable includes generic module with self (check return subclass type, success) includes generic module with self (check return subclass type, success) errors if reopening non-generic module as generic errors if reopening non-generic module as generic works ok in a case where a typed-def type has an underlying type that has an included generic module (bug) works ok in a case where a typed-def type has an underlying type that has an included generic module (bug) can use generic module as instance variable type (2) can use generic module as instance variable type (2) inherits instance var type annotation from generic to concrete inherits instance var type annotation from generic to concrete can't reopen as class can't reopen as class uses type declaration inside module, recursive, and gives error uses type declaration inside module, recursive, and gives error extends a module extends a module includes module but not generic includes module but not generic errors when extending generic module that defines instance vars (2) errors when extending generic module that defines instance vars (2) errors if reopening generic module with different type vars errors if reopening generic module with different type vars instantiates generic variadic module, accesses T from instance method, more args instantiates generic variadic module, accesses T from instance method, more args errors if reopening generic module with different splat index (3) errors if reopening generic module with different splat index (3) includes generic module with self (check argument type, error) includes generic module with self (check argument type, error) errors when extending self and self defines instance vars (3) (#9568) errors when extending self and self defines instance vars (3) (#9568) finds class method in block finds class method in block finds inner class from inherited one (#476) finds inner class from inherited one (#476) includes module but can't access metaclass methods includes module but can't access metaclass methods Crystal::Repl::Interpreter instance_alignof interprets instance_alignof typeof interprets instance_alignof typeof instance_sizeof interprets instance_sizeof typeof interprets instance_sizeof typeof alignof interprets alignof typeof interprets alignof typeof sizeof interprets sizeof typeof interprets sizeof typeof Crystal::Repl::Interpreter named tuple interprets named tuple literal and access by known index interprets named tuple literal and access by known index interprets named tuple metaclass indexer interprets named tuple metaclass indexer discards named tuple (#12383) discards named tuple (#12383) Lexer lexes "offsetof" lexes "offsetof" says syntax error on "4f33" says syntax error on "4f33" lexes "while!" lexes "while!" lexes ":<=" lexes ":<=" says syntax error on "9999999999999999999_i32" says syntax error on "9999999999999999999_i32" says syntax error on "-0e_12" says syntax error on "-0e_12" lexes "" lexes "" lexes "\8" lexes "\8" says syntax error on "4f22" says syntax error on "4f22" says syntax error on "$0?" says syntax error on "$0?" lexes "0_f32" lexes "0_f32" says syntax error on "4i33" says syntax error on "4i33" lexes "&*" lexes "&*" lexes "0x3fffffffffffffff" lexes "0x3fffffffffffffff" lexes "as?" lexes "as?" says syntax error on "-0_u64" says syntax error on "-0_u64" lexes "&-=" lexes "&-=" says syntax error on "\"\\xz\"" says syntax error on "\"\\xz\"" says syntax error on "-32769_i16" says syntax error on "-32769_i16" lexes "}" lexes "}" lexes "def!" lexes "def!" says syntax error on "18446744073709551616_i32" says syntax error on "18446744073709551616_i32" lexes "\xFF" lexes "\xFF" lexes "0.5" lexes "0.5" lexes ":&**" lexes ":&**" lexes "else" lexes "else" lexes "0x7fffffffffffffff" lexes "0x7fffffffffffffff" lexes "0f32" lexes "0f32" lexes "1.0" lexes "1.0" says syntax error on "\"\\400\"" says syntax error on "\"\\400\"" lexes "@[" lexes "@[" lexes "-9223372036854775808" lexes "-9223372036854775808" says syntax error on "0xFF_i8" says syntax error on "0xFF_i8" lexes "return" lexes "return" lexes "0o1000000000000000000000" lexes "0o1000000000000000000000" lexes "=" lexes "=" says syntax error on "\"hi\\" says syntax error on "\"hi\\" lexes "9223372036854775807" lexes "9223372036854775807" lexes "://" lexes "://" lexes "0x1_i64" lexes "0x1_i64" lexes "1.0f32" lexes "1.0f32" lexes "&+=" lexes "&+=" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000" says syntax error on "2147483648_i32" says syntax error on "2147483648_i32" says syntax error on "0x1afafafafafafafafafafafi32" says syntax error on "0x1afafafafafafafafafafafi32" says syntax error on "0o73_f64" says syntax error on "0o73_f64" lexes regex after \n lexes regex after \n says syntax error on "'\\u{DFFF}'" says syntax error on "'\\u{DFFF}'" lexes "else!" lexes "else!" lexes "/" lexes "/" lexes "0o1000000000000000000000" lexes "0o1000000000000000000000" lexes "\n\n\n" lexes "\n\n\n" lexes "true" lexes "true" lexes "*=" lexes "*=" lexes "1_u16" lexes "1_u16" lexes "0b100000000000000000000000000000000" lexes "0b100000000000000000000000000000000" lexes __FILE__ lexes __FILE__ lexes "+1.0f32" lexes "+1.0f32" lexes ":<=>" lexes ":<=>" says syntax error on "-0x80000000000000000000000000000000" says syntax error on "-0x80000000000000000000000000000000" says syntax error on "4i12" says syntax error on "4i12" lexes "alias" lexes "alias" lexes "$10?" lexes "$10?" lexes "1e+23_f32" lexes "1e+23_f32" lexes "<=>" lexes "<=>" lexes "+1_i128" lexes "+1_i128" lexes ">>" lexes ">>" lexes "+0.5" lexes "+0.5" lexes "with" lexes "with" says syntax error on "00" says syntax error on "00" lexes "{%" lexes "{%" lexes "1_000" lexes "1_000" lexes "if" lexes "if" lexes dot and ident lexes dot and ident lexes "[]" lexes "[]" lexes "\1" lexes "\1" lexes "&*=" lexes "&*=" lexes "-1_i64" lexes "-1_i64" lexes "0b1111111111111111111111111111111" lexes "0b1111111111111111111111111111111" says syntax error on "-2147483649_i32" says syntax error on "-2147483649_i32" says syntax error on "0o200000_00000000_00000000_u64" says syntax error on "0o200000_00000000_00000000_u64" lexes "||" lexes "||" says syntax error on "128_i8" says syntax error on "128_i8" lexes "0b001111111111111111111111111111111111111111111111111111111111111111" lexes "0b001111111111111111111111111111111111111111111111111111111111111111" says syntax error on "2e" says syntax error on "2e" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" lexes ":&*" lexes ":&*" lexes "===" lexes "===" lexes "$foo123" lexes "$foo123" lexes "**" lexes "**" lexes "1_i64" lexes "1_i64" lexes "while" lexes "while" lexes "nil?" lexes "nil?" lexes "0x7fffffff" lexes "0x7fffffff" says syntax error on "4i3" says syntax error on "4i3" lexes "self" lexes "self" lexes "yield!" lexes "yield!" lexes "1_234.567_890" lexes "1_234.567_890" lexes "lib" lexes "lib" lexes "@@foo" lexes "@@foo" lexes "1.2e+23_f64" lexes "1.2e+23_f64" lexes "1i32" lexes "1i32" lexes "of" lexes "of" lexes "1_u32" lexes "1_u32" says syntax error on "0o7777777777777777777777777777777777777777777777777" says syntax error on "0o7777777777777777777777777777777777777777777777777" lexes "0i8" lexes "0i8" lexes "1i8" lexes "1i8" says syntax error on "18446744073709551616" says syntax error on "18446744073709551616" says syntax error on "2e8i8" says syntax error on "2e8i8" lexes symbol followed by == lexes symbol followed by == says syntax error on "4i65" says syntax error on "4i65" lexes "macro" lexes "macro" says syntax error on "-1_u128" says syntax error on "-1_u128" lexes "1_u8" lexes "1_u8" lexes "0o123_i64" lexes "0o123_i64" says syntax error on "0x8000000000000000i64" says syntax error on "0x8000000000000000i64" lexes "private" lexes "private" lexes "responds_to?" lexes "responds_to?" says syntax error on "-1_u32" says syntax error on "-1_u32" lexes "class?" lexes "class?" lexes "module" lexes "module" lexes "0b1010" lexes "0b1010" lexes "do!" lexes "do!" lexes "union" lexes "union" says syntax error on "4F32" says syntax error on "4F32" lexes "&-" lexes "&-" lexes ">>=" lexes ">>=" lexes "->" lexes "->" invalid byte sequence invalid byte sequence lexes "-1.0f32" lexes "-1.0f32" lexes "1_234.567_890_f32" lexes "1_234.567_890_f32" lexes "0xffff_ffff_ffff_ffff" lexes "0xffff_ffff_ffff_ffff" lexes ":" lexes ":" lexes "=~" lexes "=~" lexes __DIR__ lexes __DIR__ lexes ":[]=" lexes ":[]=" lexes "0b11111111_11111111_11111111_11111111_11111111_11111111_11111111_11111111" lexes "0b11111111_11111111_11111111_11111111_11111111_11111111_11111111_11111111" says syntax error on "65536_u16" says syntax error on "65536_u16" lexes "-0.0f32" lexes "-0.0f32" lexes "super" lexes "super" says syntax error on "0o40000000000i32" says syntax error on "0o40000000000i32" lexes "in" lexes "in" lexes "unless!" lexes "unless!" lexes "+1234" lexes "+1234" lexes "class!" lexes "class!" says syntax error on "-999999999999999999999999999999999999999" says syntax error on "-999999999999999999999999999999999999999" lexes "return!" lexes "return!" lexes "-0x80000000000000000000000000000000_i128" lexes "-0x80000000000000000000000000000000_i128" lexes ":foo?" lexes ":foo?" says syntax error on "2ef32" says syntax error on "2ef32" lexes "1e-23" lexes "1e-23" lexes "uninitialized" lexes "uninitialized" says syntax error on "0o12345671234567_12345671234567_i8" says syntax error on "0o12345671234567_12345671234567_i8" says syntax error on "'\\u{110000}'" says syntax error on "'\\u{110000}'" says syntax error on "0b11_f32" says syntax error on "0b11_f32" says syntax error on "/foo" says syntax error on "/foo" lexes "1f32" lexes "1f32" lexes ":!" lexes ":!" lexes ">=" lexes ">=" lexes "with_1" lexes "with_1" lexes "0x3🔮" lexes "0x3🔮" says syntax error on "-3_" says syntax error on "-3_" lexes "<" lexes "<" lexes ".." lexes ".." lexes ">" lexes ">" says syntax error on "1_.1" says syntax error on "1_.1" lexes ":===" lexes ":===" lexes "<<=" lexes "<<=" lexes "0xFFFFFFFF" lexes "0xFFFFFFFF" lexes ":>=" lexes ":>=" lexes "as" lexes "as" lexes '\a' lexes '\a' lexes "%=" lexes "%=" lexes "select" lexes "select" lexes "unless?" lexes "unless?" lexes "-0o123" lexes "-0o123" lexes "pointerof" lexes "pointerof" lexes '\0' lexes '\0' says syntax error on "-0x80000000000000000000000000000001" says syntax error on "-0x80000000000000000000000000000001" lexes symbol followed by != lexes symbol followed by != says syntax error on "4i22" says syntax error on "4i22" lexes "0xabcdef" lexes "0xabcdef" lexes "+0" lexes "+0" lexes '\r' lexes '\r' lexes "1_i16" lexes "1_i16" lexes "?" lexes "?" lexes "with_underscores" lexes "with_underscores" lexes ":&" lexes ":&" lexes "0🔮" lexes "0🔮" lexes ":>" lexes ":>" lexes "@foo" lexes "@foo" lexes "true?" lexes "true?" says syntax error on "\"\\x1z\"" says syntax error on "\"\\x1z\"" lexes "//" lexes "//" says syntax error on ":+1" says syntax error on ":+1" lexes "return?" lexes "return?" lexes "1u64" lexes "1u64" lexes "2147483648" lexes "2147483648" lexes "-0xFFFF" lexes "-0xFFFF" says syntax error on "0F32" says syntax error on "0F32" lexes "verbatim" lexes "verbatim" lexes "1i64" lexes "1i64" says syntax error on "-9999999999999999999" says syntax error on "-9999999999999999999" lexes "next?" lexes "next?" says syntax error on "0_12" says syntax error on "0_12" lexes "do" lexes "do" lexes "14146167139683460000" lexes "14146167139683460000" lexes space after keyword lexes space after keyword lexes "0b111111111111111111111111111111111111111111111111111111111111111" lexes "0b111111111111111111111111111111111111111111111111111111111111111" lexes "0o001777777777777777777777" lexes "0o001777777777777777777777" lexes "!~" lexes "!~" lexes "/=" lexes "/=" lexes "next!" lexes "next!" lexes "-2147483649" lexes "-2147483649" says syntax error on "256_u8" says syntax error on "256_u8" lexes "//=" lexes "//=" lexes "]" lexes "]" lexes "begin?" lexes "begin?" lexes ":*" lexes ":*" lexes ":かたな" lexes ":かたな" lexes "Foo" lexes "Foo" lexes "unless" lexes "unless" lexes "1i128hello" lexes "1i128hello" lexes "*" lexes "*" lexes "%}" lexes "%}" lexes ":\"foo\"" lexes ":\"foo\"" lexes "-0x8000000000000000_i64" lexes "-0x8000000000000000_i64" lexes 'a' lexes 'a' lexes "=>" lexes "=>" lexes "if?" lexes "if?" lexes "1_i32" lexes "1_i32" lexes "_" lexes "_" lexes "class" lexes "class" says syntax error on "-9223372036854775809_i64" says syntax error on "-9223372036854775809_i64" lexes ":foo" lexes ":foo" says syntax error on "0o1234567123456712345671234567u64" says syntax error on "0o1234567123456712345671234567u64" lexes char with unicode codepoint lexes char with unicode codepoint lexes "0o123" lexes "0o123" says syntax error on "4u65" says syntax error on "4u65" says syntax error on "-.42" says syntax error on "-.42" lexes "1" lexes "1" lexes "0o37777777777" lexes "0o37777777777" says syntax error on "0x1afafafafafafafafafafaf" says syntax error on "0x1afafafafafafafafafafaf" lexes heredoc start lexes heredoc start says syntax error on "0x10000_0000_0000_0000" says syntax error on "0x10000_0000_0000_0000" lexes "for" lexes "for" lexes "<<" lexes "<<" lexes "abstract" lexes "abstract" lexes "1.0f32" lexes "1.0f32" lexes "[" lexes "[" lexes ":[]?" lexes ":[]?" lexes symbol with quote lexes symbol with quote lexes "9223372036854775808" lexes "9223372036854775808" lexes ":<<" lexes ":<<" lexes "ensure" lexes "ensure" lexes regex after \r\n lexes regex after \r\n lexes '\f' lexes '\f' lexes "1.0f64" lexes "1.0f64" lexes "require" lexes "require" lexes "ident" lexes "ident" lexes "1e+23" lexes "1e+23" lexes "1_u128" lexes "1_u128" lexes ";" lexes ";" says syntax error on "0b🔮" says syntax error on "0b🔮" lexes char with unicode codepoint and curly with six hex digits lexes char with unicode codepoint and curly with six hex digits lexes "-1_i128" lexes "-1_i128" lexes "fun" lexes "fun" lexes "false" lexes "false" says syntax error on "0o200_i8" says syntax error on "0o200_i8" lexes "0o40000000000" lexes "0o40000000000" lexes "fooBar" lexes "fooBar" lexes "-9223372036854775809_i128" lexes "-9223372036854775809_i128" lexes "def" lexes "def" lexes "-0x80000001" lexes "-0x80000001" lexes "$23?" lexes "$23?" lexes "0o777777777777777777777" lexes "0o777777777777777777777" lexes '\b' lexes '\b' lexes "0o177777_77777777_77777777" lexes "0o177777_77777777_77777777" lexes "1_i128" lexes "1_i128" lexes "0xffffffff" lexes "0xffffffff" lexes "false?" lexes "false?" lexes "is_a?" lexes "is_a?" lexes symbol followed by === lexes symbol followed by === lexes "0b11111111111111111111111111111111" lexes "0b11111111111111111111111111111111" says syntax error on "0x100000000i32" says syntax error on "0x100000000i32" lexes "typeof" lexes "typeof" lexes "\110" lexes "\110" says syntax error on "2e+-2" says syntax error on "2e+-2" says syntax error on "4294967296_u32" says syntax error on "4294967296_u32" lexes "yield" lexes "yield" lexes "0o17777777777" lexes "0o17777777777" lexes "0xFFFF" lexes "0xFFFF" lexes ":|" lexes ":|" says syntax error on "'\\1'" says syntax error on "'\\1'" lexes "$?" lexes "$?" lexes "1u128" lexes "1u128" lexes char with unicode codepoint and curly lexes char with unicode codepoint and curly lexes '\v' lexes '\v' says syntax error on "2e+f32" says syntax error on "2e+f32" lexes "1.2e+23_f32" lexes "1.2e+23_f32" lexes "340282366920938463463374607431768211455_u128" lexes "340282366920938463463374607431768211455_u128" lexes "begin!" lexes "begin!" lexes ":<" lexes ":<" lexes "out" lexes "out" lexes "0x80000001" lexes "0x80000001" says syntax error on "0b1000000000000000000000000000000000000000000000000000000000000000i64" says syntax error on "0b1000000000000000000000000000000000000000000000000000000000000000i64" lexes "bar!" lexes "bar!" lexes "$FOO" lexes "$FOO" lexes "9223372036854775808_i128" lexes "9223372036854775808_i128" lexes "instance_sizeof" lexes "instance_sizeof" says syntax error on "4.0_u32" says syntax error on "4.0_u32" lexes '\'' lexes '\'' lexes "struct" lexes "struct" lexes "asm" lexes "asm" lexes "0e40" lexes "0e40" lexes "1u8" lexes "1u8" says syntax error on "340282366920938463463374607431768211456" says syntax error on "340282366920938463463374607431768211456" lexes comment at the end lexes comment at the end lexes "1.2e+23" lexes "1.2e+23" lexes "nil" lexes "nil" says syntax error on "118446744073709551616" says syntax error on "118446744073709551616" says syntax error on "-9223372036854775809" says syntax error on "-9223372036854775809" lexes "0o17777777777_i32" lexes "0o17777777777_i32" lexes "while?" lexes "while?" doesn't raise if many slash r with slash n doesn't raise if many slash r with slash n lexes ":=~" lexes ":=~" lexes utf-8 char lexes utf-8 char lexes "^=" lexes "^=" lexes "$foo" lexes "$foo" lexes "-@foo" lexes "-@foo" says syntax error on "-0u64" says syntax error on "-0u64" lexes "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_u128" lexes "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_u128" lexes "$_foo" lexes "$_foo" lexes "&+" lexes "&+" lexes "break?" lexes "break?" lexes "&=" lexes "&=" lexes "-" lexes "-" lexes "end" lexes "end" lexes "{" lexes "{" lexes != after identifier (#4815) lexes != after identifier (#4815) lexes __LINE__ lexes __LINE__ lexes utf-8 multibyte char lexes utf-8 multibyte char lexes not instance var lexes not instance var lexes "0x10000_0000_0000_0000_i128" lexes "0x10000_0000_0000_0000_i128" lexes "0x00ffffffffffffffff" lexes "0x00ffffffffffffffff" lexes ":!=" lexes ":!=" lexes "==" lexes "==" lexes "until" lexes "until" lexes "|=" lexes "|=" lexes " " lexes " " lexes "protected" lexes "protected" lexes "when" lexes "when" lexes "2_e2" lexes "2_e2" lexes "sizeof" lexes "sizeof" lexes "1u32" lexes "1u32" lexes ":&-" lexes ":&-" lexes "next" lexes "next" lexes "0x100000000" lexes "0x100000000" lexes "&" lexes "&" lexes "+" lexes "+" lexes "118446744073709551616_u128" lexes "118446744073709551616_u128" lexes "|" lexes "|" lexes comment and token lexes comment and token lexes "[]?" lexes "[]?" lexes symbol with backslash (#2187) lexes symbol with backslash (#2187) lexes "end!" lexes "end!" lexes "2147483648.foo" lexes "2147483648.foo" says syntax error on "/\\" says syntax error on "/\\" says syntax error on ":\"foo" says syntax error on ":\"foo" lexes "10000000000000000000_u64" lexes "10000000000000000000_u64" lexes "1.0f32hello" lexes "1.0f32hello" lexes "1f64" lexes "1f64" lexes "0xFFFF_u64" lexes "0xFFFF_u64" says syntax error on ".42" says syntax error on ".42" lexes "\n" lexes "\n" lexes "false!" lexes "false!" lexes ":foo!" lexes ":foo!" lexes "0b0_1" lexes "0b0_1" lexes "include" lexes "include" lexes "|" lexes "|" lexes "$10" lexes "$10" says syntax error on "-1_u16" says syntax error on "-1_u16" says syntax error on "0o200000_00000000_00000000" says syntax error on "0o200000_00000000_00000000" lexes "something" lexes "something" lexes "1_i64" lexes "1_i64" lexes "0xffffffffffffffff" lexes "0xffffffffffffffff" lexes "~" lexes "~" lexes ":+" lexes ":+" lexes "nil!" lexes "nil!" lexes float then zero (bug) lexes float then zero (bug) lexes "break!" lexes "break!" lexes "\t" lexes "\t" lexes "0b1000000000000000000000000000000000000000000000000000000000000000" lexes "0b1000000000000000000000000000000000000000000000000000000000000000" lexes "1i128" lexes "1i128" says syntax error on "-11111111111111111111" says syntax error on "-11111111111111111111" lexes "!=" lexes "!=" lexes "else?" lexes "else?" lexes "enum" lexes "enum" lexes "-1234" lexes "-1234" says syntax error on "1__1" says syntax error on "1__1" lexes "1hello" lexes "1hello" says syntax error on "-129_i8" says syntax error on "-129_i8" lexes "\10" lexes "\10" lexes "0i32" lexes "0i32" lexes "," lexes "," lexes "18446744073709551615" lexes "18446744073709551615" doesn't raise if slash r with slash n doesn't raise if slash r with slash n lexes "extend" lexes "extend" lexes "annotation" lexes "annotation" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000" lexes "def?" lexes "def?" says syntax error on "0x1afafafafafafafafafafafu64" says syntax error on "0x1afafafafafafafafafafafu64" lexes "[]=" lexes "[]=" lexes "&**" lexes "&**" says syntax error on "0b10000000_i8" says syntax error on "0b10000000_i8" lexes "<=" lexes "<=" lexes "+0xFFFF" lexes "+0xFFFF" lexes ":==" lexes ":==" lexes "-=" lexes "-=" says syntax error on "4u12" says syntax error on "4u12" lexes "0b1_i64" lexes "0b1_i64" lexes ":&+" lexes ":&+" lexes "2e01" lexes "2e01" lexes "1i16" lexes "1i16" lexes "0x8000000000000000" lexes "0x8000000000000000" lexes "foo?" lexes "foo?" lexes "+1" lexes "+1" lexes "break" lexes "break" lexes "0_i32" lexes "0_i32" lexes "$1" lexes "$1" lexes space after char lexes space after char lexes "then" lexes "then" says syntax error on "0b_10" says syntax error on "0b_10" says syntax error on "0b100000000000000000000000000000000i32" says syntax error on "0b100000000000000000000000000000000i32" lexes "-0xFFFFFFFF" lexes "-0xFFFFFFFF" lexes "^" lexes "^" lexes "&+@foo" lexes "&+@foo" lexes "do?" lexes "do?" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000u64" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000u64" says syntax error on "'\\u{}'" says syntax error on "'\\u{}'" lexes "$1?" lexes "$1?" lexes "\x12" lexes "\x12" lexes "elsif" lexes "elsif" says syntax error on "0xfffffffffffffffff_u64" says syntax error on "0xfffffffffffffffff_u64" lexes "1e23" lexes "1e23" lexes "0o700000000000000000000" lexes "0o700000000000000000000" lexes "rescue" lexes "rescue" lexes "&&=" lexes "&&=" says syntax error on "\r1" says syntax error on "\r1" says syntax error on "'\\uD800'" says syntax error on "'\\uD800'" lexes '\n' lexes '\n' lexes "+@foo" lexes "+@foo" says syntax error on "4u3" says syntax error on "4u3" lexes "1i64hello" lexes "1i64hello" lexes ":!~" lexes ":!~" lexes "0" lexes "0" lexes "!" lexes "!" says syntax error on "-0o7777777777777777777777777777777777777777777777777" says syntax error on "-0o7777777777777777777777777777777777777777777777777" says syntax error on "9223372036854775808_i64" says syntax error on "9223372036854775808_i64" lexes "-0b1010" lexes "-0b1010" lexes "true!" lexes "true!" lexes ":**" lexes ":**" says syntax error on "0123" says syntax error on "0123" lexes ":%" lexes ":%" lexes "1_i8" lexes "1_i8" lexes "1E40" lexes "1E40" lexes ":^" lexes ":^" lexes "end?" lexes "end?" says syntax error on "-99999999999999999999" says syntax error on "-99999999999999999999" lexes "18446744073709551616_u128" lexes "18446744073709551616_u128" lexes "**=" lexes "**=" lexes "170141183460469231731687303715884105727_i128" lexes "170141183460469231731687303715884105727_i128" lexes "0b1111111111111111111111111111111_i32" lexes "0b1111111111111111111111111111111_i32" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000_u64" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000_u64" lexes ":[]" lexes ":[]" says syntax error on "2e+" says syntax error on "2e+" says syntax error on "0x10000_0000_0000_0000_u64" says syntax error on "0x10000_0000_0000_0000_u64" lexes "elsif?" lexes "elsif?" lexes "1234" lexes "1234" lexes "%" lexes "%" lexes ":foo=" lexes ":foo=" lexes "yield?" lexes "yield?" lexes "+=" lexes "+=" lexes ":-" lexes ":-" lexes "0x7fffffff_i32" lexes "0x7fffffff_i32" says syntax error on "'\\" says syntax error on "'\\" lexes "1u16" lexes "1u16" lexes "1.0hello" lexes "1.0hello" lexes "1i64" lexes "1i64" lexes "..." lexes "..." lexes "||=" lexes "||=" lexes "case" lexes "case" lexes "+0o123" lexes "+0o123" says syntax error on "18446744073709551616_u64" says syntax error on "18446744073709551616_u64" lexes "begin" lexes "begin" lexes '\0' lexes '\0' lexes "-1" lexes "-1" lexes "+1_i64" lexes "+1_i64" lexes ")" lexes ")" lexes "type" lexes "type" says syntax error on "118446744073709551616_u64" says syntax error on "118446744073709551616_u64" says syntax error on "0o1000000000000000000000i64" says syntax error on "0o1000000000000000000000i64" lexes "-0.5" lexes "-0.5" lexes "!@foo" lexes "!@foo" says syntax error on "'\\u{D800}'" says syntax error on "'\\u{D800}'" lexes "100_000" lexes "100_000" says syntax error on "2e+_2" says syntax error on "2e+_2" says syntax error on "$01" says syntax error on "$01" says syntax error on "32768_i16" says syntax error on "32768_i16" lexes "12341234🔮" lexes "12341234🔮" says syntax error on "'" says syntax error on "'" says syntax error on "4u33" says syntax error on "4u33" lexes "\4" lexes "\4" lexes "+1.0" lexes "+1.0" says syntax error on "-1_u8" says syntax error on "-1_u8" lexes ":>>" lexes ":>>" lexes '\t' lexes '\t' says syntax error on "4f65" says syntax error on "4f65" says syntax error on "4u22" says syntax error on "4u22" lexes "." lexes "." lexes "$~" lexes "$~" lexes char with unicode codepoint and curly with zeros lexes char with unicode codepoint and curly with zeros says syntax error on "2e+e" says syntax error on "2e+e" lexes "❨╯°□°❩╯︵┻━┻" lexes "❨╯°□°❩╯︵┻━┻" says syntax error on "-170141183460469231731687303715884105729" says syntax error on "-170141183460469231731687303715884105729" lexes "&&" lexes "&&" lexes "elsif!" lexes "elsif!" lexes "+0b1010" lexes "+0b1010" says syntax error on "2e+@foo" says syntax error on "2e+@foo" lexes "if!" lexes "if!" lexes "-0" lexes "-0" says syntax error on "10e_10" says syntax error on "10e_10" says syntax error on "-1_u64" says syntax error on "-1_u64" lexes '\\' lexes '\\' lexes "{{" lexes "{{" lexes "-1.0" lexes "-1.0" lexes "1e23f64" lexes "1e23f64" lexes "::" lexes "::" says syntax error on "0o1234567123456712345671234567" says syntax error on "0o1234567123456712345671234567" lexes "&-@foo" lexes "&-@foo" says syntax error on "4F64" says syntax error on "4F64" says syntax error on "01_i64" says syntax error on "01_i64" lexes "170141183460469231731687303715884105728_u128" lexes "170141183460469231731687303715884105728_u128" lexes ":~" lexes ":~" lexes "1_u64" lexes "1_u64" lexes "1.foo" lexes "1.foo" says syntax error on "'\\uFEDZ'" says syntax error on "'\\uFEDZ'" lexes ":/" lexes ":/" lexes "(" lexes "(" says syntax error on "'\\uDFFF'" says syntax error on "'\\uDFFF'" Semantic: macro can return virtual class type in macro def can return virtual class type in macro def doesn't error when adding macro call to constant (#2457) doesn't error when adding macro call to constant (#2457) errors if missing one argument errors if missing one argument allows specifying self as macro def return type (2) allows specifying self as macro def return type (2) finds metaclass instance of instance method (#4739) finds metaclass instance of instance method (#4739) errors if named arg matches splat parameter errors if named arg matches splat parameter solves named macro expression arguments before macro expansion (type) (#2423) solves named macro expression arguments before macro expansion (type) (#2423) solves macro expression arguments before macro expansion (type) solves macro expression arguments before macro expansion (type) finds generic in macro code finds generic in macro code @caller provides access to the `Call` information provides access to the `Call` information returns an array of each call returns an array of each call returns nil if no stack is available returns nil if no stack is available skip_file macro directive skips expanding the rest of the current file skips expanding the rest of the current file skips file inside an if macro expression skips file inside an if macro expression finds generic in macro code using free var finds generic in macro code using free var types macro def that calls another method types macro def that calls another method executes MultiAssign with ArrayLiteral value executes MultiAssign with ArrayLiteral value finds generic type argument of included module with self finds generic type argument of included module with self doesn't die on && inside if (bug) doesn't die on && inside if (bug) allows declaring class with macro if allows declaring class with macro if solves macro expression arguments before macro expansion (constant) solves macro expression arguments before macro expansion (constant) says missing argument because positional args don't match past splat says missing argument because positional args don't match past splat doesn't crash on syntax error inside macro (regression, #8038) doesn't crash on syntax error inside macro (regression, #8038) finds macro in included module at class level (#4639) finds macro in included module at class level (#4639) can lookup type parameter when macro is called inside class (#5343) can lookup type parameter when macro is called inside class (#5343) raise inside method without node renders both frames (#7147) renders both frames (#7147) inside macro without node supports an empty message (#8631) supports an empty message (#8631) renders both frames (#7147) renders both frames (#7147) does not contain `expanding macro` does not contain `expanding macro` with node renders both frames (#7147) renders both frames (#7147) pointing at the correct node in complex/nested macro (#7147) pointing at the correct node in complex/nested macro (#7147) points to caller when missing node location information (#7147) points to caller when missing node location information (#7147) contains the message and not `expanding macro` (#5669) contains the message and not `expanding macro` (#5669) finds macro and method at the same scope finds macro and method at the same scope declares rescue variable inside for macro declares rescue variable inside for macro errors if named arg matches single splat parameter errors if named arg matches single splat parameter types macro types macro checks if macro expansion returns (#821) checks if macro expansion returns (#821) does macro verbatim inside macro does macro verbatim inside macro show macro trace in errors (1) show macro trace in errors (1) finds macro in inherited generic class finds macro in inherited generic class expands macro with block expands macro with block can use macro in instance var initializer (#7666) can use macro in instance var initializer (#7666) types macro def with argument types macro def with argument expands macro with block and argument to yield expands macro with block and argument to yield errors if declares macro inside if errors if declares macro inside if assigns to underscore in MultiAssign assigns to underscore in MultiAssign allows union return types for macro def allows union return types for macro def transforms with {{yield}} and call transforms with {{yield}} and call preserves correct self in restriction when macro def is to be instantiated in subtypes (#5044) preserves correct self in restriction when macro def is to be instantiated in subtypes (#5044) types macro def that calls another method inside a class types macro def that calls another method inside a class looks up argument types in macro owner, not in subclass (#2395) looks up argument types in macro owner, not in subclass (#2395) gives correct error when method is invoked but macro exists at the same scope gives correct error when method is invoked but macro exists at the same scope can return class type in macro def can return class type in macro def clones default value before expanding clones default value before expanding can override macro (#2773) can override macro (#2773) finds metaclass instance of instance method (#4639) finds metaclass instance of instance method (#4639) errors if using macro that is defined later errors if using macro that is defined later assigns to underscore assigns to underscore works inside proc literal (#2984) works inside proc literal (#2984) can't define new variables (#466) can't define new variables (#466) solves named macro expression arguments before macro expansion (constant) (#2423) solves named macro expression arguments before macro expansion (constant) (#2423) allows subclasses of return type for macro def allows subclasses of return type for macro def allows declaring class with macro for allows declaring class with macro for can specify tuple as return type can specify tuple as return type finds method before macro (#236) finds method before macro (#236) finds var in proc for macros finds var in proc for macros finds generic type argument of included module finds generic type argument of included module has correct location after expanding assignment after instance var has correct location after expanding assignment after instance var allows declaring class with inline macro expression (#1333) allows declaring class with inline macro expression (#1333) double splat and regular args double splat and regular args errors if missing two arguments errors if missing two arguments declares variable for macro with out declares variable for macro with out allows specifying self as macro def return type allows specifying self as macro def return type errors if named arg already specified errors if named arg already specified gets named arguments in double splat gets named arguments in double splat uses bare *, doesn't let more args uses bare *, doesn't let more args doesn't include parameters with default values in missing arguments error doesn't include parameters with default values in missing arguments error types macro def types macro def uses bare * uses bare * errors if applying protected modifier to macro errors if applying protected modifier to macro errors if macro uses undefined variable errors if macro uses undefined variable show macro trace in errors (2) show macro trace in errors (2) types macro def that calls another method inside a class types macro def that calls another method inside a class finds type for global path shared with free var finds type for global path shared with free var expands multiline macro expression in verbatim (#6643) expands multiline macro expression in verbatim (#6643) errors if find macros but missing argument errors if find macros but missing argument finds macro in module in Object finds macro in module in Object finds free type vars finds free type vars errors if non-existent named arg errors if non-existent named arg errors if requires inside if through macro expansion errors if requires inside if through macro expansion finds macro in included generic module finds macro in included generic module uses uninitialized variable with macros uses uninitialized variable with macros uses bare *, doesn't let more args uses bare *, doesn't let more args cannot lookup type defined in caller class cannot lookup type defined in caller class applies visibility modifier only to first level applies visibility modifier only to first level unpacks to underscore within block parameters inside macros unpacks to underscore within block parameters inside macros unpacks block parameters inside macros (#13742) unpacks block parameters inside macros (#13742) can access variable inside macro expansion (#2057) can access variable inside macro expansion (#2057) allows named args after splat allows named args after splat doesn't affect self restrictions outside the macro def being instantiated in subtypes doesn't affect self restrictions outside the macro def being instantiated in subtypes evaluates yield expression (#2924) evaluates yield expression (#2924) can use macro in instance var initializer (just assignment) (#7666) can use macro in instance var initializer (just assignment) (#7666) errors if macro def type not found errors if macro def type not found uses splat and double splat uses splat and double splat finds macro through alias (#2706) finds macro through alias (#2706) errors when trying to define def inside def with macro expansion errors when trying to define def inside def with macro expansion shows correct error message in macro expansion (#7083) shows correct error message in macro expansion (#7083) allows generic return types for macro def allows generic return types for macro def finds macro in included module finds macro in included module does macro verbatim outside macro does macro verbatim outside macro allows return values that include the return type of the macro def allows return values that include the return type of the macro def gives precise location info when doing yield inside macro gives precise location info when doing yield inside macro can define constant via macro included can define constant via macro included executes OpAssign (#9356) executes OpAssign (#9356) declares multi-assign vars for macro declares multi-assign vars for macro errors if find macros but wrong arguments errors if find macros but wrong arguments expands macro with break inside while (#1852) expands macro with break inside while (#1852) errors if macro def type doesn't match found errors if macro def type doesn't match found finds macro and method at the same scope inside included module finds macro and method at the same scope inside included module executes MultiAssign executes MultiAssign errors if requires inside class through macro expansion errors if requires inside class through macro expansion matches with default value after splat matches with default value after splat Crystal::Doc::Generator .anchor_link generates the correct anchor link generates the correct anchor link Lexer doc resets doc after non newline or space token resets doc after non newline or space token lexes with doc enabled but without docs lexes with doc enabled but without docs lexes with doc enabled and docs lexes with doc enabled and docs lexes with doc enabled and docs, two line comment with leading whitespace lexes with doc enabled and docs, two line comment with leading whitespace lexes without doc enabled lexes without doc enabled lexes with doc enabled and docs, one line comment with two newlines and another comment lexes with doc enabled and docs, one line comment with two newlines and another comment lexes with doc enabled and docs, two line comment lexes with doc enabled and docs, two line comment Semantic: concrete_types VirtualType with concrete base VirtualType with concrete base ModuleType ModuleType GenericModuleInstanceType GenericModuleInstanceType VirtualMetaclassType with abstract base VirtualMetaclassType with abstract base UnionType of structs UnionType of structs VirtualMetaclassType with concrete base VirtualMetaclassType with concrete base VirtualType with abstract base VirtualType with abstract base Code gen: asm codegens with two inputs codegens with two inputs codegens with intel dialect codegens with intel dialect codegens with one input codegens with one input codegens without inputs codegens without inputs passes correct string length to LLVM passes correct string length to LLVM codegens with two outputs codegens with two outputs Semantic: sizeof errors on sizeof uninstantiated generic type (#6415) errors on sizeof uninstantiated generic type (#6415) gives error if using instance_sizeof on an abstract struct with multiple subtypes (#11855) gives error if using instance_sizeof on an abstract struct with multiple subtypes (#11855) types instance_alignof types instance_alignof types alignof types alignof gives error if using instance_sizeof on a struct gives error if using instance_sizeof on a struct types alignof NoReturn (missing type) (#5717) types alignof NoReturn (missing type) (#5717) gives error if using instance_sizeof on an abstract struct (#11855) gives error if using instance_sizeof on an abstract struct (#11855) types instance_sizeof types instance_sizeof types sizeof types sizeof gives error if using instance_sizeof on a generic type without type vars gives error if using instance_sizeof on a generic type without type vars types sizeof NoReturn (missing type) (#5717) types sizeof NoReturn (missing type) (#5717) gives error if using instance_sizeof on something that's not a class gives error if using instance_sizeof on something that's not a class types instance_sizeof NoReturn (missing type) (#5717) types instance_sizeof NoReturn (missing type) (#5717) types instance_alignof NoReturn (missing type) (#5717) types instance_alignof NoReturn (missing type) (#5717) gives error if using instance_sizeof on a metaclass gives error if using instance_sizeof on a metaclass gives error if using instance_sizeof on a union type (#8349) gives error if using instance_sizeof on a union type (#8349) gives error if using instance_sizeof on a module gives error if using instance_sizeof on a module Code gen: struct codegens virtual structs union (2) codegens virtual structs union (2) allows assigning to struct argument (bug) allows assigning to struct argument (bug) returns struct as a copy returns struct as a copy creates structs with instance var creates structs with instance var creates struct in def creates struct in def uses nilable struct uses nilable struct can cast virtual struct to specific struct can cast virtual struct to specific struct can cast virtual struct to specific struct can cast virtual struct to specific struct can cast virtual struct to specific struct can cast virtual struct to specific struct������������ can cast virtual struct to specific struct�� can cast virtual struct to specific struct�� can cast virtual struct to specific struct can cast virtual struct to specific struct casts virtual struct to base type, only one subclass (#2885) casts virtual struct to base type, only one subclass (#2885) can call new on abstract struct with single child (#7309) can call new on abstract struct with single child (#7309) codegens virtual struct metaclass (#2551) (3) codegens virtual struct metaclass (#2551) (3) codegens virtual struct metaclass (#2551) (2) codegens virtual struct metaclass (#2551) (2) assigning a struct makes a copy (1) assigning a struct makes a copy (1) codegens virtual struct with pointer codegens virtual struct with pointer returns self returns self codegens virtual struct codegens virtual struct passes a struct as a parameter makes a copy passes a struct as a parameter makes a copy codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4)������������ codegens virtual struct metaclass (#2551) (4)�� codegens virtual struct metaclass (#2551) (4)�� codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4) passes a generic struct as a parameter makes a copy passes a generic struct as a parameter makes a copy returns self with block returns self with block assigning a struct makes a copy (2) assigning a struct makes a copy (2) codegens virtual structs union (1) codegens virtual structs union (1) codegens struct assigned to underscore (#1842) codegens struct assigned to underscore (#1842) creates structs creates structs codegens virtual struct metaclass (#2551) (1) codegens virtual struct metaclass (#2551) (1) mutates a virtual struct mutates a virtual struct declares const struct declares const struct declares const struct declares const struct declares const struct declares const struct declares const struct�������������� declares const struct�� declares const struct declares const struct uses struct in if uses struct in if uses struct in if uses struct in if uses struct in if uses struct in if uses struct in if�������������� uses struct in if�� uses struct in if uses struct in if does phi of struct does phi of struct Semantic: lib errors if second argument is not a string errors if second argument is not a string defines lib funs before funs with body defines lib funs before funs with body types a varargs external types a varargs external errors if defining incompatible funs with the same name in different libs (#3045) errors if defining incompatible funs with the same name in different libs (#3045) can use out with named args can use out with named args raises on undefined fun raises on undefined fun reports error on fun argument type not primitive like, Nil (#2994) reports error on fun argument type not primitive like, Nil (#2994) reports redefinition of fun with different signature reports redefinition of fun with different signature types lib var get with forward declaration types lib var get with forward declaration raises wrong argument type raises wrong argument type errors if wrong number of arguments for CallConvention errors if wrong number of arguments for CallConvention errors if assigning void lib call to var (#4414) errors if assigning void lib call to var (#4414) errors if using named args with variadic function errors if using named args with variadic function errors if invoking to_i32! and got error in that call errors if invoking to_i32! and got error in that call errors if lib named arg is not a String errors if lib named arg is not a String errors if CallConvention argument is not a string errors if CallConvention argument is not a string types lib var set types lib var set errors if third argument is not a bool errors if third argument is not a bool errors if using out with varargs errors if using out with varargs errors if unknown named arg errors if unknown named arg errors if using void via typedef as parameter (related to #508) errors if using void via typedef as parameter (related to #508) passes int as another integer type with literal passes int as another integer type with literal defined fun with aliased type defined fun with aliased type disallows passing nil or pointer to arg expecting pointer disallows passing nil or pointer to arg expecting pointer gathers link annotations from macro expression gathers link annotations from macro expression errors if defining incompatible funs with the same name in the same lib (#3045) errors if defining incompatible funs with the same name in the same lib (#3045) reports error on struct field type not primitive like reports error on struct field type not primitive like error if passing non primitive type as varargs invoking to_unsafe error if passing non primitive type as varargs invoking to_unsafe errors if missing arguments errors if missing arguments errors if parameter already specified errors if parameter already specified supports forward references with struct inside struct (#399) supports forward references with struct inside struct (#399) reports error on fun return type not primitive like reports error on fun return type not primitive like reopens lib and adds more link annotations reopens lib and adds more link annotations can use tuple as fun return can use tuple as fun return reports error when changing instance var type and something breaks reports error when changing instance var type and something breaks errors if invoking to_i32! and got wrong type errors if invoking to_i32! and got wrong type error if passing non primitive type as varargs error if passing non primitive type as varargs errors if missing argument errors if missing argument errors if using void as parameter (related to #508) errors if using void as parameter (related to #508) types fun returning nil as nil types fun returning nil as nil allows invoking lib call without obj inside lib allows invoking lib call without obj inside lib can use named args can use named args errors if dll argument contains directory separators errors if dll argument contains directory separators errors if too many link arguments errors if too many link arguments reports error if using out with an already declared variable reports error if using out with an already declared variable passes float as another integer type in variable passes float as another integer type in variable passes int as another integer type in variable passes int as another integer type in variable reports error when changing var type and something breaks reports error when changing var type and something breaks supports forward references (#399) supports forward references (#399) overrides definition of fun overrides definition of fun types lib var get types lib var get reports error out can only be used with lib funs reports error out can only be used with lib funs errors if using unknown named param errors if using unknown named param reports error on fun argument type not primitive like reports error on fun argument type not primitive like errors if dll argument does not end with '.dll' errors if dll argument does not end with '.dll' reports error out can only be used with lib funs in named argument reports error out can only be used with lib funs in named argument reopens lib and adds same link annotations reopens lib and adds same link annotations allows passing splat to LibC fun allows passing splat to LibC fun errors if using out with non-pointer errors if using out with non-pointer doesn't try to invoke unsafe for c struct/union (#1362) doesn't try to invoke unsafe for c struct/union (#1362) errors if CallConvention argument is not a valid string errors if CallConvention argument is not a valid string errors if using out with void pointer (#2424) errors if using out with void pointer (#2424) can use macros inside struct can use macros inside struct can use macros inside lib can use macros inside lib errors if redefining fun with different signature (#2468) errors if redefining fun with different signature (#2468) specifies a call convention specifies a call convention errors if passing void lib call to call argument (#4414) errors if passing void lib call to call argument (#4414) errors if missing link arguments errors if missing link arguments can list lib functions at the top level (#12395) can list lib functions at the top level (#12395) errors if defines def on lib errors if defines def on lib error if passing type to LibC with to_unsafe but type doesn't match error if passing type to LibC with to_unsafe but type doesn't match errors if first argument is not a string errors if first argument is not a string warns if @[Link(static: true)] is specified warns if @[Link(static: true)] is specified errors if using out with void pointer through type errors if using out with void pointer through type allows passing double splat to LibC fun allows passing double splat to LibC fun types fun returning void as nil types fun returning void as nil types fun returning nothing as nil types fun returning nothing as nil allows invoking out with underscore allows invoking out with underscore clears annotations after lib clears annotations after lib specifies a call convention to a lib specifies a call convention to a lib errors if lib already specified with positional argument errors if lib already specified with positional argument reports error on typedef type not primitive like reports error on typedef type not primitive like warns if Link annotations use positional arguments warns if Link annotations use positional arguments allows dll argument allows dll argument raises wrong number of arguments raises wrong number of arguments correctly attached link flags if there's a macro if correctly attached link flags if there's a macro if errors if fourth argument is not a bool errors if fourth argument is not a bool errors if lib fun call is part of dispatch errors if lib fun call is part of dispatch Code gen: macro doesn't override local variable when using macro variable (2) doesn't override local variable when using macro variable (2) codegens macro def with default arg (similar to #496) codegens macro def with default arg (similar to #496) recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added���������������� recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added determines if overrides, through another class (true) determines if overrides, through another class (true) expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568)�� expands macro with op assign inside assign (#5568)�������� expands macro with op assign inside assign (#5568)������ expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568) expands macro as class method expands macro as class method codegens macro with comment (bug) (#1396) codegens macro with comment (bug) (#1396) expands @def in inline macro expands @def in inline macro doesn't replace %s in string (#2178) doesn't replace %s in string (#2178) expands macro that yields expands macro that yields can use constants can use constants can use macro inside array literal can use macro inside array literal can use macro inside array literal can use macro inside array literal can use macro inside array literal can use macro inside array literal can use macro inside array literal�������������� can use macro inside array literal�� can use macro inside array literal can use macro inside array literal transforms hooks (bug) transforms hooks (bug) determines if overrides, with macro method (false) determines if overrides, with macro method (false) expands def macro with @type.instance_vars expands def macro with @type.instance_vars expands def macro with var expands def macro with var gets default value of instance variable gets default value of instance variable keeps line number with no block keeps line number with no block expands @type.name in virtual metaclass (2) expands @type.name in virtual metaclass (2) executes with named arguments for positional arg (3) executes with named arguments for positional arg (3) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178)�������� replaces %s inside string inside interpolation (#2178)������ replaces %s inside string inside interpolation (#2178)�� replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178) can refer to union (1) can refer to union (1) codegens macro def with splat (#496) codegens macro def with splat (#496) initializes instance var in macro initializes instance var in macro determines if method exists (true) determines if method exists (true) expands inline macro for expands inline macro for surrounds {{yield}} with begin/end surrounds {{yield}} with begin/end gets constant gets constant keeps line number with a block keeps line number with a block expands def macro with @type.instance_vars with virtual expands def macro with @type.instance_vars with virtual expands macro and resolves type correctly expands macro and resolves type correctly receives &block receives &block determines if overrides (true) determines if overrides (true) expands def macro with @type.name with virtual (2) expands def macro with @type.name with virtual (2) expands def macro with instance var and method call (bug) expands def macro with instance var and method call (bug) responds correctly to has_constant? with @top_level responds correctly to has_constant? with @top_level expands macro defined in base class expands macro defined in base class expands def macro with @type.name expands def macro with @type.name determines if method exists (false) determines if method exists (false) does block unpacking inside macro expression (#13707) does block unpacking inside macro expression (#13707) can access type variables of a tuple can access type variables of a tuple initializes class var in macro initializes class var in macro correctly recomputes call (bug) correctly recomputes call (bug) can access type variables of a module can access type variables of a module expands macro defined in class expands macro defined in class can refer to union (2) can refer to union (2) expands def macro with @type.instance_vars with subclass expands def macro with @type.instance_vars with subclass copies base macro def to sub-subtype even after it was copied to a subtype (#448) copies base macro def to sub-subtype even after it was copied to a subtype (#448) expands macro def with return (#1040) expands macro def with return (#1040) can refer to abstract (1) can refer to abstract (1) executes all_subclasses executes all_subclasses executes subclasses executes subclasses runs macro with arg and splat runs macro with arg and splat forwards file location forwards file location replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178)�������������� replaces %s inside string inside interpolation, with braces (#2178)�� replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) gets default value of instance variable of inherited type that also includes module gets default value of instance variable of inherited type that also includes module gets methods gets methods passes #826 passes #826 expands macro that invokes another macro expands macro that invokes another macro executes with named arguments for positional arg (1) executes with named arguments for positional arg (1) runs macro with splat runs macro with splat determines if overrides (false) determines if overrides (false) expands @type.name in virtual metaclass (1) expands @type.name in virtual metaclass (1) forwards dir location forwards dir location can use macro inside hash literal can use macro inside hash literal can use macro inside hash literal can use macro inside hash literal can use macro inside hash literal can use macro inside hash literal can use macro inside hash literal can use macro inside hash literal���������������� can use macro inside hash literal can use macro inside hash literal gets enum members with @type.constants gets enum members with @type.constants gets correct class name when there are classes in the middle gets correct class name when there are classes in the middle retains original yield expression (#2923) retains original yield expression (#2923) access to the program with @top_level access to the program with @top_level expands macro with default arg and splat (3) (#784) expands macro with default arg and splat (3) (#784) expands macro with default arg and splat (#784) expands macro with default arg and splat (#784) fixes empty types of macro expansions (#1379) fixes empty types of macro expansions (#1379) expands macro expands macro doesn't replace %q() (#2178) doesn't replace %q() (#2178) can refer to @type can refer to @type can refer to abstract (2) can refer to abstract (2) declares constant in macro (#838) declares constant in macro (#838) correctly resolves constant inside block in macro def correctly resolves constant inside block in macro def errors if dynamic constant assignment after macro expansion errors if dynamic constant assignment after macro expansion uses indexed macro variable uses indexed macro variable uses invocation context uses invocation context expands @def in macro expands @def in macro expands macro with escaped quotes (#895) expands macro with escaped quotes (#895) can iterate union types can iterate union types gets default value of instance variable of generic type gets default value of instance variable of generic type gets default value of instance variable of generic type gets default value of instance variable of generic type gets default value of instance variable of generic type gets default value of instance variable of generic type gets default value of instance variable of generic type�������������� gets default value of instance variable of generic type�� gets default value of instance variable of generic type gets default value of instance variable of generic type can refer to types can refer to types expands inline macro if (true) expands inline macro if (true) finds macro from virtual type finds macro from virtual type uses indexed macro variable with many keys uses indexed macro variable with many keys doesn't reuse macro nodes (bug) doesn't reuse macro nodes (bug) devirtualizes @type devirtualizes @type keeps heredoc contents inside macro keeps heredoc contents inside macro gets enum members as constants gets enum members as constants executes with named arguments executes with named arguments accepts compile-time flags accepts compile-time flags expands inline macro if (false) expands inline macro if (false) expands def macro expands def macro can access type variables can access type variables expands inline macro expands inline macro can access type variables of a generic type can access type variables of a generic type types macro expansion bug (#1734) types macro expansion bug (#1734) expands def macro with @type.name with virtual expands def macro with @type.name with virtual expands macro with arguments expands macro with arguments forwards line number forwards line number says that enum has Flags annotation says that enum has Flags annotation checks if macro expansion returns (#821) checks if macro expansion returns (#821) implicitly marks method as macro def when using @type implicitly marks method as macro def when using @type executes with named arguments for positional arg (2) executes with named arguments for positional arg (2) allows overriding macro definition when redefining base class allows overriding macro definition when redefining base class doesn't override local variable when using macro variable doesn't override local variable when using macro variable expands Path with resolve method expands Path with resolve method can access free variables can access free variables determines if variable has default value determines if variable has default value uses tuple T in method with free vars uses tuple T in method with free vars doesn't skip abstract classes when defining macro methods doesn't skip abstract classes when defining macro methods resolves alias in macro resolves alias in macro finds macro in class finds macro in class can access type variables that are not types can access type variables that are not types determines if overrides, through module (true) determines if overrides, through module (true) stringifies type without virtual marker stringifies type without virtual marker expands macro with default arg and splat (2) (#784) expands macro with default arg and splat (2) (#784) says that enum doesn't have Flags annotation says that enum doesn't have Flags annotation keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro������������ keeps heredoc contents with interpolation inside macro�� keeps heredoc contents with interpolation inside macro�� keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro allows macro with default arguments allows macro with default arguments expands macro as class method and accesses @type expands macro as class method and accesses @type read_file? with relative path reads file (doesn't exist) reads file (doesn't exist) with absolute path reads file (doesn't exist) reads file (doesn't exist) Semantic: warnings abstract def positional parameter name mismatch respects external names of positional parameters (1) respects external names of positional parameters (1) detects mismatch with single parameter detects mismatch with single parameter detects multiple mismatches detects multiple mismatches respects external names of positional parameters (2) respects external names of positional parameters (2) continues warning if implementation with matching parameters is not found (#12150) single splat single splat double splat double splat not a full implementation not a full implementation doesn't warn if current type is a module (#12266) doesn't warn if current type is a module (#12266) doesn't compare positional parameters to single splat doesn't compare positional parameters to single splat doesn't compare single splats doesn't compare single splats detects mismatch within many parameters detects mismatch within many parameters doesn't warn if external parameter name matches (1) doesn't warn if external parameter name matches (1) informs warnings once per matching overload (1) informs warnings once per matching overload (1) doesn't warn if current type is abstract (#12266) doesn't warn if current type is abstract (#12266) stops warning after implementation with matching parameters is found (#12150) different single splats different single splats contravariant restrictions contravariant restrictions exact match exact match reordered named parameters reordered named parameters informs warnings once per matching overload (2) informs warnings once per matching overload (2) doesn't warn if external parameter name matches (2) doesn't warn if external parameter name matches (2) deprecated macros detects deprecated generic class macros detects deprecated generic class macros detects deprecated macros with named arguments detects deprecated macros with named arguments detects deprecated module macros detects deprecated module macros deprecation reason is optional deprecation reason is optional informs warnings once per call site location (a) informs warnings once per call site location (a) informs warnings once per call site location (b) informs warnings once per call site location (b) errors if too many arguments errors if too many arguments ignore deprecation excluded locations ignore deprecation excluded locations detects deprecated class macros detects deprecated class macros errors if invalid argument type errors if invalid argument type detects top-level deprecated macros detects top-level deprecated macros errors if invalid named argument errors if invalid named argument deprecated constants detects deprecated constants in type declarations (1) detects deprecated constants in type declarations (1) detects deprecated constants in type declarations (3) detects deprecated constants in type declarations (3) detects deprecated constants inside macros detects deprecated constants inside macros detects deprecated constants detects deprecated constants detects deprecated constants in type declarations (2) detects deprecated constants in type declarations (2) exposes syntax warnings exposes syntax warnings exposes syntax warnings after macro interpolation exposes syntax warnings after macro interpolation deprecated methods ignore deprecation excluded locations ignore deprecation excluded locations detects deprecated class methods detects deprecated class methods informs warnings once per call site location (a) informs warnings once per call site location (a) detects deprecated initialize with named arguments detects deprecated initialize with named arguments informs warnings once per yield informs warnings once per yield errors if too many arguments errors if too many arguments detects deprecated instance methods detects deprecated instance methods deprecation reason is optional deprecation reason is optional detects deprecated initialize detects deprecated initialize detects deprecated generic instance methods detects deprecated generic instance methods errors if invalid named arguments errors if invalid named arguments detects deprecated module methods detects deprecated module methods ignores nested calls to deprecated methods ignores nested calls to deprecated methods detects deprecated methods with named arguments detects deprecated methods with named arguments errors if invalid argument type errors if invalid argument type detects deprecated generic class methods detects deprecated generic class methods informs warnings once per call site location (b) informs warnings once per call site location (b) informs warnings once per target type informs warnings once per target type detects top-level deprecated methods detects top-level deprecated methods deprecated annotations detects deprecated annotations detects deprecated annotations detects deprecated namespaced annotations detects deprecated namespaced annotations Crystal::Repl::Interpreter multidispatch does multidispatch on virtual metaclass type (1) does multidispatch on virtual metaclass type (1) doesn't compile block if it's not used (no yield) doesn't compile block if it's not used (no yield) does multidispatch with captured block (#12217) does multidispatch with captured block (#12217) downcasts self from union to struct (pass pointer to self) downcasts self from union to struct (pass pointer to self) does multidispatch on virtual metaclass type (2) does multidispatch on virtual metaclass type (2) passes self as pointer when doing multidispatch passes self as pointer when doing multidispatch does dispatch on one argument with struct receiver, and modifies it does dispatch on one argument with struct receiver, and modifies it does dispatch on one argument with block does dispatch on one argument with block passes self as pointer when doing multidispatch (2) passes self as pointer when doing multidispatch (2) initialize multidispatch initialize multidispatch does dispatch on receiver type and argument type does dispatch on receiver type and argument type does multidispatch with mandatory named arguments does multidispatch with mandatory named arguments does dispatch on one argument inside module with explicit receiver does dispatch on one argument inside module with explicit receiver casts multidispatch argument to the def's arg type casts multidispatch argument to the def's arg type does dispatch on virtual type does dispatch on virtual type does dispatch on receiver type does dispatch on receiver type does dispatch on one argument does dispatch on one argument does dispatch on receiver type and argument type, multiple times does dispatch on receiver type and argument type, multiple times does dispatch on one argument inside module with implicit self does dispatch on one argument inside module with implicit self Normalize: range literal normalizes not exclusive normalizes not exclusive normalizes exclusive normalizes exclusive Semantic: pointer detects recursive pointerof expansion (2) (#1654) detects recursive pointerof expansion (2) (#1654) create pointer by address create pointer by address types realloc types realloc doesn't crash if pointerof expansion type has generic splat parameter (#11808) doesn't crash if pointerof expansion type has generic splat parameter (#11808) types pointer of constant types pointer of constant errors with non-matching generic value with value=, union of generic types (#10544) errors with non-matching generic value with value=, union of generic types (#10544) type pointer casting of object type type pointer casting of object type can pass any pointer to something expecting void* in lib call can pass any pointer to something expecting void* in lib call pointer of value error pointer of value error type pointer casting type pointer casting allows using pointer with subclass allows using pointer with subclass types int pointer types int pointer can assign nil to void pointer can assign nil to void pointer detects recursive pointerof expansion (#551) (#553) detects recursive pointerof expansion (#551) (#553) errors with non-matching generic value with value= (#10211) errors with non-matching generic value with value= (#10211) can't do Pointer.malloc without type var can't do Pointer.malloc without type var detects recursive pointerof expansion (3) detects recursive pointerof expansion (3) takes pointerof lib external var takes pointerof lib external var pointer of class raises error pointer of class raises error types pointer add types pointer add errors if doing Pointer.allocate errors if doing Pointer.allocate can assign pointerof virtual type (#8216) can assign pointerof virtual type (#8216) types Pointer.malloc types Pointer.malloc types pointer diff types pointer diff says undefined variable (#7556) says undefined variable (#7556) pointer malloc creates new type pointer malloc creates new type can pass any pointer to something expecting void* in lib call, with to_unsafe can pass any pointer to something expecting void* in lib call, with to_unsafe detects recursive pointerof expansion (4) detects recursive pointerof expansion (4) types pointer value on typedef types pointer value on typedef errors with non-matching generic value with value=, generic type (#10211) errors with non-matching generic value with value=, generic type (#10211) types pointer value types pointer value Pending: Code gen: class codegens assignment of generic metaclasses (2) (#10394) Code gen: class codegens assignment of generic metaclasses (1) (#10394) Code gen: primitives sums two numbers out of an [] of Number Code gen: primitives codegens pointer of int Semantic: cast casts from union to incompatible union gives error Semantic: primitives types pointer of int Semantic: multi assign strict_multi_assign errors if assigning tuple to more targets Semantic: instance var doesn't infer type to be nilable if using self.class in call in assign Crystal::Repl::Interpreter integration does XML Semantic: recursive struct check errors on recursive abstract struct through module (#11384) Code gen: lib codegens lib var set and get Semantic: def overload restricts on generic type without type arg Semantic: def overload restricts on generic type with free type arg Crystal::Doc::MarkdDocRenderer expand_code_links doesn't find wrong kind of sibling methods Crystal::Doc::MarkdDocRenderer expand_code_links doesn't find wrong kind of methods Semantic: pointer allows using pointer with subclass Finished in 44:46 minutes 12558 examples, 0 failures, 0 errors, 16 pending Randomized with seed: 76473 ��make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' make release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" interpreter=1 std_spec make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' [33mUsing /usr/bin/llvm-config-19 [version=19.1.7][0m ./bin/crystal build -D strict_multi_assign -D preview_overload_order --release --progress --threads 20 --link-flags="-Wl,-z,relro" --exclude-warnings spec/std --exclude-warnings spec/compiler --exclude-warnings spec/primitives -o .build/std_spec spec/std_spec.cr Using compiled compiler at .build/crystal [1/13] Parse [1/13] Parse [2/13] Semantic (top level) [2/13] Semantic (top level) [3/13] Semantic (new) [3/13] Semantic (new) [4/13] Semantic (type declarations) [4/13] Semantic (type declarations) [5/13] Semantic (abstract def check) [5/13] Semantic (abstract def check) [6/13] Semantic (restrictions augmenter) [6/13] Semantic (restrictions augmenter) [7/13] Semantic (ivars initializers) [7/13] Semantic (ivars initializers) [8/13] Semantic (cvars initializers) [8/13] Semantic (cvars initializers) [9/13] Semantic (main) [9/13] Semantic (main) [10/13] Semantic (cleanup) [10/13] Semantic (cleanup) [11/13] Semantic (recursive struct check) [11/13] Semantic (recursive struct check) [12/13] Codegen (crystal) [12/13] Codegen (crystal) [13/13] Codegen (bc+obj) [13/13] [0/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) .build/std_spec -v --order=random 0.2.5 Randomized with seed: 26192 Number converts from Int64 to Float64 converts from Int64 to Float64 converts from Float32 to UInt64 converts from Float32 to UInt64 converts from Int64 to UInt8 converts from Int64 to UInt8 converts from Float64 to UInt8 converts from Float64 to UInt8 converts from Int128 to UInt16 converts from Int128 to UInt16 converts from Int32 to UInt128 converts from Int32 to UInt128 converts from UInt32 to Int64 converts from UInt32 to Int64 converts from Int128 to Int16 converts from Int128 to Int16 converts from Int16 to Int16 converts from Int16 to Int16 division between Float64 / Float64 returns Float64 division between Float64 / Float64 returns Float64 converts from Int8 to UInt8 converts from Int8 to UInt8 division between Int8 / UInt8 returns Float64 division between Int8 / UInt8 returns Float64 floor_division UInt8 // Int8 returns UInt8 floor_division UInt8 // Int8 returns UInt8 converts from Float32 to UInt16 converts from Float32 to UInt16 floor_division UInt16 // Int16 returns UInt16 floor_division UInt16 // Int16 returns UInt16 converts from UInt128 to Int16 converts from UInt128 to Int16 converts from UInt64 to UInt128 converts from UInt64 to UInt128 #round_away assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert floor_division Float64 // UInt16 returns Float64 floor_division Float64 // UInt16 returns Float64 converts from Int32 to Int32 converts from Int32 to Int32 converts from Int32 to Int8 converts from Int32 to Int8 converts from Int64 to UInt16 converts from Int64 to UInt16 floor_division Int32 // UInt8 returns Int32 floor_division Int32 // UInt8 returns Int32 converts from Int64 to Float32 converts from Int64 to Float32 floor_division Int128 // Int32 returns Int128 floor_division Int128 // Int32 returns Int128 converts from UInt128 to Int64 converts from UInt128 to Int64 converts from UInt64 to Int128 converts from UInt64 to Int128 floor_division UInt64 // Float32 returns UInt64 floor_division UInt64 // Float32 returns UInt64 floor_division Int128 // UInt128 returns Int128 floor_division Int128 // UInt128 returns Int128 converts from UInt64 to Int16 converts from UInt64 to Int16 converts from UInt32 to Int32 converts from UInt32 to Int32 converts from UInt8 to Int32 converts from UInt8 to Int32 converts from Int16 to UInt64 converts from Int16 to UInt64 converts from Int64 to Int64 converts from Int64 to Int64 converts from Int16 to UInt8 converts from Int16 to UInt8 converts from UInt8 to Int16 converts from UInt8 to Int16 converts from Float32 to UInt128 converts from Float32 to UInt128 converts from UInt32 to UInt32 converts from UInt32 to UInt32 division between Int128 / Int128 returns Float64 division between Int128 / Int128 returns Float64 converts from UInt8 to Float32 converts from UInt8 to Float32 converts from Int128 to UInt32 converts from Int128 to UInt32 converts from Int16 to UInt64 converts from Int16 to UInt64 division between Int64 / Float32 returns Float32 division between Int64 / Float32 returns Float32 converts from UInt128 to Float64 converts from UInt128 to Float64 floor_division Float32 // Float32 returns Float32 floor_division Float32 // Float32 returns Float32 gives the square of a value gives the square of a value floor_division UInt32 // Int16 returns UInt32 floor_division UInt32 // Int16 returns UInt32 unchecked initialize from value to UInt64 unchecked initialize from value to UInt64 division between UInt128 / UInt64 returns Float64 division between UInt128 / UInt64 returns Float64 floor_division UInt8 // Float32 returns UInt8 floor_division UInt8 // Float32 returns UInt8 floor_division Int128 // Float32 returns Int128 floor_division Int128 // Float32 returns Int128 initialize from value to Int32 initialize from value to Int32 floor_division Float32 // Int32 returns Float32 floor_division Float32 // Int32 returns Float32 converts from UInt16 to Int8 converts from UInt16 to Int8 division between Int64 / Int128 returns Float64 division between Int64 / Int128 returns Float64 division between Int16 / Int128 returns Float64 division between Int16 / Int128 returns Float64 converts from UInt128 to UInt32 converts from UInt128 to UInt32 converts from Int8 to UInt16 converts from Int8 to UInt16 floor_division UInt128 // UInt8 returns UInt128 floor_division UInt128 // UInt8 returns UInt128 floor_division Int16 // UInt64 returns Int16 floor_division Int16 // UInt64 returns Int16 converts from Float64 to Int64 converts from Float64 to Int64 unchecked initialize from value to Float32 unchecked initialize from value to Float32 division between Int32 / UInt16 returns Float64 division between Int32 / UInt16 returns Float64 floor_division UInt64 // UInt128 returns UInt64 floor_division UInt64 // UInt128 returns UInt64 compare the numbers compare the numbers converts from UInt64 to Float64 converts from UInt64 to Float64 converts from UInt64 to UInt32 converts from UInt64 to UInt32 converts from UInt8 to Float64 converts from UInt8 to Float64 unchecked initialize from value to Int128 unchecked initialize from value to Int128 converts from UInt64 to UInt8 converts from UInt64 to UInt8 division between Int64 / Int16 returns Float64 division between Int64 / Int16 returns Float64 division between Int128 / UInt16 returns Float64 division between Int128 / UInt16 returns Float64 division between Float64 / Int16 returns Float64 division between Float64 / Int16 returns Float64 converts from UInt32 to Int8 converts from UInt32 to Int8 converts from UInt32 to UInt16 converts from UInt32 to UInt16 converts from UInt16 to Int128 converts from UInt16 to Int128 converts from UInt64 to Float32 converts from UInt64 to Float32 division between UInt32 / UInt32 returns Float64 division between UInt32 / UInt32 returns Float64 floor_division UInt8 // UInt64 returns UInt8 floor_division UInt8 // UInt64 returns UInt8 floor_division UInt128 // Int8 returns UInt128 floor_division UInt128 // Int8 returns UInt128 converts from UInt64 to Int64 converts from UInt64 to Int64 converts from UInt32 to Int32 converts from UInt32 to Int32 converts from Float32 to Float64 converts from Float32 to Float64 converts from Int16 to Float64 converts from Int16 to Float64 converts from UInt8 to UInt8 converts from UInt8 to UInt8 division between Float64 / Int8 returns Float64 division between Float64 / Int8 returns Float64 converts from Int128 to Int128 converts from Int128 to Int128 floor_division UInt32 // Float64 returns UInt32 floor_division UInt32 // Float64 returns UInt32 converts from Float32 to UInt8 converts from Float32 to UInt8 division between Int64 / UInt128 returns Float64 division between Int64 / UInt128 returns Float64 converts from UInt16 to Int32 converts from UInt16 to Int32 converts from Int8 to UInt32 converts from Int8 to UInt32 division between Float32 / Int32 returns Float32 division between Float32 / Int32 returns Float32 converts from Float32 to UInt32 converts from Float32 to UInt32 #round rounds to nearest integer rounds to nearest integer rounding modes ties_away ties_away ties_even ties_even to_negative to_negative to_positive to_positive default (=ties_even) default (=ties_even) to_zero to_zero infinity Float32 infinity Float32 assert assert edge cases edge cases handle medium amount of digits handle medium amount of digits accepts unsigned precision accepts unsigned precision negative digits negative digits rounds to digits rounds to digits base 8 8 2 2 with digits ties_even ties_even to_zero to_zero ties_away ties_away to_negative to_negative to_positive to_positive preserves type preserves type infinity Float64 infinity Float64 nan nan converts from Float32 to Float32 converts from Float32 to Float32 division between UInt32 / Float32 returns Float32 division between UInt32 / Float32 returns Float32 converts from UInt128 to Int64 converts from UInt128 to Int64 converts from Int8 to Int128 converts from Int8 to Int128 floor_division UInt32 // UInt8 returns UInt32 floor_division UInt32 // UInt8 returns UInt32 converts from Int32 to Int32 converts from Int32 to Int32 converts from Int128 to Int16 converts from Int128 to Int16 floor_division Float64 // Int8 returns Float64 floor_division Float64 // Int8 returns Float64 division between Int32 / Int32 returns Float64 division between Int32 / Int32 returns Float64 floor_division Int16 // Int8 returns Int16 floor_division Int16 // Int8 returns Int16 converts from UInt32 to UInt16 converts from UInt32 to UInt16 floor_division Int32 // UInt32 returns Int32 floor_division Int32 // UInt32 returns Int32 division between UInt8 / Int128 returns Float64 division between UInt8 / Int128 returns Float64 converts from Float64 to Int64 converts from Float64 to Int64 division between Int8 / Int8 returns Float64 division between Int8 / Int8 returns Float64 floor_division UInt32 // Float32 returns UInt32 floor_division UInt32 // Float32 returns UInt32 converts from Float64 to UInt128 converts from Float64 to UInt128 division between UInt8 / UInt64 returns Float64 division between UInt8 / UInt64 returns Float64 converts from UInt32 to Int64 converts from UInt32 to Int64 converts from UInt64 to Float32 converts from UInt64 to Float32 converts from Float64 to UInt16 converts from Float64 to UInt16 unchecked initialize from value to UInt128 unchecked initialize from value to UInt128 floor_division UInt32 // UInt16 returns UInt32 floor_division UInt32 // UInt16 returns UInt32 converts from Int8 to UInt64 converts from Int8 to UInt64 initialize from value to Int64 initialize from value to Int64 converts from Int64 to UInt8 converts from Int64 to UInt8 converts from Int16 to Float32 converts from Int16 to Float32 floor_division Int8 // Int8 returns Int8 floor_division Int8 // Int8 returns Int8 converts from Int64 to Int16 converts from Int64 to Int16 floor_division UInt128 // Int128 returns UInt128 floor_division UInt128 // Int128 returns UInt128 converts from Float32 to Int32 converts from Float32 to Int32 converts from UInt64 to Int8 converts from UInt64 to Int8 converts from Int16 to UInt32 converts from Int16 to UInt32 floor_division UInt16 // UInt16 returns UInt16 floor_division UInt16 // UInt16 returns UInt16 floor_division Int32 // Int16 returns Int32 floor_division Int32 // Int16 returns Int32 division between UInt128 / Float64 returns Float64 division between UInt128 / Float64 returns Float64 division between Float64 / UInt32 returns Float64 division between Float64 / UInt32 returns Float64 floor_division UInt32 // UInt128 returns UInt32 floor_division UInt32 // UInt128 returns UInt32 converts from Float64 to Int8 converts from Float64 to Int8 division between UInt8 / Float32 returns Float32 division between UInt8 / Float32 returns Float32 converts from Float64 to Int32 converts from Float64 to Int32 converts from Int32 to Int128 converts from Int32 to Int128 division between UInt16 / UInt128 returns Float64 division between UInt16 / UInt128 returns Float64 converts from UInt32 to Float32 converts from UInt32 to Float32 converts from Int32 to UInt64 converts from Int32 to UInt64 converts from Int128 to UInt8 converts from Int128 to UInt8 converts from Int64 to UInt128 converts from Int64 to UInt128 converts from Float64 to Float32 converts from Float64 to Float32 converts from UInt8 to UInt16 converts from UInt8 to UInt16 initialize from value to UInt64 initialize from value to UInt64 divides and calculates the modulo divides and calculates the modulo floor_division UInt128 // Float64 returns UInt128 floor_division UInt128 // Float64 returns UInt128 division between UInt16 / UInt16 returns Float64 division between UInt16 / UInt16 returns Float64 division between UInt64 / UInt32 returns Float64 division between UInt64 / UInt32 returns Float64 converts from Int128 to UInt128 converts from Int128 to UInt128 #step "Float by Int" iterator "Float by Int" iterator by zero yielding by zero yielding by zero iterator by zero iterator "towards limit [max-3, max-1, max)" iterator "towards limit [max-3, max-1, max)" iterator "at max Int" yielding "at max Int" yielding "single value Float" yielding "single value Float" yielding "missing end Int" iterator "missing end Int" iterator whole range "UInt8 upwards" iterator "UInt8 upwards" iterator "Int8 upwards" iterator "Int8 upwards" iterator "Int8 downwards" iterator "Int8 downwards" iterator "Int16 upwards" iterator "Int16 upwards" iterator "UInt8 downwards" yielding "UInt8 downwards" yielding assert assert "UInt8 upwards" yielding "UInt8 upwards" yielding "Int16 upwards" yielding "Int16 upwards" yielding "Int8 downwards" yielding "Int8 downwards" yielding "Int16 downwards" yielding "Int16 downwards" yielding "Int8 upwards" yielding "Int8 upwards" yielding "Int16 downwards" iterator "Int16 downwards" iterator assert assert "UInt8 downwards" iterator "UInt8 downwards" iterator assert assert "downto UInt" yielding "downto UInt" yielding "empty if `self` can't be compared" yielding "empty if `self` can't be compared" yielding "Int by Float" yielding "Int by Float" yielding "by Float" iterator "by Float" iterator "negative by Int" iterator "negative by Int" iterator "by Float" yielding "by Float" yielding "Float by Int" yielding "Float by Int" yielding "negative Int" iterator "negative Int" iterator "downto Int" iterator "downto Int" iterator "downto Float by" yielding "downto Float by" yielding "negative by Float" iterator "negative by Float" iterator "single value Int by Float" yielding "single value Int by Float" yielding "negative Int" yielding "negative Int" yielding "over min Int" iterator "over min Int" iterator "Float to Int by" iterator "Float to Int by" iterator "downto UInt by" yielding "downto UInt by" yielding "negative by Float" yielding "negative by Float" yielding "negative Float" yielding "negative Float" yielding "over zero Int" yielding "over zero Int" yielding "missing end UInt" iterator "missing end UInt" iterator "Int to Float" iterator "Int to Float" iterator "Float to Int by" yielding "Float to Int by" yielding "downto Int" yielding "downto Int" yielding "single value by Float" yielding "single value by Float" yielding "missing end Float" yielding "missing end Float" yielding "single value by Int" iterator "single value by Int" iterator "at min Int" iterator "at min Int" iterator "single value Int" iterator "single value Int" iterator "Int to Float by" iterator "Int to Float by" iterator "at min Int" yielding "at min Int" yielding "negative by Float half" iterator "negative by Float half" iterator "over max Int" yielding "over max Int" yielding "empty if `to` can't be compared" iterator "empty if `to` can't be compared" iterator "empty if `by` and `to` are opposed" iterator "empty if `by` and `to` are opposed" iterator "downto Float by" iterator "downto Float by" iterator "missing end Float" iterator "missing end Float" iterator "downto UInt" iterator "downto UInt" iterator "Int to Float by" yielding "Int to Float by" yielding "over min Int" yielding "over min Int" yielding "downto Int by" yielding "downto Int by" yielding "empty if `to` can't be compared by" yielding "empty if `to` can't be compared by" yielding "by Float half" iterator "by Float half" iterator "downto Float" yielding "downto Float" yielding "single value Float by Int" yielding "single value Float by Int" yielding "by Int" iterator "by Int" iterator "empty if `self` can't be compared by" iterator "empty if `self` can't be compared by" iterator "single value Float by Int" iterator "single value Float by Int" iterator "basic Int" iterator "basic Int" iterator "Int to Float" yielding "Int to Float" yielding "basic Float" iterator "basic Float" iterator "by Int" yielding "by Int" yielding "single value by Int" yielding "single value by Int" yielding "empty if `to` can't be compared" yielding "empty if `to` can't be compared" yielding "missing end UInt" yielding "missing end UInt" yielding "downto Int by" iterator "downto Int by" iterator "over zero Int" iterator "over zero Int" iterator "single value by Float" iterator "single value by Float" iterator "at max Int" iterator "at max Int" iterator "by Float half" yielding "by Float half" yielding without limit iterator raises overflow error raises overflow error basic basic yielding basic basic raises overflow error raises overflow error "basic Int" yielding "basic Int" yielding "over zero Float" iterator "over zero Float" iterator "single value Float" iterator "single value Float" iterator "single value Int by Float" iterator "single value Int by Float" iterator "over max Int" iterator "over max Int" iterator exclusive "single value Float" yielding "single value Float" yielding "single value Int" iterator "single value Int" iterator "basic Float" iterator "basic Float" iterator "basic Int" yielding "basic Int" yielding "basic Float" yielding "basic Float" yielding "basic Int" iterator "basic Int" iterator "single value Float" iterator "single value Float" iterator "single value Int" yielding "single value Int" yielding "missing end Int" yielding "missing end Int" yielding "towards limit [max-4, max-2, max)" iterator "towards limit [max-4, max-2, max)" iterator "negative Float" iterator "negative Float" iterator "downto Float" iterator "downto Float" iterator "empty if `self` can't be compared by" yielding "empty if `self` can't be compared by" yielding "towards limit [max-4, max-2, max)" yielding "towards limit [max-4, max-2, max)" yielding "Float to Int" iterator "Float to Int" iterator "single value Int" yielding "single value Int" yielding "empty if `self` can't be compared" iterator "empty if `self` can't be compared" iterator "towards limit [max-4, max-2, max]" yielding "towards limit [max-4, max-2, max]" yielding "over zero Float" yielding "over zero Float" yielding "towards limit [max-3, max-1, max)" yielding "towards limit [max-3, max-1, max)" yielding "Float to Int" yielding "Float to Int" yielding "basic Float" yielding "basic Float" yielding "empty if `by` and `to` are opposed" yielding "empty if `by` and `to` are opposed" yielding "negative by Int" yielding "negative by Int" yielding "negative by Float half" yielding "negative by Float half" yielding "towards limit [max-4, max-2, max]" iterator "towards limit [max-4, max-2, max]" iterator "empty if `to` can't be compared by" iterator "empty if `to` can't be compared by" iterator "downto UInt by" iterator "downto UInt by" iterator "Int by Float" iterator "Int by Float" iterator division between Float64 / Int64 returns Float64 division between Float64 / Int64 returns Float64 converts from Int64 to UInt32 converts from Int64 to UInt32 converts from UInt64 to UInt32 converts from UInt64 to UInt32 division between Int16 / UInt64 returns Float64 division between Int16 / UInt64 returns Float64 converts from UInt16 to Int64 converts from UInt16 to Int64 converts from UInt64 to Int16 converts from UInt64 to Int16 division between Int128 / Int16 returns Float64 division between Int128 / Int16 returns Float64 division between UInt64 / UInt128 returns Float64 division between UInt64 / UInt128 returns Float64 converts from Float32 to Int8 converts from Float32 to Int8 floor_division Float64 // Int64 returns Float64 floor_division Float64 // Int64 returns Float64 division between UInt16 / Float64 returns Float64 division between UInt16 / Float64 returns Float64 converts from UInt32 to Float64 converts from UInt32 to Float64 creates a slice creates a slice division between Int16 / UInt8 returns Float64 division between Int16 / UInt8 returns Float64 floor_division Int64 // UInt16 returns Int64 floor_division Int64 // UInt16 returns Int64 division between Float64 / UInt16 returns Float64 division between Float64 / UInt16 returns Float64 division between UInt16 / Float32 returns Float32 division between UInt16 / Float32 returns Float32 converts from UInt128 to UInt16 converts from UInt128 to UInt16 division between Int32 / Int16 returns Float64 division between Int32 / Int16 returns Float64 unchecked initialize from value to UInt32 unchecked initialize from value to UInt32 #positive? #positive? converts from Float64 to Int32 converts from Float64 to Int32 division between UInt16 / Int8 returns Float64 division between UInt16 / Int8 returns Float64 floor_division Int64 // Int8 returns Int64 floor_division Int64 // Int8 returns Int64 division between Int32 / Float32 returns Float32 division between Int32 / Float32 returns Float32 division between UInt128 / UInt16 returns Float64 division between UInt128 / UInt16 returns Float64 division between UInt8 / Float64 returns Float64 division between UInt8 / Float64 returns Float64 division between UInt16 / UInt8 returns Float64 division between UInt16 / UInt8 returns Float64 floor_division UInt8 // Int128 returns UInt8 floor_division UInt8 // Int128 returns UInt8 division between Int32 / UInt128 returns Float64 division between Int32 / UInt128 returns Float64 division between Int16 / UInt16 returns Float64 division between Int16 / UInt16 returns Float64 floor_division UInt8 // Int64 returns UInt8 floor_division UInt8 // Int64 returns UInt8 division between Float32 / Int64 returns Float32 division between Float32 / Int64 returns Float32 converts from UInt16 to Int16 converts from UInt16 to Int16 converts from Int8 to Float64 converts from Int8 to Float64 division between Int8 / Int128 returns Float64 division between Int8 / Int128 returns Float64 floor_division UInt16 // Int128 returns UInt16 floor_division UInt16 // Int128 returns UInt16 converts from Int128 to Int128 converts from Int128 to Int128 converts from UInt64 to Int32 converts from UInt64 to Int32 converts from UInt64 to Int32 converts from UInt64 to Int32 converts from Float32 to Float32 converts from Float32 to Float32 division between UInt64 / Int8 returns Float64 division between UInt64 / Int8 returns Float64 division between UInt64 / Int64 returns Float64 division between UInt64 / Int64 returns Float64 division between Int64 / Int32 returns Float64 division between Int64 / Int32 returns Float64 floor_division Int32 // UInt16 returns Int32 floor_division Int32 // UInt16 returns Int32 floor_division Float32 // UInt128 returns Float32 floor_division Float32 // UInt128 returns Float32 converts from Int32 to Float32 converts from Int32 to Float32 division between UInt16 / Int32 returns Float64 division between UInt16 / Int32 returns Float64 floor_division Int64 // Int32 returns Int64 floor_division Int64 // Int32 returns Int64 division between Int8 / UInt32 returns Float64 division between Int8 / UInt32 returns Float64 converts from UInt128 to Float32 converts from UInt128 to Float32 converts from Float32 to Int16 converts from Float32 to Int16 converts from UInt64 to UInt64 converts from UInt64 to UInt64 division between Float64 / Float64 returns Float64 division between Float64 / Float64 returns Float64 floor_division UInt128 // UInt128 returns UInt128 floor_division UInt128 // UInt128 returns UInt128 converts from UInt16 to UInt64 converts from UInt16 to UInt64 converts from Int16 to Int16 converts from Int16 to Int16 converts from UInt64 to Int64 converts from UInt64 to Int64 converts from UInt8 to Int8 converts from UInt8 to Int8 division between UInt32 / Int8 returns Float64 division between UInt32 / Int8 returns Float64 floor_division Int32 // Int8 returns Int32 floor_division Int32 // Int8 returns Int32 division between UInt16 / Int64 returns Float64 division between UInt16 / Int64 returns Float64 division between UInt64 / Float32 returns Float32 division between UInt64 / Float32 returns Float32 floor_division Float32 // Int8 returns Float32 floor_division Float32 // Int8 returns Float32 converts from Float32 to Float64 converts from Float32 to Float64 #zero? #zero? division between Int64 / UInt8 returns Float64 division between Int64 / UInt8 returns Float64 converts from UInt32 to Int16 converts from UInt32 to Int16 division between Float64 / UInt128 returns Float64 division between Float64 / UInt128 returns Float64 converts from Int16 to UInt16 converts from Int16 to UInt16 converts from UInt128 to UInt128 converts from UInt128 to UInt128 converts from UInt8 to Int8 converts from UInt8 to Int8 floor_division UInt32 // UInt32 returns UInt32 floor_division UInt32 // UInt32 returns UInt32 division between Int16 / Int64 returns Float64 division between Int16 / Int64 returns Float64 division between UInt128 / UInt8 returns Float64 division between UInt128 / UInt8 returns Float64 division between Int16 / Int8 returns Float64 division between Int16 / Int8 returns Float64 converts from UInt8 to Int16 converts from UInt8 to Int16 division between UInt64 / Float64 returns Float64 division between UInt64 / Float64 returns Float64 floor_division UInt64 // UInt8 returns UInt64 floor_division UInt64 // UInt8 returns UInt64 converts from UInt128 to Int128 converts from UInt128 to Int128 converts from Int128 to Int8 converts from Int128 to Int8 converts from Float64 to UInt32 converts from Float64 to UInt32 converts from Int64 to Int8 converts from Int64 to Int8 floor_division UInt32 // Int64 returns UInt32 floor_division UInt32 // Int64 returns UInt32 converts from Int64 to Int64 converts from Int64 to Int64 floor_division UInt16 // Float32 returns UInt16 floor_division UInt16 // Float32 returns UInt16 division between Int8 / Float32 returns Float32 division between Int8 / Float32 returns Float32 floor_division Float32 // UInt64 returns Float32 floor_division Float32 // UInt64 returns Float32 converts from UInt16 to UInt16 converts from UInt16 to UInt16 division between Int32 / Float64 returns Float64 division between Int32 / Float64 returns Float64 division between UInt8 / Int64 returns Float64 division between UInt8 / Int64 returns Float64 converts from Int128 to Int64 converts from Int128 to Int64 converts from Int128 to UInt32 converts from Int128 to UInt32 floor_division UInt32 // Int128 returns UInt32 floor_division UInt32 // Int128 returns UInt32 floor_division Int32 // Int32 returns Int32 floor_division Int32 // Int32 returns Int32 unchecked initialize from value to Int32 unchecked initialize from value to Int32 converts from UInt8 to Int128 converts from UInt8 to Int128 division between Float32 / Int8 returns Float32 division between Float32 / Int8 returns Float32 floor_division Float64 // UInt32 returns Float64 floor_division Float64 // UInt32 returns Float64 floor_division Int32 // UInt128 returns Int32 floor_division Int32 // UInt128 returns Int32 floor_division UInt64 // Int128 returns UInt64 floor_division UInt64 // Int128 returns UInt64 converts from Int16 to Int8 converts from Int16 to Int8 converts from Int128 to UInt64 converts from Int128 to UInt64 converts from UInt64 to UInt16 converts from UInt64 to UInt16 division between UInt128 / Float32 returns Float32 division between UInt128 / Float32 returns Float32 division between Float32 / Float64 returns Float64 division between Float32 / Float64 returns Float64 floor_division UInt64 // Int8 returns UInt64 floor_division UInt64 // Int8 returns UInt64 converts from Float32 to Int64 converts from Float32 to Int64 floor_division Int128 // UInt64 returns Int128 floor_division Int128 // UInt64 returns Int128 converts from Int8 to Float32 converts from Int8 to Float32 floor_division Float32 // Int64 returns Float32 floor_division Float32 // Int64 returns Float32 division between UInt64 / Int128 returns Float64 division between UInt64 / Int128 returns Float64 floor_division Int16 // Int32 returns Int16 floor_division Int16 // Int32 returns Int16 converts from UInt128 to Int8 converts from UInt128 to Int8 converts from Float64 to Float32 converts from Float64 to Float32 floor_division Int16 // UInt8 returns Int16 floor_division Int16 // UInt8 returns Int16 floor_division UInt16 // UInt32 returns UInt16 floor_division UInt16 // UInt32 returns UInt16 converts from Int128 to Int32 converts from Int128 to Int32 converts from UInt16 to Int8 converts from UInt16 to Int8 division between Float32 / Float32 returns Float32 division between Float32 / Float32 returns Float32 floor_division Int8 // UInt16 returns Int8 floor_division Int8 // UInt16 returns Int8 converts from Float64 to Float64 converts from Float64 to Float64 converts from Int64 to Float64 converts from Int64 to Float64 division between UInt32 / Int128 returns Float64 division between UInt32 / Int128 returns Float64 converts from UInt64 to Int128 converts from UInt64 to Int128 division between UInt32 / UInt16 returns Float64 division between UInt32 / UInt16 returns Float64 converts from Int32 to UInt16 converts from Int32 to UInt16 division between Int128 / UInt8 returns Float64 division between Int128 / UInt8 returns Float64 converts from UInt32 to UInt64 converts from UInt32 to UInt64 initialize from value to Int128 initialize from value to Int128 floor_division Float32 // UInt16 returns Float32 floor_division Float32 // UInt16 returns Float32 converts from Int32 to Int128 converts from Int32 to Int128 converts from Int8 to Int8 converts from Int8 to Int8 division between UInt32 / Int16 returns Float64 division between UInt32 / Int16 returns Float64 converts from Int64 to Float32 converts from Int64 to Float32 division between Float32 / Int16 returns Float32 division between Float32 / Int16 returns Float32 converts from Int128 to Int32 converts from Int128 to Int32 division between Int8 / UInt16 returns Float64 division between Int8 / UInt16 returns Float64 division between UInt64 / Int32 returns Float64 division between UInt64 / Int32 returns Float64 converts from UInt128 to UInt16 converts from UInt128 to UInt16 converts from Int32 to UInt8 converts from Int32 to UInt8 creates an array with [] and some elements creates an array with [] and some elements division between Int16 / UInt32 returns Float64 division between Int16 / UInt32 returns Float64 converts from Int16 to UInt32 converts from Int16 to UInt32 converts from UInt32 to Int16 converts from UInt32 to Int16 division between Int64 / Int8 returns Float64 division between Int64 / Int8 returns Float64 converts from UInt128 to UInt8 converts from UInt128 to UInt8 floor_division UInt16 // UInt8 returns UInt16 floor_division UInt16 // UInt8 returns UInt16 floor_division Int128 // Int128 returns Int128 floor_division Int128 // Int128 returns Int128 floor_division Int8 // UInt32 returns Int8 floor_division Int8 // UInt32 returns Int8 converts from UInt64 to UInt8 converts from UInt64 to UInt8 converts from UInt16 to UInt128 converts from UInt16 to UInt128 floor_division Int64 // UInt128 returns Int64 floor_division Int64 // UInt128 returns Int64 converts from UInt128 to Int128 converts from UInt128 to Int128 converts from Float64 to UInt128 converts from Float64 to UInt128 gives the sign gives the sign unchecked initialize from value to Int8 unchecked initialize from value to Int8 converts from UInt8 to UInt32 converts from UInt8 to UInt32 floor_division Int128 // UInt32 returns Int128 floor_division Int128 // UInt32 returns Int128 converts from UInt128 to UInt8 converts from UInt128 to UInt8 floor_division Int128 // Int64 returns Int128 floor_division Int128 // Int64 returns Int128 creates a static array creates a static array unchecked initialize from value to UInt8 unchecked initialize from value to UInt8 converts from Int32 to UInt128 converts from Int32 to UInt128 division between UInt8 / Int16 returns Float64 division between UInt8 / Int16 returns Float64 converts from Int64 to Int16 converts from Int64 to Int16 converts from Int8 to Int16 converts from Int8 to Int16 division between Int64 / UInt16 returns Float64 division between Int64 / UInt16 returns Float64 converts from Int32 to UInt32 converts from Int32 to UInt32 floor_division Float32 // Float64 returns Float32 floor_division Float32 // Float64 returns Float32 division between Int8 / UInt64 returns Float64 division between Int8 / UInt64 returns Float64 converts from UInt16 to UInt32 converts from UInt16 to UInt32 converts from UInt16 to UInt16 converts from UInt16 to UInt16 converts from UInt128 to UInt64 converts from UInt128 to UInt64 division between Int16 / Float32 returns Float32 division between Int16 / Float32 returns Float32 converts from Int128 to Float32 converts from Int128 to Float32 converts from UInt32 to UInt64 converts from UInt32 to UInt64 converts from Int128 to UInt16 converts from Int128 to UInt16 floor_division UInt16 // Int8 returns UInt16 floor_division UInt16 // Int8 returns UInt16 floor_division UInt64 // Int64 returns UInt64 floor_division UInt64 // Int64 returns UInt64 division between Int64 / Int64 returns Float64 division between Int64 / Int64 returns Float64 division between Int128 / UInt32 returns Float64 division between Int128 / UInt32 returns Float64 division between Int8 / UInt128 returns Float64 division between Int8 / UInt128 returns Float64 division between Int8 / Float64 returns Float64 division between Int8 / Float64 returns Float64 division between Int8 / Int32 returns Float64 division between Int8 / Int32 returns Float64 converts from Int8 to Int128 converts from Int8 to Int128 converts from UInt32 to Float64 converts from UInt32 to Float64 converts from UInt16 to Float32 converts from UInt16 to Float32 converts from Int8 to Int32 converts from Int8 to Int32 initialize from value to Float32 initialize from value to Float32 floor_division Int128 // Int8 returns Int128 floor_division Int128 // Int8 returns Int128 converts from Int16 to Float32 converts from Int16 to Float32 converts from Float32 to Int8 converts from Float32 to Int8 converts from UInt32 to UInt32 converts from UInt32 to UInt32 floor_division Int8 // Int128 returns Int8 floor_division Int8 // Int128 returns Int8 floor_division Float64 // Int16 returns Float64 floor_division Float64 // Int16 returns Float64 division between Float64 / Float32 returns Float64 division between Float64 / Float32 returns Float64 converts from UInt32 to Int128 converts from UInt32 to Int128 division between UInt16 / UInt32 returns Float64 division between UInt16 / UInt32 returns Float64 converts from Int128 to Float64 converts from Int128 to Float64 floor_division UInt8 // Int16 returns UInt8 floor_division UInt8 // Int16 returns UInt8 converts from Int32 to Int16 converts from Int32 to Int16 floor_division Int64 // Float64 returns Int64 floor_division Int64 // Float64 returns Int64 floor_division Int64 // UInt32 returns Int64 floor_division Int64 // UInt32 returns Int64 converts from UInt16 to Float64 converts from UInt16 to Float64 division between Int64 / Float64 returns Float64 division between Int64 / Float64 returns Float64 floor_division Int16 // Int64 returns Int16 floor_division Int16 // Int64 returns Int16 division between Float64 / UInt8 returns Float64 division between Float64 / UInt8 returns Float64 division between Int16 / Int16 returns Float64 division between Int16 / Int16 returns Float64 converts from Int128 to UInt8 converts from Int128 to UInt8 converts from UInt128 to Int16 converts from UInt128 to Int16 division between Int128 / Int64 returns Float64 division between Int128 / Int64 returns Float64 converts from Int64 to Int128 converts from Int64 to Int128 creates an array with [] and no elements creates an array with [] and no elements converts from Int32 to Float32 converts from Int32 to Float32 division between Int16 / Int32 returns Float64 division between Int16 / Int32 returns Float64 converts from UInt128 to UInt64 converts from UInt128 to UInt64 converts from Int32 to Int8 converts from Int32 to Int8 converts from UInt64 to UInt64 converts from UInt64 to UInt64 division between UInt128 / UInt32 returns Float64 division between UInt128 / UInt32 returns Float64 floor_division Int8 // UInt128 returns Int8 floor_division Int8 // UInt128 returns Int8 converts from UInt8 to UInt16 converts from UInt8 to UInt16 division between Float32 / UInt128 returns Float32 division between Float32 / UInt128 returns Float32 division between Float32 / UInt32 returns Float32 division between Float32 / UInt32 returns Float32 unchecked initialize from value to UInt16 unchecked initialize from value to UInt16 division between UInt32 / UInt128 returns Float64 division between UInt32 / UInt128 returns Float64 floor_division Int16 // Int128 returns Int16 floor_division Int16 // Int128 returns Int16 unchecked initialize from value to Int64 unchecked initialize from value to Int64 converts from Float64 to UInt32 converts from Float64 to UInt32 #negative? #negative? converts from Int16 to Float64 converts from Int16 to Float64 converts from Float32 to Int128 converts from Float32 to Int128 floor_division Int32 // UInt64 returns Int32 floor_division Int32 // UInt64 returns Int32 converts from Int32 to UInt8 converts from Int32 to UInt8 floor_division Float64 // Int32 returns Float64 floor_division Float64 // Int32 returns Float64 converts from Int128 to Float64 converts from Int128 to Float64 converts from Float64 to Int16 converts from Float64 to Int16 converts from UInt16 to Int64 converts from UInt16 to Int64 division between UInt64 / Int16 returns Float64 division between UInt64 / Int16 returns Float64 converts from UInt16 to Int32 converts from UInt16 to Int32 converts from Int16 to Int32 converts from Int16 to Int32 converts from Int128 to UInt64 converts from Int128 to UInt64 floor_division Float64 // Float32 returns Float64 floor_division Float64 // Float32 returns Float64 unchecked initialize from value to Int16 unchecked initialize from value to Int16 converts from UInt32 to UInt8 converts from UInt32 to UInt8 converts from Float64 to UInt64 converts from Float64 to UInt64 floor_division UInt16 // UInt64 returns UInt16 floor_division UInt16 // UInt64 returns UInt16 division between Int128 / Float32 returns Float32 division between Int128 / Float32 returns Float32 floor_division Int16 // Float64 returns Int16 floor_division Int16 // Float64 returns Int16 converts from Int16 to UInt128 converts from Int16 to UInt128 converts from Float32 to Int128 converts from Float32 to Int128 division between Float32 / UInt16 returns Float32 division between Float32 / UInt16 returns Float32 division between Float64 / Int128 returns Float64 division between Float64 / Int128 returns Float64 initialize from value to UInt32 initialize from value to UInt32 converts from Int16 to Int64 converts from Int16 to Int64 converts from UInt16 to Int128 converts from UInt16 to Int128 converts from UInt16 to Int16 converts from UInt16 to Int16 floor_division UInt16 // Int32 returns UInt16 floor_division UInt16 // Int32 returns UInt16 converts from UInt8 to Int64 converts from UInt8 to Int64 converts from Int128 to Int8 converts from Int128 to Int8 converts from Int64 to Int128 converts from Int64 to Int128 converts from Int8 to UInt8 converts from Int8 to UInt8 converts from Float32 to UInt128 converts from Float32 to UInt128 division between UInt8 / UInt8 returns Float64 division between UInt8 / UInt8 returns Float64 division between Int16 / Float64 returns Float64 division between Int16 / Float64 returns Float64 floor_division Float64 // UInt128 returns Float64 floor_division Float64 // UInt128 returns Float64 division between UInt8 / UInt16 returns Float64 division between UInt8 / UInt16 returns Float64 floor_division Int64 // Float32 returns Int64 floor_division Int64 // Float32 returns Int64 floor_division Float64 // UInt8 returns Float64 floor_division Float64 // UInt8 returns Float64 floor_division UInt16 // Int64 returns UInt16 floor_division UInt16 // Int64 returns UInt16 converts from Int8 to Int16 converts from Int8 to Int16 floor_division Int16 // Int16 returns Int16 floor_division Int16 // Int16 returns Int16 converts from Int8 to Int8 converts from Int8 to Int8 floor_division Int8 // Int64 returns Int8 floor_division Int8 // Int64 returns Int8 floor_division Float32 // UInt8 returns Float32 floor_division Float32 // UInt8 returns Float32 floor_division Int8 // Int16 returns Int8 floor_division Int8 // Int16 returns Int8 division between Float64 / Int32 returns Float64 division between Float64 / Int32 returns Float64 division between UInt32 / Int64 returns Float64 division between UInt32 / Int64 returns Float64 floor_division UInt8 // UInt128 returns UInt8 floor_division UInt8 // UInt128 returns UInt8 floor_division UInt8 // UInt16 returns UInt8 floor_division UInt8 // UInt16 returns UInt8 division between UInt16 / UInt64 returns Float64 division between UInt16 / UInt64 returns Float64 division between UInt8 / Int32 returns Float64 division between UInt8 / Int32 returns Float64 converts from UInt32 to Float32 converts from UInt32 to Float32 gives the absolute value gives the absolute value converts from Float32 to UInt8 converts from Float32 to UInt8 converts from Int8 to UInt32 converts from Int8 to UInt32 floor_division UInt128 // Float32 returns UInt128 floor_division UInt128 // Float32 returns UInt128 converts from Int8 to Int64 converts from Int8 to Int64 converts from UInt32 to UInt128 converts from UInt32 to UInt128 initialize from value to Float64 initialize from value to Float64 converts from Int16 to Int32 converts from Int16 to Int32 converts from Int16 to UInt8 converts from Int16 to UInt8 division between Int16 / UInt128 returns Float64 division between Int16 / UInt128 returns Float64 converts from UInt32 to UInt128 converts from UInt32 to UInt128 converts from Int16 to Int8 converts from Int16 to Int8 converts from Float32 to Int64 converts from Float32 to Int64 floor_division Int16 // Float32 returns Int16 floor_division Int16 // Float32 returns Int16 converts from Int128 to Int64 converts from Int128 to Int64 converts from UInt128 to Float64 converts from UInt128 to Float64 floor_division Float32 // UInt32 returns Float32 floor_division Float32 // UInt32 returns Float32 converts from UInt64 to UInt128 converts from UInt64 to UInt128 converts from Int64 to Int32 converts from Int64 to Int32 converts from Int32 to UInt32 converts from Int32 to UInt32 division between Int128 / Float64 returns Float64 division between Int128 / Float64 returns Float64 division between UInt32 / UInt8 returns Float64 division between UInt32 / UInt8 returns Float64 floor_division UInt128 // Int32 returns UInt128 floor_division UInt128 // Int32 returns UInt128 division between Float32 / UInt8 returns Float32 division between Float32 / UInt8 returns Float32 converts from UInt64 to Float64 converts from UInt64 to Float64 division between UInt64 / UInt64 returns Float64 division between UInt64 / UInt64 returns Float64 floor_division UInt64 // UInt32 returns UInt64 floor_division UInt64 // UInt32 returns UInt64 division between UInt8 / Int8 returns Float64 division between UInt8 / Int8 returns Float64 floor_division UInt8 // Float64 returns UInt8 floor_division UInt8 // Float64 returns UInt8 division between UInt32 / Float64 returns Float64 division between UInt32 / Float64 returns Float64 converts from Int8 to Float32 converts from Int8 to Float32 floor_division UInt64 // Float64 returns UInt64 floor_division UInt64 // Float64 returns UInt64 converts from UInt16 to Float32 converts from UInt16 to Float32 division between Int8 / Int64 returns Float64 division between Int8 / Int64 returns Float64 division between UInt32 / UInt64 returns Float64 division between UInt32 / UInt64 returns Float64 floor_division UInt64 // Int32 returns UInt64 floor_division UInt64 // Int32 returns UInt64 division between UInt8 / UInt128 returns Float64 division between UInt8 / UInt128 returns Float64 converts from Int16 to Int128 converts from Int16 to Int128 floor_division Int64 // UInt64 returns Int64 floor_division Int64 // UInt64 returns Int64 floor_division UInt128 // UInt64 returns UInt128 floor_division UInt128 // UInt64 returns UInt128 floor_division Float64 // Int128 returns Float64 floor_division Float64 // Int128 returns Float64 #round_even assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert converts from Float32 to UInt16 converts from Float32 to UInt16 converts from Int32 to Int64 converts from Int32 to Int64 converts from UInt16 to UInt8 converts from UInt16 to UInt8 floor_division Int16 // UInt32 returns Int16 floor_division Int16 // UInt32 returns Int16 converts from Float64 to Int128 converts from Float64 to Int128 converts from UInt128 to Int32 converts from UInt128 to Int32 converts from Float64 to Int8 converts from Float64 to Int8 floor_division Float64 // Float64 returns Float64 floor_division Float64 // Float64 returns Float64 converts from UInt8 to Int32 converts from UInt8 to Int32 division between Int32 / UInt32 returns Float64 division between Int32 / UInt32 returns Float64 division between Int8 / Int16 returns Float64 division between Int8 / Int16 returns Float64 converts from Int64 to Int32 converts from Int64 to Int32 floor_division UInt16 // UInt128 returns UInt16 floor_division UInt16 // UInt128 returns UInt16 floor_division UInt64 // UInt64 returns UInt64 floor_division UInt64 // UInt64 returns UInt64 floor_division UInt32 // Int8 returns UInt32 floor_division UInt32 // Int8 returns UInt32 division between UInt32 / Int32 returns Float64 division between UInt32 / Int32 returns Float64 floor_division UInt8 // Int32 returns UInt8 floor_division UInt8 // Int32 returns UInt8 initialize from value to Int16 initialize from value to Int16 division between Float32 / UInt64 returns Float32 division between Float32 / UInt64 returns Float32 converts from Int64 to UInt64 converts from Int64 to UInt64 converts from Int8 to Float64 converts from Int8 to Float64 floor_division Int8 // UInt8 returns Int8 floor_division Int8 // UInt8 returns Int8 division between Int32 / Int128 returns Float64 division between Int32 / Int128 returns Float64 converts from UInt16 to UInt32 converts from UInt16 to UInt32 floor_division Float32 // Int128 returns Float32 floor_division Float32 // Int128 returns Float32 significant 10 base 10 base 8 base 8 base preserves type preserves type 2 base 2 base converts from Float64 to UInt64 converts from Float64 to UInt64 converts from UInt8 to Float32 converts from UInt8 to Float32 division between UInt128 / Int128 returns Float64 division between UInt128 / Int128 returns Float64 division between Float64 / UInt64 returns Float64 division between Float64 / UInt64 returns Float64 floor_division UInt128 // Int64 returns UInt128 floor_division UInt128 // Int64 returns UInt128 converts from UInt8 to UInt64 converts from UInt8 to UInt64 floor_division UInt8 // UInt8 returns UInt8 floor_division UInt8 // UInt8 returns UInt8 converts from UInt8 to Int64 converts from UInt8 to Int64 division between Int128 / UInt128 returns Float64 division between Int128 / UInt128 returns Float64 converts from UInt16 to Float64 converts from UInt16 to Float64 floor_division Int128 // Float64 returns Int128 floor_division Int128 // Float64 returns Int128 division between UInt128 / Int8 returns Float64 division between UInt128 / Int8 returns Float64 division between UInt16 / Int128 returns Float64 division between UInt16 / Int128 returns Float64 floor_division Int64 // UInt8 returns Int64 floor_division Int64 // UInt8 returns Int64 converts from UInt128 to UInt128 converts from UInt128 to UInt128 converts from UInt8 to UInt64 converts from UInt8 to UInt64 floor_division Int128 // UInt8 returns Int128 floor_division Int128 // UInt8 returns Int128 division between Int32 / UInt64 returns Float64 division between Int32 / UInt64 returns Float64 converts from Int32 to Float64 converts from Int32 to Float64 floor_division UInt64 // Int16 returns UInt64 floor_division UInt64 // Int16 returns UInt64 converts from Int32 to Int16 converts from Int32 to Int16 converts from UInt32 to UInt8 converts from UInt32 to UInt8 floor_division UInt128 // UInt32 returns UInt128 floor_division UInt128 // UInt32 returns UInt128 division between UInt128 / Int16 returns Float64 division between UInt128 / Int16 returns Float64 converts from Int64 to UInt128 converts from Int64 to UInt128 converts from UInt128 to Int8 converts from UInt128 to Int8 converts from Int32 to UInt64 converts from Int32 to UInt64 floor_division Int128 // Int16 returns Int128 floor_division Int128 // Int16 returns Int128 initialize from value to UInt128 initialize from value to UInt128 converts from Int8 to UInt128 converts from Int8 to UInt128 converts from UInt16 to UInt8 converts from UInt16 to UInt8 division between Float32 / Int128 returns Float32 division between Float32 / Int128 returns Float32 division between Int64 / UInt64 returns Float64 division between Int64 / UInt64 returns Float64 converts from Float32 to UInt64 converts from Float32 to UInt64 floor_division Int32 // Int128 returns Int32 floor_division Int32 // Int128 returns Int32 initialize from value to Int8 initialize from value to Int8 converts from Float64 to Int16 converts from Float64 to Int16 floor_division UInt16 // Float64 returns UInt16 floor_division UInt16 // Float64 returns UInt16 floor_division Int16 // UInt128 returns Int16 floor_division Int16 // UInt128 returns Int16 converts from UInt128 to Int32 converts from UInt128 to Int32 converts from Int8 to Int64 converts from Int8 to Int64 division between Int32 / UInt8 returns Float64 division between Int32 / UInt8 returns Float64 division between Int64 / UInt32 returns Float64 division between Int64 / UInt32 returns Float64 floor_division UInt64 // UInt16 returns UInt64 floor_division UInt64 // UInt16 returns UInt64 converts from Int16 to UInt16 converts from Int16 to UInt16 converts from Int64 to Int8 converts from Int64 to Int8 converts from Float32 to Int16 converts from Float32 to Int16 unchecked initialize from value to Float64 unchecked initialize from value to Float64 converts from Float32 to Int32 converts from Float32 to Int32 converts from UInt8 to UInt128 converts from UInt8 to UInt128 converts from Int64 to UInt16 converts from Int64 to UInt16 floor_division Int8 // Float64 returns Int8 floor_division Int8 // Float64 returns Int8 floor_division Int16 // UInt16 returns Int16 floor_division Int16 // UInt16 returns Int16 initialize from value to UInt8 initialize from value to UInt8 converts from Int32 to Float64 converts from Int32 to Float64 floor_division Int128 // UInt16 returns Int128 floor_division Int128 // UInt16 returns Int128 converts from Int8 to UInt16 converts from Int8 to UInt16 floor_division Float32 // Int16 returns Float32 floor_division Float32 // Int16 returns Float32 converts from Float64 to UInt16 converts from Float64 to UInt16 converts from UInt8 to UInt8 converts from UInt8 to UInt8 converts from Int128 to UInt128 converts from Int128 to UInt128 converts from Int32 to Int64 converts from Int32 to Int64 converts from Int64 to UInt32 converts from Int64 to UInt32 division between UInt128 / Int32 returns Float64 division between UInt128 / Int32 returns Float64 converts from UInt64 to Int8 converts from UInt64 to Int8 floor_division Int32 // Int64 returns Int32 floor_division Int32 // Int64 returns Int32 converts from UInt32 to Int128 converts from UInt32 to Int128 converts from Int8 to UInt128 converts from Int8 to UInt128 floor_division UInt128 // Int16 returns UInt128 floor_division UInt128 // Int16 returns UInt128 converts from Int128 to Float32 converts from Int128 to Float32 converts from Int16 to Int128 converts from Int16 to Int128 converts from UInt16 to UInt128 converts from UInt16 to UInt128 converts from Int8 to UInt64 converts from Int8 to UInt64 division between UInt64 / UInt16 returns Float64 division between UInt64 / UInt16 returns Float64 division between UInt128 / Int64 returns Float64 division between UInt128 / Int64 returns Float64 division between Int32 / Int8 returns Float64 division between Int32 / Int8 returns Float64 converts from UInt128 to UInt32 converts from UInt128 to UInt32 converts from Int16 to Int64 converts from Int16 to Int64 division between Int32 / Int64 returns Float64 division between Int32 / Int64 returns Float64 floor_division UInt32 // UInt64 returns UInt32 floor_division UInt32 // UInt64 returns UInt32 converts from Int64 to UInt64 converts from Int64 to UInt64 converts from Float32 to UInt32 converts from Float32 to UInt32 converts from Int16 to UInt128 converts from Int16 to UInt128 floor_division Int64 // Int128 returns Int64 floor_division Int64 // Int128 returns Int64 floor_division Int32 // Float64 returns Int32 floor_division Int32 // Float64 returns Int32 converts from UInt8 to UInt32 converts from UInt8 to UInt32 converts from Float64 to Int128 converts from Float64 to Int128 floor_division Int8 // Float32 returns Int8 floor_division Int8 // Float32 returns Int8 converts from Float64 to UInt8 converts from Float64 to UInt8 floor_division Int8 // UInt64 returns Int8 floor_division Int8 // UInt64 returns Int8 division between Int128 / Int8 returns Float64 division between Int128 / Int8 returns Float64 converts from UInt32 to Int8 converts from UInt32 to Int8 division between UInt128 / UInt128 returns Float64 division between UInt128 / UInt128 returns Float64 converts from Int32 to UInt16 converts from Int32 to UInt16 floor_division UInt32 // Int32 returns UInt32 floor_division UInt32 // Int32 returns UInt32 division between Int128 / UInt64 returns Float64 division between Int128 / UInt64 returns Float64 floor_division Int32 // Float32 returns Int32 floor_division Int32 // Float32 returns Int32 division between UInt64 / UInt8 returns Float64 division between UInt64 / UInt8 returns Float64 converts from UInt128 to Float32 converts from UInt128 to Float32 converts from Int8 to Int32 converts from Int8 to Int32 floor_division UInt128 // UInt16 returns UInt128 floor_division UInt128 // UInt16 returns UInt128 floor_division Int8 // Int32 returns Int8 floor_division Int8 // Int32 returns Int8 floor_division UInt8 // UInt32 returns UInt8 floor_division UInt8 // UInt32 returns UInt8 converts from UInt8 to Int128 converts from UInt8 to Int128 converts from UInt8 to Float64 converts from UInt8 to Float64 floor_division Float64 // UInt64 returns Float64 floor_division Float64 // UInt64 returns Float64 division between UInt8 / UInt32 returns Float64 division between UInt8 / UInt32 returns Float64 converts from UInt8 to UInt128 converts from UInt8 to UInt128 floor_division Int64 // Int16 returns Int64 floor_division Int64 // Int16 returns Int64 division between UInt16 / Int16 returns Float64 division between UInt16 / Int16 returns Float64 division between Int128 / Int32 returns Float64 division between Int128 / Int32 returns Float64 floor_division Int64 // Int64 returns Int64 floor_division Int64 // Int64 returns Int64 converts from UInt16 to UInt64 converts from UInt16 to UInt64 converts from Float64 to Float64 converts from Float64 to Float64 converts from UInt64 to UInt16 converts from UInt64 to UInt16 initialize from value to UInt16 initialize from value to UInt16 OAuth2::AccessToken::Bearer dumps to json dumps to json builds from json builds from json authenticates request authenticates request builds from json with unknown key (#4437) builds from json with unknown key (#4437) builds from json without token_type, assumes Bearer (#4503) builds from json without token_type, assumes Bearer (#4503) builds from json without expires_in (#4041) builds from json without expires_in (#4041) Benchmark::IPS::Entry #set_cycles sets the number of cycles needed to make 100ms sets the number of cycles needed to make 100ms sets the cycles to 1 no matter what sets the cycles to 1 no matter what #human_mean assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #calculate_stats correctly calculates basic stats correctly calculates basic stats #human_iteration_time assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert HTTP::FormData::Parser parses formdata parses formdata __umodti3 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests HTML .escape escapes dangerous characters from a string escapes dangerous characters from a string does not change a safe string does not change a safe string .unescape unescapes javascript example from a string unescapes javascript example from a string invalid utf-8 invalid utf-8 identity identity named entities multi codepoint multi codepoint invalid entities invalid entities end of string end of string without trailing semicolon without trailing semicolon entity with numerical characters entity with numerical characters simple named entities simple named entities empty entity empty entity numeric entities hex hex does not escape unicode surrogate characters does not escape unicode surrogate characters decimal decimal does not escape noncharacter codepoints does not escape noncharacter codepoints space characters space characters does not unescape characters above Char::MAX_CODEPOINT does not unescape characters above Char::MAX_CODEPOINT ISO-8859-1 replacement ISO-8859-1 replacement does not escape non-space unicode control characters does not escape non-space unicode control characters early termination early termination does not unescape Char::MAX_CODEPOINT does not unescape Char::MAX_CODEPOINT ignores leading zeros ignores leading zeros HTTP::Params is alias for URI::Params is alias for URI::Params PrettyPrint pretty prints fill 23..26 pretty prints fill 23..26 pretty prints tree alt 19..20 pretty prints tree alt 19..20 tail group tail group pretty prints tree 20..22 pretty prints tree 20..22 pretty prints hello 0..6 pretty prints hello 0..6 pretty prints width 0 indent 23 pretty prints width 0 indent 23 pretty prints width 5 indent 20 pretty prints width 5 indent 20 pretty prints strict pretty 6..6 pretty prints strict pretty 6..6 pretty prints tree alt 50..50 pretty prints tree alt 50..50 pretty prints strict pretty 10..10 pretty prints strict pretty 10..10 pretty prints tree 23..43 pretty prints tree 23..43 pretty prints tree alt 0..18 pretty prints tree alt 0..18 pretty prints strict pretty 8..8 pretty prints strict pretty 8..8 pretty prints strict pretty 0..4 pretty prints strict pretty 0..4 pretty prints strict pretty 11..31 pretty prints strict pretty 11..31 pretty prints fill 7..10 pretty prints fill 7..10 pretty prints strict pretty 9..9 pretty prints strict pretty 9..9 pretty prints strict pretty 5..5 pretty prints strict pretty 5..5 pretty prints tree alt 21..49 pretty prints tree alt 21..49 pretty prints hello 11..12 pretty prints hello 11..12 pretty prints fill 0..6 pretty prints fill 0..6 pretty prints fill 19..22 pretty prints fill 19..22 pretty prints strict pretty 32..32 pretty prints strict pretty 32..32 pretty prints hello 9..10 pretty prints hello 9..10 pretty prints strict pretty 7..7 pretty prints strict pretty 7..7 pretty prints fill 27..27 pretty prints fill 27..27 pretty prints fill 15..18 pretty prints fill 15..18 pretty prints hello 7..8 pretty prints hello 7..8 pretty prints hello 13..13 pretty prints hello 13..13 pretty prints tree 0..19 pretty prints tree 0..19 pretty prints width 7 indent 20 pretty prints width 7 indent 20 pretty prints width 6 indent 20 pretty prints width 6 indent 20 pretty prints fill 11..14 pretty prints fill 11..14 pretty prints tree 44..44 pretty prints tree 44..44 Process::Status #signal_exit? #signal_exit? #exit_reason returns Aborted returns Aborted returns TerminalDisconnected returns TerminalDisconnected returns Breakpoint returns Breakpoint returns BadInstruction returns BadInstruction returns Normal returns Normal returns AccessViolation returns AccessViolation returns SessionEnded returns SessionEnded returns Interrupted returns Interrupted returns FloatException returns FloatException returns BadMemoryAccess returns BadMemoryAccess #exit_code #exit_code equality equality #inspect with exit signal with exit signal with exit status with exit status #success? #success? #signal_exit? with signal code #signal_exit? with signal code #to_s with exit status with exit status with exit signal with exit signal #normal_exit? #normal_exit? #exit_signal #exit_signal #normal_exit? with signal code #normal_exit? with signal code Double ** assert assert assert assert assert assert Socket::UNIXAddress transforms into a C struct and back transforms into a C struct and back to_s to_s #== #== .parse parses absolute parses absolute fails with missing path fails with missing path parses relative subpath parses relative subpath relative with relative with parses relative dot parses relative dot parses relative parses relative ignores params ignores params raises when path is too long raises when path is too long HTTP::Handler responds with not found if there's no next handler responds with not found if there's no next handler URI .reserved? .reserved? .from_json .from_json .set_default_port treats scheme case insensitively treats scheme case insensitively unregisters port for scheme unregisters port for scheme registers port for scheme registers port for scheme #normalize removes default port removes default port prefixes relative path with colon with `./` prefixes relative path with colon with `./` normalizes scheme normalizes scheme doesn't modify instance doesn't modify instance removes dot notation from path removes dot notation from path normalizes host normalizes host #normalize! modifies the instance modifies the instance #query_params when there is no query parameters returns an empty instance of URI::Params returns an empty instance of URI::Params returns a URI::Params instance based on the query parameters returns a URI::Params instance based on the query parameters .default_port returns nil for unknown schemes returns nil for unknown schemes treats scheme case insensitively treats scheme case insensitively returns default port for well known schemes returns default port for well known schemes #relativize fragment fragment opaque base opaque base ignore base path with dot-segments ignore base path with dot-segments path relative references path relative references RFC 3986: 5.4.2. Abnormal Examples RFC 3986: 5.4.2. Abnormal Examples RFC 3986: 5.4.1. Normal Examples RFC 3986: 5.4.1. Normal Examples identical identical relative base relative base encoded characters encoded characters ... ... absolute URI references absolute URI references #hash assert assert #query_params= params with values params with values empty empty .parse unescaped @ in user/password should not confuse host unescaped @ in user/password should not confuse host `https://alice@www.example.com` `https://alice@www.example.com` assert assert `test:/test` `test:/test` `/foo` `/foo` `http://[::1]:81/` `http://[::1]:81/` `http://:8000/foo` `http://:8000/foo` `foo/another@url/[]and{}` `foo/another@url/[]and{}` `http://[fe80::1%25en0]:8080/` `http://[fe80::1%25en0]:8080/` `file:///C:/FooBar/Baz.txt` `file:///C:/FooBar/Baz.txt` `/foo?q=1` `/foo?q=1` `http:?` `http:?` `https://alice:pa55w0rd@www.example.com` `https://alice:pa55w0rd@www.example.com` `magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn` `magnet:?xt=urn:btih:c12fe1c06bba254a9dc9f519b335aa7c1367a88a&dn` `tcp://[2020::2020:20:2020:2020%25Windows%20Loves%20Spaces]:2020` `tcp://[2020::2020:20:2020:2020%25Windows%20Loves%20Spaces]:2020` `http://?` `http://?` assert assert `http://www.example.com` `http://www.example.com` assert assert `tel:+1-816-555-1212` `tel:+1-816-555-1212` `http://user@` `http://user@` `http://www.example.com:81` `http://www.example.com:81` assert assert `https://alice:@www.example.com` `https://alice:@www.example.com` `?a+b=c%2Bd` `?a+b=c%2Bd` `///foo` `///foo` `http://#` `http://#` `?query=http://example.com` `?query=http://example.com` `telnet://192.0.2.16:80/` `telnet://192.0.2.16:80/` `news:comp.infosystems.www.servers.unix` `news:comp.infosystems.www.servers.unix` `//user@foo/path?q=b` `//user@foo/path?q=b` `http://192.0.2.16:81/` `http://192.0.2.16:81/` `http:` `http:` `http://www.example.com/foo?` `http://www.example.com/foo?` `http://:8000` `http://:8000` `http:#` `http:#` `http://www.example.com/foo?q=1` `http://www.example.com/foo?q=1` `?q=1` `?q=1` `https://%3AD:%40_%40@www.example.com` `https://%3AD:%40_%40@www.example.com` `http://www.foo-bar.example.com` `http://www.foo-bar.example.com` `mysql://a,b,c/bar` `mysql://a,b,c/bar` `http:?#` `http:?#` `http://www.example.com:81/` `http://www.example.com:81/` `file://localhost/etc/fstab` `file://localhost/etc/fstab` `file:///etc/fstab` `file:///etc/fstab` `https://example.com./` `https://example.com./` `?q=1?` `?q=1?` `http://[::1]:81` `http://[::1]:81` `scheme://!$&'()*+,;=hello!:12/path` `scheme://!$&'()*+,;=hello!:12/path` `mailto:foo@example.org` `mailto:foo@example.org` `//foo` `//foo` `//user:pass@bitfission.com:8080/path?a=b#frag` `//user:pass@bitfission.com:8080/path?a=b#frag` `http://www.example.com/foo` `http://www.example.com/foo` `http:` `http:` `http://www.example.com/` `http://www.example.com/` `https://example.com.:8443/` `https://example.com.:8443/` `ldap://[2001:db8::7]/c=GB?objectClass?one` `ldap://[2001:db8::7]/c=GB?objectClass?one` `http://?#` `http://?#` `https://www.example.com/#top` `https://www.example.com/#top` bad urls assert assert `http://192.0.2.16:81` `http://192.0.2.16:81` `/path?a=b#frag` `/path?a=b#frag` `http://` `http://` `urn:oasis:names:specification:docbook:dtd:xml:4.1.2` `urn:oasis:names:specification:docbook:dtd:xml:4.1.2` `http://user@/foo` `http://user@/foo` `http://host/!$&'()*+,;=:@[hello]` `http://host/!$&'()*+,;=:@[hello]` `http://user:pass@bitfission.com:8080/path?a=b#frag` `http://user:pass@bitfission.com:8080/path?a=b#frag` `http:.` `http:.` `http:example.com/?q=foo` `http:example.com/?q=foo` `http:..` `http:..` `http://example.com//foo` `http://example.com//foo` .unreserved? .unreserved? .encode_www_form encodes "10%" encodes "10%" encodes " ?&=#+%!<>#\"{}|\\^[]`☺\t:/@$'()*,;" encodes " ?&=#+%!<>#\"{}|\\^[]`☺\t:/@$'()*,;" encodes "" encodes "" encodes "a b+" encodes "a b+" encodes "abc" encodes "abc" encodes "a b+" encodes "a b+" encodes "* foo=bar baz&hello/" encodes "* foo=bar baz&hello/" encodes "1%41" encodes "1%41" #opaque? assert assert assert assert assert assert assert assert assert assert assert assert #to_json #to_json .encode_path .encode_path #absolute? assert assert assert assert assert assert assert assert assert assert assert assert #to_s assert assert assert assert assert assert assert assert preserves non-default port preserves non-default port assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert preserves port for unknown scheme preserves port for unknown scheme assert assert assert assert preserves port for nil scheme preserves port for nil scheme assert assert assert assert #request_target assert assert does not add '?' to the end if the query params are empty does not add '?' to the end if the query params are empty assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert .from_yaml .from_yaml .new with query params with query params .decode decodes "hello+world" decodes "hello+world" decodes "+%2B %20" decodes "+%2B %20" decodes "hello%2%2Bworld" decodes "hello%2%2Bworld" decodes "hello%2" decodes "hello%2" does not decode string when block returns true does not decode string when block returns true decodes "hello" decodes "hello" decodes "hello%2Bworld" decodes "hello%2Bworld" decodes "%27Stop%21%27+said+Fred" decodes "%27Stop%21%27+said+Fred" decodes "%e3%81%aa%e3%81%aa" decodes "%e3%81%aa%e3%81%aa" decodes "hello%" decodes "hello%" decodes "hello+world" decodes "hello+world" decodes "hello%2B" decodes "hello%2B" decodes "hello%20world" decodes "hello%20world" decodes "%E3%81%AA%E3%81%AA" decodes "%E3%81%AA%E3%81%AA" .unwrap_ipv6 .unwrap_ipv6 #hostname assert assert assert assert assert assert #== assert assert .encode_path_segment .encode_path_segment #resolve opaque URIs opaque URIs path relative references path relative references RFC 3986: 5.4.1. Normal Examples RFC 3986: 5.4.1. Normal Examples ... ... removes dot-segments removes dot-segments encoded characters encoded characters absolute URI references absolute URI references fragment fragment multiple slashes multiple slashes Extras Extras scheme-relative scheme-relative RFC 3986: 5.4.2. Abnormal Examples RFC 3986: 5.4.2. Abnormal Examples path-absolute URI references path-absolute URI references relative base relative base #userinfo assert assert assert assert assert assert assert assert #relative? assert assert .encode encodes "https://en.wikipedia.org/wiki/Crystal (programming language)" encodes "https://en.wikipedia.org/wiki/Crystal (programming language)" encodes "hello%2" encodes "hello%2" encodes "\n" encodes "\n" encodes "\xFF" encodes "\xFF" encodes "hello world" encodes "hello world" does not encode character when block returns true does not encode character when block returns true encodes "hello+world" encodes "hello+world" encodes "'Stop!' said Fred" encodes "'Stop!' said Fred" encodes "'Stop!' said Fred" encodes "'Stop!' said Fred" encodes "hello%" encodes "hello%" encodes "hello world" encodes "hello world" encodes "hello+" encodes "hello+" encodes "なな" encodes "なな" encodes "hello%2+world" encodes "hello%2+world" encodes "hello" encodes "hello" #to_yaml #to_yaml .decode_www_form decodes "1%41%42%43" decodes "1%41%42%43" decodes "abc" decodes "abc" decodes "" decodes "" encodes "hello+" encodes "hello+" encodes "'Stop!' said Fred" encodes "'Stop!' said Fred" decodes "a+b" decodes "a+b" decodes "123%45%6" decodes "123%45%6" encodes "hello+world" encodes "hello+world" decodes "%1" decodes "%1" decodes "%" decodes "%" decodes "1%41" decodes "1%41" decodes "+%2B %20" decodes "+%2B %20" encodes "hello%2+world" encodes "hello%2+world" decodes "a%20b" decodes "a%20b" decodes "%zzzzz" decodes "%zzzzz" decodes "%4a" decodes "%4a" decodes "%20%3F%26%3D%23%2B%25%21%3C%3E%23%22%7B%7D%7C%5C%5E%5B%5D%60%E2%98%BA%09%3A%2F%40%24%27%28%29%2A%2C%3B" decodes "%20%3F%26%3D%23%2B%25%21%3C%3E%23%22%7B%7D%7C%5C%5E%5B%5D%60%E2%98%BA%09%3A%2F%40%24%27%28%29%2A%2C%3B" #update_query_params commits changes to the URI::Object commits changes to the URI::Object returns self returns self #authority assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert UInt compares with <=> compares with <=> &- returns the wrapped negation returns the wrapped negation __mulodi4 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests LLVM::ABI::X86_64 size for pointer for pointer for integer for integer for struct for struct for array for array for float for float for double for double for packed struct for packed struct align for packed struct for packed struct for array for array for integer for integer for pointer for pointer for struct for struct for double for double for float for float abi_info does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with structs less than 64 bits does with structs less than 64 bits does with structs larger than 128 bits does with structs larger than 128 bits does with primitives does with primitives log/spec can get the entry matched by next can get the entry matched by next fails on non-consecutive logs fails on non-consecutive logs can capture from all sources can capture from all sources can capture with source pattern can capture with source pattern yield and returns the dsl yield and returns the dsl allows matching with regex allows matching with regex allows matching logs strictly allows matching logs strictly entries can be cleared entries can be cleared can capture in different checkers can capture in different checkers allows matching non-consecutive logs allows matching non-consecutive logs allows matching logs allows matching logs can get the entry matched by check can get the entry matched by check it does not capture below level it does not capture below level fails on non-empty logs fails on non-empty logs MIME::Multipart::Builder generates valid multipart messages generates valid multipart messages .preamble accepts different data types accepts different data types raises when called after starting the body raises when called after starting the body #content_type calculates the content type calculates the content type .epilogue raises when called after finishing raises when called after finishing accepts different data types accepts different data types raises when called with no body parts raises when called with no body parts generates valid multipart messages with preamble and epilogue generates valid multipart messages with preamble and epilogue .body_part raises when called after epilogue raises when called after epilogue raises when called after finishing raises when called after finishing accepts different data types accepts different data types .finish raises if already finished raises if already finished raises if no body exists raises if no body exists select select many receivers select many receivers non-blocking nil-on-close multi-channel types and exec when with nil if channel is closed while waiting (2) types and exec when with nil if channel is closed while waiting (2) exec else if no message was ready exec else if no message was ready types and exec when (1) types and exec when (1) types and exec when with nil if channel is closed while waiting (1) types and exec when with nil if channel is closed while waiting (1) types and exec when with nil if channel was closed (1) types and exec when with nil if channel was closed (1) types and exec when with nil if channel was closed (2) types and exec when with nil if channel was closed (2) types and exec when (2) types and exec when (2) select should work with send which started before receive, fixed #3862 select should work with send which started before receive, fixed #3862 non-blocking raise-on-close single-channel raises if channel was closed raises if channel was closed types and exec when if message was ready types and exec when if message was ready exec else if no message was ready exec else if no message was ready stress select with send/receive in multiple fibers stress select with send/receive in multiple fibers blocking nil-on-close multi-channel types and exec when with nil if channel was closed (2) types and exec when with nil if channel was closed (2) types and exec when with nil if channel is closed while waiting (1) types and exec when with nil if channel is closed while waiting (1) types and exec when (1) types and exec when (1) types and exec when (2) types and exec when (2) types and exec when with nil if channel is closed while waiting (2) types and exec when with nil if channel is closed while waiting (2) types and exec when with nil if channel was closed (1) types and exec when with nil if channel was closed (1) prioritize by order when entering in a select prioritize by order when entering in a select blocking raise-on-close multi-channel raises if channel was closed (1) raises if channel was closed (1) types and exec when (2) types and exec when (2) types and exec when (1) types and exec when (1) raises if channel was closed (2) raises if channel was closed (2) non-blocking nil-on-close single-channel types and exec when with nil if channel was closed types and exec when with nil if channel was closed types and exec when types and exec when exec else if no message was ready exec else if no message was ready non-blocking raise-on-close multi-channel types and exec when (1) types and exec when (1) types and exec when (2) types and exec when (2) exec else if no message was ready exec else if no message was ready raises if channel was closed (1) raises if channel was closed (1) raises if channel was closed (2) raises if channel was closed (2) select many senders select many senders select same channel multiple times select same channel multiple times select many receivers, senders select many receivers, senders blocking raise-on-close single-channel raises if channel was closed raises if channel was closed types and exec when types and exec when select fiber has one chance to be enqueued into scheduler (2) select fiber has one chance to be enqueued into scheduler (2) select fiber has one chance to be enqueued into scheduler (1) select fiber has one chance to be enqueued into scheduler (1) blocking nil-on-close single-channel types and exec when with nil if channel was closed types and exec when with nil if channel was closed types and exec when types and exec when GC .stats .stats raises if calling enable when not disabled raises if calling enable when not disabled .prof_stats .prof_stats compiles GC.stats compiles GC.stats JUnit Formatter reports successful results reports successful results encodes class names from the relative file path encodes class names from the relative file path report failure stacktrace if present report failure stacktrace if present outputs timestamp according to RFC 3339 outputs timestamp according to RFC 3339 reports mixed results reports mixed results reports skipped reports skipped report error stacktrace if present report error stacktrace if present escapes spec names escapes spec names reports errors reports errors reports failures reports failures Complex to_s to_s Math log10 log10 exp exp sqrt sqrt log log log2 log2 clones clones polar polar test multiplicative_identity test multiplicative_identity i i / complex / number complex / number number / complex number / complex complex / complex complex / complex phase phase test zero? test zero? inv inv cis cis inspect inspect sign infinity infinity real zero real zero imaginary zero imaginary zero complex zero complex zero finite, non-zero finite, non-zero not-a-number not-a-number conj conj - complex - complex complex - complex complex - number complex - number - complex - complex number - complex number - complex == complex == number complex == number complex == complex complex == complex number == complex number == complex * complex * complex complex * complex number * complex number * complex complex * number complex * number test additive_identity test additive_identity abs2 abs2 hashes real without imag like real only hashes real without imag like real only abs abs test zero test zero + number + complex number + complex complex + number complex + number complex + complex complex + complex + complex + complex rounds rounds as numbers division between Complex / UInt64 returns Complex division between Complex / UInt64 returns Complex division between UInt16 / Complex returns Complex division between UInt16 / Complex returns Complex converts from UInt8 to Complex converts from UInt8 to Complex division between Int8 / Complex returns Complex division between Int8 / Complex returns Complex division between Complex / UInt128 returns Complex division between Complex / UInt128 returns Complex converts from Int32 to Complex converts from Int32 to Complex converts from Complex to Int16 converts from Complex to Int16 converts from Float32 to Complex converts from Float32 to Complex converts from Complex to Int128 converts from Complex to Int128 converts from Float32 to Complex converts from Float32 to Complex converts from Complex to Int32 converts from Complex to Int32 converts from Complex to Float64 converts from Complex to Float64 converts from Complex to UInt64 converts from Complex to UInt64 converts from Int128 to Complex converts from Int128 to Complex division between Complex / Int128 returns Complex division between Complex / Int128 returns Complex converts from Complex to Int64 converts from Complex to Int64 division between Complex / Int32 returns Complex division between Complex / Int32 returns Complex division between Float64 / Complex returns Complex division between Float64 / Complex returns Complex converts from Complex to UInt8 converts from Complex to UInt8 division between Int128 / Complex returns Complex division between Int128 / Complex returns Complex converts from Int8 to Complex converts from Int8 to Complex division between Complex / Int16 returns Complex division between Complex / Int16 returns Complex division between Complex / UInt8 returns Complex division between Complex / UInt8 returns Complex division between Complex / Complex returns Complex division between Complex / Complex returns Complex division between Complex / UInt32 returns Complex division between Complex / UInt32 returns Complex converts from UInt64 to Complex converts from UInt64 to Complex converts from Complex to Int128 converts from Complex to Int128 converts from UInt64 to Complex converts from UInt64 to Complex converts from Int8 to Complex converts from Int8 to Complex converts from Int64 to Complex converts from Int64 to Complex converts from Complex to Float32 converts from Complex to Float32 converts from UInt8 to Complex converts from UInt8 to Complex division between Complex / UInt16 returns Complex division between Complex / UInt16 returns Complex converts from Complex to UInt128 converts from Complex to UInt128 division between Complex / Int8 returns Complex division between Complex / Int8 returns Complex converts from UInt16 to Complex converts from UInt16 to Complex division between Complex / Float32 returns Complex division between Complex / Float32 returns Complex division between Int16 / Complex returns Complex division between Int16 / Complex returns Complex converts from Complex to Int64 converts from Complex to Int64 converts from Complex to Int8 converts from Complex to Int8 division between Int64 / Complex returns Complex division between Int64 / Complex returns Complex converts from Int16 to Complex converts from Int16 to Complex converts from Complex to Int16 converts from Complex to Int16 converts from Complex to UInt8 converts from Complex to UInt8 division between Complex / Int64 returns Complex division between Complex / Int64 returns Complex division between UInt128 / Complex returns Complex division between UInt128 / Complex returns Complex converts from Complex to UInt16 converts from Complex to UInt16 converts from Int16 to Complex converts from Int16 to Complex division between Int32 / Complex returns Complex division between Int32 / Complex returns Complex converts from Complex to Complex converts from Complex to Complex converts from Complex to UInt32 converts from Complex to UInt32 converts from UInt128 to Complex converts from UInt128 to Complex converts from UInt16 to Complex converts from UInt16 to Complex division between UInt64 / Complex returns Complex division between UInt64 / Complex returns Complex converts from Int32 to Complex converts from Int32 to Complex division between Complex / Float64 returns Complex division between Complex / Float64 returns Complex converts from Int128 to Complex converts from Int128 to Complex converts from Complex to Int32 converts from Complex to Int32 converts from Float64 to Complex converts from Float64 to Complex division between Float32 / Complex returns Complex division between Float32 / Complex returns Complex converts from Float64 to Complex converts from Float64 to Complex converts from Complex to UInt64 converts from Complex to UInt64 converts from UInt32 to Complex converts from UInt32 to Complex converts from UInt128 to Complex converts from UInt128 to Complex converts from Complex to Float64 converts from Complex to Float64 converts from Complex to Int8 converts from Complex to Int8 converts from Complex to Complex converts from Complex to Complex converts from Int64 to Complex converts from Int64 to Complex converts from UInt32 to Complex converts from UInt32 to Complex division between UInt8 / Complex returns Complex division between UInt8 / Complex returns Complex converts from Complex to UInt16 converts from Complex to UInt16 division between UInt32 / Complex returns Complex division between UInt32 / Complex returns Complex converts from Complex to UInt32 converts from Complex to UInt32 converts from Complex to UInt128 converts from Complex to UInt128 converts from Complex to Float32 converts from Complex to Float32 Big* as numbers floor_division BigInt // BigDecimal returns BigInt floor_division BigInt // BigDecimal returns BigInt floor_division UInt32 // BigFloat returns UInt32 floor_division UInt32 // BigFloat returns UInt32 floor_division UInt8 // BigInt returns UInt8 floor_division UInt8 // BigInt returns UInt8 converts from BigDecimal to Float64 converts from BigDecimal to Float64 division between BigFloat / Int64 returns BigFloat division between BigFloat / Int64 returns BigFloat converts from UInt32 to BigInt converts from UInt32 to BigInt converts from Float32 to BigDecimal converts from Float32 to BigDecimal division between UInt32 / BigRational returns BigRational division between UInt32 / BigRational returns BigRational division between Int64 / BigInt returns BigFloat division between Int64 / BigInt returns BigFloat converts from Float64 to BigFloat converts from Float64 to BigFloat converts from BigDecimal to UInt64 converts from BigDecimal to UInt64 converts from Int64 to BigDecimal converts from Int64 to BigDecimal floor_division BigRational // Float32 returns BigRational floor_division BigRational // Float32 returns BigRational floor_division Float64 // BigInt returns Float64 floor_division Float64 // BigInt returns Float64 division between Int32 / BigFloat returns BigFloat division between Int32 / BigFloat returns BigFloat division between BigDecimal / UInt128 returns BigDecimal division between BigDecimal / UInt128 returns BigDecimal converts from BigFloat to BigRational converts from BigFloat to BigRational converts from BigInt to UInt16 converts from BigInt to UInt16 division between BigInt / UInt32 returns BigFloat division between BigInt / UInt32 returns BigFloat converts from BigDecimal to Int16 converts from BigDecimal to Int16 converts from BigInt to BigInt converts from BigInt to BigInt floor_division BigInt // UInt32 returns BigInt floor_division BigInt // UInt32 returns BigInt converts from BigFloat to BigFloat converts from BigFloat to BigFloat converts from UInt64 to BigDecimal converts from UInt64 to BigDecimal division between Int128 / BigInt returns BigFloat division between Int128 / BigInt returns BigFloat converts from BigDecimal to BigFloat converts from BigDecimal to BigFloat division between Float64 / BigRational returns BigRational division between Float64 / BigRational returns BigRational division between BigRational / UInt16 returns BigRational division between BigRational / UInt16 returns BigRational division between BigDecimal / BigInt returns BigDecimal division between BigDecimal / BigInt returns BigDecimal division between BigRational / BigRational returns BigRational division between BigRational / BigRational returns BigRational floor_division BigDecimal // BigDecimal returns BigDecimal floor_division BigDecimal // BigDecimal returns BigDecimal converts from BigInt to Float64 converts from BigInt to Float64 converts from Int8 to BigFloat converts from Int8 to BigFloat converts from BigRational to BigRational converts from BigRational to BigRational converts from BigRational to Float32 converts from BigRational to Float32 division between BigRational / BigInt returns BigRational division between BigRational / BigInt returns BigRational division between Float32 / BigDecimal returns BigDecimal division between Float32 / BigDecimal returns BigDecimal converts from BigDecimal to Int8 converts from BigDecimal to Int8 converts from UInt32 to BigFloat converts from UInt32 to BigFloat division between BigInt / Int128 returns BigFloat division between BigInt / Int128 returns BigFloat converts from UInt64 to BigInt converts from UInt64 to BigInt converts from Int32 to BigDecimal converts from Int32 to BigDecimal division between BigDecimal / Int8 returns BigDecimal division between BigDecimal / Int8 returns BigDecimal converts from BigDecimal to UInt32 converts from BigDecimal to UInt32 division between BigRational / UInt8 returns BigRational division between BigRational / UInt8 returns BigRational floor_division BigRational // BigFloat returns BigRational floor_division BigRational // BigFloat returns BigRational converts from BigFloat to Int16 converts from BigFloat to Int16 division between UInt128 / BigRational returns BigRational division between UInt128 / BigRational returns BigRational converts from BigFloat to Int32 converts from BigFloat to Int32 division between BigRational / UInt32 returns BigRational division between BigRational / UInt32 returns BigRational floor_division BigFloat // UInt16 returns BigFloat floor_division BigFloat // UInt16 returns BigFloat converts from BigDecimal to Int32 converts from BigDecimal to Int32 converts from Int64 to BigFloat converts from Int64 to BigFloat division between BigInt / BigFloat returns BigFloat division between BigInt / BigFloat returns BigFloat converts from BigInt to UInt8 converts from BigInt to UInt8 converts from Int16 to BigRational converts from Int16 to BigRational initialize from value to BigFloat initialize from value to BigFloat division between BigFloat / Float64 returns BigFloat division between BigFloat / Float64 returns BigFloat floor_division BigRational // BigRational returns BigRational floor_division BigRational // BigRational returns BigRational floor_division BigRational // BigDecimal returns BigRational floor_division BigRational // BigDecimal returns BigRational floor_division UInt8 // BigRational returns UInt8 floor_division UInt8 // BigRational returns UInt8 converts from BigDecimal to BigInt converts from BigDecimal to BigInt converts from BigRational to BigFloat converts from BigRational to BigFloat division between BigInt / Int16 returns BigFloat division between BigInt / Int16 returns BigFloat floor_division BigFloat // Int64 returns BigFloat floor_division BigFloat // Int64 returns BigFloat division between UInt64 / BigRational returns BigRational division between UInt64 / BigRational returns BigRational converts from BigInt to BigInt converts from BigInt to BigInt division between BigDecimal / Int64 returns BigDecimal division between BigDecimal / Int64 returns BigDecimal converts from BigInt to BigDecimal converts from BigInt to BigDecimal converts from BigDecimal to Float64 converts from BigDecimal to Float64 converts from Int16 to BigFloat converts from Int16 to BigFloat converts from UInt8 to BigInt converts from UInt8 to BigInt converts from BigDecimal to BigFloat converts from BigDecimal to BigFloat converts from Int32 to BigFloat converts from Int32 to BigFloat division between BigInt / BigDecimal returns BigDecimal division between BigInt / BigDecimal returns BigDecimal division between BigDecimal / UInt64 returns BigDecimal division between BigDecimal / UInt64 returns BigDecimal floor_division BigInt // Float64 returns BigInt floor_division BigInt // Float64 returns BigInt division between BigFloat / Int32 returns BigFloat division between BigFloat / Int32 returns BigFloat division between BigFloat / BigFloat returns BigFloat division between BigFloat / BigFloat returns BigFloat floor_division BigDecimal // Int16 returns BigDecimal floor_division BigDecimal // Int16 returns BigDecimal converts from BigFloat to UInt8 converts from BigFloat to UInt8 division between BigFloat / UInt16 returns BigFloat division between BigFloat / UInt16 returns BigFloat floor_division UInt16 // BigInt returns UInt16 floor_division UInt16 // BigInt returns UInt16 division between Int16 / BigInt returns BigFloat division between Int16 / BigInt returns BigFloat floor_division BigDecimal // UInt64 returns BigDecimal floor_division BigDecimal // UInt64 returns BigDecimal converts from UInt64 to BigFloat converts from UInt64 to BigFloat floor_division UInt32 // BigDecimal returns UInt32 floor_division UInt32 // BigDecimal returns UInt32 floor_division Int16 // BigDecimal returns Int16 floor_division Int16 // BigDecimal returns Int16 division between Int32 / BigDecimal returns BigDecimal division between Int32 / BigDecimal returns BigDecimal division between UInt128 / BigDecimal returns BigDecimal division between UInt128 / BigDecimal returns BigDecimal floor_division BigInt // Int64 returns BigInt floor_division BigInt // Int64 returns BigInt converts from UInt8 to BigRational converts from UInt8 to BigRational division between BigDecimal / Int128 returns BigDecimal division between BigDecimal / Int128 returns BigDecimal converts from Int8 to BigFloat converts from Int8 to BigFloat division between BigFloat / Float32 returns BigFloat division between BigFloat / Float32 returns BigFloat converts from BigDecimal to UInt8 converts from BigDecimal to UInt8 converts from UInt64 to BigDecimal converts from UInt64 to BigDecimal converts from BigRational to BigDecimal converts from BigRational to BigDecimal converts from Int32 to BigInt converts from Int32 to BigInt converts from BigDecimal to UInt32 converts from BigDecimal to UInt32 converts from BigRational to UInt16 converts from BigRational to UInt16 floor_division BigFloat // Float64 returns BigFloat floor_division BigFloat // Float64 returns BigFloat floor_division BigFloat // Int16 returns BigFloat floor_division BigFloat // Int16 returns BigFloat converts from BigFloat to Float64 converts from BigFloat to Float64 converts from BigRational to UInt8 converts from BigRational to UInt8 division between UInt32 / BigDecimal returns BigDecimal division between UInt32 / BigDecimal returns BigDecimal floor_division BigFloat // UInt8 returns BigFloat floor_division BigFloat // UInt8 returns BigFloat floor_division BigFloat // UInt64 returns BigFloat floor_division BigFloat // UInt64 returns BigFloat converts from BigFloat to Int8 converts from BigFloat to Int8 converts from UInt32 to BigInt converts from UInt32 to BigInt floor_division BigDecimal // Float32 returns BigDecimal floor_division BigDecimal // Float32 returns BigDecimal floor_division Float64 // BigFloat returns Float64 floor_division Float64 // BigFloat returns Float64 division between Int32 / BigRational returns BigRational division between Int32 / BigRational returns BigRational division between BigDecimal / BigRational returns BigRational division between BigDecimal / BigRational returns BigRational floor_division UInt64 // BigFloat returns UInt64 floor_division UInt64 // BigFloat returns UInt64 division between Int32 / BigInt returns BigFloat division between Int32 / BigInt returns BigFloat floor_division Int8 // BigDecimal returns Int8 floor_division Int8 // BigDecimal returns Int8 converts from BigDecimal to UInt16 converts from BigDecimal to UInt16 division between Float32 / BigRational returns BigRational division between Float32 / BigRational returns BigRational converts from BigRational to Int32 converts from BigRational to Int32 converts from BigFloat to Int16 converts from BigFloat to Int16 converts from UInt16 to BigFloat converts from UInt16 to BigFloat division between UInt16 / BigRational returns BigRational division between UInt16 / BigRational returns BigRational converts from Int32 to BigInt converts from Int32 to BigInt division between BigInt / Int64 returns BigFloat division between BigInt / Int64 returns BigFloat converts from Float32 to BigDecimal converts from Float32 to BigDecimal converts from BigInt to UInt16 converts from BigInt to UInt16 floor_division Int32 // BigInt returns Int32 floor_division Int32 // BigInt returns Int32 division between BigRational / BigDecimal returns BigRational division between BigRational / BigDecimal returns BigRational floor_division UInt64 // BigDecimal returns UInt64 floor_division UInt64 // BigDecimal returns UInt64 division between Int64 / BigRational returns BigRational division between Int64 / BigRational returns BigRational division between BigFloat / Int8 returns BigFloat division between BigFloat / Int8 returns BigFloat converts from Float32 to BigRational converts from Float32 to BigRational converts from BigFloat to UInt32 converts from BigFloat to UInt32 converts from BigFloat to Int64 converts from BigFloat to Int64 division between Int16 / BigDecimal returns BigDecimal division between Int16 / BigDecimal returns BigDecimal converts from Int16 to BigRational converts from Int16 to BigRational converts from Float64 to BigRational converts from Float64 to BigRational converts from BigRational to BigInt converts from BigRational to BigInt converts from BigRational to Int8 converts from BigRational to Int8 converts from BigInt to Int16 converts from BigInt to Int16 converts from BigFloat to Float32 converts from BigFloat to Float32 converts from Int64 to BigRational converts from Int64 to BigRational converts from Int16 to BigInt converts from Int16 to BigInt converts from Int64 to BigDecimal converts from Int64 to BigDecimal converts from BigFloat to UInt8 converts from BigFloat to UInt8 converts from UInt32 to BigFloat converts from UInt32 to BigFloat floor_division BigDecimal // Float64 returns BigDecimal floor_division BigDecimal // Float64 returns BigDecimal converts from Int32 to BigFloat converts from Int32 to BigFloat converts from Float32 to BigInt converts from Float32 to BigInt converts from Int64 to BigFloat converts from Int64 to BigFloat division between BigRational / Int64 returns BigRational division between BigRational / Int64 returns BigRational division between BigRational / Float32 returns BigRational division between BigRational / Float32 returns BigRational floor_division Int64 // BigInt returns Int64 floor_division Int64 // BigInt returns Int64 division between UInt16 / BigDecimal returns BigDecimal division between UInt16 / BigDecimal returns BigDecimal floor_division Int32 // BigRational returns Int32 floor_division Int32 // BigRational returns Int32 division between BigDecimal / BigDecimal returns BigDecimal division between BigDecimal / BigDecimal returns BigDecimal floor_division BigDecimal // Int64 returns BigDecimal floor_division BigDecimal // Int64 returns BigDecimal converts from Int64 to BigInt converts from Int64 to BigInt floor_division UInt64 // BigInt returns UInt64 floor_division UInt64 // BigInt returns UInt64 converts from Int16 to BigInt converts from Int16 to BigInt floor_division BigFloat // BigRational returns BigFloat floor_division BigFloat // BigRational returns BigFloat division between Int16 / BigFloat returns BigFloat division between Int16 / BigFloat returns BigFloat division between UInt64 / BigDecimal returns BigDecimal division between UInt64 / BigDecimal returns BigDecimal division between BigRational / UInt128 returns BigRational division between BigRational / UInt128 returns BigRational division between BigDecimal / UInt8 returns BigDecimal division between BigDecimal / UInt8 returns BigDecimal converts from UInt8 to BigInt converts from UInt8 to BigInt floor_division Int8 // BigRational returns Int8 floor_division Int8 // BigRational returns Int8 floor_division Float32 // BigFloat returns Float32 floor_division Float32 // BigFloat returns Float32 division between BigDecimal / Float32 returns BigDecimal division between BigDecimal / Float32 returns BigDecimal converts from UInt8 to BigRational converts from UInt8 to BigRational converts from BigDecimal to BigDecimal converts from BigDecimal to BigDecimal floor_division BigInt // UInt64 returns BigInt floor_division BigInt // UInt64 returns BigInt converts from BigInt to Int16 converts from BigInt to Int16 converts from Int16 to BigDecimal converts from Int16 to BigDecimal converts from BigInt to Int8 converts from BigInt to Int8 division between UInt64 / BigInt returns BigFloat division between UInt64 / BigInt returns BigFloat floor_division UInt16 // BigFloat returns UInt16 floor_division UInt16 // BigFloat returns UInt16 division between BigInt / UInt64 returns BigFloat division between BigInt / UInt64 returns BigFloat floor_division BigRational // Int64 returns BigRational floor_division BigRational // Int64 returns BigRational converts from BigRational to BigFloat converts from BigRational to BigFloat converts from BigInt to BigRational converts from BigInt to BigRational division between BigRational / Float64 returns BigRational division between BigRational / Float64 returns BigRational converts from BigRational to Int64 converts from BigRational to Int64 converts from UInt8 to BigDecimal converts from UInt8 to BigDecimal division between BigDecimal / BigFloat returns BigDecimal division between BigDecimal / BigFloat returns BigDecimal floor_division BigRational // Int8 returns BigRational floor_division BigRational // Int8 returns BigRational floor_division Int16 // BigFloat returns Int16 floor_division Int16 // BigFloat returns Int16 floor_division BigDecimal // UInt16 returns BigDecimal floor_division BigDecimal // UInt16 returns BigDecimal converts from BigDecimal to BigRational converts from BigDecimal to BigRational floor_division UInt16 // BigRational returns UInt16 floor_division UInt16 // BigRational returns UInt16 floor_division BigRational // BigInt returns BigRational floor_division BigRational // BigInt returns BigRational floor_division UInt8 // BigFloat returns UInt8 floor_division UInt8 // BigFloat returns UInt8 division between Int8 / BigDecimal returns BigDecimal division between Int8 / BigDecimal returns BigDecimal floor_division Int64 // BigDecimal returns Int64 floor_division Int64 // BigDecimal returns Int64 floor_division BigRational // UInt16 returns BigRational floor_division BigRational // UInt16 returns BigRational converts from Float64 to BigDecimal converts from Float64 to BigDecimal converts from BigInt to UInt64 converts from BigInt to UInt64 floor_division BigDecimal // UInt32 returns BigDecimal floor_division BigDecimal // UInt32 returns BigDecimal floor_division Int16 // BigRational returns Int16 floor_division Int16 // BigRational returns Int16 converts from BigInt to Int8 converts from BigInt to Int8 converts from BigInt to UInt32 converts from BigInt to UInt32 converts from BigDecimal to UInt64 converts from BigDecimal to UInt64 division between BigFloat / UInt8 returns BigFloat division between BigFloat / UInt8 returns BigFloat floor_division UInt8 // BigDecimal returns UInt8 floor_division UInt8 // BigDecimal returns UInt8 floor_division UInt16 // BigDecimal returns UInt16 floor_division UInt16 // BigDecimal returns UInt16 floor_division BigFloat // UInt32 returns BigFloat floor_division BigFloat // UInt32 returns BigFloat division between BigInt / Int8 returns BigFloat division between BigInt / Int8 returns BigFloat converts from UInt16 to BigRational converts from UInt16 to BigRational initialize from value to BigInt initialize from value to BigInt converts from Int64 to BigInt converts from Int64 to BigInt floor_division BigDecimal // BigRational returns BigDecimal floor_division BigDecimal // BigRational returns BigDecimal converts from Int32 to BigRational converts from Int32 to BigRational converts from Int16 to BigFloat converts from Int16 to BigFloat converts from BigRational to Int8 converts from BigRational to Int8 converts from BigInt to BigRational converts from BigInt to BigRational converts from BigDecimal to Int16 converts from BigDecimal to Int16 converts from BigRational to UInt64 converts from BigRational to UInt64 converts from Int32 to BigDecimal converts from Int32 to BigDecimal converts from BigFloat to BigInt converts from BigFloat to BigInt converts from BigFloat to BigDecimal converts from BigFloat to BigDecimal converts from BigInt to BigFloat converts from BigInt to BigFloat floor_division BigDecimal // UInt8 returns BigDecimal floor_division BigDecimal // UInt8 returns BigDecimal converts from Float64 to BigFloat converts from Float64 to BigFloat floor_division BigRational // Float64 returns BigRational floor_division BigRational // Float64 returns BigRational division between Float32 / BigInt returns BigFloat division between Float32 / BigInt returns BigFloat floor_division BigFloat // Float32 returns BigFloat floor_division BigFloat // Float32 returns BigFloat division between UInt8 / BigDecimal returns BigDecimal division between UInt8 / BigDecimal returns BigDecimal division between BigFloat / UInt32 returns BigFloat division between BigFloat / UInt32 returns BigFloat floor_division Int64 // BigRational returns Int64 floor_division Int64 // BigRational returns Int64 converts from Float64 to BigDecimal converts from Float64 to BigDecimal converts from BigRational to Int32 converts from BigRational to Int32 converts from BigRational to Float64 converts from BigRational to Float64 division between BigRational / BigRational returns BigRational division between BigRational / BigRational returns BigRational floor_division BigInt // BigRational returns BigInt floor_division BigInt // BigRational returns BigInt floor_division Float32 // BigInt returns Float32 floor_division Float32 // BigInt returns Float32 division between BigInt / Float64 returns BigFloat division between BigInt / Float64 returns BigFloat converts from BigInt to Float64 converts from BigInt to Float64 converts from BigDecimal to UInt16 converts from BigDecimal to UInt16 converts from BigInt to UInt64 converts from BigInt to UInt64 converts from Int8 to BigDecimal converts from Int8 to BigDecimal converts from Int8 to BigRational converts from Int8 to BigRational division between Int128 / BigDecimal returns BigDecimal division between Int128 / BigDecimal returns BigDecimal converts from BigFloat to BigFloat converts from BigFloat to BigFloat converts from Int8 to BigRational converts from Int8 to BigRational converts from BigFloat to Int64 converts from BigFloat to Int64 floor_division BigInt // Int8 returns BigInt floor_division BigInt // Int8 returns BigInt converts from UInt16 to BigFloat converts from UInt16 to BigFloat converts from BigRational to UInt16 converts from BigRational to UInt16 floor_division BigRational // Int16 returns BigRational floor_division BigRational // Int16 returns BigRational floor_division BigFloat // BigFloat returns BigFloat floor_division BigFloat // BigFloat returns BigFloat converts from BigInt to Float32 converts from BigInt to Float32 division between BigFloat / Int128 returns BigFloat division between BigFloat / Int128 returns BigFloat converts from BigInt to Int64 converts from BigInt to Int64 converts from UInt32 to BigDecimal converts from UInt32 to BigDecimal converts from Float32 to BigInt converts from Float32 to BigInt converts from BigDecimal to Float32 converts from BigDecimal to Float32 converts from BigFloat to Float32 converts from BigFloat to Float32 floor_division Int32 // BigDecimal returns Int32 floor_division Int32 // BigDecimal returns Int32 division between UInt8 / BigFloat returns BigFloat division between UInt8 / BigFloat returns BigFloat division between BigInt / UInt8 returns BigFloat division between BigInt / UInt8 returns BigFloat converts from BigDecimal to Int32 converts from BigDecimal to Int32 division between BigDecimal / Int32 returns BigDecimal division between BigDecimal / Int32 returns BigDecimal converts from BigInt to Int64 converts from BigInt to Int64 converts from BigFloat to BigRational converts from BigFloat to BigRational converts from Float32 to BigRational converts from Float32 to BigRational division between Int64 / BigDecimal returns BigDecimal division between Int64 / BigDecimal returns BigDecimal floor_division Int16 // BigInt returns Int16 floor_division Int16 // BigInt returns Int16 division between BigRational / UInt64 returns BigRational division between BigRational / UInt64 returns BigRational converts from BigInt to Int32 converts from BigInt to Int32 converts from BigRational to Int64 converts from BigRational to Int64 initialize from value to BigRational initialize from value to BigRational converts from BigRational to UInt32 converts from BigRational to UInt32 converts from UInt64 to BigRational converts from UInt64 to BigRational floor_division BigInt // UInt16 returns BigInt floor_division BigInt // UInt16 returns BigInt division between UInt8 / BigRational returns BigRational division between UInt8 / BigRational returns BigRational division between BigRational / BigFloat returns BigRational division between BigRational / BigFloat returns BigRational division between BigFloat / BigDecimal returns BigDecimal division between BigFloat / BigDecimal returns BigDecimal division between Int64 / BigFloat returns BigFloat division between Int64 / BigFloat returns BigFloat converts from BigRational to Int16 converts from BigRational to Int16 floor_division BigRational // Int32 returns BigRational floor_division BigRational // Int32 returns BigRational division between BigRational / Int128 returns BigRational division between BigRational / Int128 returns BigRational converts from BigDecimal to BigInt converts from BigDecimal to BigInt division between UInt128 / BigFloat returns BigFloat division between UInt128 / BigFloat returns BigFloat converts from BigFloat to UInt64 converts from BigFloat to UInt64 division between UInt32 / BigInt returns BigFloat division between UInt32 / BigInt returns BigFloat division between BigInt / BigRational returns BigRational division between BigInt / BigRational returns BigRational converts from BigFloat to UInt64 converts from BigFloat to UInt64 division between UInt64 / BigFloat returns BigFloat division between UInt64 / BigFloat returns BigFloat converts from Int8 to BigInt converts from Int8 to BigInt division between BigFloat / UInt64 returns BigFloat division between BigFloat / UInt64 returns BigFloat converts from UInt32 to BigDecimal converts from UInt32 to BigDecimal division between BigFloat / UInt128 returns BigFloat division between BigFloat / UInt128 returns BigFloat converts from BigDecimal to BigRational converts from BigDecimal to BigRational converts from UInt64 to BigInt converts from UInt64 to BigInt converts from BigDecimal to UInt8 converts from BigDecimal to UInt8 converts from BigFloat to Float64 converts from BigFloat to Float64 floor_division BigRational // UInt64 returns BigRational floor_division BigRational // UInt64 returns BigRational converts from BigFloat to BigDecimal converts from BigFloat to BigDecimal floor_division BigInt // Int16 returns BigInt floor_division BigInt // Int16 returns BigInt floor_division Int32 // BigFloat returns Int32 floor_division Int32 // BigFloat returns Int32 converts from Int8 to BigInt converts from Int8 to BigInt converts from BigFloat to UInt32 converts from BigFloat to UInt32 division between BigInt / Int32 returns BigFloat division between BigInt / Int32 returns BigFloat converts from BigDecimal to BigDecimal converts from BigDecimal to BigDecimal converts from BigInt to Float32 converts from BigInt to Float32 converts from Float64 to BigInt converts from Float64 to BigInt converts from UInt16 to BigDecimal converts from UInt16 to BigDecimal division between Float64 / BigDecimal returns BigDecimal division between Float64 / BigDecimal returns BigDecimal floor_division BigFloat // Int32 returns BigFloat floor_division BigFloat // Int32 returns BigFloat division between Int8 / BigInt returns BigFloat division between Int8 / BigInt returns BigFloat converts from UInt16 to BigRational converts from UInt16 to BigRational division between Int128 / BigRational returns BigRational division between Int128 / BigRational returns BigRational converts from BigFloat to Int8 converts from BigFloat to Int8 converts from UInt8 to BigDecimal converts from UInt8 to BigDecimal division between Int8 / BigFloat returns BigFloat division between Int8 / BigFloat returns BigFloat converts from UInt8 to BigFloat converts from UInt8 to BigFloat division between BigRational / Int8 returns BigRational division between BigRational / Int8 returns BigRational division between Int16 / BigRational returns BigRational division between Int16 / BigRational returns BigRational converts from BigInt to UInt8 converts from BigInt to UInt8 converts from Float64 to BigInt converts from Float64 to BigInt floor_division BigFloat // BigDecimal returns BigFloat floor_division BigFloat // BigDecimal returns BigFloat floor_division BigDecimal // Int8 returns BigDecimal floor_division BigDecimal // Int8 returns BigDecimal division between BigDecimal / UInt32 returns BigDecimal division between BigDecimal / UInt32 returns BigDecimal converts from BigInt to Int32 converts from BigInt to Int32 converts from BigInt to BigDecimal converts from BigInt to BigDecimal division between UInt128 / BigInt returns BigFloat division between UInt128 / BigInt returns BigFloat converts from BigRational to Float64 converts from BigRational to Float64 division between BigFloat / Int16 returns BigFloat division between BigFloat / Int16 returns BigFloat floor_division BigRational // UInt8 returns BigRational floor_division BigRational // UInt8 returns BigRational floor_division BigFloat // BigInt returns BigFloat floor_division BigFloat // BigInt returns BigFloat division between BigInt / BigInt returns BigFloat division between BigInt / BigInt returns BigFloat division between Float64 / BigFloat returns BigFloat division between Float64 / BigFloat returns BigFloat floor_division BigDecimal // BigFloat returns BigDecimal floor_division BigDecimal // BigFloat returns BigDecimal converts from Float32 to BigFloat converts from Float32 to BigFloat division between UInt32 / BigFloat returns BigFloat division between UInt32 / BigFloat returns BigFloat converts from BigInt to UInt32 converts from BigInt to UInt32 converts from UInt16 to BigDecimal converts from UInt16 to BigDecimal initialize from value to BigDecimal initialize from value to BigDecimal division between Float32 / BigFloat returns BigFloat division between Float32 / BigFloat returns BigFloat division between BigDecimal / Float64 returns BigDecimal division between BigDecimal / Float64 returns BigDecimal floor_division BigInt // Int32 returns BigInt floor_division BigInt // Int32 returns BigInt converts from BigDecimal to Int64 converts from BigDecimal to Int64 converts from BigDecimal to Int64 converts from BigDecimal to Int64 converts from BigRational to Int16 converts from BigRational to Int16 division between BigDecimal / Int16 returns BigDecimal division between BigDecimal / Int16 returns BigDecimal floor_division UInt32 // BigInt returns UInt32 floor_division UInt32 // BigInt returns UInt32 floor_division BigFloat // Int8 returns BigFloat floor_division BigFloat // Int8 returns BigFloat floor_division BigInt // BigInt returns BigInt floor_division BigInt // BigInt returns BigInt floor_division Float64 // BigDecimal returns Float64 floor_division Float64 // BigDecimal returns Float64 division between UInt16 / BigInt returns BigFloat division between UInt16 / BigInt returns BigFloat division between Float64 / BigInt returns BigFloat division between Float64 / BigInt returns BigFloat converts from UInt64 to BigFloat converts from UInt64 to BigFloat division between BigDecimal / BigDecimal returns BigDecimal division between BigDecimal / BigDecimal returns BigDecimal floor_division Float32 // BigDecimal returns Float32 floor_division Float32 // BigDecimal returns Float32 converts from UInt32 to BigRational converts from UInt32 to BigRational converts from BigRational to UInt32 converts from BigRational to UInt32 converts from BigFloat to Int32 converts from BigFloat to Int32 division between BigInt / UInt16 returns BigFloat division between BigInt / UInt16 returns BigFloat floor_division Int8 // BigInt returns Int8 floor_division Int8 // BigInt returns Int8 converts from BigRational to UInt64 converts from BigRational to UInt64 converts from UInt8 to BigFloat converts from UInt8 to BigFloat division between UInt8 / BigInt returns BigFloat division between UInt8 / BigInt returns BigFloat converts from BigRational to BigDecimal converts from BigRational to BigDecimal converts from BigRational to BigInt converts from BigRational to BigInt converts from UInt16 to BigInt converts from UInt16 to BigInt converts from BigDecimal to Float32 converts from BigDecimal to Float32 converts from BigFloat to UInt16 converts from BigFloat to UInt16 converts from UInt16 to BigInt converts from UInt16 to BigInt converts from BigRational to BigRational converts from BigRational to BigRational converts from BigRational to UInt8 converts from BigRational to UInt8 division between BigRational / Int16 returns BigRational division between BigRational / Int16 returns BigRational converts from BigDecimal to Int8 converts from BigDecimal to Int8 converts from Float64 to BigRational converts from Float64 to BigRational floor_division UInt64 // BigRational returns UInt64 floor_division UInt64 // BigRational returns UInt64 division between BigRational / Int32 returns BigRational division between BigRational / Int32 returns BigRational converts from BigFloat to BigInt converts from BigFloat to BigInt floor_division Float64 // BigRational returns Float64 floor_division Float64 // BigRational returns Float64 converts from Int16 to BigDecimal converts from Int16 to BigDecimal converts from Int32 to BigRational converts from Int32 to BigRational division between BigDecimal / UInt16 returns BigDecimal division between BigDecimal / UInt16 returns BigDecimal division between BigInt / Float32 returns BigFloat division between BigInt / Float32 returns BigFloat floor_division BigInt // UInt8 returns BigInt floor_division BigInt // UInt8 returns BigInt converts from BigInt to BigFloat converts from BigInt to BigFloat converts from BigFloat to UInt16 converts from BigFloat to UInt16 floor_division UInt32 // BigRational returns UInt32 floor_division UInt32 // BigRational returns UInt32 converts from UInt32 to BigRational converts from UInt32 to BigRational division between Int128 / BigFloat returns BigFloat division between Int128 / BigFloat returns BigFloat floor_division BigInt // BigFloat returns BigInt floor_division BigInt // BigFloat returns BigInt converts from Int8 to BigDecimal converts from Int8 to BigDecimal floor_division Int64 // BigFloat returns Int64 floor_division Int64 // BigFloat returns Int64 floor_division Float32 // BigRational returns Float32 floor_division Float32 // BigRational returns Float32 floor_division BigInt // Float32 returns BigInt floor_division BigInt // Float32 returns BigInt division between BigFloat / BigInt returns BigFloat division between BigFloat / BigInt returns BigFloat converts from UInt64 to BigRational converts from UInt64 to BigRational division between BigInt / UInt128 returns BigFloat division between BigInt / UInt128 returns BigFloat converts from Float32 to BigFloat converts from Float32 to BigFloat floor_division Int8 // BigFloat returns Int8 floor_division Int8 // BigFloat returns Int8 division between UInt16 / BigFloat returns BigFloat division between UInt16 / BigFloat returns BigFloat division between Int8 / BigRational returns BigRational division between Int8 / BigRational returns BigRational converts from BigRational to Float32 converts from BigRational to Float32 floor_division BigDecimal // BigInt returns BigDecimal floor_division BigDecimal // BigInt returns BigDecimal division between BigFloat / BigRational returns BigRational division between BigFloat / BigRational returns BigRational floor_division BigDecimal // Int32 returns BigDecimal floor_division BigDecimal // Int32 returns BigDecimal floor_division BigRational // UInt32 returns BigRational floor_division BigRational // UInt32 returns BigRational converts from Int64 to BigRational converts from Int64 to BigRational #errors makes errors accessible makes errors accessible TCPSocket sync from server sync from server sends and receives messages sends and receives messages fails when connection is refused fails when connection is refused #connect using IPv4 raises when port is negative raises when port is negative raises when connection is refused raises when connection is refused connects to server connects to server raises when port is zero raises when port is zero fails to connect IPv6 to IPv4 server fails to connect IPv6 to IPv4 server address resolution connects to localhost connects to localhost raises when host doesn't exist raises when host doesn't exist raises (rather than segfault on darwin) when host doesn't exist and port is 0 raises (rather than segfault on darwin) when host doesn't exist and port is 0 using IPv6 raises when connection is refused raises when connection is refused raises when port is zero raises when port is zero raises when port is negative raises when port is negative connects to server connects to server sends and receives messages sends and receives messages settings settings Log::ProcFormatter formats formats Float64#to_s converts 1000000000010000.0 to "1.00000000001e+15" converts 1000000000010000.0 to "1.00000000001e+15" converts 8589934592000.0 to "8589934592000.0" converts 8589934592000.0 to "8589934592000.0" converts 1.23456789012345 to "1.23456789012345" converts 1.23456789012345 to "1.23456789012345" converts 1000000000000010.0 to "1.00000000000001e+15" converts 1000000000000010.0 to "1.00000000000001e+15" converts 549755813888000.0 to "549755813888000.0" converts 549755813888000.0 to "549755813888000.0" converts 1.2345 to "1.2345" converts 1.2345 to "1.2345" converts 1000000000000000.0 to "1.0e+15" converts 1000000000000000.0 to "1.0e+15" converts 12345.0 to "12345.0" converts 12345.0 to "12345.0" converts 65536.0 to "65536.0" converts 65536.0 to "65536.0" converts 1000.0 to "1000.0" converts 1000.0 to "1000.0" Ryu d2s_test.cc LotsOfTrailingZeros converts 2.98023223876953125e-8 to "2.9802322387695312e-8" converts 2.98023223876953125e-8 to "2.9802322387695312e-8" converts 1000000000000100.0 to "1.0000000000001e+15" converts 1000000000000100.0 to "1.0000000000001e+15" converts 1100000000000000.0 to "1.1e+15" converts 1100000000000000.0 to "1.1e+15" converts 1234567.0 to "1234567.0" converts 1234567.0 to "1234567.0" converts 1.2345678901 to "1.2345678901" converts 1.2345678901 to "1.2345678901" converts 512000.0 to "512000.0" converts 512000.0 to "512000.0" converts 12.0 to "12.0" converts 12.0 to "12.0" Ryu d2s_test.cc LooksLikePow5 converts 0x1.0f0cf064dd592p+132 to "5.764607523034235e+39" converts 0x1.0f0cf064dd592p+132 to "5.764607523034235e+39" converts 0x1.0f0cf064dd592p+133 to "1.152921504606847e+40" converts 0x1.0f0cf064dd592p+133 to "1.152921504606847e+40" converts 0x1.0f0cf064dd592p+134 to "2.305843009213694e+40" converts 0x1.0f0cf064dd592p+134 to "2.305843009213694e+40" converts 123456789012345.0 to "123456789012345.0" converts 123456789012345.0 to "123456789012345.0" converts 1234.0 to "1234.0" converts 1234.0 to "1234.0" converts 1.23456 to "1.23456" converts 1.23456 to "1.23456" converts 512.0 to "512.0" converts 512.0 to "512.0" converts 1234567890123.0 to "1234567890123.0" converts 1234567890123.0 to "1234567890123.0" converts 100000.0 to "100000.0" converts 100000.0 to "100000.0" converts 65536000.0 to "65536000.0" converts 65536000.0 to "65536000.0" almost-but-not-quite-anomalous values converts 0x1p890 to "8.25460204899477e+267" converts 0x1p890 to "8.25460204899477e+267" converts 0x1p-569 to "5.17526350329881e-172" converts 0x1p-569 to "5.17526350329881e-172" converts 0x1p-645 to "6.84940421565126e-195" converts 0x1p-645 to "6.84940421565126e-195" converts 0x1p-499 to "6.10987272699921e-151" converts 0x1p-499 to "6.10987272699921e-151" converts 0x1p966 to "6.237000967296e+290" converts 0x1p966 to "6.237000967296e+290" converts 0x1p149 to "7.1362384635298e+44" converts 0x1p149 to "7.1362384635298e+44" converts 0x1p956 to "6.090821257125e+287" converts 0x1p956 to "6.090821257125e+287" converts 0x1p740 to "5.78358058743443e+222" converts 0x1p740 to "5.78358058743443e+222" special cases converts Float64::MIN_SUBNORMAL to "5.0e-324" converts Float64::MIN_SUBNORMAL to "5.0e-324" converts Float64::INFINITY to "Infinity" converts Float64::INFINITY to "Infinity" converts 18444492273895866368_u64.unsafe_as(Float64) to "NaN" converts 18444492273895866368_u64.unsafe_as(Float64) to "NaN" converts 0.0 to "0.0" converts 0.0 to "0.0" converts -0.0 to "-0.0" converts -0.0 to "-0.0" converts Float64::MIN_POSITIVE to "2.2250738585072014e-308" converts Float64::MIN_POSITIVE to "2.2250738585072014e-308" converts Float64::MIN_POSITIVE.prev_float to "2.225073858507201e-308" converts Float64::MIN_POSITIVE.prev_float to "2.225073858507201e-308" converts -Float64::INFINITY to "-Infinity" converts -Float64::INFINITY to "-Infinity" converts Float64::MAX to "1.7976931348623157e+308" converts Float64::MAX to "1.7976931348623157e+308" converts 9221120237041090560_u64.unsafe_as(Float64) to "NaN" converts 9221120237041090560_u64.unsafe_as(Float64) to "NaN" converts 1010000000000000.0 to "1.01e+15" converts 1010000000000000.0 to "1.01e+15" converts 8.0 to "8.0" converts 8.0 to "8.0" converts 64.0 to "64.0" converts 64.0 to "64.0" converts 1000100000000000.0 to "1.0001e+15" converts 1000100000000000.0 to "1.0001e+15" converts 1000000000000001.0 to "1.000000000000001e+15" converts 1000000000000001.0 to "1.000000000000001e+15" converts 1.234567895 to "1.234567895" converts 1.234567895 to "1.234567895" Ryu d2s_test.cc 32-bit Chunking converts 4.294967295 to "4.294967295" converts 4.294967295 to "4.294967295" converts 4.294967297 to "4.294967297" converts 4.294967297 to "4.294967297" converts 4.294967296 to "4.294967296" converts 4.294967296 to "4.294967296" converts 4.294967298 to "4.294967298" converts 4.294967298 to "4.294967298" converts 4.294967294 to "4.294967294" converts 4.294967294 to "4.294967294" converts 10000000000000.0 to "10000000000000.0" converts 10000000000000.0 to "10000000000000.0" Ryu d2s_test.cc MinMaxShift converts 0x1.0000000000000p+54 to "1.8014398509481984e+16" converts 0x1.0000000000000p+54 to "1.8014398509481984e+16" converts 0x1.fffffffffffffp-716 to "5.801671039719115e-216" converts 0x1.fffffffffffffp-716 to "5.801671039719115e-216" converts 0x1.0000000000000p-982 to "2.446494580089078e-296" converts 0x1.0000000000000p-982 to "2.446494580089078e-296" converts 0x1.0000000000000p-716 to "2.900835519859558e-216" converts 0x1.0000000000000p-716 to "2.900835519859558e-216" converts 0x1.fffffffffffffp+54 to "3.6028797018963964e+16" converts 0x1.fffffffffffffp+54 to "3.6028797018963964e+16" converts 0x1.0000000000000p-1019 to "1.7800590868057611e-307" converts 0x1.0000000000000p-1019 to "1.7800590868057611e-307" converts 0x1.fffffffffffffp-1016 to "2.8480945388892175e-306" converts 0x1.fffffffffffffp-1016 to "2.8480945388892175e-306" converts 0x1.fa7161a4d6e0cp-89 to "3.196104012172126e-27" converts 0x1.fa7161a4d6e0cp-89 to "3.196104012172126e-27" converts 0x1.fffffffffffffp-982 to "4.8929891601781557e-296" converts 0x1.fffffffffffffp-982 to "4.8929891601781557e-296" converts 8796093022208000.0 to "8.796093022208e+15" converts 8796093022208000.0 to "8.796093022208e+15" converts 67108864000.0 to "67108864000.0" converts 67108864000.0 to "67108864000.0" converts 1.0 to "1.0" converts 1.0 to "1.0" converts 10000.0 to "10000.0" converts 10000.0 to "10000.0" converts 1000010000000000.0 to "1.00001e+15" converts 1000010000000000.0 to "1.00001e+15" converts 1234567890.0 to "1234567890.0" converts 1234567890.0 to "1234567890.0" converts 10.0 to "10.0" converts 10.0 to "10.0" converts 1000000000000.0 to "1000000000000.0" converts 1000000000000.0 to "1000000000000.0" converts 1000000000100000.0 to "1.0000000001e+15" converts 1000000000100000.0 to "1.0000000001e+15" converts 1000000000.0 to "1000000000.0" converts 1000000000.0 to "1000000000.0" anomalous values converts 0x1p122 to "5.316911983139664e+36" converts 0x1p122 to "5.316911983139664e+36" converts 0x1p-662 to "5.225680706521042e-200" converts 0x1p-662 to "5.225680706521042e-200" converts 0x1p-791 to "7.678447687145631e-239" converts 0x1p-791 to "7.678447687145631e-239" converts 0x1p896 to "5.282945311356653e+269" converts 0x1p896 to "5.282945311356653e+269" converts 0x1p-652 to "5.351097043477547e-197" converts 0x1p-652 to "5.351097043477547e-197" converts 0x1p89 to "6.189700196426902e+26" converts 0x1p89 to "6.189700196426902e+26" converts 0x1p976 to "6.386688990511104e+293" converts 0x1p976 to "6.386688990511104e+293" converts 0x1p-140 to "7.174648137343064e-43" converts 0x1p-140 to "7.174648137343064e-43" converts 0x1p-705 to "5.940911144672375e-213" converts 0x1p-705 to "5.940911144672375e-213" converts 0x1p-496 to "4.887898181599368e-150" converts 0x1p-496 to "4.887898181599368e-150" converts 0x1p803 to "5.334411546303884e+241" converts 0x1p803 to "5.334411546303884e+241" converts 0x1p-44 to "5.684341886080802e-14" converts 0x1p-44 to "5.684341886080802e-14" converts 0x1p132 to "5.444517870735016e+39" converts 0x1p132 to "5.444517870735016e+39" converts 0x1p-24 to "5.960464477539063e-8" converts 0x1p-24 to "5.960464477539063e-8" converts 0x1p863 to "6.150157786156811e+259" converts 0x1p863 to "6.150157786156811e+259" converts 0x1p398 to "6.455624695217272e+119" converts 0x1p398 to "6.455624695217272e+119" converts 0x1p-788 to "6.142758149716505e-238" converts 0x1p-788 to "6.142758149716505e-238" converts 0x1p405 to "8.263199609878108e+121" converts 0x1p405 to "8.263199609878108e+121" converts 0x1p-366 to "6.653062250012736e-111" converts 0x1p-366 to "6.653062250012736e-111" converts 0x1p574 to "6.183260036827614e+172" converts 0x1p574 to "6.183260036827614e+172" converts 0x1p-97 to "6.310887241768095e-30" converts 0x1p-97 to "6.310887241768095e-30" converts 0x1p182 to "6.129982163463556e+54" converts 0x1p182 to "6.129982163463556e+54" converts 0x1p710 to "5.386379163185535e+213" converts 0x1p710 to "5.386379163185535e+213" converts 0x1p275 to "6.070840288205404e+82" converts 0x1p275 to "6.070840288205404e+82" converts 0x1p-549 to "5.426657103235053e-166" converts 0x1p-549 to "5.426657103235053e-166" converts 0x1p544 to "5.758609657015292e+163" converts 0x1p544 to "5.758609657015292e+163" converts 0x1p-383 to "5.075883674631299e-116" converts 0x1p-383 to "5.075883674631299e-116" converts 0x1p-1007 to "7.291122019556398e-304" converts 0x1p-1007 to "7.291122019556398e-304" converts 0x1p-296 to "7.854549544476363e-90" converts 0x1p-296 to "7.854549544476363e-90" converts 0x1p-77 to "6.617444900424222e-24" converts 0x1p-77 to "6.617444900424222e-24" converts 0x1p-921 to "5.641232424577593e-278" converts 0x1p-921 to "5.641232424577593e-278" converts 0x1p-778 to "6.290184345309701e-235" converts 0x1p-778 to "6.290184345309701e-235" converts 0x1p594 to "6.483618076376552e+178" converts 0x1p594 to "6.483618076376552e+178" converts 0x1p305 to "6.518515124270356e+91" converts 0x1p305 to "6.518515124270356e+91" converts 0x1p345 to "7.167183174968974e+103" converts 0x1p345 to "7.167183174968974e+103" converts 0x1p378 to "6.156563468186638e+113" converts 0x1p378 to "6.156563468186638e+113" converts 0x1p-808 to "5.858190679279809e-244" converts 0x1p-808 to "5.858190679279809e-244" converts 0x1p534 to "5.623642243178996e+160" converts 0x1p534 to "5.623642243178996e+160" converts 0x1p-509 to "5.966672584960166e-154" converts 0x1p-509 to "5.966672584960166e-154" converts 0x1p554 to "5.896816288783659e+166" converts 0x1p554 to "5.896816288783659e+166" converts 0x1p-489 to "6.256509672447191e-148" converts 0x1p-489 to "6.256509672447191e-148" converts 0x1p-1017 to "7.120236347223045e-307" converts 0x1p-1017 to "7.120236347223045e-307" converts 0x1p-695 to "6.083493012144512e-210" converts 0x1p-695 to "6.083493012144512e-210" converts 0x1p172 to "5.986310706507379e+51" converts 0x1p172 to "5.986310706507379e+51" converts 0x1p481 to "6.243497100631985e+144" converts 0x1p481 to "6.243497100631985e+144" converts 0x1p-957 to "8.209073602596753e-289" converts 0x1p-957 to "8.209073602596753e-289" converts 12345678901234.0 to "12345678901234.0" converts 12345678901234.0 to "12345678901234.0" converts 68719476736.0 to "68719476736.0" converts 68719476736.0 to "68719476736.0" converts 1.2 to "1.2" converts 1.2 to "1.2" converts 1.0 to "1.0" converts 1.0 to "1.0" converts 1.23456789012 to "1.23456789012" converts 1.23456789012 to "1.23456789012" converts 1000000010000000.0 to "1.00000001e+15" converts 1000000010000000.0 to "1.00000001e+15" Ryu d2s_test.cc Regression converts 2.989102097996e-312 to "2.989102097996e-312" converts 2.989102097996e-312 to "2.989102097996e-312" converts 9.409340012568248e18 to "9.409340012568248e+18" converts 9.409340012568248e18 to "9.409340012568248e+18" converts 4.940656e-318 to "4.940656e-318" converts 4.940656e-318 to "4.940656e-318" converts 1.18575755e-316 to "1.18575755e-316" converts 1.18575755e-316 to "1.18575755e-316" converts 9.0608011534336e15 to "9.0608011534336e+15" converts 9.0608011534336e15 to "9.0608011534336e+15" converts -2.109808898695963e16 to "-2.109808898695963e+16" converts -2.109808898695963e16 to "-2.109808898695963e+16" converts 4.708356024711512e18 to "4.708356024711512e+18" converts 4.708356024711512e18 to "4.708356024711512e+18" converts 8192000.0 to "8192000.0" converts 8192000.0 to "8192000.0" converts 67108864.0 to "67108864.0" converts 67108864.0 to "67108864.0" converts 123456789012.0 to "123456789012.0" converts 123456789012.0 to "123456789012.0" converts 64000.0 to "64000.0" converts 64000.0 to "64000.0" converts 1.23456789 to "1.23456789" converts 1.23456789 to "1.23456789" converts 10000000000.0 to "10000000000.0" converts 10000000000.0 to "10000000000.0" converts 1.2345678901234567 to "1.2345678901234567" converts 1.2345678901234567 to "1.2345678901234567" converts 562949953421312.0 to "562949953421312.0" converts 562949953421312.0 to "562949953421312.0" all exponents converts 1.729e-215 to "1.729e-215" converts 1.729e-215 to "1.729e-215" converts 1.729e-55 to "1.729e-55" converts 1.729e-55 to "1.729e-55" converts 1.729e-32 to "1.729e-32" converts 1.729e-32 to "1.729e-32" converts 1.729e-59 to "1.729e-59" converts 1.729e-59 to "1.729e-59" converts 1.729e-184 to "1.729e-184" converts 1.729e-184 to "1.729e-184" converts 1.729e+251 to "1.729e+251" converts 1.729e+251 to "1.729e+251" converts 1.729e-146 to "1.729e-146" converts 1.729e-146 to "1.729e-146" converts 1.729e+8 to "172900000.0" converts 1.729e+8 to "172900000.0" converts 1.729e+255 to "1.729e+255" converts 1.729e+255 to "1.729e+255" converts 1.729e+158 to "1.729e+158" converts 1.729e+158 to "1.729e+158" converts 1.729e+235 to "1.729e+235" converts 1.729e+235 to "1.729e+235" converts 1.729e-304 to "1.729e-304" converts 1.729e-304 to "1.729e-304" converts 1.729e+51 to "1.729e+51" converts 1.729e+51 to "1.729e+51" converts 1.729e-151 to "1.729e-151" converts 1.729e-151 to "1.729e-151" converts 1.729e+249 to "1.729e+249" converts 1.729e+249 to "1.729e+249" converts 1.729e+125 to "1.729e+125" converts 1.729e+125 to "1.729e+125" converts 1.729e+220 to "1.729e+220" converts 1.729e+220 to "1.729e+220" converts 1.729e+3 to "1729.0" converts 1.729e+3 to "1729.0" converts 1.729e+118 to "1.729e+118" converts 1.729e+118 to "1.729e+118" converts 1.729e+151 to "1.729e+151" converts 1.729e+151 to "1.729e+151" converts 1.729e+214 to "1.729e+214" converts 1.729e+214 to "1.729e+214" converts 1.729e-61 to "1.729e-61" converts 1.729e-61 to "1.729e-61" converts 1.729e+179 to "1.729e+179" converts 1.729e+179 to "1.729e+179" converts 1.729e+178 to "1.729e+178" converts 1.729e+178 to "1.729e+178" converts 1.729e-232 to "1.729e-232" converts 1.729e-232 to "1.729e-232" converts 1.729e-198 to "1.729e-198" converts 1.729e-198 to "1.729e-198" converts 1.729e+161 to "1.729e+161" converts 1.729e+161 to "1.729e+161" converts 1.729e-130 to "1.729e-130" converts 1.729e-130 to "1.729e-130" converts 1.729e-148 to "1.729e-148" converts 1.729e-148 to "1.729e-148" converts 1.729e-303 to "1.729e-303" converts 1.729e-303 to "1.729e-303" converts 1.729e-88 to "1.729e-88" converts 1.729e-88 to "1.729e-88" converts 1.729e+271 to "1.729e+271" converts 1.729e+271 to "1.729e+271" converts 1.729e+5 to "172900.0" converts 1.729e+5 to "172900.0" converts 1.729e+229 to "1.729e+229" converts 1.729e+229 to "1.729e+229" converts 1.729e-201 to "1.729e-201" converts 1.729e-201 to "1.729e-201" converts 1.729e-38 to "1.729e-38" converts 1.729e-38 to "1.729e-38" converts 1.729e-286 to "1.729e-286" converts 1.729e-286 to "1.729e-286" converts 1.729e+85 to "1.729e+85" converts 1.729e+85 to "1.729e+85" converts 1.729e-68 to "1.729e-68" converts 1.729e-68 to "1.729e-68" converts 1.729e-293 to "1.729e-293" converts 1.729e-293 to "1.729e-293" converts 1.729e-85 to "1.729e-85" converts 1.729e-85 to "1.729e-85" converts 1.729e+120 to "1.729e+120" converts 1.729e+120 to "1.729e+120" converts 1.729e-106 to "1.729e-106" converts 1.729e-106 to "1.729e-106" converts 1.729e+64 to "1.729e+64" converts 1.729e+64 to "1.729e+64" converts 1.729e-18 to "1.729e-18" converts 1.729e-18 to "1.729e-18" converts 1.729e-93 to "1.729e-93" converts 1.729e-93 to "1.729e-93" converts 1.729e-115 to "1.729e-115" converts 1.729e-115 to "1.729e-115" converts 1.729e-98 to "1.729e-98" converts 1.729e-98 to "1.729e-98" converts 1.729e-204 to "1.729e-204" converts 1.729e-204 to "1.729e-204" converts 1.729e-62 to "1.729e-62" converts 1.729e-62 to "1.729e-62" converts 1.729e+259 to "1.729e+259" converts 1.729e+259 to "1.729e+259" converts 1.729e+232 to "1.729e+232" converts 1.729e+232 to "1.729e+232" converts 1.729e-318 to "1.729e-318" converts 1.729e-318 to "1.729e-318" converts 1.729e+163 to "1.729e+163" converts 1.729e+163 to "1.729e+163" converts 1.729e+254 to "1.729e+254" converts 1.729e+254 to "1.729e+254" converts 1.729e+39 to "1.729e+39" converts 1.729e+39 to "1.729e+39" converts 1.729e-86 to "1.729e-86" converts 1.729e-86 to "1.729e-86" converts 1.729e-102 to "1.729e-102" converts 1.729e-102 to "1.729e-102" converts 1.729e+86 to "1.729e+86" converts 1.729e+86 to "1.729e+86" converts 1.729e+138 to "1.729e+138" converts 1.729e+138 to "1.729e+138" converts 1.729e-277 to "1.729e-277" converts 1.729e-277 to "1.729e-277" converts 1.729e+142 to "1.729e+142" converts 1.729e+142 to "1.729e+142" converts 1.729e-110 to "1.729e-110" converts 1.729e-110 to "1.729e-110" converts 1.729e-257 to "1.729e-257" converts 1.729e-257 to "1.729e-257" converts 1.729e+303 to "1.729e+303" converts 1.729e+303 to "1.729e+303" converts 1.729e-58 to "1.729e-58" converts 1.729e-58 to "1.729e-58" converts 1.729e+285 to "1.729e+285" converts 1.729e+285 to "1.729e+285" converts 1.729e-234 to "1.729e-234" converts 1.729e-234 to "1.729e-234" converts 1.729e-122 to "1.729e-122" converts 1.729e-122 to "1.729e-122" converts 1.729e+274 to "1.729e+274" converts 1.729e+274 to "1.729e+274" converts 1.729e+143 to "1.729e+143" converts 1.729e+143 to "1.729e+143" converts 1.729e-73 to "1.729e-73" converts 1.729e-73 to "1.729e-73" converts 1.729e-219 to "1.729e-219" converts 1.729e-219 to "1.729e-219" converts 1.729e-231 to "1.729e-231" converts 1.729e-231 to "1.729e-231" converts 1.729e-4 to "0.0001729" converts 1.729e-4 to "0.0001729" converts 1.729e+224 to "1.729e+224" converts 1.729e+224 to "1.729e+224" converts 1.729e-276 to "1.729e-276" converts 1.729e-276 to "1.729e-276" converts 1.729e+293 to "1.729e+293" converts 1.729e+293 to "1.729e+293" converts 1.729e+291 to "1.729e+291" converts 1.729e+291 to "1.729e+291" converts 1.729e-289 to "1.729e-289" converts 1.729e-289 to "1.729e-289" converts 1.729e+11 to "172900000000.0" converts 1.729e+11 to "172900000000.0" converts 1.729e+305 to "1.729e+305" converts 1.729e+305 to "1.729e+305" converts 1.729e+127 to "1.729e+127" converts 1.729e+127 to "1.729e+127" converts 1.729e+150 to "1.729e+150" converts 1.729e+150 to "1.729e+150" converts 1.729e+130 to "1.729e+130" converts 1.729e+130 to "1.729e+130" converts 1.729e-52 to "1.729e-52" converts 1.729e-52 to "1.729e-52" converts 1.729e+241 to "1.729e+241" converts 1.729e+241 to "1.729e+241" converts 1.729e+110 to "1.729e+110" converts 1.729e+110 to "1.729e+110" converts 1.729e-211 to "1.729e-211" converts 1.729e-211 to "1.729e-211" converts 1.729e-235 to "1.729e-235" converts 1.729e-235 to "1.729e-235" converts 1.729e-179 to "1.729e-179" converts 1.729e-179 to "1.729e-179" converts 1.729e-298 to "1.729e-298" converts 1.729e-298 to "1.729e-298" converts 1.729e-323 to "1.5e-323" converts 1.729e-323 to "1.5e-323" converts 1.729e+180 to "1.729e+180" converts 1.729e+180 to "1.729e+180" converts 1.729e+223 to "1.729e+223" converts 1.729e+223 to "1.729e+223" converts 1.729e+105 to "1.729e+105" converts 1.729e+105 to "1.729e+105" converts 1.729e+113 to "1.729e+113" converts 1.729e+113 to "1.729e+113" converts 1.729e-280 to "1.729e-280" converts 1.729e-280 to "1.729e-280" converts 1.729e-313 to "1.729e-313" converts 1.729e-313 to "1.729e-313" converts 1.729e-317 to "1.729e-317" converts 1.729e-317 to "1.729e-317" converts 1.729e-216 to "1.729e-216" converts 1.729e-216 to "1.729e-216" converts 1.729e+218 to "1.729e+218" converts 1.729e+218 to "1.729e+218" converts 1.729e-187 to "1.729e-187" converts 1.729e-187 to "1.729e-187" converts 1.729e-95 to "1.729e-95" converts 1.729e-95 to "1.729e-95" converts 1.729e+286 to "1.729e+286" converts 1.729e+286 to "1.729e+286" converts 1.729e+273 to "1.729e+273" converts 1.729e+273 to "1.729e+273" converts 1.729e+0 to "1.729" converts 1.729e+0 to "1.729" converts 1.729e-209 to "1.729e-209" converts 1.729e-209 to "1.729e-209" converts 1.729e-23 to "1.729e-23" converts 1.729e-23 to "1.729e-23" converts 1.729e+48 to "1.729e+48" converts 1.729e+48 to "1.729e+48" converts 1.729e-251 to "1.729e-251" converts 1.729e-251 to "1.729e-251" converts 1.729e-248 to "1.729e-248" converts 1.729e-248 to "1.729e-248" converts 1.729e-291 to "1.729e-291" converts 1.729e-291 to "1.729e-291" converts 1.729e-2 to "0.01729" converts 1.729e-2 to "0.01729" converts 1.729e+42 to "1.729e+42" converts 1.729e+42 to "1.729e+42" converts 1.729e-28 to "1.729e-28" converts 1.729e-28 to "1.729e-28" converts 1.729e+258 to "1.729e+258" converts 1.729e+258 to "1.729e+258" converts 1.729e+115 to "1.729e+115" converts 1.729e+115 to "1.729e+115" converts 1.729e+14 to "172900000000000.0" converts 1.729e+14 to "172900000000000.0" converts 1.729e-180 to "1.729e-180" converts 1.729e-180 to "1.729e-180" converts 1.729e-139 to "1.729e-139" converts 1.729e-139 to "1.729e-139" converts 1.729e+236 to "1.729e+236" converts 1.729e+236 to "1.729e+236" converts 1.729e+136 to "1.729e+136" converts 1.729e+136 to "1.729e+136" converts 1.729e-245 to "1.729e-245" converts 1.729e-245 to "1.729e-245" converts 1.729e-13 to "1.729e-13" converts 1.729e-13 to "1.729e-13" converts 1.729e-228 to "1.729e-228" converts 1.729e-228 to "1.729e-228" converts 1.729e-104 to "1.729e-104" converts 1.729e-104 to "1.729e-104" converts 1.729e+43 to "1.729e+43" converts 1.729e+43 to "1.729e+43" converts 1.729e+280 to "1.729e+280" converts 1.729e+280 to "1.729e+280" converts 1.729e-123 to "1.729e-123" converts 1.729e-123 to "1.729e-123" converts 1.729e-236 to "1.729e-236" converts 1.729e-236 to "1.729e-236" converts 1.729e+299 to "1.729e+299" converts 1.729e+299 to "1.729e+299" converts 1.729e+168 to "1.729e+168" converts 1.729e+168 to "1.729e+168" converts 1.729e+207 to "1.729e+207" converts 1.729e+207 to "1.729e+207" converts 1.729e-244 to "1.729e-244" converts 1.729e-244 to "1.729e-244" converts 1.729e+187 to "1.729e+187" converts 1.729e+187 to "1.729e+187" converts 1.729e-138 to "1.729e-138" converts 1.729e-138 to "1.729e-138" converts 1.729e+131 to "1.729e+131" converts 1.729e+131 to "1.729e+131" converts 1.729e+52 to "1.729e+52" converts 1.729e+52 to "1.729e+52" converts 1.729e+252 to "1.729e+252" converts 1.729e+252 to "1.729e+252" converts 1.729e+13 to "17290000000000.0" converts 1.729e+13 to "17290000000000.0" converts 1.729e-267 to "1.729e-267" converts 1.729e-267 to "1.729e-267" converts 1.729e-210 to "1.729e-210" converts 1.729e-210 to "1.729e-210" converts 1.729e-154 to "1.729e-154" converts 1.729e-154 to "1.729e-154" converts 1.729e-11 to "1.729e-11" converts 1.729e-11 to "1.729e-11" converts 1.729e+295 to "1.729e+295" converts 1.729e+295 to "1.729e+295" converts 1.729e-10 to "1.729e-10" converts 1.729e-10 to "1.729e-10" converts 1.729e+228 to "1.729e+228" converts 1.729e+228 to "1.729e+228" converts 1.729e-206 to "1.729e-206" converts 1.729e-206 to "1.729e-206" converts 1.729e+160 to "1.729e+160" converts 1.729e+160 to "1.729e+160" converts 1.729e-155 to "1.729e-155" converts 1.729e-155 to "1.729e-155" converts 1.729e+99 to "1.729e+99" converts 1.729e+99 to "1.729e+99" converts 1.729e+134 to "1.729e+134" converts 1.729e+134 to "1.729e+134" converts 1.729e+278 to "1.729e+278" converts 1.729e+278 to "1.729e+278" converts 1.729e-120 to "1.729e-120" converts 1.729e-120 to "1.729e-120" converts 1.729e+296 to "1.729e+296" converts 1.729e+296 to "1.729e+296" converts 1.729e+68 to "1.729e+68" converts 1.729e+68 to "1.729e+68" converts 1.729e-117 to "1.729e-117" converts 1.729e-117 to "1.729e-117" converts 1.729e+49 to "1.729e+49" converts 1.729e+49 to "1.729e+49" converts 1.729e+269 to "1.729e+269" converts 1.729e+269 to "1.729e+269" converts 1.729e+107 to "1.729e+107" converts 1.729e+107 to "1.729e+107" converts 1.729e-3 to "0.001729" converts 1.729e-3 to "0.001729" converts 1.729e+215 to "1.729e+215" converts 1.729e+215 to "1.729e+215" converts 1.729e-141 to "1.729e-141" converts 1.729e-141 to "1.729e-141" converts 1.729e-176 to "1.729e-176" converts 1.729e-176 to "1.729e-176" converts 1.729e+165 to "1.729e+165" converts 1.729e+165 to "1.729e+165" converts 1.729e-24 to "1.729e-24" converts 1.729e-24 to "1.729e-24" converts 1.729e-157 to "1.729e-157" converts 1.729e-157 to "1.729e-157" converts 1.729e-281 to "1.729e-281" converts 1.729e-281 to "1.729e-281" converts 1.729e-196 to "1.729e-196" converts 1.729e-196 to "1.729e-196" converts 1.729e-70 to "1.729e-70" converts 1.729e-70 to "1.729e-70" converts 1.729e+277 to "1.729e+277" converts 1.729e+277 to "1.729e+277" converts 1.729e+242 to "1.729e+242" converts 1.729e+242 to "1.729e+242" converts 1.729e+114 to "1.729e+114" converts 1.729e+114 to "1.729e+114" converts 1.729e+20 to "1.729e+20" converts 1.729e+20 to "1.729e+20" converts 1.729e+76 to "1.729e+76" converts 1.729e+76 to "1.729e+76" converts 1.729e+16 to "1.729e+16" converts 1.729e+16 to "1.729e+16" converts 1.729e-168 to "1.729e-168" converts 1.729e-168 to "1.729e-168" converts 1.729e-5 to "1.729e-5" converts 1.729e-5 to "1.729e-5" converts 1.729e-177 to "1.729e-177" converts 1.729e-177 to "1.729e-177" converts 1.729e-190 to "1.729e-190" converts 1.729e-190 to "1.729e-190" converts 1.729e+67 to "1.729e+67" converts 1.729e+67 to "1.729e+67" converts 1.729e+126 to "1.729e+126" converts 1.729e+126 to "1.729e+126" converts 1.729e-197 to "1.729e-197" converts 1.729e-197 to "1.729e-197" converts 1.729e-56 to "1.729e-56" converts 1.729e-56 to "1.729e-56" converts 1.729e+91 to "1.729e+91" converts 1.729e+91 to "1.729e+91" converts 1.729e+302 to "1.729e+302" converts 1.729e+302 to "1.729e+302" converts 1.729e+257 to "1.729e+257" converts 1.729e+257 to "1.729e+257" converts 1.729e-19 to "1.729e-19" converts 1.729e-19 to "1.729e-19" converts 1.729e-238 to "1.729e-238" converts 1.729e-238 to "1.729e-238" converts 1.729e-243 to "1.729e-243" converts 1.729e-243 to "1.729e-243" converts 1.729e+260 to "1.729e+260" converts 1.729e+260 to "1.729e+260" converts 1.729e-147 to "1.729e-147" converts 1.729e-147 to "1.729e-147" converts 1.729e-81 to "1.729e-81" converts 1.729e-81 to "1.729e-81" converts 1.729e+23 to "1.729e+23" converts 1.729e+23 to "1.729e+23" converts 1.729e-118 to "1.729e-118" converts 1.729e-118 to "1.729e-118" converts 1.729e+308 to "1.729e+308" converts 1.729e+308 to "1.729e+308" converts 1.729e+78 to "1.729e+78" converts 1.729e+78 to "1.729e+78" converts 1.729e-265 to "1.729e-265" converts 1.729e-265 to "1.729e-265" converts 1.729e-99 to "1.729e-99" converts 1.729e-99 to "1.729e-99" converts 1.729e-111 to "1.729e-111" converts 1.729e-111 to "1.729e-111" converts 1.729e+194 to "1.729e+194" converts 1.729e+194 to "1.729e+194" converts 1.729e-43 to "1.729e-43" converts 1.729e-43 to "1.729e-43" converts 1.729e+137 to "1.729e+137" converts 1.729e+137 to "1.729e+137" converts 1.729e+182 to "1.729e+182" converts 1.729e+182 to "1.729e+182" converts 1.729e+156 to "1.729e+156" converts 1.729e+156 to "1.729e+156" converts 1.729e+22 to "1.729e+22" converts 1.729e+22 to "1.729e+22" converts 1.729e+159 to "1.729e+159" converts 1.729e+159 to "1.729e+159" converts 1.729e+289 to "1.729e+289" converts 1.729e+289 to "1.729e+289" converts 1.729e-300 to "1.729e-300" converts 1.729e-300 to "1.729e-300" converts 1.729e+240 to "1.729e+240" converts 1.729e+240 to "1.729e+240" converts 1.729e-284 to "1.729e-284" converts 1.729e-284 to "1.729e-284" converts 1.729e-322 to "1.73e-322" converts 1.729e-322 to "1.73e-322" converts 1.729e-51 to "1.729e-51" converts 1.729e-51 to "1.729e-51" converts 1.729e-316 to "1.729e-316" converts 1.729e-316 to "1.729e-316" converts 1.729e-44 to "1.729e-44" converts 1.729e-44 to "1.729e-44" converts 1.729e+61 to "1.729e+61" converts 1.729e+61 to "1.729e+61" converts 1.729e+279 to "1.729e+279" converts 1.729e+279 to "1.729e+279" converts 1.729e+284 to "1.729e+284" converts 1.729e+284 to "1.729e+284" converts 1.729e-214 to "1.729e-214" converts 1.729e-214 to "1.729e-214" converts 1.729e-9 to "1.729e-9" converts 1.729e-9 to "1.729e-9" converts 1.729e-167 to "1.729e-167" converts 1.729e-167 to "1.729e-167" converts 1.729e-205 to "1.729e-205" converts 1.729e-205 to "1.729e-205" converts 1.729e+90 to "1.729e+90" converts 1.729e+90 to "1.729e+90" converts 1.729e-57 to "1.729e-57" converts 1.729e-57 to "1.729e-57" converts 1.729e+104 to "1.729e+104" converts 1.729e+104 to "1.729e+104" converts 1.729e+176 to "1.729e+176" converts 1.729e+176 to "1.729e+176" converts 1.729e-208 to "1.729e-208" converts 1.729e-208 to "1.729e-208" converts 1.729e+108 to "1.729e+108" converts 1.729e+108 to "1.729e+108" converts 1.729e+264 to "1.729e+264" converts 1.729e+264 to "1.729e+264" converts 1.729e-53 to "1.729e-53" converts 1.729e-53 to "1.729e-53" converts 1.729e+162 to "1.729e+162" converts 1.729e+162 to "1.729e+162" converts 1.729e-31 to "1.729e-31" converts 1.729e-31 to "1.729e-31" converts 1.729e-46 to "1.729e-46" converts 1.729e-46 to "1.729e-46" converts 1.729e-16 to "1.729e-16" converts 1.729e-16 to "1.729e-16" converts 1.729e-203 to "1.729e-203" converts 1.729e-203 to "1.729e-203" converts 1.729e-94 to "1.729e-94" converts 1.729e-94 to "1.729e-94" converts 1.729e+189 to "1.729e+189" converts 1.729e+189 to "1.729e+189" converts 1.729e+116 to "1.729e+116" converts 1.729e+116 to "1.729e+116" converts 1.729e+201 to "1.729e+201" converts 1.729e+201 to "1.729e+201" converts 1.729e-241 to "1.729e-241" converts 1.729e-241 to "1.729e-241" converts 1.729e-29 to "1.729e-29" converts 1.729e-29 to "1.729e-29" converts 1.729e-169 to "1.729e-169" converts 1.729e-169 to "1.729e-169" converts 1.729e+89 to "1.729e+89" converts 1.729e+89 to "1.729e+89" converts 1.729e+30 to "1.729e+30" converts 1.729e+30 to "1.729e+30" converts 1.729e+50 to "1.729e+50" converts 1.729e+50 to "1.729e+50" converts 1.729e-76 to "1.729e-76" converts 1.729e-76 to "1.729e-76" converts 1.729e+268 to "1.729e+268" converts 1.729e+268 to "1.729e+268" converts 1.729e+202 to "1.729e+202" converts 1.729e+202 to "1.729e+202" converts 1.729e-105 to "1.729e-105" converts 1.729e-105 to "1.729e-105" converts 1.729e+32 to "1.729e+32" converts 1.729e+32 to "1.729e+32" converts 1.729e-308 to "1.729e-308" converts 1.729e-308 to "1.729e-308" converts 1.729e-152 to "1.729e-152" converts 1.729e-152 to "1.729e-152" converts 1.729e+65 to "1.729e+65" converts 1.729e+65 to "1.729e+65" converts 1.729e-242 to "1.729e-242" converts 1.729e-242 to "1.729e-242" converts 1.729e+148 to "1.729e+148" converts 1.729e+148 to "1.729e+148" converts 1.729e-223 to "1.729e-223" converts 1.729e-223 to "1.729e-223" converts 1.729e+217 to "1.729e+217" converts 1.729e+217 to "1.729e+217" converts 1.729e+155 to "1.729e+155" converts 1.729e+155 to "1.729e+155" converts 1.729e-103 to "1.729e-103" converts 1.729e-103 to "1.729e-103" converts 1.729e-12 to "1.729e-12" converts 1.729e-12 to "1.729e-12" converts 1.729e-288 to "1.729e-288" converts 1.729e-288 to "1.729e-288" converts 1.729e+184 to "1.729e+184" converts 1.729e+184 to "1.729e+184" converts 1.729e-160 to "1.729e-160" converts 1.729e-160 to "1.729e-160" converts 1.729e+119 to "1.729e+119" converts 1.729e+119 to "1.729e+119" converts 1.729e+226 to "1.729e+226" converts 1.729e+226 to "1.729e+226" converts 1.729e-295 to "1.729e-295" converts 1.729e-295 to "1.729e-295" converts 1.729e-34 to "1.729e-34" converts 1.729e-34 to "1.729e-34" converts 1.729e-36 to "1.729e-36" converts 1.729e-36 to "1.729e-36" converts 1.729e+262 to "1.729e+262" converts 1.729e+262 to "1.729e+262" converts 1.729e-114 to "1.729e-114" converts 1.729e-114 to "1.729e-114" converts 1.729e+211 to "1.729e+211" converts 1.729e+211 to "1.729e+211" converts 1.729e+247 to "1.729e+247" converts 1.729e+247 to "1.729e+247" converts 1.729e-250 to "1.729e-250" converts 1.729e-250 to "1.729e-250" converts 1.729e-75 to "1.729e-75" converts 1.729e-75 to "1.729e-75" converts 1.729e+122 to "1.729e+122" converts 1.729e+122 to "1.729e+122" converts 1.729e-311 to "1.729e-311" converts 1.729e-311 to "1.729e-311" converts 1.729e+6 to "1729000.0" converts 1.729e+6 to "1729000.0" converts 1.729e-218 to "1.729e-218" converts 1.729e-218 to "1.729e-218" converts 1.729e+73 to "1.729e+73" converts 1.729e+73 to "1.729e+73" converts 1.729e+149 to "1.729e+149" converts 1.729e+149 to "1.729e+149" converts 1.729e-212 to "1.729e-212" converts 1.729e-212 to "1.729e-212" converts 1.729e-301 to "1.729e-301" converts 1.729e-301 to "1.729e-301" converts 1.729e+69 to "1.729e+69" converts 1.729e+69 to "1.729e+69" converts 1.729e-268 to "1.729e-268" converts 1.729e-268 to "1.729e-268" converts 1.729e-270 to "1.729e-270" converts 1.729e-270 to "1.729e-270" converts 1.729e+28 to "1.729e+28" converts 1.729e+28 to "1.729e+28" converts 1.729e-273 to "1.729e-273" converts 1.729e-273 to "1.729e-273" converts 1.729e+170 to "1.729e+170" converts 1.729e+170 to "1.729e+170" converts 1.729e+169 to "1.729e+169" converts 1.729e+169 to "1.729e+169" converts 1.729e+306 to "1.729e+306" converts 1.729e+306 to "1.729e+306" converts 1.729e+234 to "1.729e+234" converts 1.729e+234 to "1.729e+234" converts 1.729e-143 to "1.729e-143" converts 1.729e-143 to "1.729e-143" converts 1.729e-199 to "1.729e-199" converts 1.729e-199 to "1.729e-199" converts 1.729e-153 to "1.729e-153" converts 1.729e-153 to "1.729e-153" converts 1.729e+248 to "1.729e+248" converts 1.729e+248 to "1.729e+248" converts 1.729e-269 to "1.729e-269" converts 1.729e-269 to "1.729e-269" converts 1.729e+181 to "1.729e+181" converts 1.729e+181 to "1.729e+181" converts 1.729e-26 to "1.729e-26" converts 1.729e-26 to "1.729e-26" converts 1.729e+145 to "1.729e+145" converts 1.729e+145 to "1.729e+145" converts 1.729e+45 to "1.729e+45" converts 1.729e+45 to "1.729e+45" converts 1.729e+33 to "1.729e+33" converts 1.729e+33 to "1.729e+33" converts 1.729e+239 to "1.729e+239" converts 1.729e+239 to "1.729e+239" converts 1.729e-108 to "1.729e-108" converts 1.729e-108 to "1.729e-108" converts 1.729e-172 to "1.729e-172" converts 1.729e-172 to "1.729e-172" converts 1.729e-72 to "1.729e-72" converts 1.729e-72 to "1.729e-72" converts 1.729e+87 to "1.729e+87" converts 1.729e+87 to "1.729e+87" converts 1.729e+46 to "1.729e+46" converts 1.729e+46 to "1.729e+46" converts 1.729e-133 to "1.729e-133" converts 1.729e-133 to "1.729e-133" converts 1.729e-173 to "1.729e-173" converts 1.729e-173 to "1.729e-173" converts 1.729e+227 to "1.729e+227" converts 1.729e+227 to "1.729e+227" converts 1.729e+190 to "1.729e+190" converts 1.729e+190 to "1.729e+190" converts 1.729e+63 to "1.729e+63" converts 1.729e+63 to "1.729e+63" converts 1.729e+128 to "1.729e+128" converts 1.729e+128 to "1.729e+128" converts 1.729e-195 to "1.729e-195" converts 1.729e-195 to "1.729e-195" converts 1.729e+200 to "1.729e+200" converts 1.729e+200 to "1.729e+200" converts 1.729e-77 to "1.729e-77" converts 1.729e-77 to "1.729e-77" converts 1.729e+208 to "1.729e+208" converts 1.729e+208 to "1.729e+208" converts 1.729e+141 to "1.729e+141" converts 1.729e+141 to "1.729e+141" converts 1.729e-136 to "1.729e-136" converts 1.729e-136 to "1.729e-136" converts 1.729e-310 to "1.729e-310" converts 1.729e-310 to "1.729e-310" converts 1.729e+205 to "1.729e+205" converts 1.729e+205 to "1.729e+205" converts 1.729e+253 to "1.729e+253" converts 1.729e+253 to "1.729e+253" converts 1.729e-246 to "1.729e-246" converts 1.729e-246 to "1.729e-246" converts 1.729e-191 to "1.729e-191" converts 1.729e-191 to "1.729e-191" converts 1.729e+7 to "17290000.0" converts 1.729e+7 to "17290000.0" converts 1.729e-290 to "1.729e-290" converts 1.729e-290 to "1.729e-290" converts 1.729e-271 to "1.729e-271" converts 1.729e-271 to "1.729e-271" converts 1.729e+304 to "1.729e+304" converts 1.729e+304 to "1.729e+304" converts 1.729e-64 to "1.729e-64" converts 1.729e-64 to "1.729e-64" converts 1.729e-253 to "1.729e-253" converts 1.729e-253 to "1.729e-253" converts 1.729e-107 to "1.729e-107" converts 1.729e-107 to "1.729e-107" converts 1.729e+38 to "1.729e+38" converts 1.729e+38 to "1.729e+38" converts 1.729e-113 to "1.729e-113" converts 1.729e-113 to "1.729e-113" converts 1.729e+191 to "1.729e+191" converts 1.729e+191 to "1.729e+191" converts 1.729e-283 to "1.729e-283" converts 1.729e-283 to "1.729e-283" converts 1.729e-274 to "1.729e-274" converts 1.729e-274 to "1.729e-274" converts 1.729e+282 to "1.729e+282" converts 1.729e+282 to "1.729e+282" converts 1.729e+173 to "1.729e+173" converts 1.729e+173 to "1.729e+173" converts 1.729e-48 to "1.729e-48" converts 1.729e-48 to "1.729e-48" converts 1.729e+172 to "1.729e+172" converts 1.729e+172 to "1.729e+172" converts 1.729e-100 to "1.729e-100" converts 1.729e-100 to "1.729e-100" converts 1.729e+256 to "1.729e+256" converts 1.729e+256 to "1.729e+256" converts 1.729e+157 to "1.729e+157" converts 1.729e+157 to "1.729e+157" converts 1.729e+166 to "1.729e+166" converts 1.729e+166 to "1.729e+166" converts 1.729e-125 to "1.729e-125" converts 1.729e-125 to "1.729e-125" converts 1.729e-134 to "1.729e-134" converts 1.729e-134 to "1.729e-134" converts 1.729e-41 to "1.729e-41" converts 1.729e-41 to "1.729e-41" converts 1.729e+9 to "1729000000.0" converts 1.729e+9 to "1729000000.0" converts 1.729e+197 to "1.729e+197" converts 1.729e+197 to "1.729e+197" converts 1.729e+272 to "1.729e+272" converts 1.729e+272 to "1.729e+272" converts 1.729e+288 to "1.729e+288" converts 1.729e+288 to "1.729e+288" converts 1.729e-192 to "1.729e-192" converts 1.729e-192 to "1.729e-192" converts 1.729e-159 to "1.729e-159" converts 1.729e-159 to "1.729e-159" converts 1.729e+53 to "1.729e+53" converts 1.729e+53 to "1.729e+53" converts 1.729e-116 to "1.729e-116" converts 1.729e-116 to "1.729e-116" converts 1.729e+31 to "1.729e+31" converts 1.729e+31 to "1.729e+31" converts 1.729e-80 to "1.729e-80" converts 1.729e-80 to "1.729e-80" converts 1.729e+171 to "1.729e+171" converts 1.729e+171 to "1.729e+171" converts 1.729e+243 to "1.729e+243" converts 1.729e+243 to "1.729e+243" converts 1.729e-193 to "1.729e-193" converts 1.729e-193 to "1.729e-193" converts 1.729e-217 to "1.729e-217" converts 1.729e-217 to "1.729e-217" converts 1.729e-158 to "1.729e-158" converts 1.729e-158 to "1.729e-158" converts 1.729e-87 to "1.729e-87" converts 1.729e-87 to "1.729e-87" converts 1.729e-260 to "1.729e-260" converts 1.729e-260 to "1.729e-260" converts 1.729e-50 to "1.729e-50" converts 1.729e-50 to "1.729e-50" converts 1.729e-101 to "1.729e-101" converts 1.729e-101 to "1.729e-101" converts 1.729e+54 to "1.729e+54" converts 1.729e+54 to "1.729e+54" converts 1.729e+225 to "1.729e+225" converts 1.729e+225 to "1.729e+225" converts 1.729e-91 to "1.729e-91" converts 1.729e-91 to "1.729e-91" converts 1.729e-207 to "1.729e-207" converts 1.729e-207 to "1.729e-207" converts 1.729e-189 to "1.729e-189" converts 1.729e-189 to "1.729e-189" converts 1.729e+29 to "1.729e+29" converts 1.729e+29 to "1.729e+29" converts 1.729e-183 to "1.729e-183" converts 1.729e-183 to "1.729e-183" converts 1.729e+25 to "1.729e+25" converts 1.729e+25 to "1.729e+25" converts 1.729e-282 to "1.729e-282" converts 1.729e-282 to "1.729e-282" converts 1.729e+222 to "1.729e+222" converts 1.729e+222 to "1.729e+222" converts 1.729e-314 to "1.729e-314" converts 1.729e-314 to "1.729e-314" converts 1.729e+213 to "1.729e+213" converts 1.729e+213 to "1.729e+213" converts 1.729e+140 to "1.729e+140" converts 1.729e+140 to "1.729e+140" converts 1.729e-306 to "1.729e-306" converts 1.729e-306 to "1.729e-306" converts 1.729e-7 to "1.729e-7" converts 1.729e-7 to "1.729e-7" converts 1.729e-315 to "1.729e-315" converts 1.729e-315 to "1.729e-315" converts 1.729e+174 to "1.729e+174" converts 1.729e+174 to "1.729e+174" converts 1.729e-166 to "1.729e-166" converts 1.729e-166 to "1.729e-166" converts 1.729e+139 to "1.729e+139" converts 1.729e+139 to "1.729e+139" converts 1.729e-78 to "1.729e-78" converts 1.729e-78 to "1.729e-78" converts 1.729e+95 to "1.729e+95" converts 1.729e+95 to "1.729e+95" converts 1.729e-213 to "1.729e-213" converts 1.729e-213 to "1.729e-213" converts 1.729e-126 to "1.729e-126" converts 1.729e-126 to "1.729e-126" converts 1.729e+109 to "1.729e+109" converts 1.729e+109 to "1.729e+109" converts 1.729e+84 to "1.729e+84" converts 1.729e+84 to "1.729e+84" converts 1.729e-249 to "1.729e-249" converts 1.729e-249 to "1.729e-249" converts 1.729e+121 to "1.729e+121" converts 1.729e+121 to "1.729e+121" converts 1.729e+281 to "1.729e+281" converts 1.729e+281 to "1.729e+281" converts 1.729e-185 to "1.729e-185" converts 1.729e-185 to "1.729e-185" converts 1.729e-30 to "1.729e-30" converts 1.729e-30 to "1.729e-30" converts 1.729e+83 to "1.729e+83" converts 1.729e+83 to "1.729e+83" converts 1.729e+263 to "1.729e+263" converts 1.729e+263 to "1.729e+263" converts 1.729e-90 to "1.729e-90" converts 1.729e-90 to "1.729e-90" converts 1.729e-1 to "0.1729" converts 1.729e-1 to "0.1729" converts 1.729e+106 to "1.729e+106" converts 1.729e+106 to "1.729e+106" converts 1.729e-259 to "1.729e-259" converts 1.729e-259 to "1.729e-259" converts 1.729e+267 to "1.729e+267" converts 1.729e+267 to "1.729e+267" converts 1.729e+292 to "1.729e+292" converts 1.729e+292 to "1.729e+292" converts 1.729e-145 to "1.729e-145" converts 1.729e-145 to "1.729e-145" converts 1.729e+300 to "1.729e+300" converts 1.729e+300 to "1.729e+300" converts 1.729e-124 to "1.729e-124" converts 1.729e-124 to "1.729e-124" converts 1.729e+185 to "1.729e+185" converts 1.729e+185 to "1.729e+185" converts 1.729e+287 to "1.729e+287" converts 1.729e+287 to "1.729e+287" converts 1.729e+2 to "172.9" converts 1.729e+2 to "172.9" converts 1.729e-97 to "1.729e-97" converts 1.729e-97 to "1.729e-97" converts 1.729e+57 to "1.729e+57" converts 1.729e+57 to "1.729e+57" converts 1.729e-222 to "1.729e-222" converts 1.729e-222 to "1.729e-222" converts 1.729e+209 to "1.729e+209" converts 1.729e+209 to "1.729e+209" converts 1.729e+177 to "1.729e+177" converts 1.729e+177 to "1.729e+177" converts 1.729e-71 to "1.729e-71" converts 1.729e-71 to "1.729e-71" converts 1.729e+96 to "1.729e+96" converts 1.729e+96 to "1.729e+96" converts 1.729e+266 to "1.729e+266" converts 1.729e+266 to "1.729e+266" converts 1.729e-45 to "1.729e-45" converts 1.729e-45 to "1.729e-45" converts 1.729e-181 to "1.729e-181" converts 1.729e-181 to "1.729e-181" converts 1.729e-171 to "1.729e-171" converts 1.729e-171 to "1.729e-171" converts 1.729e+94 to "1.729e+94" converts 1.729e+94 to "1.729e+94" converts 1.729e-142 to "1.729e-142" converts 1.729e-142 to "1.729e-142" converts 1.729e+59 to "1.729e+59" converts 1.729e+59 to "1.729e+59" converts 1.729e-319 to "1.729e-319" converts 1.729e-319 to "1.729e-319" converts 1.729e+198 to "1.729e+198" converts 1.729e+198 to "1.729e+198" converts 1.729e-96 to "1.729e-96" converts 1.729e-96 to "1.729e-96" converts 1.729e-309 to "1.729e-309" converts 1.729e-309 to "1.729e-309" converts 1.729e+221 to "1.729e+221" converts 1.729e+221 to "1.729e+221" converts 1.729e-229 to "1.729e-229" converts 1.729e-229 to "1.729e-229" converts 1.729e+98 to "1.729e+98" converts 1.729e+98 to "1.729e+98" converts 1.729e-131 to "1.729e-131" converts 1.729e-131 to "1.729e-131" converts 1.729e+276 to "1.729e+276" converts 1.729e+276 to "1.729e+276" converts 1.729e+100 to "1.729e+100" converts 1.729e+100 to "1.729e+100" converts 1.729e+101 to "1.729e+101" converts 1.729e+101 to "1.729e+101" converts 1.729e-128 to "1.729e-128" converts 1.729e-128 to "1.729e-128" converts 1.729e+199 to "1.729e+199" converts 1.729e+199 to "1.729e+199" converts 1.729e+24 to "1.729e+24" converts 1.729e+24 to "1.729e+24" converts 1.729e+77 to "1.729e+77" converts 1.729e+77 to "1.729e+77" converts 1.729e+19 to "1.729e+19" converts 1.729e+19 to "1.729e+19" converts 1.729e-82 to "1.729e-82" converts 1.729e-82 to "1.729e-82" converts 1.729e+193 to "1.729e+193" converts 1.729e+193 to "1.729e+193" converts 1.729e-27 to "1.729e-27" converts 1.729e-27 to "1.729e-27" converts 1.729e-69 to "1.729e-69" converts 1.729e-69 to "1.729e-69" converts 1.729e+244 to "1.729e+244" converts 1.729e+244 to "1.729e+244" converts 1.729e-121 to "1.729e-121" converts 1.729e-121 to "1.729e-121" converts 1.729e+204 to "1.729e+204" converts 1.729e+204 to "1.729e+204" converts 1.729e+62 to "1.729e+62" converts 1.729e+62 to "1.729e+62" converts 1.729e+17 to "1.729e+17" converts 1.729e+17 to "1.729e+17" converts 1.729e-266 to "1.729e-266" converts 1.729e-266 to "1.729e-266" converts 1.729e-186 to "1.729e-186" converts 1.729e-186 to "1.729e-186" converts 1.729e-156 to "1.729e-156" converts 1.729e-156 to "1.729e-156" converts 1.729e-194 to "1.729e-194" converts 1.729e-194 to "1.729e-194" converts 1.729e-275 to "1.729e-275" converts 1.729e-275 to "1.729e-275" converts 1.729e-312 to "1.729e-312" converts 1.729e-312 to "1.729e-312" converts 1.729e+183 to "1.729e+183" converts 1.729e+183 to "1.729e+183" converts 1.729e+186 to "1.729e+186" converts 1.729e+186 to "1.729e+186" converts 1.729e+233 to "1.729e+233" converts 1.729e+233 to "1.729e+233" converts 1.729e-224 to "1.729e-224" converts 1.729e-224 to "1.729e-224" converts 1.729e+124 to "1.729e+124" converts 1.729e+124 to "1.729e+124" converts 1.729e+37 to "1.729e+37" converts 1.729e+37 to "1.729e+37" converts 1.729e+219 to "1.729e+219" converts 1.729e+219 to "1.729e+219" converts 1.729e-263 to "1.729e-263" converts 1.729e-263 to "1.729e-263" converts 1.729e+58 to "1.729e+58" converts 1.729e+58 to "1.729e+58" converts 7.29e-324 to "5.0e-324" converts 7.29e-324 to "5.0e-324" converts 1.729e-175 to "1.729e-175" converts 1.729e-175 to "1.729e-175" converts 1.729e+44 to "1.729e+44" converts 1.729e+44 to "1.729e+44" converts 1.729e+123 to "1.729e+123" converts 1.729e+123 to "1.729e+123" converts 1.729e-140 to "1.729e-140" converts 1.729e-140 to "1.729e-140" converts 1.729e+60 to "1.729e+60" converts 1.729e+60 to "1.729e+60" converts 1.729e+88 to "1.729e+88" converts 1.729e+88 to "1.729e+88" converts 1.729e-255 to "1.729e-255" converts 1.729e-255 to "1.729e-255" converts 1.729e+12 to "1729000000000.0" converts 1.729e+12 to "1729000000000.0" converts 1.729e+35 to "1.729e+35" converts 1.729e+35 to "1.729e+35" converts 1.729e-239 to "1.729e-239" converts 1.729e-239 to "1.729e-239" converts 1.729e-40 to "1.729e-40" converts 1.729e-40 to "1.729e-40" converts 1.729e+153 to "1.729e+153" converts 1.729e+153 to "1.729e+153" converts 1.729e-240 to "1.729e-240" converts 1.729e-240 to "1.729e-240" converts 1.729e-135 to "1.729e-135" converts 1.729e-135 to "1.729e-135" converts 1.729e+103 to "1.729e+103" converts 1.729e+103 to "1.729e+103" converts 1.729e-89 to "1.729e-89" converts 1.729e-89 to "1.729e-89" converts 1.729e-83 to "1.729e-83" converts 1.729e-83 to "1.729e-83" converts 1.729e-296 to "1.729e-296" converts 1.729e-296 to "1.729e-296" converts 1.729e-233 to "1.729e-233" converts 1.729e-233 to "1.729e-233" converts 1.729e+80 to "1.729e+80" converts 1.729e+80 to "1.729e+80" converts 1.729e-254 to "1.729e-254" converts 1.729e-254 to "1.729e-254" converts 1.729e+147 to "1.729e+147" converts 1.729e+147 to "1.729e+147" converts 1.729e+92 to "1.729e+92" converts 1.729e+92 to "1.729e+92" converts 1.729e+188 to "1.729e+188" converts 1.729e+188 to "1.729e+188" converts 1.729e-92 to "1.729e-92" converts 1.729e-92 to "1.729e-92" converts 1.729e+307 to "1.729e+307" converts 1.729e+307 to "1.729e+307" converts 1.729e-256 to "1.729e-256" converts 1.729e-256 to "1.729e-256" converts 1.729e-294 to "1.729e-294" converts 1.729e-294 to "1.729e-294" converts 1.729e-33 to "1.729e-33" converts 1.729e-33 to "1.729e-33" converts 1.729e+290 to "1.729e+290" converts 1.729e+290 to "1.729e+290" converts 1.729e-161 to "1.729e-161" converts 1.729e-161 to "1.729e-161" converts 1.729e-112 to "1.729e-112" converts 1.729e-112 to "1.729e-112" converts 1.729e+79 to "1.729e+79" converts 1.729e+79 to "1.729e+79" converts 1.729e+4 to "17290.0" converts 1.729e+4 to "17290.0" converts 1.729e+275 to "1.729e+275" converts 1.729e+275 to "1.729e+275" converts 1.729e-164 to "1.729e-164" converts 1.729e-164 to "1.729e-164" converts 1.729e+34 to "1.729e+34" converts 1.729e+34 to "1.729e+34" converts 1.729e-150 to "1.729e-150" converts 1.729e-150 to "1.729e-150" converts 1.729e-67 to "1.729e-67" converts 1.729e-67 to "1.729e-67" converts 1.729e-8 to "1.729e-8" converts 1.729e-8 to "1.729e-8" converts 1.729e-74 to "1.729e-74" converts 1.729e-74 to "1.729e-74" converts 1.729e-144 to "1.729e-144" converts 1.729e-144 to "1.729e-144" converts 1.729e-305 to "1.729e-305" converts 1.729e-305 to "1.729e-305" converts 1.729e-79 to "1.729e-79" converts 1.729e-79 to "1.729e-79" converts 1.729e+111 to "1.729e+111" converts 1.729e+111 to "1.729e+111" converts 1.729e-287 to "1.729e-287" converts 1.729e-287 to "1.729e-287" converts 1.729e-6 to "1.729e-6" converts 1.729e-6 to "1.729e-6" converts 1.729e+175 to "1.729e+175" converts 1.729e+175 to "1.729e+175" converts 1.729e+41 to "1.729e+41" converts 1.729e+41 to "1.729e+41" converts 1.729e+82 to "1.729e+82" converts 1.729e+82 to "1.729e+82" converts 1.729e-292 to "1.729e-292" converts 1.729e-292 to "1.729e-292" converts 1.729e-42 to "1.729e-42" converts 1.729e-42 to "1.729e-42" converts 1.729e+192 to "1.729e+192" converts 1.729e+192 to "1.729e+192" converts 1.729e+216 to "1.729e+216" converts 1.729e+216 to "1.729e+216" converts 1.729e-178 to "1.729e-178" converts 1.729e-178 to "1.729e-178" converts 1.729e+18 to "1.729e+18" converts 1.729e+18 to "1.729e+18" converts 1.729e-137 to "1.729e-137" converts 1.729e-137 to "1.729e-137" converts 1.729e-54 to "1.729e-54" converts 1.729e-54 to "1.729e-54" converts 1.729e+133 to "1.729e+133" converts 1.729e+133 to "1.729e+133" converts 1.729e-149 to "1.729e-149" converts 1.729e-149 to "1.729e-149" converts 1.729e-182 to "1.729e-182" converts 1.729e-182 to "1.729e-182" converts 1.729e-60 to "1.729e-60" converts 1.729e-60 to "1.729e-60" converts 1.729e+146 to "1.729e+146" converts 1.729e+146 to "1.729e+146" converts 1.729e+210 to "1.729e+210" converts 1.729e+210 to "1.729e+210" converts 1.729e+56 to "1.729e+56" converts 1.729e+56 to "1.729e+56" converts 1.729e+102 to "1.729e+102" converts 1.729e+102 to "1.729e+102" converts 1.729e+265 to "1.729e+265" converts 1.729e+265 to "1.729e+265" converts 1.729e+26 to "1.729e+26" converts 1.729e+26 to "1.729e+26" converts 1.729e-49 to "1.729e-49" converts 1.729e-49 to "1.729e-49" converts 1.729e+230 to "1.729e+230" converts 1.729e+230 to "1.729e+230" converts 1.729e+47 to "1.729e+47" converts 1.729e+47 to "1.729e+47" converts 1.729e+212 to "1.729e+212" converts 1.729e+212 to "1.729e+212" converts 1.729e-258 to "1.729e-258" converts 1.729e-258 to "1.729e-258" converts 1.729e+154 to "1.729e+154" converts 1.729e+154 to "1.729e+154" converts 1.729e+144 to "1.729e+144" converts 1.729e+144 to "1.729e+144" converts 1.729e-279 to "1.729e-279" converts 1.729e-279 to "1.729e-279" converts 1.729e-63 to "1.729e-63" converts 1.729e-63 to "1.729e-63" converts 1.729e+27 to "1.729e+27" converts 1.729e+27 to "1.729e+27" converts 1.729e-202 to "1.729e-202" converts 1.729e-202 to "1.729e-202" converts 1.729e-226 to "1.729e-226" converts 1.729e-226 to "1.729e-226" converts 1.729e+10 to "17290000000.0" converts 1.729e+10 to "17290000000.0" converts 1.729e-132 to "1.729e-132" converts 1.729e-132 to "1.729e-132" converts 1.729e-307 to "1.729e-307" converts 1.729e-307 to "1.729e-307" converts 1.729e-162 to "1.729e-162" converts 1.729e-162 to "1.729e-162" converts 1.729e-297 to "1.729e-297" converts 1.729e-297 to "1.729e-297" converts 1.729e-127 to "1.729e-127" converts 1.729e-127 to "1.729e-127" converts 1.729e-299 to "1.729e-299" converts 1.729e-299 to "1.729e-299" converts 1.729e-174 to "1.729e-174" converts 1.729e-174 to "1.729e-174" converts 1.729e-225 to "1.729e-225" converts 1.729e-225 to "1.729e-225" converts 1.729e-163 to "1.729e-163" converts 1.729e-163 to "1.729e-163" converts 1.729e-14 to "1.729e-14" converts 1.729e-14 to "1.729e-14" converts 1.729e-20 to "1.729e-20" converts 1.729e-20 to "1.729e-20" converts 1.729e+195 to "1.729e+195" converts 1.729e+195 to "1.729e+195" converts 1.729e+294 to "1.729e+294" converts 1.729e+294 to "1.729e+294" converts 1.729e+206 to "1.729e+206" converts 1.729e+206 to "1.729e+206" converts 1.729e-39 to "1.729e-39" converts 1.729e-39 to "1.729e-39" converts 1.729e+36 to "1.729e+36" converts 1.729e+36 to "1.729e+36" converts 1.729e-220 to "1.729e-220" converts 1.729e-220 to "1.729e-220" converts 1.729e-188 to "1.729e-188" converts 1.729e-188 to "1.729e-188" converts 1.729e+250 to "1.729e+250" converts 1.729e+250 to "1.729e+250" converts 1.729e+245 to "1.729e+245" converts 1.729e+245 to "1.729e+245" converts 1.729e-66 to "1.729e-66" converts 1.729e-66 to "1.729e-66" converts 1.729e+93 to "1.729e+93" converts 1.729e+93 to "1.729e+93" converts 1.729e-47 to "1.729e-47" converts 1.729e-47 to "1.729e-47" converts 1.729e+40 to "1.729e+40" converts 1.729e+40 to "1.729e+40" converts 1.729e-230 to "1.729e-230" converts 1.729e-230 to "1.729e-230" converts 1.729e-109 to "1.729e-109" converts 1.729e-109 to "1.729e-109" converts 1.729e-25 to "1.729e-25" converts 1.729e-25 to "1.729e-25" converts 1.729e-261 to "1.729e-261" converts 1.729e-261 to "1.729e-261" converts 1.729e+55 to "1.729e+55" converts 1.729e+55 to "1.729e+55" converts 1.729e+75 to "1.729e+75" converts 1.729e+75 to "1.729e+75" converts 1.729e-321 to "1.73e-321" converts 1.729e-321 to "1.73e-321" converts 1.729e-22 to "1.729e-22" converts 1.729e-22 to "1.729e-22" converts 1.729e-302 to "1.729e-302" converts 1.729e-302 to "1.729e-302" converts 1.729e-35 to "1.729e-35" converts 1.729e-35 to "1.729e-35" converts 1.729e+15 to "1.729e+15" converts 1.729e+15 to "1.729e+15" converts 1.729e-272 to "1.729e-272" converts 1.729e-272 to "1.729e-272" converts 1.729e-65 to "1.729e-65" converts 1.729e-65 to "1.729e-65" converts 1.729e+112 to "1.729e+112" converts 1.729e+112 to "1.729e+112" converts 1.729e-165 to "1.729e-165" converts 1.729e-165 to "1.729e-165" converts 1.729e+132 to "1.729e+132" converts 1.729e+132 to "1.729e+132" converts 1.729e+238 to "1.729e+238" converts 1.729e+238 to "1.729e+238" converts 1.729e+283 to "1.729e+283" converts 1.729e+283 to "1.729e+283" converts 1.729e+71 to "1.729e+71" converts 1.729e+71 to "1.729e+71" converts 1.729e+270 to "1.729e+270" converts 1.729e+270 to "1.729e+270" converts 1.729e-221 to "1.729e-221" converts 1.729e-221 to "1.729e-221" converts 1.729e+66 to "1.729e+66" converts 1.729e+66 to "1.729e+66" converts 1.729e+167 to "1.729e+167" converts 1.729e+167 to "1.729e+167" converts 1.729e+81 to "1.729e+81" converts 1.729e+81 to "1.729e+81" converts 1.729e+97 to "1.729e+97" converts 1.729e+97 to "1.729e+97" converts 1.729e+1 to "17.29" converts 1.729e+1 to "17.29" converts 1.729e-15 to "1.729e-15" converts 1.729e-15 to "1.729e-15" converts 1.729e+301 to "1.729e+301" converts 1.729e+301 to "1.729e+301" converts 1.729e-264 to "1.729e-264" converts 1.729e-264 to "1.729e-264" converts 1.729e-84 to "1.729e-84" converts 1.729e-84 to "1.729e-84" converts 1.729e+203 to "1.729e+203" converts 1.729e+203 to "1.729e+203" converts 1.729e-119 to "1.729e-119" converts 1.729e-119 to "1.729e-119" converts 1.729e+246 to "1.729e+246" converts 1.729e+246 to "1.729e+246" converts 1.729e-247 to "1.729e-247" converts 1.729e-247 to "1.729e-247" converts 1.729e+261 to "1.729e+261" converts 1.729e+261 to "1.729e+261" converts 1.729e-200 to "1.729e-200" converts 1.729e-200 to "1.729e-200" converts 1.729e+196 to "1.729e+196" converts 1.729e+196 to "1.729e+196" converts 1.729e-17 to "1.729e-17" converts 1.729e-17 to "1.729e-17" converts 1.729e+237 to "1.729e+237" converts 1.729e+237 to "1.729e+237" converts 1.729e-37 to "1.729e-37" converts 1.729e-37 to "1.729e-37" converts 1.729e-170 to "1.729e-170" converts 1.729e-170 to "1.729e-170" converts 1.729e-227 to "1.729e-227" converts 1.729e-227 to "1.729e-227" converts 1.729e+164 to "1.729e+164" converts 1.729e+164 to "1.729e+164" converts 1.729e+117 to "1.729e+117" converts 1.729e+117 to "1.729e+117" converts 1.729e+21 to "1.729e+21" converts 1.729e+21 to "1.729e+21" converts 1.729e+231 to "1.729e+231" converts 1.729e+231 to "1.729e+231" converts 1.729e+70 to "1.729e+70" converts 1.729e+70 to "1.729e+70" converts 1.729e-285 to "1.729e-285" converts 1.729e-285 to "1.729e-285" converts 1.729e+298 to "1.729e+298" converts 1.729e+298 to "1.729e+298" converts 1.729e+135 to "1.729e+135" converts 1.729e+135 to "1.729e+135" converts 1.729e+72 to "1.729e+72" converts 1.729e+72 to "1.729e+72" converts 1.729e-320 to "1.729e-320" converts 1.729e-320 to "1.729e-320" converts 1.729e+297 to "1.729e+297" converts 1.729e+297 to "1.729e+297" converts 1.729e+129 to "1.729e+129" converts 1.729e+129 to "1.729e+129" converts 1.729e-278 to "1.729e-278" converts 1.729e-278 to "1.729e-278" converts 1.729e-237 to "1.729e-237" converts 1.729e-237 to "1.729e-237" converts 1.729e-21 to "1.729e-21" converts 1.729e-21 to "1.729e-21" converts 1.729e+152 to "1.729e+152" converts 1.729e+152 to "1.729e+152" converts 1.729e-129 to "1.729e-129" converts 1.729e-129 to "1.729e-129" converts 1.729e+74 to "1.729e+74" converts 1.729e+74 to "1.729e+74" converts 1.729e-252 to "1.729e-252" converts 1.729e-252 to "1.729e-252" converts 1.729e-262 to "1.729e-262" converts 1.729e-262 to "1.729e-262" converts 524288.0 to "524288.0" converts 524288.0 to "524288.0" converts 1000000001000000.0 to "1.000000001e+15" converts 1000000001000000.0 to "1.000000001e+15" converts 536870912000.0 to "536870912000.0" converts 536870912000.0 to "536870912000.0" converts 1.234567890123456 to "1.234567890123456" converts 1.234567890123456 to "1.234567890123456" converts 1.23 to "1.23" converts 1.23 to "1.23" converts 1000000100000000.0 to "1.0000001e+15" converts 1000000100000000.0 to "1.0000001e+15" converts 1.234567 to "1.234567" converts 1.234567 to "1.234567" converts 8388608.0 to "8388608.0" converts 8388608.0 to "8388608.0" converts 70368744177664.0 to "70368744177664.0" converts 70368744177664.0 to "70368744177664.0" Ryu d2s_test.cc SmallIntegers converts 9007199254740991.0 to "9.007199254740991e+15" converts 9007199254740991.0 to "9.007199254740991e+15" converts 9007199254740992.0 to "9.007199254740992e+15" converts 9007199254740992.0 to "9.007199254740992e+15" one-digit cases, where the decimal point can't appear between digits like "17.29" converts 7e+0 to "7.0" converts 7e+0 to "7.0" converts 7e-2 to "0.07" converts 7e-2 to "0.07" converts 7e+2 to "700.0" converts 7e+2 to "700.0" converts 7e-3 to "0.007" converts 7e-3 to "0.007" converts 7e+3 to "7000.0" converts 7e+3 to "7000.0" converts 7e+1 to "70.0" converts 7e+1 to "70.0" converts 7e-1 to "0.7" converts 7e-1 to "0.7" converts 1.2345678 to "1.2345678" converts 1.2345678 to "1.2345678" converts 1234567890123456.0 to "1.234567890123456e+15" converts 1234567890123456.0 to "1.234567890123456e+15" converts 1001000000000000.0 to "1.001e+15" converts 1001000000000000.0 to "1.001e+15" converts 1.234 to "1.234" converts 1.234 to "1.234" converts 8589934592.0 to "8589934592.0" converts 8589934592.0 to "8589934592.0" converts 8388608000.0 to "8388608000.0" converts 8388608000.0 to "8388608000.0" converts 12345678901.0 to "12345678901.0" converts 12345678901.0 to "12345678901.0" converts 1000001000000000.0 to "1.000001e+15" converts 1000001000000000.0 to "1.000001e+15" converts 9007199254740992.0 to "9.007199254740992e+15" converts 9007199254740992.0 to "9.007199254740992e+15" highly-trimmed powers of 2 converts 0x1p960 to "9.7453140114e+288" converts 0x1p960 to "9.7453140114e+288" converts 0x1p959 to "4.8726570057e+288" converts 0x1p959 to "4.8726570057e+288" converts 1.0 to "1.0" converts 1.0 to "1.0" converts 12345678.0 to "12345678.0" converts 12345678.0 to "12345678.0" converts 1.2345678901234 to "1.2345678901234" converts 1.2345678901234 to "1.2345678901234" converts 1.234567890123 to "1.234567890123" converts 1.234567890123 to "1.234567890123" converts 1000000000001000.0 to "1.000000000001e+15" converts 1000000000001000.0 to "1.000000000001e+15" converts 100000000.0 to "100000000.0" converts 100000000.0 to "100000000.0" converts 1000000.0 to "1000000.0" converts 1000000.0 to "1000000.0" converts 10000000.0 to "10000000.0" converts 10000000.0 to "10000000.0" converts 123456789.0 to "123456789.0" converts 123456789.0 to "123456789.0" converts 68719476736000.0 to "68719476736000.0" converts 68719476736000.0 to "68719476736000.0" converts 524288000.0 to "524288000.0" converts 524288000.0 to "524288000.0" Grisu failures converts 4.91e-6 to "4.91e-6" converts 4.91e-6 to "4.91e-6" converts 0x1.a6c767640cd71p+879 to "6.6564021122018745e+264" converts 0x1.a6c767640cd71p+879 to "6.6564021122018745e+264" converts 1.0e+23 to "1.0e+23" converts 1.0e+23 to "1.0e+23" converts 3.5844466002796428e+298 to "3.5844466002796428e+298" converts 3.5844466002796428e+298 to "3.5844466002796428e+298" converts 5.547e-6 to "5.547e-6" converts 5.547e-6 to "5.547e-6" converts 0x1.e0ffed391517ep-186 to "1.9156918820264798e-56" converts 0x1.e0ffed391517ep-186 to "1.9156918820264798e-56" converts 1234567895.0 to "1234567895.0" converts 1234567895.0 to "1234567895.0" converts 8000.0 to "8000.0" converts 8000.0 to "8000.0" converts 8796093022208.0 to "8796093022208.0" converts 8796093022208.0 to "8796093022208.0" converts 123.0 to "123.0" converts 123.0 to "123.0" converts 123456.0 to "123456.0" converts 123456.0 to "123456.0" converts 100000000000.0 to "100000000000.0" converts 100000000000.0 to "100000000000.0" odd mantissas (unaffected by shifting) converts 5e22 to "5.0e+22" converts 5e22 to "5.0e+22" converts 81123342286848e18 to "8.1123342286848e+31" converts 81123342286848e18 to "8.1123342286848e+31" converts 115292150461e7 to "1.15292150461e+18" converts 115292150461e7 to "1.15292150461e+18" converts 922337203e10 to "9.22337203e+18" converts 922337203e10 to "9.22337203e+18" converts 1801439850948199e1 to "1.801439850948199e+16" converts 1801439850948199e1 to "1.801439850948199e+16" converts 3e22 to "3.0e+22" converts 3e22 to "3.0e+22" converts 14411518807585e4 to "1.4411518807585e+17" converts 14411518807585e4 to "1.4411518807585e+17" converts 2361e18 to "2.361e+21" converts 2361e18 to "2.361e+21" converts 115292150459e7 to "1.15292150459e+18" converts 115292150459e7 to "1.15292150459e+18" converts 295149e15 to "2.95149e+20" converts 295149e15 to "2.95149e+20" converts 72057594037927e3 to "7.2057594037927e+16" converts 72057594037927e3 to "7.2057594037927e+16" converts 59031e16 to "5.9031e+20" converts 59031e16 to "5.9031e+20" converts 93e20 to "9.3e+21" converts 93e20 to "9.3e+21" converts 11807e17 to "1.1807e+21" converts 11807e17 to "1.1807e+21" converts 59029e16 to "5.9029e+20" converts 59029e16 to "5.9029e+20" converts 302232576e15 to "3.02232576e+23" converts 302232576e15 to "3.02232576e+23" converts 4611686017e9 to "4.611686017e+18" converts 4611686017e9 to "4.611686017e+18" converts 14411518807587e4 to "1.4411518807587e+17" converts 14411518807587e4 to "1.4411518807587e+17" converts 23058430093e8 to "2.3058430093e+18" converts 23058430093e8 to "2.3058430093e+18" converts 473e19 to "4.73e+21" converts 473e19 to "4.73e+21" converts 184467441e11 to "1.84467441e+19" converts 184467441e11 to "1.84467441e+19" converts 7378697e13 to "7.378697e+19" converts 7378697e13 to "7.378697e+19" converts 922337205e10 to "9.22337205e+18" converts 922337205e10 to "9.22337205e+18" converts 360287970189641e2 to "3.60287970189641e+16" converts 360287970189641e2 to "3.60287970189641e+16" converts 184467439e11 to "1.84467439e+19" converts 184467439e11 to "1.84467439e+19" converts 36893489e12 to "3.6893489e+19" converts 36893489e12 to "3.6893489e+19" converts 2882303761517e5 to "2.882303761517e+17" converts 2882303761517e5 to "2.882303761517e+17" converts 471e19 to "4.71e+21" converts 471e19 to "4.71e+21" converts 81192061763584e18 to "8.1192061763584e+31" converts 81192061763584e18 to "8.1192061763584e+31" converts 1801439850948197e1 to "1.801439850948197e+16" converts 1801439850948197e1 to "1.801439850948197e+16" converts 11805e17 to "1.1805e+21" converts 11805e17 to "1.1805e+21" converts 576460752303e6 to "5.76460752303e+17" converts 576460752303e6 to "5.76460752303e+17" converts 4611686019e9 to "4.611686019e+18" converts 4611686019e9 to "4.611686019e+18" converts 2363e18 to "2.363e+21" converts 2363e18 to "2.363e+21" converts 295147e15 to "2.95147e+20" converts 295147e15 to "2.95147e+20" converts 36893487e12 to "3.6893487e+19" converts 36893487e12 to "3.6893487e+19" converts 19e21 to "1.9e+22" converts 19e21 to "1.9e+22" converts 17e21 to "1.7e+22" converts 17e21 to "1.7e+22" converts 23058430091e8 to "2.3058430091e+18" converts 23058430091e8 to "2.3058430091e+18" converts 7378699e13 to "7.378699e+19" converts 7378699e13 to "7.378699e+19" converts 2882303761519e5 to "2.882303761519e+17" converts 2882303761519e5 to "2.882303761519e+17" converts 1475739e14 to "1.475739e+20" converts 1475739e14 to "1.475739e+20" converts 72057594037929e3 to "7.2057594037929e+16" converts 72057594037929e3 to "7.2057594037929e+16" converts 1475741e14 to "1.475741e+20" converts 1475741e14 to "1.475741e+20" converts 360287970189639e2 to "3.60287970189639e+16" converts 360287970189639e2 to "3.60287970189639e+16" converts 95e20 to "9.5e+21" converts 95e20 to "9.5e+21" converts 576460752305e6 to "5.76460752305e+17" converts 576460752305e6 to "5.76460752305e+17" converts 302230528e15 to "3.02230528e+23" converts 302230528e15 to "3.02230528e+23" converts 8192.0 to "8192.0" converts 8192.0 to "8192.0" converts 100.0 to "100.0" converts 100.0 to "100.0" converts 536870912.0 to "536870912.0" converts 536870912.0 to "536870912.0" converts 100000000000000.0 to "100000000000000.0" converts 100000000000000.0 to "100000000000000.0" converts 549755813888.0 to "549755813888.0" converts 549755813888.0 to "549755813888.0" JSON mapping works together with yaml works together with yaml allows small types of integer allows small types of integer parses array of people parses array of people parses person with unknown attributes parses person with unknown attributes parses json array as set parses json array as set parses JSON with presence markers parses person with absent attributes parses person with absent attributes parses json with Time::Format converter parses json with Time::Format converter parses raw value from object parses raw value from object parses 128-bit integer parses 128-bit integer with query attributes defines query getter with class restriction defines query getter with class restriction raises if non-nilable attribute is nil raises if non-nilable attribute is nil defines query getter defines query getter defines non-query setter and presence methods defines non-query setter and presence methods maps non-query attributes maps non-query attributes emit_nulls option emit_nulls option parses with nilable root and emit null parses with nilable root and emit null should parse extra fields (JSONAttrPersonExtraFields with on_unknown_json_attribute) should parse extra fields (JSONAttrPersonExtraFields with on_unknown_json_attribute) parses raw value from int parses raw value from int fixes #13337 fixes #13337 parses simple mapping parses simple mapping emits null on request when doing to_json emits null on request when doing to_json converter with null value (#13655) converter with null value (#13655) parses json with problematic keys parses json with problematic keys raises if non-nilable attribute is nil raises if non-nilable attribute is nil parses person parses person serializes JSON with presence markers and ignore_serialize ignore_serialize is set to a method which returns true when value is nil or empty string ignores field when value is nil ignores field when value is nil ignores field when value is empty string ignores field when value is empty string ignore_serialize is set to conditional expressions 'last_name.nil? && !last_name_present?' emits field when value is not nil and @last_name_present is true emits field when value is not nil and @last_name_present is true emits field when value is not nil and @last_name_present is false emits field when value is not nil and @last_name_present is false emits null when value is null and @last_name_present is true emits null when value is null and @last_name_present is true does not emit null when value is null and @last_name_present is false does not emit null when value is null and @last_name_present is false parses raw value from float parses raw value from float raises if not an object raises if not an object doesn't emit null by default when doing to_json doesn't emit null by default when doing to_json does to_json does to_json works with record works with record converter with default value converter with default value BigDecimal parses large precision json floats with BigDecimal parses large precision json floats with BigDecimal parses json string with BigDecimal parses json string with BigDecimal parses large json ints with BigDecimal parses large json ints with BigDecimal parses json float with BigDecimal parses json float with BigDecimal work with module and inheritance assert assert assert assert assert assert assert assert outputs with converter when nilable when emit_null is true outputs with converter when nilable when emit_null is true parses strict person with unknown attributes parses strict person with unknown attributes JSON::HashValueConverter(Converter) uses converter instance with nested converter metaclass uses converter instance with nested converter metaclass uses converter metaclass uses converter metaclass uses converter instance with nested converter instance uses converter instance with nested converter instance empty class with unmapped empty class with unmapped allows setting a nilable property to nil allows setting a nilable property to nil parses person without age parses person without age empty class empty class outputs with converter when nilable outputs with converter when nilable uses Time::EpochConverter uses Time::EpochConverter outputs JSON with Hash outputs JSON with Hash should to store extra fields (JSONAttrPersonExtraFields with on_to_json) should to store extra fields (JSONAttrPersonExtraFields with on_to_json) parses json with any parses json with any namespaced classes lets default values use the object's own namespace lets default values use the object's own namespace raises if data type does not match raises if data type does not match works with class with two fields works with class with two fields parses json with defaults with nilable with nilable mixed mixed create new array every time create new array every time bool bool JSON::ArrayConverter(Converter) uses converter metaclass uses converter metaclass uses converter instance with nested converter instance uses converter instance with nested converter instance uses converter instance with nested converter metaclass uses converter instance with nested converter metaclass uses Time::EpochMillisConverter uses Time::EpochMillisConverter doesn't raises on false value when not-nil doesn't raises on false value when not-nil parses with nilable root parses with nilable root parses nilable union parses nilable union yaml and json with after_initialize hook yaml and json with after_initialize hook json with selective serialization json with selective serialization parses with root parses with root parses UUID parses UUID parses JSON integer into a float property (#8618) parses JSON integer into a float property (#8618) parses json with keywords parses json with keywords use_json_discriminator raises if unknown discriminator value raises if unknown discriminator value raises if missing discriminator raises if missing discriminator deserializes with discriminator, strict recursive type deserializes with discriminator, strict recursive type deserializes with discriminator, another recursive type, fixes: #13429 deserializes with discriminator, another recursive type, fixes: #13429 deserializes with discriminator deserializes with discriminator deserializes with variable discriminator value type deserializes with variable discriminator value type __floattisf passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests .__powisf2 .__powisf2 Base64 simple test encode "abc" to "YWJj\n" encode "abc" to "YWJj\n" encode "abcd" to "YWJjZA==\n" encode "abcd" to "YWJjZA==\n" encode "abcdef" to "YWJjZGVm\n" encode "abcdef" to "YWJjZGVm\n" encode "a" to "YQ==\n" encode "a" to "YQ==\n" decode from "YWJjZGVmZw==\n" to "abcdefg" decode from "YWJjZGVmZw==\n" to "abcdefg" decode from "YWJjZGU=\n" to "abcde" decode from "YWJjZGU=\n" to "abcde" encode "abcdefg" to "YWJjZGVmZw==\n" encode "abcdefg" to "YWJjZGVmZw==\n" encode "abcde" to "YWJjZGU=\n" encode "abcde" to "YWJjZGU=\n" decode from "YWJjZA==\n" to "abcd" decode from "YWJjZA==\n" to "abcd" decode from "YWJj\n" to "abc" decode from "YWJj\n" to "abc" decode from "YWI=\n" to "ab" decode from "YWI=\n" to "ab" encode "" to "" encode "" to "" decode from "YWJjZGVm\n" to "abcdef" decode from "YWJjZGVm\n" to "abcdef" encode "ab" to "YWI=\n" encode "ab" to "YWI=\n" decode from "YQ==\n" to "a" decode from "YQ==\n" to "a" decode from "" to "" decode from "" to "" base decode from strict form decode from strict form encode to stream returns number of written characters encode to stream returns number of written characters decode from "VGhpcyBpcyBsaW5lIG9uZQpUaGlzIGlzIGxpbmUgdHdvClRoaXMgaXMgbGlu\nZSB0aHJlZQpBbmQgc28gb24uLi4K\n" to "This is line one\nThis is line two\nThis is line three\nAnd so on...\n" decode from "VGhpcyBpcyBsaW5lIG9uZQpUaGlzIGlzIGxpbmUgdHdvClRoaXMgaXMgbGlu\nZSB0aHJlZQpBbmQgc28gb24uLi4K\n" to "This is line one\nThis is line two\nThis is line three\nAnd so on...\n" encode "This is line one\nThis is line two\nThis is line three\nAnd so on...\n" to "VGhpcyBpcyBsaW5lIG9uZQpUaGlzIGlzIGxpbmUgdHdvClRoaXMgaXMgbGlu\nZSB0aHJlZQpBbmQgc28gb24uLi4K\n" encode "This is line one\nThis is line two\nThis is line three\nAnd so on...\n" to "VGhpcyBpcyBsaW5lIG9uZQpUaGlzIGlzIGxpbmUgdHdvClRoaXMgaXMgbGlu\nZSB0aHJlZQpBbmQgc28gb24uLi4K\n" encode "hahah⊙ⓧ⊙" to "aGFoYWjiipnik6fiipk=\n" encode "hahah⊙ⓧ⊙" to "aGFoYWjiipnik6fiipk=\n" decode from "U2VuZCByZWluZm9yY2VtZW50cw==\n" to "Send reinforcements" decode from "U2VuZCByZWluZm9yY2VtZW50cw==\n" to "Send reinforcements" encode "Send reinforcements" to "U2VuZCByZWluZm9yY2VtZW50cw==\n" encode "Send reinforcements" to "U2VuZCByZWluZm9yY2VtZW50cw==\n" decode from "aGFoYWjiipnik6fiipk=\n" to "hahah⊙ⓧ⊙" decode from "aGFoYWjiipnik6fiipk=\n" to "hahah⊙ⓧ⊙" decode from stream returns number of written bytes decode from stream returns number of written bytes big message big message works for most characters works for most characters decode from "Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g\nQ3J5c3RhbA==\n" to "Now is the time for all good coders\nto learn Crystal" decode from "Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g\nQ3J5c3RhbA==\n" to "Now is the time for all good coders\nto learn Crystal" encode "Now is the time for all good coders\nto learn Crystal" to "Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g\nQ3J5c3RhbA==\n" encode "Now is the time for all good coders\nto learn Crystal" to "Tm93IGlzIHRoZSB0aW1lIGZvciBhbGwgZ29vZCBjb2RlcnMKdG8gbGVhcm4g\nQ3J5c3RhbA==\n" encodes byte slice encodes byte slice urlsafe encode to stream returns number of written characters encode to stream returns number of written characters work work in multiple places decode from "YWJj\nZGVm\nZw==\n" to "abcdefg" decode from "YWJj\nZGVm\nZw==\n" to "abcdefg" decode from "YWJj\nZA==\n" to "abcd" decode from "YWJj\nZA==\n" to "abcd" decode from "YWJj\nZGU=\n" to "abcde" decode from "YWJj\nZGU=\n" to "abcde" decode from "YWJj\nZGVm\n" to "abcdef" decode from "YWJj\nZGVm\n" to "abcdef" encodes empty slice encodes empty slice encodes static array encodes static array decode cases decode decode decode in multiple places decode in multiple places decode small tail after last , was a bug decode small tail after last , was a bug raise error when incorrect size raise error when incorrect size raise error when in incorrect place raise error when in incorrect place raise error when incorrect symbol raise error when incorrect symbol strict encode to stream returns number of written characters encode to stream returns number of written characters with spec symbols with spec symbols encode encode JSON::Builder writes array writes array #next_is_object_key? #next_is_object_key? writes integer writes integer errors on nan errors on nan writes object with scalar and indent writes object with scalar and indent writes bool writes bool writes float writes float writes field with scalar in object writes field with scalar in object writes nested array writes nested array writes field with arbitrary value in object writes field with arbitrary value in object writes string writes string writes array with indent string writes array with indent string writes object writes object writes null writes null errors on infinity errors on infinity writes empty object with indent level writes empty object with indent level writes raw writes raw errors if writing before document start errors if writing before document start writes object with array and scalar and indent writes object with array and scalar and indent errors on max nesting (object) errors on max nesting (object) errors if writing two scalars errors if writing two scalars writes string with controls and slashes writes string with controls and slashes raises if array is left open raises if array is left open raises if object is left open raises if object is left open writes empty array with indent level writes empty array with indent level writes nested object writes nested object errors on max nesting (array) errors on max nesting (array) writes nested array writes nested array raises if nothing written raises if nothing written writes object with indent level writes object with indent level writes array with indent level writes array with indent level ENV does .keys does .keys sets and gets case-sensitive sets and gets case-sensitive does .values does .values sets to empty string sets to empty string #to_h #to_h []= disallows NUL-bytes in key disallows NUL-bytes in key disallows NUL-bytes in value disallows NUL-bytes in value disallows NUL-bytes in key if value is nil disallows NUL-bytes in key if value is nil does has_key? does has_key? sets to nil (same as delete) sets to nil (same as delete) set and gets set and gets does not have an empty key does not have an empty key gets non existent key as nilable gets non existent key as nilable gets non existent key raises gets non existent key raises fetch fetches with block fetches with block fetches and raises fetches and raises fetches with default value fetches with default value fetches arbitrary default value fetches arbitrary default value fetches with one argument fetches with one argument handles unicode handles unicode deletes a key deletes a key Set does - does - does to_a does to_a == compares two sets compares two sets does ^ does ^ aliases + to | aliases + to | does ^ does ^ does ^ does ^ "#each" yielding "#each" yielding does ^ does ^ #rehash rehashes rehashes #proper_subset_of? #proper_subset_of? does - does - compare_by_identity compares by identity compares by identity retains compare_by_identity on clone retains compare_by_identity on clone retains compare_by_identity on dup retains compare_by_identity on dup an empty set has size 0 has size 0 is empty is empty add? returns true when object is not in the set returns true when object is not in the set returns false when object is in the set returns false when object is in the set does support giving a block to to_a does support giving a block to to_a does ^ does ^ does - does - dup creates a dup creates a dup #superset_of? #superset_of? does subtract does subtract does clear does clear "#each" iterator "#each" iterator #proper_superset_of? #proper_superset_of? does subtract does subtract compares hashes of sets compares hashes of sets does subtract does subtract add adds and includes adds and includes returns self returns self does & does & does subtract does subtract does - does - does to_s does to_s does | does | checks intersects checks intersects has object_id has object_id does ^ does ^ #subset_of? #subset_of? does each does each concat adds all the other elements adds all the other elements returns self returns self does - does - does subtract does subtract does - does - clone creates a clone creates a clone new creates new set with enumerable without block creates new set with enumerable without block does subtract does subtract delete returns true when the object was present returns true when the object was present returns false when the object was absent returns false when the object was absent deletes an object deletes an object Crystal::SyntaxHighlighter::Colorize .highlight "ensure" "ensure" "1 &** 2" "1 &** 2" "1 == 2" "1 == 2" "macro" "macro" "1 ^ 2" "1 ^ 2" "$1" "$1" "sizeof" "sizeof" "%w(foo bar baz)" "%w(foo bar baz)" "1 === 2" "1 === 2" "1 &*= 2" "1 &*= 2" "1 != 2" "1 != 2" "struct" "struct" "1 |= 2" "1 |= 2" "a/ b" "a/ b" "1 //= 2" "1 //= 2" "def /" "def /" "a / b" "a / b" "1 !~ 2" "1 !~ 2" "extend" "extend" "in" "in" "def &" "def &" "def" "def" "1 *= 2" "1 *= 2" "1 &* 2" "1 &* 2" "abstract" "abstract" "1 []= 2" "1 []= 2" "\"foo\#{[1, bar, \"str\"]}baz\"" "\"foo\#{[1, bar, \"str\"]}baz\"" "1 &&= 2" "1 &&= 2" "next" "next" "then" "then" "offsetof" "offsetof" "/foo/xim" "/foo/xim" "do" "do" "def <=" "def <=" "'<'" "'<'" "1 <=> 2" "1 <=> 2" "$~" "$~" "a /b/" "a /b/" "%i(foo bar baz)" "%i(foo bar baz)" "if" "if" "when" "when" "break" "break" "private" "private" "1 &+= 2" "1 &+= 2" "is_a?" "is_a?" "def ~" "def ~" "1/2" "1/2" "class" "class" "$?" "$?" "include" "include" "%(foo)" "%(foo)" "typeof" "typeof" "\"nest1\#{foo + \"nest2\#{1 + 1}bar\"}baz\"" "\"nest1\#{foo + \"nest2\#{1 + 1}bar\"}baz\"" "enum" "enum" "asm" "asm" "def >=" "def >=" "def ==" "def ==" "module" "module" "with" "with" "%w<foo bar baz>" "%w<foo bar baz>" "1 ^= 2" "1 ^= 2" "1 &= 2" "1 &= 2" "1 >= 2" "1 >= 2" "def =~" "def =~" "# <\">" "# <\">" "return" "return" "as" "as" "def <" "def <" "1 &- 2" "1 &- 2" "1 [] 2" "1 [] 2" "1 | 2" "1 | 2" "1 /2" "1 /2" "protected" "protected" "1 & 2" "1 & 2" "%x(foo)" "%x(foo)" "type" "type" "1 /= 2" "1 /= 2" "1 % 2" "1 % 2" "require" "require" "Foo" "Foo" "1 && 2" "1 && 2" "uninitialized" "uninitialized" "foo\nbar" "foo\nbar" "foo bar" "foo bar" "def >" "def >" "self" "self" "a/b" "a/b" "for" "for" "def foo" "def foo" "else" "else" "while" "while" "\"foo\"" "\"foo\"" "lib" "lib" "foo" "foo" "as?" "as?" "super" "super" "Foo::Bar" "Foo::Bar" "instance_alignof" "instance_alignof" "def ^" "def ^" "1 << 2" "1 << 2" "nil" "nil" "Set{1, 2, 3}" "Set{1, 2, 3}" "annotation" "annotation" "verbatim" "verbatim" "1 ~ 2" "1 ~ 2" "1 []? 2" "1 []? 2" "%q(foo)" "%q(foo)" "\"foo\#{bar}baz\"" "\"foo\#{bar}baz\"" "1 + 2" "1 + 2" "elsif" "elsif" "alias" "alias" "1 > 2" "1 > 2" "yield" "yield" "1/ 2" "1/ 2" "begin" "begin" "1 =~ 2" "1 =~ 2" "pointerof" "pointerof" "1 &-= 2" "1 &-= 2" "foo = bar(\"baz\#{PI + 1}\") # comment" "foo = bar(\"baz\#{PI + 1}\") # comment" "%w(foo bar\n baz)" "%w(foo bar\n baz)" "def **" "def **" "\"<>\"" "\"<>\"" "unless" "unless" "union" "union" "1 ||= 2" "1 ||= 2" ":\"foo\"" ":\"foo\"" "1 <= 2" "1 <= 2" "rescue" "rescue" "end" "end" "false" "false" "def |" "def |" "fun" "fun" "select" "select" "nil?" "nil?" "1 += 2" "1 += 2" "def >>" "def >>" "def !=" "def !=" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO\n bar\n BAR" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO\n bar\n BAR" "1 <<= 2" "1 <<= 2" "%Q(foo)" "%Q(foo)" "1 %= 2" "1 %= 2" "1 / 2" "1 / 2" "alignof" "alignof" "def []" "def []" "3.14" "3.14" "'a'" "'a'" "def []=" "def []=" "of" "of" "1 -= 2" "1 -= 2" "true" "true" "`foo`" "`foo`" "1 * 2" "1 * 2" "instance_sizeof" "instance_sizeof" "def %" "def %" "def <<" "def <<" "until" "until" "def -" "def -" "1 ! 2" "1 ! 2" "def <=>" "def <=>" "1 >> 2" "1 >> 2" "123_i64" "123_i64" "%r(foo)xim" "%r(foo)xim" "def !~" "def !~" "def []?" "def []?" "1 &+ 2" "1 &+ 2" "42" "42" "1 < 2" "1 < 2" ":foo" ":foo" "case" "case" "1 - 2" "1 - 2" "1 // 2" "1 // 2" "# bar\n" "# bar\n" "# foo" "# foo" "1 ** 2" "1 ** 2" "def +" "def +" "1 = 2" "1 = 2" "1 >>= 2" "1 >>= 2" "1 **= 2" "1 **= 2" "1 || 2" "1 || 2" "# foo\n# bar\n" "# foo\n# bar\n" "out" "out" "def //" "def //" "$2?" "$2?" "%<foo>" "%<foo>" "def *" "def *" .highlight! "\"foo" "\"foo" "%w[foo" "%w[foo" "%i[foo" "%i[foo" "foo = bar(\"baz\#{PI + 1}\") # comment" "foo = bar(\"baz\#{PI + 1}\") # comment" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO" "foo, bar = <<-FOO, <<-BAR\n foo" "foo, bar = <<-FOO, <<-BAR\n foo" HTTP::Cookie #name= raises on invalid name raises on invalid name automatically configures the cookie __Secure- prefix and related properties are unset automatically configures the cookie __Secure- prefix and related properties are unset doesn't raise on invalid cookie with __Host- prefix doesn't raise on invalid cookie with __Host- prefix automatically configures the cookie __Host- prefix and related unset properties automatically configures the cookie __Host- prefix and related unset properties doesn't raise on invalid cookie with __Secure- prefix doesn't raise on invalid cookie with __Secure- prefix #to_set_cookie_header samesite samesite assert assert assert assert assert assert assert assert assert assert assert assert assert assert #== #== .new raises on invalid value raises on invalid value with a security prefix raises on invalid cookie with prefix raises on invalid cookie with prefix automatically configures the cookie if it has the __Host- prefix and no explicit values provided automatically configures the cookie if it has the __Host- prefix and no explicit values provided automatically makes the cookie secure if it has the __Secure- prefix and no explicit *secure* value is provided automatically makes the cookie secure if it has the __Secure- prefix and no explicit *secure* value is provided raises on invalid name raises on invalid name #valid? & #validate! with a __Secure- prefix, but @secure is somehow `nil` with a __Secure- prefix, but @secure is somehow `nil` raises on invalid cookie with __Host- prefix raises on invalid cookie with __Host- prefix raises on invalid cookie with __Secure- prefix raises on invalid cookie with __Secure- prefix #value= raises on invalid value raises on invalid value SemanticVersion compares < compares < compares build equivalence compares build equivalence SemanticVersion::Prerelease compares < compares < does not accept bad versions does not accept bad versions copies with specified modifications copies with specified modifications bumps to the correct version bumps to the correct version YAML::Serializable parses yaml with defaults create new array every time create new array every time bool bool with nilable with nilable mixed mixed outputs with converter when nilable when emit_null is true outputs with converter when nilable when emit_null is true converter with null value (#13655) converter with null value (#13655) should parse extra fields (YAMLAttrPersonExtraFields with on_unknown_yaml_attribute) should parse extra fields (YAMLAttrPersonExtraFields with on_unknown_yaml_attribute) with query attributes defines query getter defines query getter defines query getter with class restriction defines query getter with class restriction defines non-query setter and presence methods defines non-query setter and presence methods maps non-query attributes maps non-query attributes raises if non-nilable attribute is nil raises if non-nilable attribute is nil raises if non-nilable attribute is nil raises if non-nilable attribute is nil doesn't raises on false value when not-nil doesn't raises on false value when not-nil uses Time::EpochMillisConverter uses Time::EpochMillisConverter raises if data type does not match raises if data type does not match converter with default value converter with default value parses recursive nilable (1) parses recursive nilable (1) parses yaml with any parses yaml with any empty class with unmapped empty class with unmapped checks that values fit into integer types checks that values fit into integer types parses recursive hash parses recursive hash parses strict person with unknown attributes parses strict person with unknown attributes raises if not an object raises if not an object parses person without age parses person without age parses yaml with Time::Format converter parses yaml with Time::Format converter parses person parses person parses yaml with problematic keys parses yaml with problematic keys use_yaml_discriminator deserializes with discriminator, another recursive type, fixes: #13429 deserializes with discriminator, another recursive type, fixes: #13429 raises if unknown discriminator value raises if unknown discriminator value deserializes type which nests type with discriminator (#9849) deserializes type which nests type with discriminator (#9849) deserializes with discriminator deserializes with discriminator raises if missing discriminator raises if missing discriminator deserializes with variable discriminator value type deserializes with variable discriminator value type deserializes with discriminator, strict recursive type deserializes with discriminator, strict recursive type emit_nulls option emit_nulls option outputs YAML with Hash outputs YAML with Hash works with class with three fields works with class with three fields should to store extra fields (YAMLAttrPersonExtraFields with on_to_yaml) should to store extra fields (YAMLAttrPersonExtraFields with on_to_yaml) YAML::ArrayConverter(Converter) uses converter instance with nested converter metaclass uses converter instance with nested converter metaclass uses converter instance with nested converter instance uses converter instance with nested converter instance uses converter metaclass uses converter metaclass doesn't emit null when doing to_yaml doesn't emit null when doing to_yaml parses person with unknown attributes parses person with unknown attributes fixes #13337 fixes #13337 serializes YAML with presence markers and ignore_serialize ignore_serialize is set to conditional expressions 'last_name.nil? && !last_name_present?' emits field when value is not nil and @last_name_present is true emits field when value is not nil and @last_name_present is true emits field when value is not nil and @last_name_present is false emits field when value is not nil and @last_name_present is false emits null when value is null and @last_name_present is true emits null when value is null and @last_name_present is true does not emit null when value is null and @last_name_present is false does not emit null when value is null and @last_name_present is false ignore_serialize is set to a method which returns true when value is nil or empty string ignores field when value is empty string ignores field when value is empty string ignores field when value is nil ignores field when value is nil does to_yaml does to_yaml uses Time::EpochConverter uses Time::EpochConverter work with module and inheritance assert assert assert assert assert assert assert assert parses array of people with merge parses array of people with merge works with record works with record allows setting a nilable property to nil allows setting a nilable property to nil parses simple mapping parses simple mapping parses person with blank age parses person with blank age calls #finalize calls #finalize outputs with converter when nilable outputs with converter when nilable works with selective serialization works with selective serialization parses recursive array parses recursive array empty class empty class parses yaml with keywords parses yaml with keywords emits null on request when doing to_yaml emits null on request when doing to_yaml parses recursive parses recursive parses array of people with merge, doesn't hang on infinite recursion parses array of people with merge, doesn't hang on infinite recursion namespaced classes lets default values use the object's own namespace lets default values use the object's own namespace checks that non-integer values for integer fields report the expected type checks that non-integer values for integer fields report the expected type parses YAML with presence markers parses person with absent attributes parses person with absent attributes allows small types of integer allows small types of integer parses array of people parses array of people work with inned class using same module name assert assert parses recursive nilable (2) parses recursive nilable (2) parses nilable union parses nilable union OAuth2::Client authorization uri gets with absolute uri gets with absolute uri gets with state gets with state gets with default endpoint gets with default endpoint gets with custom endpoint gets with custom endpoint gets with block gets with block get_access_token_using_* using Request Body to pass credentials #make_token_request #make_token_request #get_access_token_using_refresh_token #get_access_token_using_refresh_token #get_access_token_using_client_credentials #get_access_token_using_client_credentials #get_access_token_using_resource_owner_credentials #get_access_token_using_resource_owner_credentials #get_access_token_using_authorization_code #get_access_token_using_authorization_code using HTTP Basic authentication to pass credentials #get_access_token_using_refresh_token #get_access_token_using_refresh_token configures HTTP::Client configures HTTP::Client #get_access_token_using_client_credentials #get_access_token_using_client_credentials #get_access_token_using_authorization_code #get_access_token_using_authorization_code #make_token_request #make_token_request #get_access_token_using_resource_owner_credentials #get_access_token_using_resource_owner_credentials __muloti4 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests LLVM::ABI::AArch64 align for pointer for pointer for double for double for array for array for integer for integer for packed struct for packed struct for struct for struct for float for float abi_info does with structs less than 64 bits does with structs less than 64 bits does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with homogeneous structs does with homogeneous structs does with structs larger than 128 bits does with structs larger than 128 bits does with primitives does with primitives size for float for float for struct for struct for integer for integer for array for array for double for double for pointer for pointer for packed struct for packed struct Time::Format raises when time zone missing raises when time zone missing formats formats parses day of month blank padded parses day of month blank padded parses parses parses day of year parses day of year parses nanoseconds parses nanoseconds parses nanoseconds with %9N parses nanoseconds with %9N formats rfc3339 with different fraction digits formats rfc3339 with different fraction digits parses centiseconds parses centiseconds parses empty parses empty formats standard formats formats standard formats parses timezone parses timezone assert assert parses hour 24 blank padded parses hour 24 blank padded parses if some decimals are missing parses if some decimals are missing parses milliseconds with %L parses milliseconds with %L parses microseconds with %6N parses microseconds with %6N parses am/pm parses am/pm parses discarding additional decimals parses discarding additional decimals assert assert parses the correct amount of digits (#853) parses the correct amount of digits (#853) parses hour 12 blank padded parses hour 12 blank padded can parse in location can parse in location parse fails without time zone parse fails without time zone parses milliseconds with %3N parses milliseconds with %3N parses 24h clock with am/pm parses 24h clock with am/pm assert assert parses zone name parses zone name assert assert assert assert parses 24h clock parses 24h clock assert assert parses month blank padded parses month blank padded gives nice error message when end of input is reached (#12047) gives nice error message when end of input is reached (#12047) LLVM .default_target_triple .default_target_triple .normalize_triple substitutes unknown for empty components substitutes unknown for empty components works works Crystal::Hasher inspect should not expose internal data should not expose internal data to_s should not expose internal data should not expose internal data funny_hash #string should match test vectors #string should match test vectors result should work result should work #int should match test vectors #int should match test vectors #bool should match test vectors #bool should match test vectors #nil should match test vectors #nil should match test vectors #float should match test vectors #float should match test vectors .reduce_num reduces BigInt reduces BigInt reduces BigFloat reduces BigFloat reduces BigRational reduces BigRational reduces primitive float reduces primitive float reduces primitive int reduces primitive int reduces BigDecimal reduces BigDecimal behavior #class should change state and differ #class should change state and differ Big i64 numbers should be hashed ok Big i64 numbers should be hashed ok #string should change state and differ #string should change state and differ #nil should change hasher state #nil should change hasher state #char should change state and differ #char should change state and differ #enum should change state and differ #enum should change state and differ #symbol should change state and differ #symbol should change state and differ #int should change state and differ #int should change state and differ #bool should change state and differ #bool should change state and differ #bytes should change state and differ #bytes should change state and differ #float should change state and differ #float should change state and differ #reference should change state and differ #reference should change state and differ #int should be equal for different types #int should be equal for different types 128bit types should be hashed ok 128bit types should be hashed ok normalization of numbers should 1_f32 and 1.to_big_f hashes equal should 1_f32 and 1.to_big_f hashes equal should 1_i32 and 1_f64 hashes equal should 1_i32 and 1_f64 hashes equal should 1_f32 and 1.to_big_r hashes equal should 1_f32 and 1.to_big_r hashes equal should 1_f32 and 1.to_big_i hashes equal should 1_f32 and 1.to_big_i hashes equal HTTP::ErrorHandler log debug message when the output is closed log debug message when the output is closed logs to custom logger logs to custom logger rescues from exception rescues from exception doesn't write errors when there is some output already sent doesn't write errors when there is some output already sent can return a generic error message can return a generic error message CSV build builds two rows builds two rows builds with commas builds with commas builds with inside quoted chars and symbols builds with inside quoted chars and symbols builds with numbers builds with numbers builds with custom quote character builds with custom quote character builds row from splat builds row from splat builds row from enumerable builds row from enumerable builds with commas builds with commas concats enumerable to row concats enumerable to row builds with quotes builds with quotes skips inside row skips inside row builds with quoting builds with quoting builds with custom separator builds with custom separator concats splat to row concats splat to row HTTP::StaticFileHandler does not serve a not found file does not serve a not found file still serve compressed content when modification time is very close still serve compressed content when modification time is very close unescapes a request path unescapes a request path adds Etag header adds Etag header doesn't serve compressed content if older than raw file doesn't serve compressed content if older than raw file with If-Modified-Since header returns 304 Not Modified for younger than Last-Modified returns 304 Not Modified for younger than Last-Modified serves content for older than Last-Modified serves content for older than Last-Modified returns 304 Not Modified for equal to Last-Modified returns 304 Not Modified for equal to Last-Modified lists directory's entries lists directory's entries adds Last-Modified header adds Last-Modified header serves a file serves a file with multiple If-None-Match header returns 304 Not Modified if at least one header matches etag returns 304 Not Modified if at least one header matches etag serves file if no header matches etag serves file if no header matches etag handles only GET and HEAD method handles only GET and HEAD method handles invalid redirect path handles invalid redirect path does not serve a not found directory does not serve a not found directory expands a request path expands a request path handles forbidden characters in windows paths handles forbidden characters in windows paths with If-None-Match header serves file if header is empty serves file if header is empty serves file if header does not match etag serves file if header does not match etag returns 304 Not Modified if header matches etag returns 304 Not Modified if header matches etag serves file if header does not contain valid etag serves file if header does not contain valid etag returns 304 Not Modified if header is * returns 304 Not Modified if header is * returns 400 returns 400 when a Range header is provided int range serves a byte range serves a byte range start of the range is larger than the file size start of the range is larger than the file size serves a single byte serves a single byte serves zero bytes serves zero bytes start >= file_size start >= file_size serves multiple byte ranges (separator with whitespace) serves multiple byte ranges (separator with whitespace) serves multiple byte ranges (separator without whitespace) serves multiple byte ranges (separator without whitespace) serves an open-ended byte range serves an open-ended byte range end of the range is larger than the file size end of the range is larger than the file size suffix range empty file empty file negative size negative size partial partial zero zero zero zero more bytes than content more bytes than content invalid Range syntax open range with negative end open range with negative end byte number without dash byte number without dash multiple dashes multiple dashes not a number not a number unsupported unit unsupported unit negative end negative end start > end start > end not a range not a range open range with negative end open range with negative end does not serve a file as directory does not serve a file as directory serve compressed content serve compressed content does not list directory's entries when directory_listing is set to false does not list directory's entries when directory_listing is set to false with both If-None-Match and If-Modified-Since headers serves a file if header does not match etag even If-Modified-Since is fresh serves a file if header does not match etag even If-Modified-Since is fresh ignores If-Modified-Since as specified in RFC 7232 ignores If-Modified-Since as specified in RFC 7232 Socket::Addrinfo Error .new (deprecated) .new (deprecated) #ip_address assert assert .udp yields each result yields each result returns an array returns an array .tcp returns an array returns an array yields each result yields each result .resolve raises helpful message on getaddrinfo failure raises helpful message on getaddrinfo failure yields each result yields each result eventually raises returned error eventually raises returned error returns an array returns an array #inspect #inspect Time #<=> compares different locations compares different locations compares compares #to_s #to_s #time_of_day #time_of_day #to_local_in is the difference of offsets apart is the difference of offsets apart keeps wall clock keeps wall clock .local initializes max value initializes max value fails with negative nanosecond fails with negative nanosecond fails with too big nanoseconds fails with too big nanoseconds checks boundary at time max checks boundary at time max checks boundary at time min checks boundary at time min accepts midnight 24:00 accepts midnight 24:00 initializes initializes #in changes location changes location #to_s prints string prints string prints local time prints local time prints offset for fixed location prints offset for fixed location prints date-time fields prints date-time fields prints offset for location prints offset for location omits nanoseconds omits nanoseconds .unix_ms .unix_ms .days_in_year .days_in_year .unix .unix .leap_year? knows years *not* divisible by 4 are normal knows years *not* divisible by 4 are normal knows that typical non-century leap years are divisible by 4 knows that typical non-century leap years are divisible by 4 knows that 100-year centuries are normal years knows that 100-year centuries are normal years knows that 400-year centuries are leap years knows that 400-year centuries are leap years UNIX_EPOCH UNIX_EPOCH at methods at methods Time::DayOfWeek .from_value .from_value #value #value .new does not identify 0 as Sunday .new does not identify 0 as Sunday .monotonic returns always increasing monotonic clock returns always increasing monotonic clock #to_unix gets unix seconds at GMT gets unix seconds at GMT gets unix seconds gets unix seconds #shift adds months adds months preserves location when adding preserves location when adding raises out of range min raises out of range min adds years adds years adds hours adds hours raises out of range max raises out of range max adds zero span adds zero span covers date boundaries with zone offset (#10869) covers date boundaries with zone offset (#10869) adds nanoseconds adds nanoseconds adds hours, minutes, seconds adds hours, minutes, seconds adds days out of range min out of range min over dst over dst simple simple out of range min (shift days) out of range min (shift days) out of range max (shift days) out of range max (shift days) out of range max out of range max checks boundary at time max checks boundary at time max covers date boundaries with zone offset (#8741) covers date boundaries with zone offset (#8741) irregular calendaric unit ratios shifts by a week if one day is left out shifts by a week if one day is left out shifts by conceptual hour even if elapsed time is less shifts by conceptual hour even if elapsed time is less checks boundary at time min checks boundary at time min .measure measures elapsed time measures elapsed time #day_of_year #day_of_year #step "advent" iterator "advent" iterator "advent" yielding "advent" yielding .local without arguments current time is similar in different locations current time is similar in different locations .unix_ns supports minimum valid time supports minimum valid time supports maximum valid time supports maximum valid time supports Int64 values supports Int64 values #calendar_week 2012-12-30 to 2012-52 2012-12-30 to 2012-52 1984-1-1 to 1983-52 1984-1-1 to 1983-52 1996-1-7 to 1996-1 1996-1-7 to 1996-1 2035-1-1 to 2035-1 2035-1-1 to 2035-1 2011-1-6 to 2011-1 2011-1-6 to 2011-1 2011-1-7 to 2011-1 2011-1-7 to 2011-1 2028-1-1 to 2027-52 2028-1-1 to 2027-52 2027-1-1 to 2026-53 2027-1-1 to 2026-53 2014-1-5 to 2014-1 2014-1-5 to 2014-1 2008-1-1 to 2008-1 2008-1-1 to 2008-1 2011-12-26 to 2011-52 2011-12-26 to 2011-52 2032-1-1 to 2032-1 2032-1-1 to 2032-1 2023-1-1 to 2022-52 2023-1-1 to 2022-52 2001-1-1 to 2001-1 2001-1-1 to 2001-1 1988-1-1 to 1987-53 1988-1-1 to 1987-53 1985-1-1 to 1985-1 1985-1-1 to 1985-1 1995-1-1 to 1994-52 1995-1-1 to 1994-52 1994-1-1 to 1993-52 1994-1-1 to 1993-52 2009-1-1 to 2009-1 2009-1-1 to 2009-1 2011-1-1 to 2010-52 2011-1-1 to 2010-52 2010-1-1 to 2009-53 2010-1-1 to 2009-53 2011-6-13 to 2011-24 2011-6-13 to 2011-24 2000-1-1 to 1999-52 2000-1-1 to 1999-52 1981-1-1 to 1981-1 1981-1-1 to 1981-1 1997-1-1 to 1997-1 1997-1-1 to 1997-1 1982-1-1 to 1981-53 1982-1-1 to 1981-53 2011-1-4 to 2011-1 2011-1-4 to 2011-1 2013-1-1 to 2013-1 2013-1-1 to 2013-1 1998-1-1 to 1998-1 1998-1-1 to 1998-1 2013-12-30 to 2014-1 2013-12-30 to 2014-1 2011-1-9 to 2011-1 2011-1-9 to 2011-1 2005-1-1 to 2004-53 2005-1-1 to 2004-53 2011-6-12 to 2011-23 2011-6-12 to 2011-23 2026-1-1 to 2026-1 2026-1-1 to 2026-1 2011-1-11 to 2011-2 2011-1-11 to 2011-2 1999-1-1 to 1998-53 1999-1-1 to 1998-53 2031-1-1 to 2031-1 2031-1-1 to 2031-1 2002-1-1 to 2002-1 2002-1-1 to 2002-1 1995-1-2 to 1995-1 1995-1-2 to 1995-1 2004-1-1 to 2004-1 2004-1-1 to 2004-1 1993-1-1 to 1992-53 1993-1-1 to 1992-53 2034-1-1 to 2033-52 2034-1-1 to 2033-52 2012-1-2 to 2012-1 2012-1-2 to 2012-1 2013-12-22 to 2013-51 2013-12-22 to 2013-51 2038-1-1 to 2037-53 2038-1-1 to 2037-53 1985-4-12 to 1985-15 1985-4-12 to 1985-15 2011-1-5 to 2011-1 2011-1-5 to 2011-1 1989-1-1 to 1988-52 1989-1-1 to 1988-52 2011-1-2 to 2010-52 2011-1-2 to 2010-52 2030-1-1 to 2030-1 2030-1-1 to 2030-1 2006-1-1 to 2005-52 2006-1-1 to 2005-52 2039-1-1 to 2038-52 2039-1-1 to 2038-52 2025-1-1 to 2025-1 2025-1-1 to 2025-1 2017-1-1 to 2016-52 2017-1-1 to 2016-52 2013-1-6 to 2013-1 2013-1-6 to 2013-1 2033-1-1 to 2032-53 2033-1-1 to 2032-53 1996-1-1 to 1996-1 1996-1-1 to 1996-1 2019-1-1 to 2019-1 2019-1-1 to 2019-1 2029-1-1 to 2029-1 2029-1-1 to 2029-1 2007-1-1 to 2007-1 2007-1-1 to 2007-1 2013-12-23 to 2013-52 2013-12-23 to 2013-52 2016-1-1 to 2015-53 2016-1-1 to 2015-53 2011-1-10 to 2011-2 2011-1-10 to 2011-2 2012-1-1 to 2011-52 2012-1-1 to 2011-52 1992-1-1 to 1992-1 1992-1-1 to 1992-1 2022-1-1 to 2021-52 2022-1-1 to 2021-52 2040-1-1 to 2039-52 2040-1-1 to 2039-52 2020-1-1 to 2020-1 2020-1-1 to 2020-1 2014-1-1 to 2014-1 2014-1-1 to 2014-1 1996-1-8 to 1996-2 1996-1-8 to 1996-2 1983-1-1 to 1982-52 1983-1-1 to 1982-52 2013-1-7 to 2013-2 2013-1-7 to 2013-2 2010-1-1 to 2009-53 2010-1-1 to 2009-53 2011-1-8 to 2011-1 2011-1-8 to 2011-1 2015-1-1 to 2015-1 2015-1-1 to 2015-1 2011-12-25 to 2011-51 2011-12-25 to 2011-51 2012-12-24 to 2012-52 2012-12-24 to 2012-52 2024-1-1 to 2024-1 2024-1-1 to 2024-1 2011-12-31 to 2011-52 2011-12-31 to 2011-52 2012-1-9 to 2012-2 2012-1-9 to 2012-2 1987-1-1 to 1987-1 1987-1-1 to 1987-1 2012-12-23 to 2012-51 2012-12-23 to 2012-51 1990-1-1 to 1990-1 1990-1-1 to 1990-1 2012-1-8 to 2012-1 2012-1-8 to 2012-1 2003-1-1 to 2003-1 2003-1-1 to 2003-1 2011-1-3 to 2011-1 2011-1-3 to 2011-1 2011-12-28 to 2011-52 2011-12-28 to 2011-52 2037-1-1 to 2037-1 2037-1-1 to 2037-1 2021-1-1 to 2020-53 2021-1-1 to 2020-53 1986-1-1 to 1986-1 1986-1-1 to 1986-1 1991-1-1 to 1991-1 1991-1-1 to 1991-1 2018-1-1 to 2018-1 2018-1-1 to 2018-1 2011-12-29 to 2011-52 2011-12-29 to 2011-52 2011-12-30 to 2011-52 2011-12-30 to 2011-52 2014-1-6 to 2014-2 2014-1-6 to 2014-2 2036-1-1 to 2036-1 2036-1-1 to 2036-1 2012-12-31 to 2013-1 2012-12-31 to 2013-1 2013-12-29 to 2013-52 2013-12-29 to 2013-52 2011-12-27 to 2011-52 2011-12-27 to 2011-52 does diff of utc vs local time does diff of utc vs local time answers day name predicates answers day name predicates .week_date accepts time arguments accepts time arguments verify test data W2010-52-7 eq 2011-1-2 W2010-52-7 eq 2011-1-2 W2026-53-5 eq 2027-1-1 W2026-53-5 eq 2027-1-1 W2032-53-6 eq 2033-1-1 W2032-53-6 eq 2033-1-1 W1982-52-6 eq 1983-1-1 W1982-52-6 eq 1983-1-1 W2013-51-7 eq 2013-12-22 W2013-51-7 eq 2013-12-22 W2009-53-5 eq 2010-1-1 W2009-53-5 eq 2010-1-1 W2008-1-2 eq 2008-1-1 W2008-1-2 eq 2008-1-1 W1998-1-4 eq 1998-1-1 W1998-1-4 eq 1998-1-1 W2031-1-3 eq 2031-1-1 W2031-1-3 eq 2031-1-1 W1985-15-5 eq 1985-4-12 W1985-15-5 eq 1985-4-12 W2014-1-1 eq 2013-12-30 W2014-1-1 eq 2013-12-30 W1999-52-6 eq 2000-1-1 W1999-52-6 eq 2000-1-1 W2011-1-6 eq 2011-1-8 W2011-1-6 eq 2011-1-8 W1996-2-1 eq 1996-1-8 W1996-2-1 eq 1996-1-8 W2011-52-7 eq 2012-1-1 W2011-52-7 eq 2012-1-1 W2011-23-7 eq 2011-6-12 W2011-23-7 eq 2011-6-12 W2011-52-1 eq 2011-12-26 W2011-52-1 eq 2011-12-26 W1998-53-5 eq 1999-1-1 W1998-53-5 eq 1999-1-1 W2001-1-1 eq 2001-1-1 W2001-1-1 eq 2001-1-1 W2021-52-6 eq 2022-1-1 W2021-52-6 eq 2022-1-1 W2011-1-1 eq 2011-1-3 W2011-1-1 eq 2011-1-3 W2013-2-1 eq 2013-1-7 W2013-2-1 eq 2013-1-7 W1996-1-1 eq 1996-1-1 W1996-1-1 eq 1996-1-1 W2012-2-1 eq 2012-1-9 W2012-2-1 eq 2012-1-9 W2019-1-2 eq 2019-1-1 W2019-1-2 eq 2019-1-1 W2011-52-3 eq 2011-12-28 W2011-52-3 eq 2011-12-28 W1994-52-7 eq 1995-1-1 W1994-52-7 eq 1995-1-1 W2009-1-4 eq 2009-1-1 W2009-1-4 eq 2009-1-1 W2012-1-7 eq 2012-1-8 W2012-1-7 eq 2012-1-8 W1995-1-1 eq 1995-1-2 W1995-1-1 eq 1995-1-2 W2020-1-3 eq 2020-1-1 W2020-1-3 eq 2020-1-1 W1987-1-4 eq 1987-1-1 W1987-1-4 eq 1987-1-1 W1985-1-2 eq 1985-1-1 W1985-1-2 eq 1985-1-1 W2004-1-4 eq 2004-1-1 W2004-1-4 eq 2004-1-1 W2013-1-2 eq 2013-1-1 W2013-1-2 eq 2013-1-1 W2011-2-2 eq 2011-1-11 W2011-2-2 eq 2011-1-11 W2015-1-4 eq 2015-1-1 W2015-1-4 eq 2015-1-1 W2038-52-6 eq 2039-1-1 W2038-52-6 eq 2039-1-1 W2033-52-7 eq 2034-1-1 W2033-52-7 eq 2034-1-1 W2009-53-5 eq 2010-1-1 W2009-53-5 eq 2010-1-1 W2037-53-5 eq 2038-1-1 W2037-53-5 eq 2038-1-1 W2013-52-1 eq 2013-12-23 W2013-52-1 eq 2013-12-23 W1981-53-5 eq 1982-1-1 W1981-53-5 eq 1982-1-1 W2013-1-7 eq 2013-1-6 W2013-1-7 eq 2013-1-6 W2011-1-7 eq 2011-1-9 W2011-1-7 eq 2011-1-9 W1992-1-3 eq 1992-1-1 W1992-1-3 eq 1992-1-1 W2029-1-1 eq 2029-1-1 W2029-1-1 eq 2029-1-1 W2005-52-7 eq 2006-1-1 W2005-52-7 eq 2006-1-1 W2039-52-7 eq 2040-1-1 W2039-52-7 eq 2040-1-1 W2011-2-1 eq 2011-1-10 W2011-2-1 eq 2011-1-10 W2011-51-7 eq 2011-12-25 W2011-51-7 eq 2011-12-25 W2011-52-6 eq 2011-12-31 W2011-52-6 eq 2011-12-31 W1987-53-5 eq 1988-1-1 W1987-53-5 eq 1988-1-1 W2014-1-7 eq 2014-1-5 W2014-1-7 eq 2014-1-5 W1992-53-5 eq 1993-1-1 W1992-53-5 eq 1993-1-1 W2007-1-1 eq 2007-1-1 W2007-1-1 eq 2007-1-1 W2002-1-2 eq 2002-1-1 W2002-1-2 eq 2002-1-1 W2014-1-3 eq 2014-1-1 W2014-1-3 eq 2014-1-1 W1993-52-6 eq 1994-1-1 W1993-52-6 eq 1994-1-1 W2027-52-6 eq 2028-1-1 W2027-52-6 eq 2028-1-1 W2026-1-4 eq 2026-1-1 W2026-1-4 eq 2026-1-1 W2020-53-5 eq 2021-1-1 W2020-53-5 eq 2021-1-1 W1997-1-3 eq 1997-1-1 W1997-1-3 eq 1997-1-1 W2012-52-1 eq 2012-12-24 W2012-52-1 eq 2012-12-24 W2011-1-2 eq 2011-1-4 W2011-1-2 eq 2011-1-4 W2013-52-7 eq 2013-12-29 W2013-52-7 eq 2013-12-29 W1996-1-7 eq 1996-1-7 W1996-1-7 eq 1996-1-7 W1981-1-4 eq 1981-1-1 W1981-1-4 eq 1981-1-1 W1986-1-3 eq 1986-1-1 W1986-1-3 eq 1986-1-1 W2024-1-1 eq 2024-1-1 W2024-1-1 eq 2024-1-1 W2011-1-3 eq 2011-1-5 W2011-1-3 eq 2011-1-5 W2003-1-3 eq 2003-1-1 W2003-1-3 eq 2003-1-1 W2012-1-1 eq 2012-1-2 W2012-1-1 eq 2012-1-2 W2022-52-7 eq 2023-1-1 W2022-52-7 eq 2023-1-1 W2011-52-2 eq 2011-12-27 W2011-52-2 eq 2011-12-27 W2011-52-4 eq 2011-12-29 W2011-52-4 eq 2011-12-29 W2011-1-5 eq 2011-1-7 W2011-1-5 eq 2011-1-7 W2012-52-7 eq 2012-12-30 W2012-52-7 eq 2012-12-30 W2004-53-6 eq 2005-1-1 W2004-53-6 eq 2005-1-1 W2036-1-2 eq 2036-1-1 W2036-1-2 eq 2036-1-1 W2011-52-5 eq 2011-12-30 W2011-52-5 eq 2011-12-30 W2015-53-5 eq 2016-1-1 W2015-53-5 eq 2016-1-1 W2032-1-4 eq 2032-1-1 W2032-1-4 eq 2032-1-1 W1991-1-2 eq 1991-1-1 W1991-1-2 eq 1991-1-1 W2037-1-4 eq 2037-1-1 W2037-1-4 eq 2037-1-1 W2030-1-2 eq 2030-1-1 W2030-1-2 eq 2030-1-1 W2035-1-1 eq 2035-1-1 W2035-1-1 eq 2035-1-1 W1983-52-7 eq 1984-1-1 W1983-52-7 eq 1984-1-1 W1988-52-7 eq 1989-1-1 W1988-52-7 eq 1989-1-1 W1990-1-1 eq 1990-1-1 W1990-1-1 eq 1990-1-1 W2011-1-4 eq 2011-1-6 W2011-1-4 eq 2011-1-6 W2016-52-7 eq 2017-1-1 W2016-52-7 eq 2017-1-1 W2013-1-1 eq 2012-12-31 W2013-1-1 eq 2012-12-31 W2014-2-1 eq 2014-1-6 W2014-2-1 eq 2014-1-6 W2025-1-3 eq 2025-1-1 W2025-1-3 eq 2025-1-1 W2011-24-1 eq 2011-6-13 W2011-24-1 eq 2011-6-13 W2018-1-1 eq 2018-1-1 W2018-1-1 eq 2018-1-1 W2012-51-7 eq 2012-12-23 W2012-51-7 eq 2012-12-23 W2010-52-6 eq 2011-1-1 W2010-52-6 eq 2011-1-1 #year #year #day_of_week 2011-12-27 is 2 2011-12-27 is 2 1998-1-1 is 4 1998-1-1 is 4 2011-12-25 is 7 2011-12-25 is 7 1982-1-1 is 5 1982-1-1 is 5 2012-12-23 is 7 2012-12-23 is 7 1984-1-1 is 7 1984-1-1 is 7 2013-1-1 is 2 2013-1-1 is 2 2026-1-1 is 4 2026-1-1 is 4 1999-1-1 is 5 1999-1-1 is 5 2008-1-1 is 2 2008-1-1 is 2 2030-1-1 is 2 2030-1-1 is 2 2007-1-1 is 1 2007-1-1 is 1 1996-1-1 is 1 1996-1-1 is 1 2013-12-22 is 7 2013-12-22 is 7 2040-1-1 is 7 2040-1-1 is 7 2001-1-1 is 1 2001-1-1 is 1 1992-1-1 is 3 1992-1-1 is 3 2019-1-1 is 2 2019-1-1 is 2 2037-1-1 is 4 2037-1-1 is 4 1988-1-1 is 5 1988-1-1 is 5 1985-1-1 is 2 1985-1-1 is 2 2011-1-7 is 5 2011-1-7 is 5 2011-1-4 is 2 2011-1-4 is 2 2039-1-1 is 6 2039-1-1 is 6 2013-12-23 is 1 2013-12-23 is 1 2036-1-1 is 2 2036-1-1 is 2 2029-1-1 is 1 2029-1-1 is 1 2015-1-1 is 4 2015-1-1 is 4 2012-12-30 is 7 2012-12-30 is 7 1986-1-1 is 3 1986-1-1 is 3 1990-1-1 is 1 1990-1-1 is 1 1981-1-1 is 4 1981-1-1 is 4 2017-1-1 is 7 2017-1-1 is 7 2012-12-24 is 1 2012-12-24 is 1 2012-1-8 is 7 2012-1-8 is 7 2011-1-8 is 6 2011-1-8 is 6 1996-1-7 is 7 1996-1-7 is 7 2011-12-31 is 6 2011-12-31 is 6 2013-12-30 is 1 2013-12-30 is 1 2011-12-29 is 4 2011-12-29 is 4 2025-1-1 is 3 2025-1-1 is 3 2002-1-1 is 2 2002-1-1 is 2 2024-1-1 is 1 2024-1-1 is 1 2009-1-1 is 4 2009-1-1 is 4 2004-1-1 is 4 2004-1-1 is 4 2013-1-7 is 1 2013-1-7 is 1 2010-1-1 is 5 2010-1-1 is 5 1987-1-1 is 4 1987-1-1 is 4 2018-1-1 is 1 2018-1-1 is 1 2012-1-2 is 1 2012-1-2 is 1 1997-1-1 is 3 1997-1-1 is 3 1996-1-8 is 1 1996-1-8 is 1 2014-1-6 is 1 2014-1-6 is 1 2027-1-1 is 5 2027-1-1 is 5 2011-1-5 is 3 2011-1-5 is 3 2012-1-1 is 7 2012-1-1 is 7 1991-1-1 is 2 1991-1-1 is 2 2021-1-1 is 5 2021-1-1 is 5 2011-1-1 is 6 2011-1-1 is 6 1983-1-1 is 6 1983-1-1 is 6 2005-1-1 is 6 2005-1-1 is 6 2011-1-11 is 2 2011-1-11 is 2 1994-1-1 is 6 1994-1-1 is 6 2020-1-1 is 3 2020-1-1 is 3 2012-12-31 is 1 2012-12-31 is 1 2014-1-5 is 7 2014-1-5 is 7 2013-12-29 is 7 2013-12-29 is 7 2000-1-1 is 6 2000-1-1 is 6 2003-1-1 is 3 2003-1-1 is 3 2013-1-6 is 7 2013-1-6 is 7 2035-1-1 is 1 2035-1-1 is 1 2038-1-1 is 5 2038-1-1 is 5 2016-1-1 is 5 2016-1-1 is 5 1995-1-2 is 1 1995-1-2 is 1 2011-1-3 is 1 2011-1-3 is 1 2011-1-2 is 7 2011-1-2 is 7 2032-1-1 is 4 2032-1-1 is 4 2012-1-9 is 1 2012-1-9 is 1 2011-12-28 is 3 2011-12-28 is 3 2011-6-12 is 7 2011-6-12 is 7 2022-1-1 is 6 2022-1-1 is 6 2028-1-1 is 6 2028-1-1 is 6 2014-1-1 is 3 2014-1-1 is 3 1989-1-1 is 7 1989-1-1 is 7 2011-12-26 is 1 2011-12-26 is 1 2033-1-1 is 6 2033-1-1 is 6 2023-1-1 is 7 2023-1-1 is 7 2031-1-1 is 3 2031-1-1 is 3 2010-1-1 is 5 2010-1-1 is 5 1995-1-1 is 7 1995-1-1 is 7 2034-1-1 is 7 2034-1-1 is 7 1985-4-12 is 5 1985-4-12 is 5 2006-1-1 is 7 2006-1-1 is 7 1993-1-1 is 5 1993-1-1 is 5 2011-6-13 is 1 2011-6-13 is 1 2011-1-9 is 7 2011-1-9 is 7 gets day of week gets day of week 2011-1-10 is 1 2011-1-10 is 1 2011-12-30 is 5 2011-12-30 is 5 2011-1-6 is 4 2011-1-6 is 4 #inspect #inspect #clone #clone .days_in_month raises exception for invalid month raises exception for invalid month returns days for valid month and year returns days for valid month and year raises exception for invalid year raises exception for invalid year URI serializes from_json_object_key? from_json_object_key? #to_json #to_json Iterator(T) #cons reuse reuse as deque reuse as deque reuse as Array reuse as Array reuse as nil reuse as nil reuse as Bool reuse as Bool conses conses flatten flattens an iterator of mixed-type iterators flattens an iterator of mixed-type iterators flattens an iterator of mixed-type elements and iterators flattens an iterator of mixed-type elements and iterators flattens nested struct iterators with internal state being value types flattens nested struct iterators with internal state being value types flattens an iterator of mixed-type elements and iterators and iterators of iterators flattens an iterator of mixed-type elements and iterators and iterators of iterators flattens deeply-nested and mixed type iterators flattens deeply-nested and mixed type iterators return iterator itself by rewind return iterator itself by rewind flattens a deeply-nested iterables and arrays (#3703) flattens a deeply-nested iterables and arrays (#3703) flattens a variety of edge cases flattens a variety of edge cases integration combines many iterators combines many iterators #chunk_while chunks while chunks while #with_index "with default offset" iterator "with default offset" iterator "with explicit offset" yielding "with explicit offset" yielding "with explicit offset" iterator "with explicit offset" iterator "with non-Int32 offset" iterator "with non-Int32 offset" iterator "with default offset" yielding "with default offset" yielding "with non-Int32 offset" yielding "with non-Int32 offset" yielding Iterator.of creates singleton from block creates singleton from block creates singleton from block can call Iterator.stop creates singleton from block can call Iterator.stop creates singleton creates singleton compact_map sums after compact_map to_a sums after compact_map to_a applies the function and removes nil values applies the function and removes nil values #slice_when slices when: single value slices when: single value slices when with reuse = array slices when with reuse = array slices when slices when slices when: non-bool block slices when: non-bool block slices when with reuse = true slices when with reuse = true slices when: two values slices when: two values slices when: #to_a slices when: #to_a slices when: #rewind slices when: #rewind skip does skip with Range iterator does skip with Range iterator is cool to skip 0 elements is cool to skip 0 elements raises ArgumentError if negative size is provided raises ArgumentError if negative size is provided #slice_after slices after pattern with reuse = true slices after pattern with reuse = true slices after slices after slices after with reuse = true slices after with reuse = true slices after: #rewind slices after: #rewind slices after: #to_a slices after: #to_a slices after pattern slices after pattern slices after with reuse = array slices after with reuse = array slices after: non-bool block slices after: non-bool block take_while does take_while with more than available does take_while with more than available only calls the block as much as needed only calls the block as much as needed does take_while with Range iterator does take_while with Range iterator #slice_before slices before: first element matches slices before: first element matches slices before: non-bool block slices before: non-bool block slices before: #to_a slices before: #to_a slices before pattern with reuse = true slices before pattern with reuse = true slices before nil slices before nil slices before with reuse = array slices before with reuse = array slices before with reuse = true slices before with reuse = true slices before slices before slices before pattern slices before pattern slices before: #rewind slices before: #rewind step returns every other element returns every other element returns every element returns every element returns every third element returns every third element raises with nonsensical steps raises with nonsensical steps uniq with block with block without block without block map does map with Range iterator does map with Range iterator with object does with object, with block does with object, with block does with object does with object compact_map does not return nil values does not return nil values tap taps taps #accumulate prefix sums, with init returns prefix sums returns prefix sums preserves initial type preserves initial type empty iterator returns only initial value empty iterator returns only initial value generic cumulative fold empty iterator stops immediately empty iterator stops immediately accumulates values accumulates values generic cumulative fold, with init accumulates values accumulates values preserves initial type preserves initial type empty iterator returns only initial value empty iterator returns only initial value prefix sums returns prefix sums returns prefix sums empty iterator stops immediately empty iterator stops immediately each_slice gets all the slices of the size n gets all the slices of the size n returns each_slice iterator with reuse = true returns each_slice iterator with reuse = true returns each_slice iterator with reuse = array returns each_slice iterator with reuse = array also works if it does not add up also works if it does not add up cycle does not cycle provided 0 does not cycle provided 0 does not cycle provided a negative size does not cycle provided a negative size does cycle from range does cycle from range cycles N times cycles N times cycles an empty array cycles an empty array slice slices slices doesnt conflict with `::Slice` type doesnt conflict with `::Slice` type skip_while does skip_while with an array does skip_while with an array can skip everything can skip everything only calls the block as much as needed only calls the block as much as needed returns the full array if the condition is false for the first item returns the full array if the condition is false for the first item chain chains chains does not experience tuple upcase bug of #13411 does not experience tuple upcase bug of #13411 chain indeterminate number of iterators chains all together chains all together chains iterators of different type chains iterators of different type chains array of empty chains array of empty rewinds rewinds chains empty chains empty #flat_map flattens returned values of mixed element types in #to_a flattens returned values of mixed element types in #to_a flattens returned arrays flattens returned arrays flattens returned iterators flattens returned iterators flattens returned values flattens returned values flattens returned items flattens returned items first does first with more than available does first with more than available is cool to first 0 elements is cool to first 0 elements does first with Range iterator does first with Range iterator raises ArgumentError if negative size is provided raises ArgumentError if negative size is provided zip does skip with Range iterator does skip with Range iterator takes multiple Iterators takes multiple Iterators reject does with type does with type does reject with Range iterator does reject with Range iterator does with pattern does with pattern in_groups_of creates a group of two with reuse = true creates a group of two with reuse = true raises argument error if size is less than 0 raises argument error if size is less than 0 fills up with the fill up argument fills up with the fill up argument creates groups of one creates groups of one still works with other iterator methods like to_a still works with other iterator methods like to_a creates a group of two creates a group of two each yields the individual elements to the block yields the individual elements to the block select does select with Range iterator does select with Range iterator does with pattern does with pattern does with type does with type #cons_pair conses conses doesn't include stop in return type doesn't include stop in return type Log::BroadcastBackend overwriting log level overwrites to all backends overwriting log level overwrites to all backends writes to the backend based on level writes to the backend based on level #min_level single backend single backend multiple backends multiple backends on empty on empty YAML serialization to_yaml does for Float64 does for Float64 does for time at date does for time at date does for Path does for Path does for Float32 does for Float32 does for Nil (empty string) does for Nil (empty string) does for Array does for Array does for Float64 (nan) does for Float64 (nan) does for bytes does for bytes does for Nil does for Nil does for Tuple does for Tuple does for Float32 (infinity) does for Float32 (infinity) does a full document does a full document does for Float32 (-infinity) does for Float32 (-infinity) does for BigInt does for BigInt does for String with stars (#3353) does for String with stars (#3353) does for String with unicode characters (#8131) does for String with unicode characters (#8131) does for Float64 (-infinity) does for Float64 (-infinity) serializes recursive data structures serializes recursive data structures does for String with slash does for String with slash does for Int32 does for Int32 does for Float32 (nan) does for Float32 (nan) does for Hash does for Hash does for BigFloat does for BigFloat does for Set does for Set quotes string if reserved quotes string if reserved Enum flag enum flag enum normal enum normal enum does for utc time with nanoseconds does for utc time with nanoseconds does for Hash with symbol keys does for Hash with symbol keys Enum::ValueConverter flag enum flag enum normal enum normal enum does for BigDecimal does for BigDecimal does for Float64 (infinity) does for Float64 (infinity) writes to a stream writes to a stream does for Bool does for Bool does for NamedTuple does for NamedTuple does for String with quote does for String with quote does for String does for String does for utc time does for utc time from_yaml does for BigInt does for BigInt does Hash#from_yaml with merge does Hash#from_yaml with merge does for empty tuple does for empty tuple Enum normal enum normal enum flag enum flag enum does Hash#from_yaml does Hash#from_yaml does Array#from_yaml does Array#from_yaml raises if Int16.from_yaml overflows raises if Int16.from_yaml overflows does Time::Format#from_yaml does Time::Format#from_yaml does for tuple with file-private type does for tuple with file-private type Enum::ValueConverter.from_yaml flag enum flag enum normal enum normal enum does UInt32.from_yaml does UInt32.from_yaml does Set#from_yaml does Set#from_yaml raises if UInt32.from_yaml overflows raises if UInt32.from_yaml overflows does Int.from_yaml with underscores does Int.from_yaml with underscores does for named tuple with nilable fields and null (#8089) does for named tuple with nilable fields and null (#8089) does Float64#from_yaml does Float64#from_yaml does Int8.from_yaml does Int8.from_yaml raises if Int32.from_yaml overflows raises if Int32.from_yaml overflows does Int.from_yaml with prefixes does Int.from_yaml with prefixes raises if Int64.from_yaml overflows raises if Int64.from_yaml overflows does Int64.from_yaml does Int64.from_yaml does for named tuple with spaces in key (#10918) does for named tuple with spaces in key (#10918) does Int128.from_yaml does Int128.from_yaml does for BigDecimal does for BigDecimal does for named tuple with file-private type does for named tuple with file-private type does Int16.from_yaml does Int16.from_yaml does for named tuple with spaces in key and quote char (#10918) does for named tuple with spaces in key and quote char (#10918) deserializes bytes deserializes bytes deserializes union with nil, string and int (#7936) deserializes union with nil, string and int (#7936) raises if Int128.from_yaml overflows raises if Int128.from_yaml overflows can parse string that looks like a number can parse string that looks like a number does Array#from_yaml from IO does Array#from_yaml from IO does UInt16.from_yaml does UInt16.from_yaml does UInt64.from_yaml does UInt64.from_yaml does Path.from_yaml does Path.from_yaml raises if UInt16.from_yaml overflows raises if UInt16.from_yaml overflows raises if UInt128.from_yaml overflows raises if UInt128.from_yaml overflows raises if UInt64.from_yaml overflows raises if UInt64.from_yaml overflows raises if Int8.from_yaml overflows raises if Int8.from_yaml overflows does Bool#from_yaml does Bool#from_yaml does UInt8.from_yaml does UInt8.from_yaml parse exceptions has correct location when raises in Union#from_yaml has correct location when raises in Union#from_yaml has correct location when raises in Nil#from_yaml has correct location when raises in Nil#from_yaml has correct location when raises in Int32#from_yaml has correct location when raises in Int32#from_yaml has correct location when raises in NamedTuple#from_yaml has correct location when raises in NamedTuple#from_yaml does Float32#from_yaml does Float32#from_yaml does UInt128.from_yaml does UInt128.from_yaml does for BigFloat does for BigFloat does for named tuple does for named tuple does Array#from_yaml with block does Array#from_yaml with block does for tuple does for tuple does Nil#from_yaml does Nil#from_yaml does Hash#from_yaml with merge (recursive) does Hash#from_yaml with merge (recursive) does String#from_yaml does String#from_yaml raises if UInt8.from_yaml overflows raises if UInt8.from_yaml overflows does for named tuple with nilable fields (#8089) does for named tuple with nilable fields (#8089) does for empty named tuple does for empty named tuple does Int32.from_yaml does Int32.from_yaml does String#from_yaml (empty string) does String#from_yaml (empty string) deserializes time deserializes time TCPServer accept sets close on exec flag sets close on exec flag settings settings .new using IPv6 listens on local address listens on local address binds to port 0 binds to port 0 reuse_port raises when not binding with reuse_port raises when not binding with reuse_port raises when port is not ready to be reused raises when port is not ready to be reused raises when port is in use raises when port is in use binds to used port with reuse_port = true binds to used port with reuse_port = true raises when port is negative raises when port is negative address resolution raises (rather than segfault on darwin) when host doesn't exist and port is 0 raises (rather than segfault on darwin) when host doesn't exist and port is 0 raises when host doesn't exist raises when host doesn't exist binds to localhost binds to localhost binds to all interfaces binds to all interfaces using IPv4 reuse_port binds to used port with reuse_port = true binds to used port with reuse_port = true raises when not binding with reuse_port raises when not binding with reuse_port raises when port is in use raises when port is in use raises when port is not ready to be reused raises when port is not ready to be reused listens on local address listens on local address binds to port 0 binds to port 0 raises when port is negative raises when port is negative Subtle compares constant time bytes bug compares constant time bytes bug compares constant time and slices strings compares constant time and slices strings compares constant time bytes on equality compares constant time bytes on equality compares constant times compares constant times String #grapheme_size #grapheme_size #graphemes #graphemes #each_grapheme string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator LLVM::ABI::X86 size for packed struct for packed struct for array for array for double for double for pointer for pointer for integer for integer for struct for struct for float for float align for float for float for double for double for packed struct for packed struct for integer for integer for pointer for pointer for array for array for struct for struct abi_info does with structs less than 64 bits does with structs less than 64 bits does with primitives does with primitives does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with structs between 64 and 128 bits JSON::Lexer lexes "\uD800\uDC00" from String lexes "\uD800\uDC00" from String lexes "hello\rworld" from IO lexes "hello\rworld" from IO lexes "\uDBFF\uDFFF" from String lexes "\uDBFF\uDFFF" from String lexes "hello\nworld" from IO lexes "hello\nworld" from IO lexes from IO lexes from IO lexes 1e+12 from String lexes 1e+12 from String lexes 1e2 from String lexes 1e2 from String lexes { from string lexes { from string lexes "\u201chello world\u201d" from IO lexes "\u201chello world\u201d" from IO lexes 1234 from IO lexes 1234 from IO lexes 6000000000000000000.0 from String lexes 6000000000000000000.0 from String lexes [ from string lexes [ from string lexes 1.2e-3 from IO lexes 1.2e-3 from IO lexes "hello" from IO lexes "hello" from IO lexes null from string lexes null from string lexes : from string lexes : from string lexes } from string lexes } from string lexes 9876543212345678987654321e20 from String lexes 9876543212345678987654321e20 from String lexes 1e+12 from IO lexes 1e+12 from IO lexes "hello\/world" from IO lexes "hello\/world" from IO lexes } from IO lexes } from IO lexes "\uDBFF\uDFFF" from IO lexes "\uDBFF\uDFFF" from IO lexes "hello\\world" from IO lexes "hello\\world" from IO lexes "\uD800\uDC00" from IO lexes "\uD800\uDC00" from IO errors if lexing "\uD800\u0020" from IO errors if lexing "\uD800\u0020" from IO lexes : from string lexes : from string lexes 1E2 from String lexes 1E2 from String lexes -1.23 from String lexes -1.23 from String lexes "hello\"world" from String lexes "hello\"world" from String lexes 9.91343313498688 from IO lexes 9.91343313498688 from IO lexes -1 from IO lexes -1 from IO lexes 0E1 from String lexes 0E1 from String lexes , from IO lexes , from IO lexes false from IO lexes false from IO lexes "hello\rworld" from String lexes "hello\rworld" from String lexes 1 from IO lexes 1 from IO errors if lexing "\uD800\u0020" from String errors if lexing "\uD800\u0020" from String lexes ] from string lexes ] from string lexes "hello\bworld" from IO lexes "hello\bworld" from IO lexes 9000000000000000000.0 from IO lexes 9000000000000000000.0 from IO lexes ] from IO lexes ] from IO lexes 1000000000000000000.0 from IO lexes 1000000000000000000.0 from IO lexes 1 from String lexes 1 from String lexes { from IO lexes { from IO lexes 6000000000000000000.0 from IO lexes 6000000000000000000.0 from IO lexes 0 from String lexes 0 from String lexes "\uD834\uDD1E" from IO lexes "\uD834\uDD1E" from IO errors if lexing "\uDC00" from String errors if lexing "\uDC00" from String lexes 9.91343313498688 from String lexes 9.91343313498688 from String lexes : from IO lexes : from IO lexes 0e+12 from IO lexes 0e+12 from IO lexes 0e-12 from IO lexes 0e-12 from IO lexes 0E1 from IO lexes 0E1 from IO lexes , from string lexes , from string lexes -1.23e4 from String lexes -1.23e4 from String lexes "hello\\world" from String lexes "hello\\world" from String lexes "hello\tworld" from String lexes "hello\tworld" from String lexes "hello\/world" from String lexes "hello\/world" from String lexes -1.23 from IO lexes -1.23 from IO errors if lexing "\uD800" from String errors if lexing "\uD800" from String lexes "\uD834\uDD1E" from String lexes "\uD834\uDD1E" from String errors if lexing "\uD800" from IO errors if lexing "\uD800" from IO lexes -1 from String lexes -1 from String lexes false from string lexes false from string lexes null from IO lexes null from IO lexes 0.1e1 from IO lexes 0.1e1 from IO errors if lexing "\uDC00" from IO errors if lexing "\uDC00" from IO lexes true from IO lexes true from IO lexes 0e1 from IO lexes 0e1 from IO lexes from string lexes from string lexes 1E2 from IO lexes 1E2 from IO lexes 0 from IO lexes 0 from IO lexes true from string lexes true from string lexes "hello\fworld" from IO lexes "hello\fworld" from IO lexes [ from IO lexes [ from IO lexes 1234.567 from String lexes 1234.567 from String lexes 0.1e1 from String lexes 0.1e1 from String lexes "\uD840\uDC00" from IO lexes "\uD840\uDC00" from IO lexes 1.2e-3 from String lexes 1.2e-3 from String lexes "\uD840\uDC00" from String lexes "\uD840\uDC00" from String lexes 1e2 from IO lexes 1e2 from IO lexes 9876543212345678987654321.0 from String lexes 9876543212345678987654321.0 from String lexes 9876543212345678987654321.0 from IO lexes 9876543212345678987654321.0 from IO lexes 1234.567 from IO lexes 1234.567 from IO lexes 9876543212345678987654321e20 from IO lexes 9876543212345678987654321e20 from IO lexes 0e-12 from String lexes 0e-12 from String lexes 1234 from String lexes 1234 from String lexes 0.123 from IO lexes 0.123 from IO lexes "hello" from String lexes "hello" from String lexes 0e+12 from String lexes 0e+12 from String lexes "hello\"world" from IO lexes "hello\"world" from IO lexes : from IO lexes : from IO lexes 10.100000000000000000000 from IO lexes 10.100000000000000000000 from IO lexes "hello\bworld" from String lexes "hello\bworld" from String lexes 10.100000000000000000000 from String lexes 10.100000000000000000000 from String lexes 0.123 from String lexes 0.123 from String lexes "\u201chello world\u201d" from String lexes "\u201chello world\u201d" from String lexes "hello\tworld" from IO lexes "hello\tworld" from IO lexes "hello\nworld" from String lexes "hello\nworld" from String lexes 0e1 from String lexes 0e1 from String lexes 9000000000000000000.0 from String lexes 9000000000000000000.0 from String lexes -1.23e4 from String lexes -1.23e4 from String lexes 1000000000000000000.0 from String lexes 1000000000000000000.0 from String lexes -1.23e4 from IO lexes -1.23e4 from IO lexes -1.23e4 from IO lexes -1.23e4 from IO lexes "hello\fworld" from String lexes "hello\fworld" from String Class getter uses getter with assignment uses getter with assignment uses getter with type declaration and default value uses getter with type declaration and default value defines lazy getter with block defines lazy getter with block defines lazy getter with block returning false defines lazy getter with block returning false uses getter with type declaration uses getter with type declaration uses simple getter uses simple getter def_hash should return same hash for equal property values should return same hash for equal property values shouldn't return same hash for different property values shouldn't return same hash for different property values calls #finalize on #clone'd objects calls #finalize on #clone'd objects .set_crystal_type_id .set_crystal_type_id delegate forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters delegates []= delegates []= forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters forwards #{{ op.id }} with multiple parameters delegates delegates delegates setter delegates setter forwards #{{ op.id }} with multiple parameters and block parameter forwards #{{ op.id }} with multiple parameters and block parameter def_equals compares by reference compares by reference property! uses property! uses property! uses property! with type declaration uses property! with type declaration #not_nil! raises NilAssertionError raises NilAssertionError basic basic with message with message does not copy its receiver when it is a value (#13263) does not copy its receiver when it is a value (#13263) removes Nil type removes Nil type getter? uses getter? with block uses getter? with block uses getter? with default value uses getter? with default value uses getter? uses getter? uses getter? with type declaration and default value uses getter? with type declaration and default value uses getter? with type declaration uses getter? with type declaration uses getter? with type declaration and block uses getter? with type declaration and block applies annotation to lazy property (#9139) applies annotation to lazy property (#9139) #unsafe_as #unsafe_as property defines lazy property with block returning false defines lazy property with block returning false uses property with type declaration and default value uses property with type declaration and default value uses property uses property uses property with type declaration uses property with type declaration uses property with default value uses property with default value defines lazy property with block defines lazy property with block getter! uses getter! with type declaration uses getter! with type declaration uses getter! uses getter! #in? works with other objects implementing #includes? works with other objects implementing #includes? works with Enumerable-s works with Enumerable-s works with splatted arguments works with splatted arguments setter uses setter with type declaration and default value uses setter with type declaration and default value uses setter uses setter uses setter with default value uses setter with default value uses setter with type declaration uses setter with type declaration property? uses property? with block uses property? with block uses property? with type declaration uses property? with type declaration uses property? uses property? uses property? with type declaration and default value uses property? with type declaration and default value uses property? with type declaration and block uses property? with type declaration and block uses property? with default value uses property? with default value .from_www_form Bool any other value any other value a truthy value a truthy value a falsey value a falsey value Union(*T) invalid invalid valid valid String empty value empty value with missing key with missing key scalar string scalar string with alternate casing with alternate casing with key with key Enum invalid value invalid value valid value valid value Nil invalid value invalid value valid values valid values Array(T) Array(T) Number Float valid numbers valid numbers empty value empty value with whitespace with whitespace Int empty value empty value valid numbers valid numbers with whitespace with whitespace Time valid value valid value invalid value invalid value Compress::Deflate::Reader .open yields itself to block yields itself to block should rewind should rewind should read byte by byte (#4192) should read byte by byte (#4192) IO::Digest calculates digest from multiple reads calculates digest from multiple reads calculates digest from multiple writes calculates digest from multiple writes calculates digest from writing a string calculates digest from writing a string does not calculate digest on write does not calculate digest on write calculates digest from writing calculates digest from writing can be created with ongoing digest can be created with ongoing digest does not calculate digest on read does not calculate digest on read calculates digest from reading calculates digest from reading MIME::Multipart .parse parses multipart messages parses multipart messages parses multipart messages from HTTP client responses parses multipart messages from HTTP client responses .parse parses multipart messages parses multipart messages .parse_boundary parses unquoted boundaries parses unquoted boundaries parses quoted boundaries parses quoted boundaries Digest::SHA512 does #hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does #hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does base64digest for "" does base64digest for "" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does #hexdigest for "a" does #hexdigest for "a" can't call #final more than once can't call #final more than once resets resets resets resets does digest for "" does digest for "" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "abc" in a block does digest for "abc" in a block does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does .hexdigest for "" does .hexdigest for "" does .hexdigest for "The quick brown fox jumps over the lazy dog" does .hexdigest for "The quick brown fox jumps over the lazy dog" can't call #final more than once can't call #final more than once #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) does digest for "a" in a block does digest for "a" in a block digest with file content digest with file content does base64digest for "The quick brown fox jumps over the lazy dog" does base64digest for "The quick brown fox jumps over the lazy dog" returns the digest_size returns the digest_size does .hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does .hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "The quick brown fox jumps over the lazy dog" in a block does digest for "The quick brown fox jumps over the lazy dog" in a block does base64digest for "fooø" does base64digest for "fooø" does .hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does .hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "" in a block does digest for "" in a block does base64digest for "abc" does base64digest for "abc" does digest for "fooø" in a block does digest for "fooø" in a block resets resets can't call #final more than once can't call #final more than once does digest for "a" does digest for "a" does digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "0123456701234567012345670123456701234567012345670123456701234567" can't call #final more than once can't call #final more than once does base64digest for "a" does base64digest for "a" resets resets does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does #hexdigest for "The quick brown fox jumps over the lazy dog" does #hexdigest for "The quick brown fox jumps over the lazy dog" does #hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does #hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does #hexdigest for "fooø" does #hexdigest for "fooø" can't call #final more than once can't call #final more than once does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block resets resets can't call #final more than once can't call #final more than once does digest for "abc" does digest for "abc" can't call #final more than once can't call #final more than once does #hexdigest for "abc" does #hexdigest for "abc" #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) does .hexdigest for "abc" does .hexdigest for "abc" context are independent context are independent does .hexdigest for "fooø" does .hexdigest for "fooø" resets resets does digest for "fooø" does digest for "fooø" does digest for "The quick brown fox jumps over the lazy dog" does digest for "The quick brown fox jumps over the lazy dog" .dup preserves type preserves type leads to deterministic updates leads to deterministic updates leads to not sharing state leads to not sharing state preserves value preserves value does #hexdigest for "" does #hexdigest for "" resets resets does .hexdigest for "a" does .hexdigest for "a" Tuple "#reverse_each" yielding "#reverse_each" yielding "#reverse_each" iterator "#reverse_each" iterator does clone does clone does Tuple.new, with type vars does Tuple.new, with type vars gets first element gets first element gets last element gets last element .[] with non-literal index gets tuple metaclass element gets tuple metaclass element raises index out of bounds raises index out of bounds values_at works with mixed types works with mixed types raises when passed an invalid index raises when passed an invalid index returns the given indexes returns the given indexes does reverse does reverse does map_with_index, with offset does map_with_index, with offset gets first? element gets first? element does dup does dup does <=> with the same beginning and different size does <=> with the same beginning and different size does comparison does comparison does compare with different sizes does compare with different sizes "#each" yielding "#each" yielding does == with another type does == with another type .[]? with non-literal index gets tuple metaclass element or nil gets tuple metaclass element or nil #[] with non-literal index raises index out of bounds raises index out of bounds gets tuple element gets tuple element does at does at #to_static_array #to_static_array does == does == does Tuple.new, without type vars does Tuple.new, without type vars does Tuple.from does Tuple.from does === does === does to_s does to_s does map_with_index does map_with_index does each does each does Tuple#from does Tuple#from does map does map clones empty tuple clones empty tuple checks empty? checks empty? does types does types does <=> for equality does <=> for equality does to_a does to_a does == with different types but same size does == with different types but same size #[]? with non-literal index gets tuple element or nil gets tuple element or nil does size does size gets last? element gets last? element "#each" iterator "#each" iterator does compare does compare IO::Memory creates from string creates from string does gets with char and limit does gets with char and limit can be converted to slice can be converted to slice creates from slice creates from slice raises when reading at offset outside of bounds raises when reading at offset outside of bounds raises if clearing when closed raises if clearing when closed does gets with limit does gets with limit encoding decode gets with chomp = false gets with chomp = false gets gets gets_to_end gets_to_end reads char reads char allocates for > 1 GB allocates for > 1 GB raises if seek set is negative raises if seek set is negative has a size has a size raises if seek current leads to negative value raises if seek current leads to negative value can seek past the end can seek past the end can seek set can seek set raises if capacity too big raises if capacity too big reads byte reads byte can seek current can seek current writes past end writes past end writes past end with write_byte writes past end with write_byte can tell can tell skips skips reads more than available (#1229) reads more than available (#1229) consumes with getb_to_end consumes with getb_to_end write raises EOFError write raises EOFError #to_s appends to another buffer appends to another buffer appends to itself appends to itself encoding returns String returns String writes to IO writes to IO writes and reads writes and reads peeks peeks skips_to_end skips_to_end raises if negative capacity raises if negative capacity raises if invoking gets with negative limit raises if invoking gets with negative limit reads at offset reads at offset writes after reading writes after reading gets with char as delimiter gets with char as delimiter write single byte write single byte writes big writes big creates from slice, non-writeable creates from slice, non-writeable reads single line content reads single line content seeks with pos and pos= seeks with pos and pos= reads each line with chomp = false reads each line with chomp = false clears clears can seek from the end can seek from the end reads each line reads each line writes writes does gets with char and limit without off-by-one does gets with char and limit without off-by-one can be closed can be closed raises if reading when closed raises if reading when closed peek readonly peek readonly consumes with gets_to_end consumes with gets_to_end creates from read-only slice creates from read-only slice IO::Stapled #peek delegates to reader #peek delegates to reader .pipe creates a bidirectional pipe creates a bidirectional pipe with block creates a bidirectional pipe with block creates a bidirectional pipe #sync_close? #sync_close? #skip_to_end delegates to reader #skip_to_end delegates to reader #close does not close underlying IOs does not close underlying IOs stops access to underlying IOs stops access to underlying IOs closes underlying IOs when sync_close is true closes underlying IOs when sync_close is true combines two IOs combines two IOs loops back loops back #skip delegates to reader #skip delegates to reader Digest::SHA1 does digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "" in a block does digest for "" in a block resets resets resets resets does digest for "" does digest for "" does digest for "The quick brown fox jumps over the lazy dog" in a block does digest for "The quick brown fox jumps over the lazy dog" in a block #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) does digest for "abc" in a block does digest for "abc" in a block does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does base64digest for "The quick brown fox jumps over the lazy dog" does base64digest for "The quick brown fox jumps over the lazy dog" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block can't call #final more than once can't call #final more than once does base64digest for "a" does base64digest for "a" does digest for "abc" does digest for "abc" #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) does base64digest for "abc" does base64digest for "abc" does digest for "The quick brown fox jumps over the lazy dog" does digest for "The quick brown fox jumps over the lazy dog" does digest for "a" does digest for "a" context are independent context are independent does hexdigest for "abc" does hexdigest for "abc" returns the digest_size returns the digest_size can't call #final more than once can't call #final more than once can't call #final more than once can't call #final more than once does digest for "fooø" does digest for "fooø" resets resets can't call #final more than once can't call #final more than once .dup preserves value preserves value preserves type preserves type leads to deterministic updates leads to deterministic updates leads to not sharing state leads to not sharing state resets resets does hexdigest for "fooø" does hexdigest for "fooø" does hexdigest for "a" does hexdigest for "a" digest with file content digest with file content resets resets does hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" resets resets does digest for "a" in a block does digest for "a" in a block does hexdigest for "The quick brown fox jumps over the lazy dog" does hexdigest for "The quick brown fox jumps over the lazy dog" does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "fooø" in a block does digest for "fooø" in a block does hexdigest for "" does hexdigest for "" can't call #final more than once can't call #final more than once does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block can't call #final more than once can't call #final more than once resets resets does base64digest for "fooø" does base64digest for "fooø" does hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does base64digest for "" does base64digest for "" can't call #final more than once can't call #final more than once StaticArray reverse reverse allows using negative indices allows using negative indices #fill replaces values in a subrange replaces values in a subrange does map! does map! does to_s does to_s updates value updates value shuffles with a seed shuffles with a seed does map_with_index, with offset does map_with_index, with offset creates with new creates with new <=> correctly compares two static arrays correctly compares two static arrays rotate! assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does map_with_index does map_with_index == compares empty compares empty compares other compares other compares elements compares elements creates with new and value creates with new and value raises index out of bounds on write raises index out of bounds on write unstable_sort_by sorts by sorts by "#each" yielding "#each" yielding #unstable_sort! sort! with a block sort! with a block sort! without block sort! without block raises index out of bounds on read raises index out of bounds on read clones clones creates with new and block creates with new and block does map_with_index!, with offset does map_with_index!, with offset "#each_index" yielding "#each_index" yielding #unstable_sort sort without block sort without block sort with a block sort with a block values_at returns the given indexes returns the given indexes raises when passed an invalid index raises when passed an invalid index does map_with_index! does map_with_index! "#each" iterator "#each" iterator #sort sort with a block sort with a block sort without block sort without block "#each_index" iterator "#each_index" iterator sort_by sorts by sorts by "#reverse_each" iterator "#reverse_each" iterator shuffles shuffles does map does map unstable_sort_by! calls given block exactly once for each element calls given block exactly once for each element sorts by! sorts by! sort_by! calls given block exactly once for each element calls given block exactly once for each element sorts by! sorts by! "#reverse_each" yielding "#reverse_each" yielding #sort! sort! without block sort! without block sort! with a block sort! with a block String .char_bytesize_at .char_bytesize_at YAML::Nodes::Builder #alias as a scalar value writes correctly writes correctly within a mapping writes correctly writes correctly #merge within a mapping writes correctly writes correctly Benchmark::IPS::Job works in general / integration test works in general / integration test Errno .value .value #message #message Reference clones with def_clone (recursive type) clones with def_clone (recursive type) can dup class that inherits abstract class can dup class that inherits abstract class should be false when negated should be false when negated should not be nil should not be nil does inspect does inspect does inspect for class does inspect for class clones with def_clone clones with def_clone pretty_print pretty_print calls #finalize on #dup'ed objects calls #finalize on #dup'ed objects does to_s for class if virtual does to_s for class if virtual dups dups compares reference to other reference compares reference to other reference returns itself returns itself does to_s for class does to_s for class does to_s does to_s HTTP::WebSocketHandler returns not found if the request is not an websocket upgrade returns not found if the request is not an websocket upgrade gives upgrade response for websocket upgrade request with 'keep-alive, Upgrade' request gives upgrade response for websocket upgrade request with 'keep-alive, Upgrade' request returns upgrade required if Sec-WebSocket-Version is invalid returns upgrade required if Sec-WebSocket-Version is invalid returns bad request if Sec-WebSocket-Key is missing returns bad request if Sec-WebSocket-Key is missing returns not found if the request Upgrade is invalid returns not found if the request Upgrade is invalid gives upgrade response for case-insensitive 'WebSocket' upgrade request gives upgrade response for case-insensitive 'WebSocket' upgrade request returns upgrade required if Sec-WebSocket-Version is missing returns upgrade required if Sec-WebSocket-Version is missing gives upgrade response for websocket upgrade request with 'Upgrade' request gives upgrade response for websocket upgrade request with 'Upgrade' request Spec::RootContext #run_filters by pattern on a context on a context on an example on an example by anti_tags on an example on an example on a context on a context by tags on a context on a context on an example on an example by line on a context's end line' on a context's end line' on an example's start line on an example's start line on an example's end line on an example's end line between examples between examples on a context's start line' on a context's start line' in an example in an example by focus on a context on a context on an example on an example by locations between examples between examples on an example's end line on an example's end line on a context's end line' on a context's end line' on an example's start line on an example's start line in an example in an example on a context's start line' on a context's start line' Mutex unchecked can lock and unlock from multiple fibers can lock and unlock from multiple fibers locks and unlocks locks and unlocks reentrant can be locked many times from the same fiber can be locked many times from the same fiber can't be unlocked by another fiber can't be unlocked by another fiber raises if unlocks without lock raises if unlocks without lock works with multiple threads works with multiple threads checked raises if locked recursively raises if locked recursively raises if unlocks without lock raises if unlocks without lock can't be unlocked by another fiber can't be unlocked by another fiber Spec matchers should work like describe is true is true should be_falsey passes for false passes for false passes for nil passes for nil pending block is not compiled pending has block with valid syntax, but invalid semantics pending has block with valid syntax, but invalid semantics detects a nesting `pending` detects a nesting `pending` detects a nesting `it` detects a nesting `it` should_not contain does not pass when string does not includes? specified substring does not pass when string does not includes? specified substring passes when string does not includes? specified substring passes when string does not includes? specified substring should_not be_falsey passes for true passes for true passes for some non-nil, non-false value passes for some non-nil, non-false value should be_truthy passes for true passes for true passes for some non-nil, non-false value passes for some non-nil, non-false value should contain works with array works with array does not pass when string does not includes? specified substring does not pass when string does not includes? specified substring passes when string includes? specified substring passes when string includes? specified substring works with set works with set works with range works with range be_nil passes for nil passes for nil does not pass for overwritten `==` does not pass for overwritten `==` expect_raises return exception return exception should_not be_truthy passes for false passes for false passes for nil passes for nil Array find the index by using binary search find the index by using binary search does map does map to_s does to_s does to_s does with recursive does with recursive rejects! with pattern rejects! with pattern delete delete not found delete not found deletes many deletes many shuffle shuffle! shuffle! shuffle with random shuffle with random shuffle shuffle shuffle! with random shuffle! with random inspect assert assert does each while modifying array does each while modifying array does map_with_index, with offset does map_with_index, with offset "#cycle" yielding "#cycle" yielding does reverse! with an odd number of elements does reverse! with an odd number of elements [] gets on exclusive range gets on exclusive range gets on range without begin gets on range without begin raises on index out of bounds with range without end raises on index out of bounds with range without end gets on positive index gets on positive index gets on range with start higher than negative end gets on range with start higher than negative end raises on index out of bounds with start and count raises on index out of bounds with start and count gets on range without end gets on range without end gets on range with start higher than end gets on range with start higher than end gets on exclusive range with negative indices gets on exclusive range with negative indices gets on inclusive range with negative indices gets on inclusive range with negative indices gets with start and count exceeding size gets with start and count exceeding size gets 0, 0 on empty array gets 0, 0 on empty array raises on negative count raises on negative count doesn't exceed limits doesn't exceed limits raises on negative count on empty Array raises on negative count on empty Array raises on too negative left bound raises on too negative left bound gets with start and count gets with start and count gets 0 ... 0 on empty array gets 0 ... 0 on empty array raises on index out of bounds raises on index out of bounds raises on index out of bounds with range raises on index out of bounds with range returns empty if at end returns empty if at end raises on negative count raises on negative count gets on inclusive range gets on inclusive range gets on negative index gets on negative index gets with negative start gets with negative start new creates with default value creates with default value raises on negative count raises on negative count raises on negative capacity raises on negative capacity creates with default value in block creates with default value in block rindex performs with a block and offset performs with a block and offset performs with a block performs with a block performs without a block performs without a block performs without a block and an offset performs without a block and an offset find the element by using binary search find the element by using binary search does reverse with an even number of elements does reverse with an even number of elements sort #sort_by stable sort stable sort sorts sorts unpacks tuple unpacks tuple #sort! without block without block stable sort with a block stable sort with a block stable sort without a block stable sort without a block with a block with a block #unstable_sort! with a block with a block without block without block #sort_by! stable sort stable sort sorts sorts calls given block exactly once for each element calls given block exactly once for each element #unstable_sort with a block with a block without block without block #unstable_sort_by! sorts sorts calls given block exactly once for each element calls given block exactly once for each element #sort without block without block stable sort without a block stable sort without a block with a block with a block stable sort with a block stable sort with a block #unstable_sort_by sorts sorts unpacks tuple unpacks tuple doesn't overflow buffer with Array.new(size, value) (#1209) doesn't overflow buffer with Array.new(size, value) (#1209) does compact_map does compact_map first returns a sub array with given number of elements returns a sub array with given number of elements gets first when non empty gets first when non empty raises when empty raises when empty "#reverse_each" iterator "#reverse_each" iterator #truncate raises on out of bound index raises on out of bound index truncates with index == size and count truncates with index == size and count truncates with index and count == 0 truncates with index and count == 0 truncates with index and count truncates with index and count truncates with range truncates with range raises on negative count raises on negative count truncates with index and count, not enough elements truncates with index and count, not enough elements truncates with index < 0 and count truncates with index < 0 and count does dup does dup shift raises when empty raises when empty shifts all after pop shifts all after pop shifts more than what is available shifts more than what is available shifts all with shift(n) shifts all with shift(n) pops after shift pops after shift shifts one and resizes shifts one and resizes shifts all shifts all shifts and then concats Enumerable shifts and then concats Enumerable shifts negative count raises shifts negative count raises shifts almost all and then avoid resize shifts almost all and then avoid resize shifts many elements shifts many elements shifts when non empty shifts when non empty shifts and then concats Array shifts and then concats Array does * does * unshift repeated unshift/pop does not exhaust memory (#10748) repeated unshift/pop does not exhaust memory (#10748) unshifts multiple elements to an empty array unshifts multiple elements to an empty array unshifts one element unshifts one element unshift of large array does not corrupt elements unshift of large array does not corrupt elements unshifts one elements three times unshifts one elements three times repeated unshift/clear does not exhaust memory repeated unshift/clear does not exhaust memory unshifts multiple elements unshifts multiple elements repeated unshift/shift does not exhaust memory repeated unshift/shift does not exhaust memory unshifts one element multiple times unshifts one element multiple times unshifts after shift unshifts after shift unshifts many after many shifts unshifts many after many shifts []= sets on negative index sets on negative index reuses the buffer if possible reuses the buffer if possible resizes the buffer if capacity is not enough resizes the buffer if capacity is not enough replaces a subrange with an array replaces a subrange with an array replaces entire range with an array for empty array (#8341) replaces entire range with an array for empty array (#8341) pushes a new value with []=(...) pushes a new value with []=(...) replaces a subrange with a single value replaces a subrange with a single value replaces entire range with a value for empty array (#8341) replaces entire range with a value for empty array (#8341) sets on positive index sets on positive index optimizes when index is 0 optimizes when index is 0 concats a new array with []=(...) concats a new array with []=(...) uniq uniqs with true uniqs with true uniqs large array uniqs large array uniqs without block uniqs without block uniqs with block uniqs with block insert inserts with positive index inserts with positive index inserts out of range inserts out of range inserts with negative index (2) inserts with negative index (2) inserts with negative index inserts with negative index "#each_index" yielding "#each_index" yielding does + with empty tuple converted to array (#909) does + with empty tuple converted to array (#909) pop pops negative count raises pops negative count raises pops when non empty pops when non empty pops more elements that what is available pops more elements that what is available raises when empty raises when empty pops many elements pops many elements "#cycle" iterator "#cycle" iterator does compact does compact zip when a block is provided works with iterable works with iterable works with iterator works with iterator yields pairs of self's elements and passed array yields pairs of self's elements and passed array when no block is provided and the arrays have different typed elements works with iterator works with iterator works with iterable works with iterable zips three things zips three things zips union type (#8608) zips union type (#8608) returns an array of paired elements (tuples) returns an array of paired elements (tuples) does each_index does each_index does clone does clone #fill replaces values in a subrange replaces values in a subrange - does with even larger arrays does with even larger arrays with different types small array small array big array big array does with larger array coming second does with larger array coming second does it does it #replace clears unused elements if new size is smaller clears unused elements if new size is smaller reuses the buffer if possible reuses the buffer if possible resizes the buffer if capacity is not enough resizes the buffer if capacity is not enough replaces all elements replaces all elements uniq! uniqs with block uniqs with block uniqs with true uniqs with true uniqs without block uniqs without block uniqs large array uniqs large array flattens flattens does compact_map with false does compact_map with false does clear does clear rejects! rejects! does map! does map! "#each_index" iterator "#each_index" iterator concat concats large arrays concats large arrays concats enumerable concats enumerable concats a union of arrays concats a union of arrays concats indexable concats indexable concats enumerable to empty array (#2047) concats enumerable to empty array (#2047) concats small arrays concats small arrays zip? when no block is provided and the arrays have different typed elements and size of an arg is less than receiver works with iterator works with iterator zips three things zips three things works with iterable works with iterable zips union type (#8608) zips union type (#8608) returns an array of paired elements (tuples with nil) returns an array of paired elements (tuples with nil) when a block is provided and size of an arg is less than receiver works with iterator works with iterator works with iterable works with iterable yields pairs of self's elements and passed array (with nil) yields pairs of self's elements and passed array (with nil) | small arrays small arrays large arrays large arrays does clone with recursive array does clone with recursive array transpose transposes array of tuples transposes array of tuples transposes empty array transposes empty array transposes elements transposes elements transposes union of arrays transposes union of arrays raises IndexError error when size of element is invalid raises IndexError error when size of element is invalid does + does + last gets last when non empty gets last when non empty returns a sub array with given number of elements returns a sub array with given number of elements raises when empty raises when empty does product with block does product with block does hash does hash empty is empty is empty is not empty is not empty values_at works with mixed types works with mixed types returns the given indexes returns the given indexes raises when passed an invalid index raises when passed an invalid index size has size 0 has size 0 has size 2 has size 2 #skip #skip Array.product with array with array with splat with splat []? gets with range without beginning gets with range without beginning gets with start and count gets with start and count gets with range without end gets with range without end gets with range gets with range gets with index gets with index does update does update "#reverse_each" yielding "#reverse_each" yielding rotate rotate! rotate! assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert rotate rotate assert assert assert assert assert assert push has the << alias has the << alias pushes multiple elements to an empty array pushes multiple elements to an empty array pushes multiple elements pushes multiple elements pushes one element pushes one element Array.each_product 2 arrays 2 arrays 2 arrays different types 2 arrays different types single array single array more arrays, reuse = true more arrays, reuse = true more arrays more arrays with splat with splat one empty array one empty array selects! with pattern selects! with pattern does product without block does product without block does map_with_index! does map_with_index! does <=> does <=> swap swaps but raises out of bounds on left swaps but raises out of bounds on left swaps with negative indices swaps with negative indices swaps but raises out of bounds on right swaps but raises out of bounds on right swaps swaps does each index while modifying array does each index while modifying array index performs with a block performs with a block raises if out of bounds raises if out of bounds performs without a block performs without a block performs with a block and offset performs with a block and offset performs without a block and offset performs without a block and offset capacity re-sizing initializes an array capacity to INITIAL_CAPACITY initializes an array capacity to INITIAL_CAPACITY doubles capacity for arrays smaller than CAPACITY_THRESHOLD doubles capacity for arrays smaller than CAPACITY_THRESHOLD uses slow growth heuristic for arrays larger than CAPACITY_THRESHOLD uses slow growth heuristic for arrays larger than CAPACITY_THRESHOLD does map_with_index!, with offset does map_with_index!, with offset builds from buffer builds from buffer does reverse! with an even number of elements does reverse! with an even number of elements insert_all inserts with index 0 inserts with index 0 inserts with negative index inserts with negative index inserts when empty inserts when empty inserts when other is empty inserts when other is empty inserts indexable inserts indexable raises with negative index greater than size raises with negative index greater than size inserts with positive index inserts with positive index inserts with negative index (2) inserts with negative index (2) raises with index greater than size raises with index greater than size inserts with index of #size inserts with index of #size == compares elements compares elements compares other compares other compares empty compares empty "#cycle(limit)" yielding "#cycle(limit)" yielding repeated_permutations assert assert assert assert accepts a block accepts a block assert assert assert assert assert assert yielding dup of arrays yielding dup of arrays assert assert yields with reuse = array yields with reuse = array yields with reuse = true yields with reuse = true assert assert assert assert assert assert does map_with_index does map_with_index does equals? with custom block does equals? with custom block & small arrays small arrays big arrays big arrays "#each" iterator "#each" iterator "#each" yielding "#each" yielding "#cycle(limit)" iterator "#cycle(limit)" iterator first? gets first? when non empty gets first? when non empty gives nil when empty gives nil when empty delete_at deletes at beginning is same as shift deletes at beginning is same as shift deletes with index and count deletes with index and count deletes positive index deletes positive index returns empty if at end returns empty if at end deletes negative index with range deletes negative index with range deletes use range deletes use range deletes negative index deletes negative index deletes out of bounds deletes out of bounds deletes negative index with range, out of bounds deletes negative index with range, out of bounds does compact! does compact! selects! selects! does reverse with an odd number of elements does reverse with an odd number of elements does + with different types (#568) does + with different types (#568) OpenSSL::SSL::Server .open .open #accept? accepts accepts don't sync_close don't sync_close #accept doesn't to SSL handshake with start_immediately = false doesn't to SSL handshake with start_immediately = false accepts and do handshake accepts and do handshake sync_close sync_close .new .new detects SNI hostname detects SNI hostname __mulosi4 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests .__ashrti3 .__ashrti3 OpenSSL::X509::Name parse parse add_entry add_entry HTTP::FormData::Builder #field converts value to a string converts value to a string builds valid form-data messages builds valid form-data messages #content_type calculates the content type calculates the content type #file fails after finish fails after finish #finish fails when no body parts fails when no body parts fails after finish fails after finish System::User .find_by(*, id) returns a user by id returns a user by id raises on nonexistent user id raises on nonexistent user id #id is the same as the source ID is the same as the source ID #home_directory calls without raising calls without raising .find_by?(*, id) returns nil on nonexistent user id returns nil on nonexistent user id returns a user by id returns a user by id #to_s returns a string representation returns a string representation .find_by(*, name) raises on a nonexistent user raises on a nonexistent user returns a user by name returns a user by name #name calls without raising calls without raising #shell calls without raising calls without raising #username is the same as the source name is the same as the source name #group_id calls without raising calls without raising .find_by?(*, name) returns nil on nonexistent user returns nil on nonexistent user returns a user by name returns a user by name UUID serializes #to_yaml #to_yaml #from_yaml #from_yaml Crypto::Bcrypt::Base64 decodes decodes encodes encodes Syscall can call into the system successfully can call into the system successfully __fixunsdfti passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests JSON::Parser parses false parses false prevents stack overflow for hashes prevents stack overflow for hashes parses {} parses {} raises on parse "hello world" raises on parse "hello world" raises on parse [1 true] raises on parse [1 true] parses {"foo": 1, "bar": 1.5} parses {"foo": 1, "bar": 1.5} raises on parse {"foo": 1,} raises on parse {"foo": 1,} parses [] parses [] raises on parse {1} raises on parse {1} parses [false] parses [false] raises on parse [1,] raises on parse [1,] parses [[1]] parses [[1]] raises on parse {"foo": 1 "bar": 2} raises on parse {"foo": 1 "bar": 2} parses {"fo\no": 1} parses {"fo\no": 1} raises on parse 1� raises on parse 1� raises on parse "\u201cello world" raises on parse "\u201cello world" raises on parse [2.] raises on parse [2.] raises on parse [0] 1 raises on parse [0] 1 parses {"foo": 1} parses {"foo": 1} parses [{"foo": 1}] parses [{"foo": 1}] parses [null] parses [null] parses [1] parses [1] parses ["hello"] parses ["hello"] parses 1 parses 1 parses [true] parses [true] parses [ 0 ] parses [ 0 ] raises on parse [0]1 raises on parse [0]1 raises on parse ["\u123z"] raises on parse ["\u123z"] parses ["日"] parses ["日"] parses [1, 2, 3] parses [1, 2, 3] parses 2.5 parses 2.5 parses [1.5] parses [1.5] returns raw returns raw prevents stack overflow for arrays prevents stack overflow for arrays raises on parse "{"foo":} raises on parse "{"foo":} parses "\nПривет, мир!" parses "\nПривет, мир!" parses true parses true parses "hello" parses "hello" parses [0] parses [0] raises on parse {"foo"1} raises on parse {"foo"1} parses null parses null raises on parse "hello world" raises on parse "hello world" raises on parse "\u201cello world" raises on parse "\u201cello world" buffered cannot send if closed cannot send if closed can be closed from different fiber can be closed from different fiber works with select works with select can be closed after sending can be closed after sending does inspect on buffered channel does inspect on buffered channel gets ready with data gets ready with data pings pings can send and receive nil can send and receive nil does pretty_inspect on unbuffered channel does pretty_inspect on unbuffered channel can be closed can be closed blocks when full blocks when full can receive? when closed can receive? when closed does pretty_inspect on buffered channel does pretty_inspect on buffered channel does inspect on unbuffered channel does inspect on unbuffered channel can send successfully without raise can send successfully without raise doesn't block when not full doesn't block when not full can receive? when not empty can receive? when not empty .__multi3 .__multi3 __fixunssfti passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests ECR does with -% inside string does with -% inside string does with <% -%> does with <% -%> builds a crystal program from a source builds a crystal program from a source does ECR.def_to_s does ECR.def_to_s does with <%- %> (1) does with <%- %> (1) does with <%- %> (2) does with <%- %> (2) does with <%= -%> does with <%= -%> .render .render does with <%% %> does with <%% %> colorize colorizes foreground with background with mode colorizes foreground with background with mode colorizes foreground with 8-bit color colorizes foreground with 8-bit color colorizes with surround and no reset colorizes with surround and no reset colorizes background with true color colorizes background with true color colorizes background with 8-bit color colorizes background with 8-bit color colorizes background colorizes background colorizes foreground with background colorizes foreground with background raises on unknown foreground color raises on unknown foreground color colorizes mode colorizes mode raises on unknown background color raises on unknown background color colorizes with to_s colorizes with to_s colorizes foreground colorizes foreground inspects inspects colorizes foreground with symbol colorizes foreground with symbol colorizes with surround and default colorizes with surround and default colorizes mode combination colorizes mode combination colorizes with surround colorizes with surround colorizes mode with symbol colorizes mode with symbol toggles off toggles off colorizes with surround and reset colorizes with surround and reset colorizes without change colorizes without change colorizes foreground with true color colorizes foreground with true color toggles off and on toggles off and on INI parse from String parses sections parses sections parses key = value parses key = value fails on malformed declaration fails on malformed declaration ignores comments ignores comments ignores whitespaces ignores whitespaces fails on data after section fails on data after section fails on malformed section fails on malformed section parses empty values parses empty values parses empty section parses empty section parses a reopened section parses a reopened section from IO parses a file parses a file build to an INI-formatted output builds with no sections builds with no sections builds from a Hash builds from a Hash builds an empty section before non-empty sections builds an empty section before non-empty sections builds with no spaces around `=` builds with no spaces around `=` builds from a NamedTuple builds from a NamedTuple Random::ISAAC generates random numbers as generated official implementation generates random numbers as generated official implementation different instances generate different numbers (#7976) different instances generate different numbers (#7976) can be initialized without explicit seed can be initialized without explicit seed ECR::Lexer lexes with <%- %> lexes with <%- %> lexes with <% -%> lexes with <% -%> lexes with -% inside string lexes with -% inside string lexes with <%= -%> lexes with <%= -%> lexes without interpolation lexes without interpolation lexes with <%% -%> (#14734) lexes with <%% -%> (#14734) lexes with <% %> and correct location info lexes with <% %> and correct location info lexes with <%%= %> lexes with <%%= %> lexes with <%-% %> (#14734) lexes with <%-% %> (#14734) lexes with <%# %> lexes with <%# %> lexes with <%= %> lexes with <%= %> lexes with <%-%= %> (#14734) lexes with <%-%= %> (#14734) lexes with <% %> lexes with <% %> lexes with <%# -%> lexes with <%# -%> lexes with <%% %> lexes with <%% %> Spec::TAPFormatter reports failures reports failures reports mixed results reports mixed results reports successful results reports successful results reports errors reports errors reports pending reports pending Digest::MD5 #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) calculates hash from unicode string calculates hash from unicode string return the digest size return the digest size digest with file content digest with file content calculates hash from string calculates hash from string #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) context are independent context are independent calculates digest from string calculates digest from string can't call final twice can't call final twice can take a block can take a block #hexfinal #hexfinal calculates hash from UInt8 slices calculates hash from UInt8 slices resets resets calculates hash of #to_slice calculates hash of #to_slice calculates base64'd hash from string calculates base64'd hash from string .dup preserves value preserves value preserves type preserves type leads to not sharing state leads to not sharing state leads to deterministic updates leads to deterministic updates Slice "#reverse_each" yielding "#reverse_each" yielding does to_s does to_s .move_to(Slice) moves most src.size moves most src.size handles intersecting ranges handles intersecting ranges raises if dst is smaller raises if dst is smaller moves bytes moves bytes does map does map .copy_from(Slice) copies at most src.size copies at most src.size raises if dst is smaller raises if dst is smaller copies bytes copies bytes "#each_index" iterator "#each_index" iterator does Bytes[] does Bytes[] #+(Int) #+(Int) does map_with_index does map_with_index .move_from(Slice) moves bytes moves bytes handles intersecting ranges handles intersecting ranges moves at most src.size moves at most src.size raises if dst is smaller raises if dst is smaller #to_unsafe_bytes reinterprets a slice's elements as bytes reinterprets a slice's elements as bytes #hexdump works for empty slice works for empty slice works for Bytes works for Bytes does [] with start and count does [] with start and count #clone deep copy deep copy clones primitive clones primitive clones non-primitive clones non-primitive buffer copy buffer copy does rindex does rindex "#each" yielding "#each" yielding does []= does []= does map_with_index, with offset does map_with_index, with offset raises if size is negative on new raises if size is negative on new does map_with_index! does map_with_index! "#each_index" yielding "#each_index" yielding does to_a does to_a does macro [] does macro [] sort #unstable_sort! raises if <=> returns nil raises if <=> returns nil sorts with invalid block (#4379) sorts with invalid block (#4379) raises if sort! block returns nil raises if sort! block returns nil without block without block with a block with a block can sort! just by using <=> (#6608) can sort! just by using <=> (#6608) #sort without block without block stable sort with a block stable sort with a block stable sort without a block stable sort without a block with a block with a block #sort_by calls given block exactly once for each element calls given block exactly once for each element stable sort stable sort sorts sorts #unstable_sort with a block with a block without block without block #sort_by stable sort stable sort sorts sorts #unstable_sort_by calls given block exactly once for each element calls given block exactly once for each element sorts sorts #unstable_sort_by sorts sorts #sort! sorts with invalid block (#4379) sorts with invalid block (#4379) raises if <=> returns nil raises if <=> returns nil stable sort without a block stable sort without a block can sort! just by using <=> (#6608) can sort! just by using <=> (#6608) without block without block with a block with a block stable sort with a block stable sort with a block raises if sort! block returns nil raises if sort! block returns nil #+(Slice) concatenates two slices concatenates two slices .additive_identity returns an empty slice returns an empty slice #[] #[] creates read-only slice creates read-only slice #[] keeps read-only value #[] keeps read-only value "#reverse_each" iterator "#reverse_each" iterator .join concatenates an empty indexable of slices concatenates an empty indexable of slices concatenates an indexable of slices concatenates an indexable of slices concatenates a slice of slices concatenates a slice of slices does [] does [] does to_s for bytes does to_s for bytes does bytesize does bytesize uses percent vars in [] macro (#2954) uses percent vars in [] macro (#2954) #same? #same? creates empty slice creates empty slice does []? does []? does []? with start and count does []? with start and count does map! does map! .copy_to(Slice) copies bytes copies bytes raises if dst is smaller raises if dst is smaller copies at most src.size copies at most src.size does copy_to pointer does copy_to pointer #dup don't deep copy don't deep copy buffer copy buffer copy does empty? does empty? does copy_from pointer does copy_from pointer #hexstring works for Bytes works for Bytes does macro [] with numbers (#3055) does macro [] with numbers (#3055) does map_with_index!, with offset does map_with_index!, with offset <=> compares compares compares (UInt8) compares (UInt8) is comparable is comparable gets pointer and size gets pointer and size == does == with same type, different runtime instances does == with same type, different runtime instances does == does == does == for bytes does == for bytes does []? with range does []? with range hashes each item in collection hashes each item in collection #fill replaces values in a subrange replaces values in a subrange works for bytes works for bytes reverses reverses rotate! assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert shuffles shuffles optimizes hash for Bytes optimizes hash for Bytes "#each" iterator "#each" iterator #unsafe_slice_of reinterprets a slice's elements reinterprets a slice's elements Crystal::Digest::SHA1 does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block resets resets can't call #final more than once can't call #final more than once does digest for "" does digest for "" does base64digest for "" does base64digest for "" does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does digest for "a" in a block does digest for "a" in a block digest with file content digest with file content does digest for "The quick brown fox jumps over the lazy dog" does digest for "The quick brown fox jumps over the lazy dog" does base64digest for "a" does base64digest for "a" can't call #final more than once can't call #final more than once does base64digest for "The quick brown fox jumps over the lazy dog" does base64digest for "The quick brown fox jumps over the lazy dog" does digest for "" in a block does digest for "" in a block can't call #final more than once can't call #final more than once returns the digest_size returns the digest_size resets resets #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) .dup preserves type preserves type leads to not sharing state leads to not sharing state preserves value preserves value leads to deterministic updates leads to deterministic updates resets resets does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "fooø" does digest for "fooø" does hexdigest for "a" does hexdigest for "a" can't call #final more than once can't call #final more than once resets resets does digest for "The quick brown fox jumps over the lazy dog" in a block does digest for "The quick brown fox jumps over the lazy dog" in a block does digest for "abc" in a block does digest for "abc" in a block does digest for "fooø" in a block does digest for "fooø" in a block resets resets #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) context are independent context are independent does hexdigest for "fooø" does hexdigest for "fooø" does base64digest for "fooø" does base64digest for "fooø" resets resets resets resets can't call #final more than once can't call #final more than once does hexdigest for "The quick brown fox jumps over the lazy dog" does hexdigest for "The quick brown fox jumps over the lazy dog" can't call #final more than once can't call #final more than once does base64digest for "abc" does base64digest for "abc" does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" can't call #final more than once can't call #final more than once does hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "a" does digest for "a" does digest for "abc" does digest for "abc" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "" does hexdigest for "" does hexdigest for "abc" does hexdigest for "abc" HTTP::CompressHandler doesn't deflates if doesn't have 'deflate' in Accept-Encoding header doesn't deflates if doesn't have 'deflate' in Accept-Encoding header doesn't compress twice doesn't compress twice deflates if has deflate in 'deflate' Accept-Encoding header deflates if has deflate in 'deflate' Accept-Encoding header don't try to compress upgraded response don't try to compress upgraded response deflates gzip if has deflate in 'deflate' Accept-Encoding header deflates gzip if has deflate in 'deflate' Accept-Encoding header don't try to compress for empty body responses don't try to compress for empty body responses fix content-length header fix content-length header XML::Builder writes element with attributes as named tuple, nesting writes element with attributes as named tuple, nesting #cdata writes cdata writes cdata escapes ]]> sequences escapes ]]> sequences writes cdata with block writes cdata with block writes element with prefix writes element with prefix writes element with attributes as hash writes element with attributes as hash writes comment writes comment writes to string writes to string errors on invalid element names errors on invalid element names writes DTD writes DTD writes document writes document writes element with namespace writes element with namespace errors on invalid element name with prefix errors on invalid element name with prefix writes text writes text writes attribute with namespace writes attribute with namespace writes namespace writes namespace sets indent with count sets indent with count errors on invalid element name with prefix and namespace errors on invalid element name with prefix and namespace writes element writes element errors on null byte errors on null byte writes DTD with block writes DTD with block writes element with namespace, without block writes element with namespace, without block writes element with attributes as named tuple writes element with attributes as named tuple writes element with namespace writes element with namespace writes comment with block writes comment with block writes to IO writes to IO writes element with attributes as hash, nesting writes element with attributes as hash, nesting sets indent with string sets indent with string sets quote char sets quote char writes attribute writes attribute writes nested element writes nested element OpenSSL::HMAC computes SHA256 computes SHA256 computes SHA512 computes SHA512 computes MD5 computes MD5 computes SHA224 computes SHA224 computes SHA1 computes SHA1 computes SHA384 computes SHA384 OAuth::Consumer gets authorize uri with callback url with callback url without block without block without callback url without callback url without custom authorize uri without custom authorize uri with absolute uri with absolute uri URI::Params #== compares other compares other compares other types compares other types #delete_all deletes all values for provided param name and returns them deletes all values for provided param name and returns them #delete deletes first value for provided param name and returns it deletes first value for provided param name and returns it #[]=(name, value) sets value for provided param name sets value for provided param name adds new name => value pair if there is no such param adds new name => value pair if there is no such param sets value for provided param name (array) sets value for provided param name (array) #add(name, value) appends new value for provided param name appends new value for provided param name #has_key?(name) return false if param with provided name does not exist return false if param with provided name does not exist returns true if param with provided name exists returns true if param with provided name exists #to_s serializes params to http form serializes params to http form turns spaces to + by default turns spaces to + by default turns spaces to %20 if space_to_plus is false turns spaces to %20 if space_to_plus is false #[]?(name) return nil when there is no such param return nil when there is no such param returns first value for provided param name returns first value for provided param name #fetch(name, &block) returns first value for provided param name returns first value for provided param name return default value when there is no such param return default value when there is no such param #set_all(name, values) sets values for provided param name sets values for provided param name .build builds form from {"foo" => [""], "bar" => [""]} builds form from {"foo" => [""], "bar" => [""]} builds form from {"foo" => [""]} builds form from {"foo" => [""]} builds form from {"foo" => ["bar"], "baz" => ["qux"]} builds form from {"foo" => ["bar"], "baz" => ["qux"]} builds form from {"foo" => ["hello+world"]} builds form from {"foo" => ["hello+world"]} builds form from {"bar" => [""], "foo" => [""]} builds form from {"bar" => [""], "foo" => [""]} builds form from {"foo" => ["bar", "baz"]} builds form from {"foo" => ["bar", "baz"]} turns spaces to %20 if wanted turns spaces to %20 if wanted builds with IO builds with IO builds form from {"foo" => ["bar"]} builds form from {"foo" => ["bar"]} builds form from {"foo" => ["hello world"]} builds form from {"foo" => ["hello world"]} #each calls provided proc for each name, value pair, including multiple values per one param name calls provided proc for each name, value pair, including multiple values per one param name #empty? test empty? test empty? .parse parses foo= parses foo= parses foo=bar&foo=baz parses foo=bar&foo=baz parses foo=bar parses foo=bar parses parses parses bar&foo parses bar&foo parses foo=&bar parses foo=&bar parses foo=bar;baz=qux parses foo=bar;baz=qux parses foo=hello+world parses foo=hello+world parses && parses && parses foo parses foo parses foo=hello%2Bworld parses foo=hello%2Bworld parses foo=bar&baz=qux parses foo=bar&baz=qux parses parses parses foo=bar=qux parses foo=bar=qux #merge appends values with the same key with replace: false appends values with the same key with replace: false replaces all values with the same key by default replaces all values with the same key by default does not modify the receiver does not modify the receiver #merge! modifies the receiver modifies the receiver does not modify the other params with replace: true with replace: true with replace: false with replace: false #inspect #inspect #clone gives a whole new set of params gives a whole new set of params .new assert assert #fetch(name, default) returns first value for provided param name returns first value for provided param name return default value when there is no such param return default value when there is no such param #dup gives a whole new set of params gives a whole new set of params #[](name) raises KeyError when there is no such param raises KeyError when there is no such param returns first value for provided param name returns first value for provided param name #fetch_all(name) fetches list of all values for provided param name fetches list of all values for provided param name .encode builds from hash with IO builds from hash with IO builds from named tuple with IO builds from named tuple with IO builds from hash builds from hash builds from named tuple builds from named tuple Compress::Zip writes io writes io adds a directory adds a directory writes entry uncompressed writes entry uncompressed writes entry writes entry writes file writes file writes entry uncompressed and reads with Compress::Zip::File writes entry uncompressed and reads with Compress::Zip::File writes bytes writes bytes writes string writes string writes and reads to memory writes and reads to memory StringPool puts many puts many doesn't fail if initial capacity is not a power of 2 doesn't fail if initial capacity is not a power of 2 is empty is empty gets slice gets slice gets string gets string doesn't fail if initial capacity is too small doesn't fail if initial capacity is too small gets string IO gets string IO gets pointer with size gets pointer with size can be created with larger initial capacity can be created with larger initial capacity #get? #get? HTTP::Status .new returns an instance when given undefined status code returns an instance when given undefined status code returns an instance when given defined status code returns an instance when given defined status code raises when given invalid status code raises when given invalid status code #server_error? returns false unless given 5xx status code returns false unless given 5xx status code returns true when given 5xx status code returns true when given 5xx status code #description returns default description for status 200 returns default description for status 200 returns nil on non-existent status returns nil on non-existent status #code returns the status code returns the status code #redirection? returns false unless given 3xx status code returns false unless given 3xx status code returns true when given 3xx status code returns true when given 3xx status code #informational? returns true when given 1xx status code returns true when given 1xx status code returns false unless given 1xx status code returns false unless given 1xx status code #client_error? returns true when given 4xx status code returns true when given 4xx status code returns false unless given 4xx status code returns false unless given 4xx status code #success? returns false unless given 2xx status code returns false unless given 2xx status code returns true when given 2xx status code returns true when given 2xx status code at_exit allows handlers to change the exit code with explicit `exit` call (2) allows handlers to change the exit code with explicit `exit` call (2) runs handlers on explicit program ending runs handlers on explicit program ending allows handlers to change the exit code with explicit `exit` call allows handlers to change the exit code with explicit `exit` call can get unhandled exception in at_exit handler can get unhandled exception in at_exit handler runs all handlers maximum once runs all handlers maximum once shows unhandled exceptions after at_exit handlers shows unhandled exceptions after at_exit handlers runs handlers on normal program ending runs handlers on normal program ending changes final exit code when an handler raises an error changes final exit code when an handler raises an error prints unhandled exception with cause prints unhandled exception with cause allows at_exit inside at_exit allows at_exit inside at_exit runs handlers in reverse order runs handlers in reverse order __fixdfti passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests Log .context is per fiber is per fiber is assignable from a named tuple is assignable from a named tuple is extended by set is extended by set can be set and cleared can be set and cleared existing keys are overwritten by set existing keys are overwritten by set is assignable from a hash with symbol keys is assignable from a hash with symbol keys .with_context with arguments restores context after the block with arguments restores context after the block restores context after the block restores context after the block assigns context via a named tuple assigns context via a named tuple assigns context via a hash with symbol keys assigns context via a hash with symbol keys #with_context with arguments restores context after the block with arguments restores context after the block restores context after the block restores context after the block Process .chroot raises when unprivileged raises when unprivileged .on_interrupt compiles compiles .pgid .pgid .fork executes the new process with exec executes the new process with exec #wait successful exit code successful exit code unsuccessful exit code unsuccessful exit code #signal(Signal::KILL) kills many process kills many process kills a process kills a process .new raises if command doesn't exist raises if command doesn't exist accepts nilable string for `chdir` (#13767) accepts nilable string for `chdir` (#13767) raises if command could not be executed raises if command could not be executed raises if command is not executable raises if command is not executable raises if command is not executable raises if command is not executable #terminate #terminate .on_terminate compiles compiles .run sends input in IO sends input in IO does not execute batch files .CmD .CmD .cmD .cmD .cmd .cmd .bat .bat .BAT .BAT .Bat .Bat sets working directory with string sets working directory with string sends error to IO sends error to IO environ deletes existing environment variable deletes existing environment variable sets an environment variable sets an environment variable sets an empty environment variable sets an empty environment variable overrides existing environment variable overrides existing environment variable preserves and sets an environment variable preserves and sets an environment variable preserves existing environment variable preserves existing environment variable clears and sets an environment variable clears and sets an environment variable clears the environment clears the environment disallows passing arguments to nowhere disallows passing arguments to nowhere sets working directory with path sets working directory with path runs true in block runs true in block can link processes together can link processes together does not run shell code in the argument list does not run shell code in the argument list sends output to IO sends output to IO gets output gets output looks up programs in the $PATH with a shell looks up programs in the $PATH with a shell allows passing huge argument lists to a shell allows passing huge argument lists to a shell redirects output to /dev/null redirects output to /dev/null forwards non-blocking file forwards non-blocking file forwards closed io forwards closed io waits for the process waits for the process controls process in block controls process in block receives arguments in tuple receives arguments in tuple closes ios after block closes ios after block receives arguments in array receives arguments in array .exists? .exists? .exec redirects STDIN and STDOUT to files redirects STDIN and STDOUT to files gets error from exec gets error from exec Channel(T) does not raise or change its status when it is closed more than once does not raise or change its status when it is closed more than once send returns channel send returns channel does send_first does send_first .non_blocking_select mix of receive and receive? multi-channel raises if receive channel was close and receive? channel was not ready raises if receive channel was close and receive? channel was not ready returns nil if receive channel was not ready and receive? channel was closed returns nil if receive channel was not ready and receive? channel was closed receive nil-on-close single-channel returns nil if channel was closed returns nil if channel was closed types types send raise-on-close multi-channel types types returns correct index for array argument returns correct index for array argument timeout types types negative amounts should not trigger timeout negative amounts should not trigger timeout send raise-on-close raises if channel was closed while waiting send raise-on-close raises if channel was closed while waiting receive raise-on-close raises if channel was closed while waiting receive raise-on-close raises if channel was closed while waiting should not trigger timeout should not trigger timeout receive nil-on-close returns index of closed while waiting receive nil-on-close returns index of closed while waiting receive raise-on-close single-channel types types send raise-on-close single-channel types types receive raise-on-close multi-channel types types .select send raise-on-close multi-channel types types receive raise-on-close single-channel types nilable channel types nilable channel raises if channel was closed raises if channel was closed raises if channel is closed while waiting raises if channel is closed while waiting awakes all waiting selects awakes all waiting selects types types receive nil-on-close multi-channel returns index of closed channel returns index of closed channel types types send raise-on-close single-channel raises if channel was closed raises if channel was closed types nilable channel types nilable channel types types awakes all waiting selects awakes all waiting selects raises if channel is closed while waiting raises if channel is closed while waiting mix of receive and receive? multi-channel raises if receive channel was closed and receive? channel was not ready raises if receive channel was closed and receive? channel was not ready returns nil if receive channel was not ready and receive? channel was closed returns nil if receive channel was not ready and receive? channel was closed timeout receive nil-on-close returns index of closed while waiting receive nil-on-close returns index of closed while waiting allows receiving while waiting allows receiving while waiting triggers timeout (reverse order) triggers timeout (reverse order) triggers timeout triggers timeout allows receiving while waiting (reverse order) allows receiving while waiting (reverse order) allows receiving while waiting (same fiber multiple times) allows receiving while waiting (same fiber multiple times) types types triggers timeout (same fiber multiple times) triggers timeout (same fiber multiple times) send raise-on-close raises if channel was closed while waiting send raise-on-close raises if channel was closed while waiting negative amounts should not trigger timeout negative amounts should not trigger timeout receive raise-on-close raises if channel was closed while waiting receive raise-on-close raises if channel was closed while waiting receive raise-on-close multi-channel types types receive nil-on-close single-channel returns nil if channel was closed returns nil if channel was closed types nilable channel types nilable channel types types returns nil channel is closed while waiting returns nil channel is closed while waiting awakes all waiting selects awakes all waiting selects creates unbuffered with no arguments creates unbuffered with no arguments does receive_first does receive_first creates buffered with capacity argument creates buffered with capacity argument Pointer::Appender(T) #size #size #<< #<< .new .new #to_slice #to_slice OAuth::Signature does twitter sample does twitter sample key gets when token secret is empty gets when token secret is empty gets when token secret is not empty gets when token secret is not empty base string computes when TLS computes when TLS computes with port in host computes with port in host computes without port in host computes without port in host HTTP::Server::RequestProcessor handles IO::Error while reading handles IO::Error while reading reads consecutive requests closes connection when Connection: close closes connection when Connection: close fail if body is not consumed fail if body is not consumed closes connection when request body is not entirely consumed closes connection when request body is not entirely consumed continues when request body is entirely consumed continues when request body is entirely consumed when body is consumed when body is consumed with empty body with empty body works works handles IO::Error while flushing handles IO::Error while flushing does not bleed Log::Context between requests does not bleed Log::Context between requests doesn't respond with error when headers were already sent doesn't respond with error when headers were already sent handles IO::Error while writing handles IO::Error while writing catches raised error on handler and retains context from handler catches raised error on handler and retains context from handler flushes output buffer when an error happens and some content was already sent flushes output buffer when an error happens and some content was already sent Fiber #resumable? #resumable? HTTP::ChunkedContent #read_byte stops reading after final chunk #read_byte stops reading after final chunk long trailer part fails for long single header fails for long single header fails for long combined headers fails for long combined headers #peek handles interrupted io #peek handles interrupted io #read reads empty content #read reads empty content #peek handles empty data #peek handles empty data #read_byte reads empty content #read_byte reads empty content skips (2) skips (2) #read stops reading after final chunk #read stops reading after final chunk #read_byte handles interrupted io #read_byte handles interrupted io #peek stops reading after final chunk #peek stops reading after final chunk #gets reads multiple chunks #gets reads multiple chunks #peek reads empty content #peek reads empty content fails if unterminated chunked trailer part fails if unterminated chunked trailer part reads chunk extensions reads chunk extensions skips skips fails if not properly delimited fails if not properly delimited skips (3) skips (3) #read handles interrupted io #read handles interrupted io #read_byte handles empty data #read_byte handles empty data #read handles empty data #read handles empty data reads chunked trailer part reads chunked trailer part fails if not properly delimited fails if not properly delimited #gets reads multiple chunks with #gets reads multiple chunks with delays reading the next chunk as soon as one is consumed (#3270) delays reading the next chunk as soon as one is consumed (#3270) peeks into next chunk peeks into next chunk handles empty io handles empty io fails if invalid chunk size fails if invalid chunk size peeks peeks Atomic::Flag #test_and_set #test_and_set #clear #clear HTTP::Client::Response parses response with body without \r parses response with body without \r parses response without body but Content-Length == 0, block form (#8461) parses response without body but Content-Length == 0, block form (#8461) handle invalid IO unsupported version unsupported version invalid status invalid status missing HTTP header missing HTTP header missing status missing status parses response without status message parses response without status message returns content type and charset, removes semicolon returns content type and charset, removes semicolon sets content length from body sets content length from body serialize as not chunked with body_io if HTTP/1.0 serialize as not chunked with body_io if HTTP/1.0 parses 204 response without body but Content-Length == 0 (#2512) parses 204 response without body but Content-Length == 0 (#2512) creates Response with status code 204, no body and Content-Length == 0 (#2512) creates Response with status code 204, no body and Content-Length == 0 (#2512) returns content type and charset, removes semicolon, with multiple parameters (#2520) returns content type and charset, removes semicolon, with multiple parameters (#2520) returns content type and no charset, other parameter (#2520) returns content type and no charset, other parameter (#2520) parses response with chunked body of size 0 parses response with chunked body of size 0 sets content length even without body sets content length even without body success? returns false for other ranges returns false for other ranges returns true for the 2xx returns true for the 2xx deletes Content-Encoding and Content-Length headers after gzip decompression deletes Content-Encoding and Content-Length headers after gzip decompression parses response with streamed chunked body parses response with streamed chunked body doesn't sets content length for 1xx, 204 or 304 doesn't sets content length for 1xx, 204 or 304 parses long headers parses long headers parses response without body parses response without body returns no content_type when header is missing returns no content_type when header is missing parses long request lines parses long request lines serialize with body serialize with body returns content type and charset, removes quotes returns content type and charset, removes quotes returns content type and no charset returns content type and no charset serialize as chunked with body_io serialize as chunked with body_io parses response with chunked body parses response with chunked body returns status_code returns status_code parses response with body but without content-length parses response with body but without content-length raises when creating 1xx, 204 or 304 with body raises when creating 1xx, 204 or 304 with body parses response with empty body but without content-length parses response with empty body but without content-length parses response with streamed body, huge content-length parses response with streamed body, huge content-length parses response with streamed body parses response with streamed body returns content type as nil when empty (#8398) returns content type as nil when empty (#8398) parses response with cookies parses response with cookies serialize with body and cookies serialize with body and cookies parses response ignoring body parses response ignoring body parses response with body parses response with body deletes Content-Encoding and Content-Length headers after deflate decompression deletes Content-Encoding and Content-Length headers after deflate decompression parses response with duplicated headers parses response with duplicated headers Range sum called with no block is specialized for performance (BigInt) called with no block is specialized for performance (BigInt) is equivalent to Enumerable#sum is equivalent to Enumerable#sum called with no block is specialized for performance called with no block is specialized for performance map works for other types works for other types optimizes for int range optimizes for int range initialized with new method initialized with new method gets basic properties gets basic properties #reverse_each gives correct values with exclusive range gives correct values with exclusive range gives correct values with inclusive range gives correct values with inclusive range is empty with empty inclusive range is empty with empty inclusive range iterators on beginless range iterators on beginless range raises on endless range raises on endless range #each iterator is empty with .. and begin > end is empty with .. and begin > end is not empty with ... and begin.succ == end is not empty with ... and begin.succ == end is not empty with .. and begin == end is not empty with .. and begin == end does next with exclusive range does next with exclusive range does with endless range does with endless range does next with inclusive range does next with inclusive range raises on beginless range raises on beginless range cycles cycles is empty with ... and begin > end is empty with ... and begin > end is not empty with ... and begin.succ == end is not empty with ... and begin.succ == end #== #== does to_s does to_s === no limits no limits exclusive exclusive beginless beginless endless endless inclusive inclusive #sample samples with n = 0 samples with n = 0 for a float range samples an exclusive range with n > 1 samples an exclusive range with n > 1 samples an exclusive range without n samples an exclusive range without n samples an inclusive range without n samples an inclusive range without n samples an inclusive range with n > 1 samples an inclusive range with n > 1 samples an inclusive range with n >= 1 and begin == end samples an inclusive range with n >= 1 and begin == end raises on invalid range with n = 0 raises on invalid range with n = 0 samples an exclusive range with n = 1 samples an exclusive range with n = 1 raises on invalid range with n = 1 raises on invalid range with n = 1 samples an inclusive range with n = 1 samples an inclusive range with n = 1 samples an inclusive range with n > 16 samples an inclusive range with n > 16 raises on invalid range with n > 1 raises on invalid range with n > 1 samples a float range as a distribution samples a float range as a distribution for an integer range samples an inclusive range with n > 16 samples an inclusive range with n > 16 raises on invalid range with n = 1 raises on invalid range with n = 1 samples an inclusive range with n > 1 samples an inclusive range with n > 1 samples an inclusive range with n equal to or bigger than the available values samples an inclusive range with n equal to or bigger than the available values raises on invalid range without n raises on invalid range without n samples an inclusive range with n = 1 samples an inclusive range with n = 1 raises on invalid range with n = 0 raises on invalid range with n = 0 samples an exclusive range with n = 1 samples an exclusive range with n = 1 raises on exclusive range that would underflow raises on exclusive range that would underflow raises on invalid range with n > 1 raises on invalid range with n > 1 samples an exclusive range without n samples an exclusive range without n samples an exclusive range with n > 1 samples an exclusive range with n > 1 samples an inclusive range without n samples an inclusive range without n raises on open range raises on open range samples a range with nilable types samples a range with nilable types is empty with .. and begin > end is empty with .. and begin > end #each is empty with empty inclusive range is empty with empty inclusive range raises on beginless raises on beginless gives correct values with inclusive range gives correct values with inclusive range endless endless doesn't have Nil as a type for endless each doesn't have Nil as a type for endless each gives correct values with exclusive range gives correct values with exclusive range doesn't have Nil as a type for beginless each doesn't have Nil as a type for beginless each #step "inclusive step over" iterator "inclusive step over" iterator "begin.succ == end exclusive" yielding "begin.succ == end exclusive" yielding "begin == end exclusive" yielding "begin == end exclusive" yielding "exclusive default" iterator "exclusive default" iterator "begin.succ == end inclusive" yielding "begin.succ == end inclusive" yielding "endless range" iterator "endless range" iterator "begin > end inclusive" iterator "begin > end inclusive" iterator "begin > end exclusive" iterator "begin > end exclusive" iterator "inclusive step" yielding "inclusive step" yielding "exclusive step over" yielding "exclusive step over" yielding "inclusive default" iterator "inclusive default" iterator "Float step" iterator "Float step" iterator "Time::Span step" iterator "Time::Span step" iterator "begin.succ == end inclusive" iterator "begin.succ == end inclusive" iterator "endless range" yielding "endless range" yielding "inclusive default" yielding "inclusive default" yielding "begin > end exclusive" yielding "begin > end exclusive" yielding "begin.succ == end exclusive" iterator "begin.succ == end exclusive" iterator "exclusive step" yielding "exclusive step" yielding "exclusive step" iterator "exclusive step" iterator "inclusive step" iterator "inclusive step" iterator "exclusive default" yielding "exclusive default" yielding "inclusive step over" yielding "inclusive step over" yielding "begin == end inclusive" iterator "begin == end inclusive" iterator "begin > end inclusive" yielding "begin > end inclusive" yielding "Time::Span step" yielding "Time::Span step" yielding "exclusive step over" iterator "exclusive step over" iterator "Float step" yielding "Float step" yielding with #succ type "at definition range" yielding "at definition range" yielding "at definition range by" iterator "at definition range by" iterator "at definition range by" yielding "at definition range by" yielding "at definition range by" iterator "at definition range by" iterator "at definition range by" yielding "at definition range by" yielding "missing end by" yielding "missing end by" yielding "at definition range" iterator "at definition range" iterator "basic by" yielding "basic by" yielding "at definition range missing by" yielding "at definition range missing by" yielding "missing end by" iterator "missing end by" iterator "at definition range missing by" iterator "at definition range missing by" iterator "basic by" iterator "basic by" iterator "basic" yielding "basic" yielding "at definition range missing by" iterator "at definition range missing by" iterator "at definition range missing by" yielding "at definition range missing by" yielding "basic" iterator "basic" iterator "begin == end inclusive" yielding "begin == end inclusive" yielding raises on beginless range raises on beginless range "begin == end exclusive" iterator "begin == end exclusive" iterator bsearch BigInt BigInt Int Int Float Float is empty with ... and begin > end is empty with ... and begin > end does inspect does inspect includes? includes? is not empty with .. and begin == end is not empty with .. and begin == end clones clones #size raises on beginless range raises on beginless range raises on endless range raises on endless range works for other types works for other types optimizes for int range optimizes for int range #reverse_each iterator is empty with ... and begin > end is empty with ... and begin > end does next with inclusive range does next with inclusive range is not empty with ... and begin.succ == end is not empty with ... and begin.succ == end raises on endless range raises on endless range does next with exclusive range does next with exclusive range does next with beginless range does next with beginless range reverse cycles reverse cycles is not empty with .. and begin == end is not empty with .. and begin == end is empty with .. and begin > end is empty with .. and begin > end SystemError .from_os_error Can build an error from an errno Can build an error from an errno Random random_bytes gets random bytes with default number of digits gets random bytes with default number of digits generates random bytes generates random bytes fills given buffer with random bytes fills given buffer with random bytes gets random bytes with requested number of digits gets random bytes with requested number of digits hex gets hex with requested number of digits gets hex with requested number of digits gets hex with default number of digits gets hex with default number of digits does with BigInt range does with BigInt range gets a random bool gets a random bool raises on invalid number raises on invalid number does with inclusive range does with inclusive range limited number limited number returns a random static array returns a random static array works using U/Int128 works using U/Int128 urlsafe_base64 keeps padding keeps padding gets urlsafe base64 with requested number of digits gets urlsafe base64 with requested number of digits gets urlsafe base64 with default number of digits gets urlsafe base64 with default number of digits does with exclusive range of floats does with exclusive range of floats works with span exceeding int type's range works with span exceeding int type's range generates full-range by accumulation generates full-range by accumulation generates by truncation generates by truncation limited Float32 number limited Float32 number does with exclusive range does with exclusive range float number float number limited Float64 number limited Float64 number limited large BigInt limited large BigInt allows creating a new default random with a seed allows creating a new default random with a seed generates by accumulation generates by accumulation generates full-range by truncation generates full-range by truncation generates full-range generates full-range raises on invalid float number raises on invalid float number generates full-range by negation generates full-range by negation raises on invalid range Int32 range Int32 range BigInt range BigInt range Float64 range Float64 range base64 gets base64 with requested number of digits gets base64 with requested number of digits gets base64 with default number of digits gets base64 with default number of digits allows creating a new default random allows creating a new default random limited BigInt limited BigInt does with inclusive range of floats does with inclusive range of floats returns a random integer returns a random integer HTTP::WebSocket send_masked sends the data with a bitmask sends the data with a bitmask sends long data with correct header sends long data with correct header receive read ping packet read ping packet can read masked text message can read masked text message can read fragmented packets can read fragmented packets can read a small text packet can read a small text packet can read partial packets can read partial packets can read a close packet can read a close packet read very long packet read very long packet read long packet read long packet read ping packet in between fragmented packet read ping packet in between fragmented packet using IPv4 negotiates over HTTP correctly negotiates over HTTP correctly negotiates over HTTPS correctly negotiates over HTTPS correctly using IPv6 negotiates over HTTP correctly negotiates over HTTP correctly negotiates over HTTPS correctly negotiates over HTTPS correctly handshake fails if server does not verify Sec-WebSocket-Key Sec-WebSocket-Accept incorrect Sec-WebSocket-Accept incorrect Sec-WebSocket-Accept missing Sec-WebSocket-Accept missing doesn't compress upgrade response body doesn't compress upgrade response body ignores body in upgrade response (malformed) ignores body in upgrade response (malformed) close closes with message closes with message closes with code closes with code closes without message closes without message closes with message and code closes with message and code send sends long data with correct header sends long data with correct header sets binary opcode if used with slice sets binary opcode if used with slice sends correct HTTP basic auth header sends correct HTTP basic auth header handshake fails if server does not switch protocols handshake fails if server does not switch protocols stream sets opcode of first frame to binary if stream is called with binary = true sets opcode of first frame to binary if stream is called with binary = true sends continuous data and splits it to frames sends continuous data and splits it to frames sends less data than the frame size if necessary sends less data than the frame size if necessary MIME::MediaType #type #type #fetch #fetch #sub_type #sub_type #[]= #[]= .new create new instance create new instance raises for invalid parameter name raises for invalid parameter name #each_parameter #each_parameter #to_s #to_s .parse parses media type parses media type sets default charset to utf-8 for text media types sets default charset to utf-8 for text media types parses params with encoding parses params with encoding parses params parses params Log.setup_from_env raises on invalid level raises on invalid level default_level is not used if LOG_LEVEL is set is not used if LOG_LEVEL is set is info is info is used if no LOG_LEVEL is set is used if no LOG_LEVEL is set default_sources splits sources by comma splits sources by comma is used is used is * is * backend can be changed can be changed is a IOBackend is a IOBackend MIME::Multipart::Parser raises calling #next after errored raises calling #next after errored handles padding handles padding parses basic multipart messages parses basic multipart messages parses messages with preambles and epilogues parses messages with preambles and epilogues handles break/next in blocks handles break/next in blocks raises calling #next after finished raises calling #next after finished handles invalid multipart data handles invalid multipart data Hash creates with initial capacity and block creates with initial capacity and block "#each_key" iterator "#each_key" iterator maps maps transform values in place with keys included transform values in place with keys included gets from union gets from union transforms keys transforms keys "#each" yielding "#each" yielding clone clones recursive hash clones recursive hash retains default block on clone retains default block on clone clones with size = 1 clones with size = 1 clones empty hash clones empty hash clones big hash clones big hash clones small hash clones small hash reject assert assert does not change current hash does not change current hash assert assert assert assert assert assert does to to_s with instance that was never instantiated does to to_s with instance that was never instantiated "#each_with_index" yielding "#each_with_index" yielding gets array of keys gets array of keys first_value raises on first value (nilable value) raises on first value (nilable value) doesn't raise on first value (nilable value) doesn't raise on first value (nilable value) gets first value gets first value compacts! compacts! compacts compacts does to_a does to_a key_for raises when no key pairs with the given value raises when no key pairs with the given value if block is given, returns the first key with the given value returns the first key with the given value yields the argument if no hash key pairs with the value yields the argument if no hash key pairs with the value returns the first key with the given value returns the first key with the given value selects selects merges! with block merges! with block transforms keys with values included transforms keys with values included transforms keys with type casting transforms keys with type casting fetch fetches with block fetches with block fetches with default value fetches with default value compare_by_identity retains compare_by_identity on dup retains compare_by_identity on dup small hash small hash retains compare_by_identity on clone retains compare_by_identity on clone big hash big hash merges other type with block merges other type with block transforms values with keys included transforms values with keys included "#each_with_index" iterator "#each_with_index" iterator gets first gets first sets and gets sets and gets initializes with default value initializes with default value == assert assert assert assert compares hash of nested hash compares hash of nested hash gets array of values gets array of values transforms values with type casting values transforms values with type casting values size is the same as size is the same as size inserts many inserts many rejects! rejects! initializes with block initializes with block last_key raises on last key (nilable key) raises on last key (nilable key) gets last key gets last key doesn't raise on last key (nilable key) doesn't raise on last key (nilable key) "#each" iterator "#each" iterator does each does each merges recursive type (#1693) merges recursive type (#1693) does each_value does each_value all? passes key and value into block passes key and value into block evaluates the block for only for as many kv pairs as necessary evaluates the block for only for as many kv pairs as necessary returns true if the block evaluates truthy for every kv pair returns true if the block evaluates truthy for every kv pair #put_if_absent puts if key doesn't exist puts if key doesn't exist returns existing value if key exists returns existing value if key exists accepts a block accepts a block doesn't put duplicate keys (#14425) doesn't put duplicate keys (#14425) merges merges fetches from empty hash with default value fetches from empty hash with default value to_s assert assert assert assert zips zips inserts in one bucket and deletes from the same one inserts in one bucket and deletes from the same one select! with non-equality key select! with non-equality key key_for? returns the first key with the given value returns the first key with the given value returns nil if no key pairs with the given value returns nil if no key pairs with the given value does to_a after delete does to_a after delete #put puts in a small hash puts in a small hash puts in a big hash puts in a big hash yields key yields key dig gets the value at given path given splat gets the value at given path given splat raises KeyError if not found raises KeyError if not found does each_key does each_key "#each_value" yielding "#each_value" yielding returns empty hash when transforming keys of an empty hash returns empty hash when transforming keys of an empty hash merges! merges! has_value? returns false if does not contain the value returns false if does not contain the value returns true if contains the value returns true if contains the value select assert assert assert assert does not change current hash does not change current hash assert assert assert assert assert assert "#each_with_index(offset)" yielding "#each_with_index(offset)" yielding transform values in place transform values in place returns empty hash when transforming values of an empty hash returns empty hash when transforming values of an empty hash computes hash computes hash rejects rejects "#each_key" yielding "#each_key" yielding clears clears [] gets gets subset/superset operators #superset_of? assert assert #proper_subset_of? assert assert handles edge case where both values are nil handles edge case where both values are nil #subset_of? handles edge case where both values are nil handles edge case where both values are nil assert assert #proper_superset_of? assert assert #rehash rehashes rehashes resets @first (#14602) resets @first (#14602) creates with initial capacity creates with initial capacity gets from literal gets from literal delete deletes many in the beginning and then will need a resize deletes many in the beginning and then will need a resize with block returns the value if a key is found returns the value if a key is found returns nil if key is found and value is nil returns nil if key is found and value is nil returns the value of the block if key is not found returns the value of the block if key is not found deletes key in the end deletes key in the end deletes key in the middle deletes key in the middle deletes not found deletes not found deletes key in the beginning deletes key in the beginning deletes only remaining entry deletes only remaining entry select! assert assert assert assert does change current hash does change current hash assert assert assert assert does not skip elements with an exhaustable enumerable argument (#12736) does not skip elements with an exhaustable enumerable argument (#12736) assert assert clears after shift clears after shift reject with non-equality key reject with non-equality key has_key? doesn't have key doesn't have key has key has key some edge cases while changing the implementation to open addressing edge case 1 edge case 1 edge case 2 edge case 2 edge case 3 edge case 3 merges! with block and nilable keys merges! with block and nilable keys gets nilable gets nilable []= overrides value overrides value reject with non-equality key reject with non-equality key reject! assert assert assert assert assert assert changes current hash changes current hash assert assert empty size should be zero size should be zero merges with block merges with block does to_a after shift does to_a after shift does to_h does to_h shifts? shifts? #each_with_object "passes memo, key and value into block" yielding "passes memo, key and value into block" yielding reduces the hash to the accumulated value of memo reduces the hash to the accumulated value of memo "passes memo, key and value into block" iterator "passes memo, key and value into block" iterator last_value doesn't raise on last value (nilable value) doesn't raise on last value (nilable value) gets last value gets last value raises on last value (nilable value) raises on last value (nilable value) any? evaluates the block for only for as many kv pairs as necessary evaluates the block for only for as many kv pairs as necessary returns true if the block evaluates truthy for at least one kv pair returns true if the block evaluates truthy for at least one kv pair passes key and value into block passes key and value into block returns true if the hash contains at least one kv pair and no block is given returns true if the hash contains at least one kv pair and no block is given first_key gets first key gets first key doesn't raise on first key (nilable key) doesn't raise on first key (nilable key) raises on first key (nilable key) raises on first key (nilable key) transforms values transforms values update inserts a new entry using the default value as input, if key does not exist inserts a new entry using the default value as input, if key does not exist inserts a new entry using the value returned by the default block as input, if key does not exist (big hash) inserts a new entry using the value returned by the default block as input, if key does not exist (big hash) can update with a nil value can update with a nil value returns the default value when key does not exist returns the default value when key does not exist raises if key does not exist and no default value specified (big hash) raises if key does not exist and no default value specified (big hash) doesn't create a duplicate key, if key does not exist and default block adds the given key (#14416) doesn't create a duplicate key, if key does not exist and default block adds the given key (#14416) updates the value of an existing key with the given block updates the value of an existing key with the given block inserts a new entry using the default value as input, if key does not exist (big hash) inserts a new entry using the default value as input, if key does not exist (big hash) returns the old value when key exists returns the old value when key exists updates the value of an existing key with the given block (big hash) updates the value of an existing key with the given block (big hash) can update a current nil value with a new value can update a current nil value with a new value returns the old value when key exists (big hash) returns the old value when key exists (big hash) returns the default value when key does not exist (big hash) returns the default value when key does not exist (big hash) inserts a new entry using the value returned by the default block as input, if key does not exist inserts a new entry using the value returned by the default block as input, if key does not exist raises if key does not exist and no default value specified raises if key does not exist and no default value specified "#each_value" iterator "#each_value" iterator dup dups empty hash dups empty hash retains default block on dup retains default block on dup dups small hash dups small hash dups big hash dups big hash reduce reduces the hash to the accumulated value of memo reduces the hash to the accumulated value of memo passes memo, key and value into block passes memo, key and value into block select with non-equality key select with non-equality key doesn't generate a negative index for the bucket index (#2321) doesn't generate a negative index for the bucket index (#2321) can be wrapped can be wrapped creates with initial capacity and default value creates with initial capacity and default value shifts shifts dig? gets the value at given path given splat gets the value at given path given splat returns nil if not found returns nil if not found selects! selects! values_at works with mixed types works with mixed types raises when passed an invalid key raises when passed an invalid key returns the given keys returns the given keys shifts: delete elements in the middle position and then in the first position shifts: delete elements in the middle position and then in the first position "#each_with_index(offset)" iterator "#each_with_index(offset)" iterator inverts inverts __floatuntidf passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests Float::Printer::RyuPrintf .d2gen Basic Basic large precision with fixed notation and scientific notation large precision with fixed notation and scientific notation UCRT had trouble with rounding this value UCRT had trouble with rounding this value corner cases corner cases transitions between fixed notation and scientific notation transitions between fixed notation and scientific notation varying precision varying precision trim trailing zeros and decimal point, scientific notation trim trailing zeros and decimal point, scientific notation tricky corner cases tricky corner cases more cases that the UCRT had trouble with (e.g. DevCom-1093399) more cases that the UCRT had trouble with (e.g. DevCom-1093399) transitions between values of the scientific exponent X transitions between values of the scientific exponent X maximum-length output maximum-length output trim trailing zeros trim trailing zeros trim trailing zeros and decimal point trim trailing zeros and decimal point trim trailing zeros, scientific notation trim trailing zeros, scientific notation .d2exp Exponents Exponents RoundToEven RoundToEven Carrying Carrying AllBinaryExponents AllBinaryExponents MinMax MinMax PrintDecimalPoint PrintDecimalPoint RoundToEvenInteger RoundToEvenInteger Basic Basic AllPowersOfTen AllPowersOfTen NonRoundToEvenScenarios NonRoundToEvenScenarios Zero Zero VaryingPrecision VaryingPrecision .d2fixed MinMax MinMax Carrying Carrying AllBinaryExponents AllBinaryExponents RoundToEven RoundToEven AllPowersOfTen AllPowersOfTen NonRoundToEvenScenarios NonRoundToEvenScenarios Zero Zero VaryingPrecision VaryingPrecision Basic Basic RoundingResultZero RoundingResultZero Regression Regression RoundToEvenInteger RoundToEvenInteger OAuth::RequestToken creates from response creates from response equality checks secret checks secret checks token checks token HTTP generates HTTP date without time zone without time zone with local time zone with local time zone parses RFC 1123 parses RFC 1123 parses RFC 1036 parses RFC 1036 .dequote_string dequotes a string dequotes a string parses and is UTC (#2744) parses and is UTC (#2744) parses ANSI C parses ANSI C parses and is local (#2744) parses and is local (#2744) parses RFC 1123 without day name parses RFC 1123 without day name .quote_string raises on invalid characters raises on invalid characters quotes a string quotes a string Spec hooks runs in correct order runs in correct order Float64 boundaries boundaries max denormal f64 boundaries max denormal f64 boundaries 1.0 boundaries 1.0 boundaries min normal f64 boundaries min normal f64 boundaries min float64 boundaries min float64 boundaries 1.5 boundaries 1.5 boundaries max f64 boundaries max f64 Digest::Adler32 .dup preserves value preserves value leads to deterministic updates leads to deterministic updates leads to not sharing state leads to not sharing state preserves type preserves type can take a block can take a block calculates hash of #to_slice calculates hash of #to_slice context are independent context are independent #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) can't call final twice can't call final twice #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) calculates hash from UInt8 slices calculates hash from UInt8 slices calculates digest from string calculates digest from string should be able to calculate adler32 combined should be able to calculate adler32 combined calculates base64'd hash from string calculates base64'd hash from string digest with file content digest with file content return the digest size return the digest size resets resets calculates hash from unicode string calculates hash from unicode string calculates hash from string calculates hash from string should be able to calculate adler32 should be able to calculate adler32 __fixsfti passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests Crystal::Digest::MD5 #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) calculates hash from unicode string calculates hash from unicode string calculates base64'd hash from string calculates base64'd hash from string .dup leads to deterministic updates leads to deterministic updates preserves value preserves value leads to not sharing state leads to not sharing state preserves type preserves type calculates hash from UInt8 slices calculates hash from UInt8 slices context are independent context are independent can't call final twice can't call final twice digest with file content digest with file content can take a block can take a block calculates hash from string calculates hash from string calculates hash of #to_slice calculates hash of #to_slice return the digest size return the digest size calculates digest from string calculates digest from string resets resets Time::Location::Zone #inspect #inspect #name #name URI::Params::Serializable .from_www_form nested type doubly nested doubly nested missing required nested property missing required nested property missing nilable nested data missing nilable nested data happy path happy path with nilable values with nilable values with default values with default values simple type simple type child type child type with custom converter with custom converter with nilable default with nilable default missing required property missing required property #to_www_form nested type path nested type path doubly nested doubly nested simple type simple type UDPSocket #connect with a IPv6 address #connect with a IPv6 address #remote_address resets after connect #remote_address resets after connect sends broadcast message sends broadcast message using IPv6 #bind #bind joins and transmits to multicast groups joins and transmits to multicast groups sends and receives messages sends and receives messages using IPv4 sends and receives messages sends and receives messages joins and transmits to multicast groups joins and transmits to multicast groups #bind #bind Compress::Zip reads big file reads big file reads zip file with different extra in local file header and central directory header reads zip file with different extra in local file header and central directory header writes comment writes comment reads file from file system reads file from file system writes over int16 files to make sure we can parse writes over int16 files to make sure we can parse reads zip comment reads zip comment reads file from memory reads file from memory Signal CHLD.trap is called after default Crystal child handler CHLD.trap is called after default Crystal child handler CHLD.reset sets default Crystal child handler CHLD.reset sets default Crystal child handler runs a signal handler runs a signal handler ignores a signal ignores a signal CHLD.ignore sets default Crystal child handler CHLD.ignore sets default Crystal child handler CHLD.reset removes previously set trap CHLD.reset removes previously set trap has constants required by C has constants required by C allows chaining of signals allows chaining of signals Math Mathematical constants E E LOG2 LOG2 LOG10 LOG10 Order-related functions assert assert assert assert fma fma Inverse trigonometric functions asin asin atan2 atan2 atan atan acos acos Roots cbrt cbrt isqrt isqrt sqrt sqrt .pw2ceil Int8 Int8 UInt64 UInt64 Int16 Int16 UInt128 UInt128 UInt32 UInt32 Int32 Int32 UInt16 UInt16 Int64 Int64 Int128 Int128 UInt8 UInt8 Exponents scalbln scalbln scalbn scalbn ilogb ilogb expm1 expm1 logb logb ldexp ldexp exp2 exp2 frexp frexp exp exp Functions for computing quotient and remainder Functions for computing quotient and remainder Bessel functions bessely0 bessely0 besselj0 besselj0 bessely bessely besselj besselj besselj1 besselj1 bessely1 bessely1 Gauss error functions erf erf erfc erfc Functions manipulating signs copysign copysign Hyperbolic functions sinh sinh tanh tanh cosh cosh Inverse hyperbolic functions atanh atanh acosh acosh asinh asinh Trigonometric functions tan tan hypot hypot sin sin cos cos Gamma functions gamma gamma lgamma lgamma Logarithms log1p log1p log log log10 log10 log2 log2 System hostname returns current hostname returns current hostname cpu_count returns current CPU count returns current CPU count MIME .register fails for invalid extension fails for invalid extension registers new type registers new type parses media types parses media types .extensions returns empty set returns empty set lists extensions lists extensions recognizes overridden types recognizes overridden types .load_mime_database .load_mime_database .from_extension .from_extension .from_filename Path Path String String .init loads defaults loads defaults skips loading defaults skips loading defaults loads file loads file .from_filename? Path Path String String .from_extension? .from_extension? OAuth2::AccessToken::Mac computes signature computes signature authenticates request authenticates request builds with null refresh token builds with null refresh token builds from json builds from json dumps to json dumps to json HTTP::FormData .parse(IO, String) parses formdata parses formdata .parse(HTTP::Request) raises on invalid Content-Type raises on invalid Content-Type raises on empty body raises on empty body raises on no Content-Type raises on no Content-Type parses formdata parses formdata .parse_content_disposition(String) parses all Content-Disposition fields parses all Content-Disposition fields .build(HTTP::Server::Response, String) builds a message builds a message .build(IO, String) builds a message builds a message IO::Hexdump read prints hexdump prints hexdump write prints hexdump prints hexdump grisu3 float32 largest denormal largest denormal large number, rounding large number, rounding smallest normal smallest normal general whole number, rounding general whole number, rounding general with rounding down general with rounding down general with rounding up general with rounding up general whole number, rounding general whole number, rounding min min small number small number max max general no rounding general no rounding float64 largest denormal largest denormal max float max float min float min float small number small number point at end point at end smallest normal smallest normal failure case failure case another no point move another no point move large number large number Thread::Mutex synchronizes synchronizes won't lock recursively won't lock recursively won't unlock from another thread won't unlock from another thread JSON::Any can compare with === can compare with === .new .new dig gets the value at given path given splat gets the value at given path given splat raises if not found raises if not found casts gets nil gets nil gets int64 gets int64 gets float32 gets float32 gets hash gets hash gets float32 from JSON integer (#8618) gets float32 from JSON integer (#8618) gets float64 gets float64 gets float64 from JSON integer (#8618) gets float64 from JSON integer (#8618) gets int32 gets int32 gets array gets array gets bool gets bool gets string gets string dups dups #to_yaml #to_yaml traverses big structure traverses big structure #dig? returns nil if not found returns nil if not found returns nil for non-Hash/Array intermediary values returns nil for non-Hash/Array intermediary values gets the value at given path given splat gets the value at given path given splat #size of hash of hash of array of array #[] of array of array of hash of hash clones clones #[]? of hash of hash of array of array compares to other objects compares to other objects exposes $~ when doing Regex#=== exposes $~ when doing Regex#=== Int #humanize_bytes assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert BigInt Math sqrt sqrt pw2ceil pw2ceil isqrt isqrt Enum different enums classes not eq always different enums classes not eq always does + does + gets value with to_i gets value with to_i #to_s for simple enum for simple enum for flags enum for flags enum for private enum for private enum gets value gets value values for simple enum for simple enum for flags enum for flags enum has hash has hash gets value with to_u<bit> gets value with to_u<bit> #inspect for flags enum for flags enum for private enum for private enum for simple enum for simple enum .parse? .parse? each yields each member yields each member won't yield All won't yield All won't yield None won't yield None private enum private enum names for simple enum for simple enum for flags enum for flags enum .[] non-flags enum non-flags enum flags enum flags enum private flags enum private flags enum gets value with to_i<bit> gets value with to_i<bit> does - does - valid? for simple enum for simple enum for Int64 enum for Int64 enum for flags enum for flags enum creates an enum instance from an auto-casted symbol (#8573) creates an enum instance from an auto-casted symbol (#8573) from_value for simple enum for simple enum for flags enum for flags enum for private enum for private enum .flags private flags enum private flags enum non-flags enum non-flags enum flags enum flags enum sorts sorts .parse .parse from_value? for flags enum for flags enum for simple enum for simple enum each iterates each member iterates each member iterates private enum members iterates private enum members iterates each flag iterates each flag does includes? does includes? clones clones BigFloat Math .ilogb .ilogb .logb .logb .scalbln .scalbln .ldexp .ldexp .scalbn .scalbn .copysign .copysign .sqrt .sqrt .frexp .frexp Time::Span test compare test compare min milliseconds min milliseconds min days min days max milliseconds max milliseconds test equals test equals initializes with big seconds value initializes with big seconds value #negative? #negative? max seconds max seconds arithmetic #sign #sign #/(self) #/(self) #+ #+ #- #- #/(Number) #/(Number) #* #* negative timespan negative timespan can substract big amount using milliseconds can substract big amount using milliseconds converts units converts units #step "basic" yielding "basic" yielding "basic" iterator "basic" iterator test float extension methods test float extension methods test properties test properties test to_s test to_s test negate and abs test negate and abs min seconds min seconds #zero? #zero? test int extension methods test int extension methods test hash code test hash code can substract big amount using microseconds can substract big amount using microseconds should sum should sum initializes with type restrictions initializes with type restrictions test totals test totals days overflows days overflows max days max days initializes initializes #positive? #positive? Log::TestFormatter formats formats Thread::ConditionVariable resumes before timeout resumes before timeout timeouts timeouts signals & broadcasts signals & broadcasts signals signals __divti3 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests PROGRAM_NAME works for UTF-8 name works for UTF-8 name Proc does to_s does to_s does new does new #arity #arity does to_s when closured does to_s when closured gets pointer gets pointer does == does == does to_s(io) does to_s(io) does to_s(io) when closured does to_s(io) when closured #partial #partial gets closure data for closure gets closure data for closure clones clones gets closure data for non-closure gets closure data for non-closure Time::Format ISO_8601_DATE parses ordinal date parses ordinal date parses week date parses week date parses calendar date parses calendar date formats default format formats default format RFC_3339 parses regular format parses regular format ISO_8601_DATE_TIME parses ordinal date parses ordinal date parses calendar date parses calendar date parses hour parses hour week date week date formats default format formats default format parses hour:minutes parses hour:minutes parses decimal fractions parses decimal fractions RFC_2822 parses regular format parses regular format Log::IOBackend yields message yields message logs context logs context logs any object logs any object uses custom formatter uses custom formatter creates with defaults creates with defaults logs messages logs messages allows setting formatter in initializer allows setting formatter in initializer formats message formats message OpenSSL::Cipher authenticated? authenticated? encrypts/decrypts encrypts/decrypts Log level can be changed level can be changed context can be changed within the block, yet it's not restored context can be changed within the block, yet it's not restored Log::Severity parses parses values are ordered values are ordered emitter dsl can be used with message can be used with message can be used with message and metadata explicitly can be used with message and metadata explicitly does not emit anything when a nil is emitted does not emit anything when a nil is emitted can be used with message and data via named tuple can be used with message and data via named tuple can be used with data only explicitly can be used with data only explicitly can be used with data only via named tuple can be used with data only via named tuple can be used with message and exception can be used with message and exception can be used with exception can be used with exception can be used with message and data via named arguments can be used with message and data via named arguments can be used with data only via named arguments can be used with data only via named arguments context supports unsigned values context supports unsigned values filter messages to the backend above level only filter messages to the backend above level only contains the current context contains the current context can attach exception to entries can attach exception to entries HTTP::Cookie::Parser parse_set_cookie with space with space parses expires rfc1036 parses expires rfc1036 parses path parses path parse domain as IP parse domain as IP parses full parses full parses cookie with spaces in value parses cookie with spaces in value parses expires ansi c, variant with zone parses expires ansi c, variant with zone parses expires rfc1123 parses expires rfc1123 parses expires ansi c parses expires ansi c parse max-age as Time::Span parse max-age as Time::Span parses Secure parses Secure SameSite Invalid parses samesite parses samesite Strict parses samesite parses samesite Lax parses samesite parses samesite leading dots in domain names are ignored leading dots in domain names are ignored parses domain parses domain parses HttpOnly parses HttpOnly strips spaces around value only when it's unquoted strips spaces around value only when it's unquoted parses expires iis parses expires iis removes leading and trailing whitespaces removes leading and trailing whitespaces parse_cookies parses key= parses key= parses multiple cookies parses multiple cookies strips spaces around value only when it's unquoted strips spaces around value only when it's unquoted parses cookie with spaces in value parses cookie with spaces in value parses key="value" parses key="value" parses special character in name parses special character in name parses key=value parses key=value parses key=key%3Dvalue parses key=key%3Dvalue parses key=key=value parses key=key=value expired? not expired with future max-age not expired with future max-age expired with old expires date expired with old expires date not expired when max-age and expires are not provided not expired when max-age and expires are not provided expired when max-age=0 expired when max-age=0 not expired with future expires not expired with future expires expiration_time sets future expiration_time with expires sets future expiration_time with expires returns nil expiration_time when expires and max-age are not set returns nil expiration_time when expires and max-age are not set sets expiration_time to be current when max-age=0 sets expiration_time to be current when max-age=0 sets future expiration_time with max-age and future cookie creation time sets future expiration_time with max-age and future cookie creation time sets future expiration_time with max-age sets future expiration_time with max-age sets expiration_time with old date sets expiration_time with old date __floatuntisf passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests Dir tests exists? on a directory path to a file tests exists? on a directory path to a file .mkdir_p with a new path with a new path path exists noop when path is a directory noop when path is a directory fails when path is a file fails when path is a file tests mkdir with an existing path tests mkdir with an existing path opens with new opens with new gets dir iterator gets dir iterator tests mkdir and delete with a new path tests mkdir and delete with a new path #path returns init value returns init value does to_s does to_s lists children lists children lists entries lists entries cd accepts string accepts string accepts a block with string accepts a block with string raises raises accepts path accepts path accepts a block with path accepts a block with path double close doesn't error double close doesn't error tests mkdir and rmdir with a new path tests mkdir and rmdir with a new path gets child iterator gets child iterator tests exists? on existing file tests exists? on existing file empty? tests empty? on an empty directory tests empty? on an empty directory tests empty? on a directory path to a file tests empty? on a directory path to a file tests empty? on a full directory tests empty? on a full directory tests empty? on nonexistent directory tests empty? on nonexistent directory .tempdir returns configure directory for tempfiles returns configure directory for tempfiles returns default directory for tempfiles returns default directory for tempfiles .delete raises with symlink directory raises with symlink directory raises with an nonexistent path raises with an nonexistent path raises with a path that cannot be removed raises with a path that cannot be removed deletes a read-only directory deletes a read-only directory tests mkdir and delete? with a new path tests mkdir and delete? with a new path tests exists? on nonexistent directory tests exists? on nonexistent directory raises on null byte errors on exists? errors on exists? errors on mkdir errors on mkdir errors on delete errors on delete errors on cd errors on cd errors on mkdir_p errors on mkdir_p errors on new errors on new tests info on existing directory tests info on existing directory opens with open opens with open tests exists? on existing directory tests exists? on existing directory glob tests with * tests with * tests with [] tests with [] matches symlink dir matches symlink dir tests with */ tests with */ pattern ending with .. pattern ending with .. tests a recursive glob with '?' tests a recursive glob with '?' tests with {} tests with {} tests a recursive glob with alternation tests a recursive glob with alternation tests with relative path tests with relative path tests a glob with recursion inside alternation tests a glob with recursion inside alternation tests a recursive glob tests a recursive glob tests glob with a single pattern with extra slashes tests glob with a single pattern with extra slashes tests with ** (same as *) tests with ** (same as *) match: :dot_files / match_hidden ignores hidden files ignores hidden files ignores hidden files recursively ignores hidden files recursively matches dot files matches dot files tests double recursive matcher (#10807) tests double recursive matcher (#10807) empty pattern empty pattern tests with relative path starting recursive tests with relative path starting recursive root pattern root pattern tests with relative path (starts with ..) tests with relative path (starts with ..) tests with \ tests with \ pattern ending with . pattern ending with . with path windows path windows path posix path posix path tests a recursive glob with nested alternations tests a recursive glob with nested alternations pattern ending with */. pattern ending with */. tests glob with a single pattern with block tests glob with a single pattern with block pattern ending with */.. pattern ending with */.. tests with relative path (starts with .) tests with relative path (starts with .) tests glob with a single pattern tests glob with a single pattern tests double recursive matcher, multiple paths tests double recursive matcher, multiple paths tests glob with multiple patterns tests glob with multiple patterns matches symlinks matches symlinks .current matches shell matches shell follows $PWD follows $PWD IO::ARGF peek peeks from STDIN if ARGV isn't specified peeks from STDIN if ARGV isn't specified peeks from ARGV if specified peeks from ARGV if specified reads when is more data left to read reads when is more data left to read gets reads from STDIN if ARGV isn't specified reads from STDIN if ARGV isn't specified reads from ARGV if specified reads from ARGV if specified reads from STDIN if ARGV isn't specified, chomp = false reads from STDIN if ARGV isn't specified, chomp = false reads from ARGV if specified reads from ARGV if specified reads from STDIN if ARGV isn't specified reads from STDIN if ARGV isn't specified Websocket integration tests streams less than the buffer frame size streams less than the buffer frame size streams single messages made up of multiple parts that eventually become more than the buffer frame size streams single messages made up of multiple parts that eventually become more than the buffer frame size sends single text messages sends single text messages streams single messages more than the buffer frame size streams single messages more than the buffer frame size WeakRef(T) should get dereferenced object in data section should get dereferenced object in data section FinalizeState counts released objects FinalizeState counts released objects Referenced object should not be released Referenced object should not be released Weak referenced object should be released if no other reference Weak referenced object should be released if no other reference should get dereferenced object should get dereferenced object should not crash with object in data section during GC should not crash with object in data section during GC expectations be_falsey assert assert assert assert assert assert assert assert be assert assert assert assert assert assert assert assert assert assert assert assert end_with assert assert assert assert assert assert assert assert assert assert assert assert be_a assert assert assert assert restricts type on should restricts type on should assert assert assert assert restricts type on should_not restricts type on should_not be_nil assert assert assert assert restricts type on should_not restricts type on should_not assert assert contain assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert be_truthy assert assert assert assert assert assert assert assert empty assert assert assert assert assert assert assert assert assert assert assert assert assert assert be_close assert assert assert assert eq assert assert assert assert be works with module type (#14920) works with module type (#14920) assert assert assert assert works with type that does not implement `#object_id` works with type that does not implement `#object_id` match assert assert assert assert assert assert expect_raises pass if raises MyError pass if raises MyError start_with assert assert assert assert assert assert assert assert assert assert assert assert be_false assert assert assert assert assert assert assert assert be_true assert assert assert assert assert assert assert assert accept a custom failure message assert assert assert assert Crystal::System .printf supports %u supports %u works works supports %p supports %p supports %l width supports %l width supports %s supports %s supports %x supports %x supports %d supports %d OptionParser does to_s with multi line description (#5832) does to_s with multi line description (#5832) gets short option with value that looks like flag gets short option with value that looks like flag has required option with = has required option with = doesn't raise if optional option is not specified with short flag doesn't raise if optional option is not specified with short flag parses argument when only referenced in long flag parses argument when only referenced in long flag raises on invalid option if value is given to none value handler (short flag, #9553) raises on invalid option if value is given to none value handler (short flag, #9553) parses argument when referenced in long and short flag parses argument when referenced in long and short flag can run a callback on every argument can run a callback on every argument doesn't raise if required option is not specified doesn't raise if required option is not specified gets long option with value -- (#8937) gets long option with value -- (#8937) has required option with = (2) has required option with = (2) unregisters subcommands on call unregisters subcommands on call gnu_optional_args doesn't get optional argument for long flag after space doesn't get optional argument for long flag after space doesn't get optional argument for short flag after space doesn't get optional argument for short flag after space raises if missing required argument separated from long flag raises if missing required argument separated from long flag has flag has flag multiple times gets a double flag option multiple times gets a double flag option multiple times gets a single flag option multiple times gets a single flag option multiple times gets an existence flag multiple times gets an existence flag multiple times has required option with space has required option with space has required option separated from long flag has required option separated from long flag calls the handler for invalid options calls the handler for invalid options has flag with double dash has flag with double dash has required option separated from flag has required option separated from flag raises if flag pair doesn't start with dash (#4001) raises if flag pair doesn't start with dash (#4001) doesn't raise if optional option is not specified with separated short flag doesn't raise if optional option is not specified with separated short flag doesn't have flag doesn't have flag raises if missing required option with space raises if missing required option with space does to_s with separators does to_s with separators handles subcommands handles subcommands forward-match distinguishes between '--lamb VALUE' and '--lambda VALUE' distinguishes between '--lamb VALUE' and '--lambda VALUE' distinguishes between '--lamb=VALUE' and '--lambda=VALUE' distinguishes between '--lamb=VALUE' and '--lambda=VALUE' raises if missing option next to flag raises if missing option next to flag handles subcommand --help well (top level) handles subcommand --help well (top level) has required option next to flag has required option next to flag stops when asked stops when asked has required option with long flag space has required option with long flag space does to_s with banner does to_s with banner gets short option with value -- (#8937) gets short option with value -- (#8937) does to_s with very long flag (#3305) does to_s with very long flag (#3305) doesn't have flag with double dash doesn't have flag with double dash handles subcommand --help well (subcommand) handles subcommand --help well (subcommand) calls the handler for missing options calls the handler for missing options doesn't raise if optional option is not specified with long flag doesn't raise if optional option is not specified with long flag has required option separated from flag but given together has required option separated from flag but given together raises on invalid option if value is given to none value handler (long flag, #9553) raises on invalid option if value is given to none value handler (long flag, #9553) parses with subcommands twice parses with subcommands twice has required option with = (3) handles empty has required option with = (3) handles empty raises on invalid option raises on invalid option handles subcommands with hyphen handles subcommands with hyphen has required option next to flag but given separated has required option next to flag but given separated has flag with many letters has flag with many letters doesn't raise if required option is not specified with separated short flag doesn't raise if required option is not specified with separated short flag Consumption of flags following an ungiven optional argument Given a long option with an optional value doesn't eat further short options doesn't eat further short options doesn't eat further long options doesn't eat further long options Given a short option with an optional value doesn't eat a following long option doesn't eat a following long option does eat a value that looks like an option does eat a value that looks like an option doesn't eat a following short option doesn't eat a following short option -- initializes without block and does parse! initializes without block and does parse! ignores everything after -- with bool flag ignores everything after -- with bool flag returns a pair with things coming before and after -- returns a pair with things coming before and after -- gets `-` as argument gets `-` as argument ignores everything after -- with double flag ignores everything after -- with double flag ignores everything after -- with single flag) ignores everything after -- with single flag) returns a pair with things coming before and after --, without -- returns a pair with things coming before and after --, without -- String gets each_line with chomp = false gets each_line with chomp = false interpolation of a single string of a single string of multiple strings of multiple strings of a single non-string of a single non-string of string and char of string and char of char and string of char and string of multiple possibly non-strings of multiple possibly non-strings escapes with unicode escapes with unicode does each_char_with_index, with offset does each_char_with_index, with offset creating from a slice allows creating from an empty slice allows creating from an empty slice raises if String.build negative capacity raises if String.build negative capacity to_i assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_i128 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_i16 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_i32 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_u32 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_i64 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_u16 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_u64 assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_i8 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_u8 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert to_u128 assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert byte_index assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert gets byte index of string gets byte index of string assert assert assert assert builds with write_byte builds with write_byte #inspect #inspect compares strings: same size, same string compares strings: same size, same string #byte_slice gets byte_slice(Int) with start out of bounds gets byte_slice(Int) with start out of bounds gets byte_slice with negative index gets byte_slice with negative index gets byte_slice with start out of bounds gets byte_slice with start out of bounds gets byte_slice with negative count gets byte_slice with negative count gets byte_slice gets byte_slice gets byte_slice with large count gets byte_slice with large count gets byte_slice with negative count at last gets byte_slice with negative count at last does byte_at? does byte_at? =~ returns nil with regex and regex returns nil with regex and regex matches with group matches with group returns nil with string returns nil with string count assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert compares strings: different size compares strings: different size lchop assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert has size (same as size) has size (same as size) matches with position matches with position rchop assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert multiplies with negative size multiplies with negative size matches, but returns Bool matches, but returns Bool encode doesn't raise if incomplete byte sequence doesn't raise if incomplete byte sequence decodes decodes raises if wrong encoding raises if wrong encoding decodes with skip decodes with skip encodes encodes raises if illegal byte sequence raises if illegal byte sequence doesn't raise on invalid byte sequence doesn't raise on invalid byte sequence decodes with shift state decodes with shift state raises if incomplete byte sequence raises if incomplete byte sequence flushes the shift state (#11992) flushes the shift state (#11992) raises if wrong encoding with skip raises if wrong encoding with skip #underscore assert assert assert assert assert assert assert assert handles multi-character mappings correctly handles multi-character mappings correctly assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert gets each_line gets each_line #index by regex assert assert assert assert assert assert assert assert assert assert assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by char assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by string assert assert assert assert assert assert assert assert assert assert assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert gets lines gets lines partition by string assert assert assert assert assert assert assert assert assert assert by regex assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by char assert assert assert assert assert assert assert assert #rindex! by string assert assert with offset assert assert assert assert assert assert assert assert assert assert by regex assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert by char assert assert assert assert assert assert with offset assert assert assert assert has match has match sub subs with regex and hash subs with regex and hash replaces with multiple named back-reference replaces with multiple named back-reference subs range with string, non-ascii subs range with string, non-ascii subs at index with string, non-ascii subs at index with string, non-ascii subs with char hash subs with char hash subs with string and string (utf-8) subs with string and string (utf-8) subs with empty regex subs with empty regex replaces with numeric back-reference replaces with numeric back-reference replaces with incomplete named back-reference (1) replaces with incomplete named back-reference (1) subs range with char, non-ascii subs range with char, non-ascii subs range with string subs range with string subs at index with string subs at index with string subs the last char subs the last char subs with regex and string, returns self if no match subs with regex and string, returns self if no match subs beginless range with string subs beginless range with string replaces with named back-reference replaces with named back-reference subs with string and block subs with string and block raises if index is out of bounds raises if index is out of bounds subs using with z\w subs using with z\w replaces with incomplete named back-reference (2) replaces with incomplete named back-reference (2) subs with empty string subs with empty string subs with regex and named tuple subs with regex and named tuple subs endless range with char subs endless range with char ignores if backreferences: false ignores if backreferences: false subs with string and string (#3258) subs with string and string (#3258) replaces with \a replaces with \a subs char with string subs char with string subs using with \ subs using with \ subs endless range with string subs endless range with string subs with regex and block subs with regex and block subs at negative index with char subs at negative index with char subs with string and string subs with string and string subs char with char subs char with char subs beginless range with char subs beginless range with char subs range with char subs range with char subs with regex and block with group subs with regex and block with group subs with regex and string (utf-8) subs with regex and string (utf-8) subs with string and string return self if no match subs with string and string return self if no match subs at index with char, non-ascii subs at index with char, non-ascii subs null character subs null character subs char with string subs char with string replaces with \\\1 replaces with \\\1 subs at negative index with string subs at negative index with string subs at index with char subs at index with char subs with regex and string subs with regex and string subs using $~ subs using $~ "#each_char with empty string" yielding "#each_char with empty string" yielding interpolates string interpolates string lstrip assert assert assert assert does not touch invalid code units in an otherwise ascii string does not touch invalid code units in an otherwise ascii string assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #byte_slice? gets byte_slice with large count gets byte_slice with large count gets byte_slice(Int) with start out of bounds gets byte_slice(Int) with start out of bounds gets byte_slice with negative index gets byte_slice with negative index gets byte_slice with start out of bounds gets byte_slice with start out of bounds gets byte_slice with negative count gets byte_slice with negative count gets byte_slice with negative count at last gets byte_slice with negative count at last gets byte_slice gets byte_slice inserts inserts squeeze assert assert assert assert assert assert assert assert assert assert "#each_char" yielding "#each_char" yielding delete_at start, count assert assert assert assert assert assert assert assert assert assert assert assert raises on negative count raises on negative count assert assert assert assert raises on negative count raises on negative count assert assert assert assert assert assert assert assert assert assert assert assert range assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert char assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert "#each_char with empty string" iterator "#each_char with empty string" iterator "#each_line" yielding "#each_line" yielding invalid UTF-8 byte sequence gets chars gets chars valid_encoding? valid_encoding? gets chars (2) gets chars (2) gets size (2) gets size (2) gets size gets size scrubs scrubs #index! by regex assert assert assert assert assert assert with offset assert assert assert assert assert assert assert assert assert assert by string assert assert assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert by char assert assert with offset assert assert assert assert assert assert assert assert assert assert hexbytes hexbytes #match_full! #match_full! tr given no replacement characters acts as #delete acts as #delete translates translates compare compares with == when same string compares with == when same string compares with == when different contents compares with == when different contents sorts strings sorts strings compares with == when different strings same contents compares with == when different strings same contents [] raises on too negative left bound raises on too negative left bound raises if count is negative with utf-8 raises if count is negative with utf-8 raises index out of bound on index out of range with range raises index out of bound on index out of range with range gets when index is last and count is zero gets when index is last and count is zero gets with exclusive range with unicode gets with exclusive range with unicode gets with positive index gets with positive index gets with inclusive range gets with inclusive range gets with a char gets with a char gets with range without end gets with range without end raises if index out of bounds with utf-8 raises if index out of bounds with utf-8 gets with single char gets with single char gets when index is last and count is negative at last with utf-8 gets when index is last and count is negative at last with utf-8 gets with negative index gets with negative index gets with start and count with negative start gets with start and count with negative start raises if index out of bounds raises if index out of bounds raises index out of bound on index out of range with range and utf-8 raises index out of bound on index out of range with range and utf-8 assert assert gets when index is last and count is zero in utf-8 gets when index is last and count is zero in utf-8 gets with exclusive range gets with exclusive range gets with inclusive range with negative indices gets with inclusive range with negative indices raises IndexError if pointing after last char which is non-ASCII raises IndexError if pointing after last char which is non-ASCII raises if count is negative raises if count is negative with a regex assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert gets with a string gets with a string gets when index is last and count is positive in utf-8 gets when index is last and count is positive in utf-8 gets with exclusive with start and count to end gets with exclusive with start and count to end gets with start and count gets with start and count gets when index is last and count is positive gets when index is last and count is positive gets with range without beginning gets with range without beginning gets with exclusive with start and count gets with exclusive with start and count gets when index is last and count is negative at last gets when index is last and count is negative at last starts_with? assert assert assert assert assert assert treats first char as replacement char if invalid in an otherwise ascii string treats first char as replacement char if invalid in an otherwise ascii string assert assert assert assert assert assert assert assert assert assert assert assert assert assert delete assert assert assert assert assert assert assert assert assert assert assert assert deletes one char deletes one char assert assert assert assert assert assert assert assert empty? assert assert assert assert creating from a pointer raises an exception when creating a string with a null pointer and no size raises an exception when creating a string with a null pointer and no size doesn't raise creating from a null pointer with size 0 doesn't raise creating from a null pointer with size 0 allows creating a string with zeros allows creating a string with zeros raises when creating from a null pointer with a nonzero size raises when creating from a null pointer with a nonzero size does byte_at does byte_at does to_f64 does to_f64 String.new(&) raises if returned bytesize is greater than capacity raises if returned bytesize is greater than capacity raises if capacity too big with UInt32::MAX - String::HEADER_SIZE - 1 raises if capacity too big with UInt32::MAX - String::HEADER_SIZE - 1 creates with matching capacity creates with matching capacity raises if capacity too big with UInt32::MAX raises if capacity too big with UInt32::MAX raises if capacity too big with UInt64::MAX raises if capacity too big with UInt64::MAX allocates buffer of correct size (#3332) allocates buffer of correct size (#3332) creates with excess capacity creates with excess capacity raises if string capacity is negative raises if string capacity is negative scans using $~ scans using $~ ascii_only? broken UTF-8 is not ascii_only broken UTF-8 is not ascii_only answers ascii_only? answers ascii_only? #gsub gsubs with empty regex gsubs with empty regex gsubs char with string depending on the char gsubs char with string depending on the char gsubs with regex and hash gsubs with regex and hash gsubs with regex and string, returns self if no match gsubs with regex and string, returns self if no match raises with incomplete back-reference (2) raises with incomplete back-reference (2) gsubs char with char in non-ascii string gsubs char with char in non-ascii string gsubs null character gsubs null character gsubs char with string (nop) gsubs char with string (nop) gsubs with regex and block gsubs with regex and block replaces with escaped back-reference replaces with escaped back-reference gsubs with string and string (utf-8) gsubs with string and string (utf-8) gsubs with empty string gsubs with empty string replaces with incomplete back-reference (3) replaces with incomplete back-reference (3) empty string empty string replaces with back-reference to missing capture group replaces with back-reference to missing capture group gsubs with regex and named tuple gsubs with regex and named tuple gsubs using $~ gsubs using $~ gsubs with regex and string gsubs with regex and string gsubs with char hash gsubs with char hash gsubs char with char gsubs char with char gsubs with regex and string (utf-8) gsubs with regex and string (utf-8) replaces with numeric back-reference replaces with numeric back-reference raises with incomplete back-reference (1) raises with incomplete back-reference (1) gsubs char with string gsubs char with string gsubs with regex and block with group gsubs with regex and block with group replaces with named back-reference replaces with named back-reference empty match empty match replaces with incomplete back-reference (1) replaces with incomplete back-reference (1) gsubs with string and string gsubs with string and string gsubs with string and string return self if no match gsubs with string and string return self if no match ignores if backreferences: false ignores if backreferences: false gsubs with char named tuple gsubs with char named tuple gsubs with string and block gsubs with string and block replaces with incomplete back-reference (2) replaces with incomplete back-reference (2) #compare compares case-insensitive compares case-insensitive compares case-sensitive compares case-sensitive compares case-insensitive, multiple chars after case conversion (#4513) compares case-insensitive, multiple chars after case conversion (#4513) treats invalid code units as replacement char in an otherwise ascii string treats invalid code units as replacement char in an otherwise ascii string rstrip assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does not touch invalid code units in an otherwise ascii string does not touch invalid code units in an otherwise ascii string assert assert assert assert rpartition by regex assert assert assert assert assert assert assert assert assert assert by char assert assert assert assert assert assert by string assert assert assert assert assert assert assert assert assert assert assert assert assert assert split by whitespace assert assert assert assert assert assert assert assert assert assert by regex assert assert assert assert assert assert assert assert keeps groups keeps groups assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by string assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by char assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert gets lines with chomp = false gets lines with chomp = false does pretty_inspect does pretty_inspect raises if String.build capacity too big raises if String.build capacity too big gets size of \0 string gets size of \0 string strip assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does * does * has codepoints has codepoints chomp assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does each_char_with_index does each_char_with_index #downcase assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does not touch invalid code units in an otherwise ascii string does not touch invalid code units in an otherwise ascii string #dump #dump #scan works with strings works with strings works when match is empty, multibyte char works when match is empty, multibyte char does with block does with block does without block does without block does with utf-8 does with utf-8 works with strings with block works with strings with block does with number and string does with number and string works when match is empty works when match is empty options parameter options parameter #upcase assert assert does not touch invalid code units in an otherwise ascii string does not touch invalid code units in an otherwise ascii string assert assert assert assert with IO assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert "#each_line" iterator "#each_line" iterator does to_f32 does to_f32 #matches_full? #matches_full? #dump_unquoted #dump_unquoted clones clones dups dups "#each_char" iterator "#each_char" iterator presence assert assert assert assert assert assert match! with options Regex::Match options Regex::Match options returns matchdata returns matchdata assigns captures assigns captures raises on non-match raises on non-match "#each_codepoint" iterator "#each_codepoint" iterator hexbytes? hexbytes? compares strings: same size, different string compares strings: same size, different string matches empty string matches empty string rjust assert assert assert assert assert assert assert assert to io assert assert assert assert assert assert assert assert #reverse converts invalid code units to replacement char converts invalid code units to replacement char reverses taking grapheme clusters into account reverses taking grapheme clusters into account reverses utf-8 string reverses utf-8 string reverses string reverses string does each_char does each_char + does when right is empty does when right is empty does with ascii char does with ascii char does with unicode char does with unicode char does for both unicode does for both unicode does when left is empty does when left is empty does for both ascii does for both ascii #camelcase assert assert assert assert assert assert assert assert handles multi-character mappings correctly (#13533) handles multi-character mappings correctly (#13533) assert assert assert assert assert assert assert assert #titleize assert assert assert assert with IO assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert handles multi-character mappings correctly (#13533) handles multi-character mappings correctly (#13533) assert assert assert assert assert assert assert assert does not touch invalid code units in an otherwise ascii string does not touch invalid code units in an otherwise ascii string #capitalize assert assert assert assert assert assert handles multi-character mappings correctly (#13533) handles multi-character mappings correctly (#13533) does not touch invalid code units in an otherwise ascii string does not touch invalid code units in an otherwise ascii string assert assert rchop? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert multiplies multiplies #rindex by char assert assert assert assert assert assert assert assert assert assert assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by regex which matches empty string assert assert assert assert assert assert assert assert assert assert with offset assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert by string with offset assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert escapes chars escapes chars includes? by string assert assert assert assert assert assert by char assert assert assert assert "#each_codepoint" yielding "#each_codepoint" yielding "#each_byte" iterator "#each_byte" iterator succ adds an additional character (just left to the last increased one) if there is a carry and no character left to increase adds an additional character (just left to the last increased one) if there is a carry and no character left to increase increases the next best alphanumeric (jumping over non-alphanumerics) if there is a carry increases the next best alphanumeric (jumping over non-alphanumerics) if there is a carry returns the successor by increasing the rightmost alphanumeric (digit => digit, letter => letter with same case) returns the successor by increasing the rightmost alphanumeric (digit => digit, letter => letter with same case) returns an empty string for empty strings returns an empty string for empty strings increases non-alphanumerics (via ascii rules) if there are no alphanumerics increases non-alphanumerics (via ascii rules) if there are no alphanumerics #match_full #match_full does % does % does to_f does to_f center assert assert assert assert assert assert to io assert assert assert assert assert assert assert assert assert assert compares strings: same object compares strings: same object #inspect_unquoted #inspect_unquoted escapes with octal escapes with octal does char_at does char_at char_index_to_byte_index with ascii with ascii with utf-8 with utf-8 ljust to io assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert blank? assert assert assert assert assert assert "#each_line(chomp: false)" iterator "#each_line(chomp: false)" iterator "#each_byte" yielding "#each_byte" yielding byte_index_to_char_index with utf-8 with utf-8 with ascii with ascii ends_with? assert assert assert assert assert assert assert assert assert assert assert assert treats last char as replacement char if invalid in an otherwise ascii string treats last char as replacement char if invalid in an otherwise ascii string assert assert assert assert assert assert assert assert assert assert "#each_line(chomp: false)" yielding "#each_line(chomp: false)" yielding multiplies with size one multiplies with size one []? gets with a char gets with a char gets with a string gets with a string gets with range without end gets with range without end gets with range gets with range gets with range without beginning gets with range without beginning returns nil if pointing after last char which is non-ASCII returns nil if pointing after last char which is non-ASCII gets with start and count gets with start and count gets with index gets with index does chars does chars lchop? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert YAML::Builder writes scalar with style writes scalar with style writes mapping with anchor writes mapping with anchor writes alias writes alias errors on max nesting (sequence) errors on max nesting (sequence) writes mapping with tag writes mapping with tag writes mapping with style writes mapping with style writes sequence with style writes sequence with style writes sequence with anchor writes sequence with anchor errors on max nesting (mapping) errors on max nesting (mapping) writes scalar writes scalar writes mapping writes mapping writes sequence with tag writes sequence with tag .build (with block) .build (with block) writes sequence writes sequence writes mapping with alias writes mapping with alias writes scalar with tag writes scalar with tag writes mapping with merge writes mapping with merge writes scalar with anchor writes scalar with anchor Float32#to_s converts 8388608000.0_f32 to "8388608000.0" converts 8388608000.0_f32 to "8388608000.0" converts 1234567890.0_f32 to "1234568000.0" converts 1234567890.0_f32 to "1234568000.0" anomalous values converts 0x1p90_f32 to "1.2379401e+27" converts 0x1p90_f32 to "1.2379401e+27" converts 0x1p-96_f32 to "1.2621775e-29" converts 0x1p-96_f32 to "1.2621775e-29" converts 0x1p87_f32 to "1.5474251e+26" converts 0x1p87_f32 to "1.5474251e+26" converts 12345678.0_f32 to "12345678.0" converts 12345678.0_f32 to "12345678.0" converts 1000000000000.0_f32 to "1000000000000.0" converts 1000000000000.0_f32 to "1000000000000.0" converts 67108864000.0_f32 to "67108864000.0" converts 67108864000.0_f32 to "67108864000.0" Ryu f2s_test.cc ExactValueRoundEven converts 3.0540412e5_f32 to "305404.12" converts 3.0540412e5_f32 to "305404.12" converts 8.0990312e3_f32 to "8099.0312" converts 8.0990312e3_f32 to "8099.0312" converts 1.23_f32 to "1.23" converts 1.23_f32 to "1.23" converts 12345678901234.0_f32 to "12345679000000.0" converts 12345678901234.0_f32 to "12345679000000.0" converts 1000000000000000.0_f32 to "1.0e+15" converts 1000000000000000.0_f32 to "1.0e+15" converts 1.234_f32 to "1.234" converts 1.234_f32 to "1.234" converts 8.0_f32 to "8.0" converts 8.0_f32 to "8.0" converts 1001000000000000.0_f32 to "1.001e+15" converts 1001000000000000.0_f32 to "1.001e+15" converts 100.0_f32 to "100.0" converts 100.0_f32 to "100.0" converts 1.0_f32 to "1.0" converts 1.0_f32 to "1.0" converts 1.0_f32 to "1.0" converts 1.0_f32 to "1.0" converts 1.23456789_f32 to "1.2345679" converts 1.23456789_f32 to "1.2345679" odd mantissas (unaffected by shifting) converts 5367e5_f32 to "536700000.0" converts 5367e5_f32 to "536700000.0" converts 5497856e5_f32 to "549785600000.0" converts 5497856e5_f32 to "549785600000.0" converts 671087e2_f32 to "67108700.0" converts 671087e2_f32 to "67108700.0" converts 671089e2_f32 to "67108900.0" converts 671089e2_f32 to "67108900.0" converts 5369e5_f32 to "536900000.0" converts 5369e5_f32 to "536900000.0" converts 26843e4_f32 to "268430000.0" converts 26843e4_f32 to "268430000.0" converts 1e10_f32 to "10000000000.0" converts 1e10_f32 to "10000000000.0" converts 5495808e5_f32 to "549580800000.0" converts 5495808e5_f32 to "549580800000.0" converts 9e9_f32 to "9000000000.0" converts 9e9_f32 to "9000000000.0" converts 215e7_f32 to "2150000000.0" converts 215e7_f32 to "2150000000.0" converts 134219e3_f32 to "134219000.0" converts 134219e3_f32 to "134219000.0" converts 3355445e1_f32 to "33554450.0" converts 3355445e1_f32 to "33554450.0" converts 41e8_f32 to "4100000000.0" converts 41e8_f32 to "4100000000.0" converts 43e8_f32 to "4300000000.0" converts 43e8_f32 to "4300000000.0" converts 26845e4_f32 to "268450000.0" converts 26845e4_f32 to "268450000.0" converts 7e9_f32 to "7000000000.0" converts 7e9_f32 to "7000000000.0" converts 213e7_f32 to "2130000000.0" converts 213e7_f32 to "2130000000.0" converts 3e10_f32 to "30000000000.0" converts 3e10_f32 to "30000000000.0" converts 1073e6_f32 to "1073000000.0" converts 1073e6_f32 to "1073000000.0" converts 1075e6_f32 to "1075000000.0" converts 1075e6_f32 to "1075000000.0" converts 3355443e1_f32 to "33554430.0" converts 3355443e1_f32 to "33554430.0" converts 134217e3_f32 to "134217000.0" converts 134217e3_f32 to "134217000.0" converts 1000001000000000.0_f32 to "1.000001e+15" converts 1000001000000000.0_f32 to "1.000001e+15" one-digit cases, where the decimal point can't appear between digits like "17.29" converts 7e-2_f32 to "0.07" converts 7e-2_f32 to "0.07" converts 7e-3_f32 to "0.007" converts 7e-3_f32 to "0.007" converts 7e+0_f32 to "7.0" converts 7e+0_f32 to "7.0" converts 7e+3_f32 to "7000.0" converts 7e+3_f32 to "7000.0" converts 7e-1_f32 to "0.7" converts 7e-1_f32 to "0.7" converts 7e+1_f32 to "70.0" converts 7e+1_f32 to "70.0" converts 7e+2_f32 to "700.0" converts 7e+2_f32 to "700.0" converts 10000000.0_f32 to "10000000.0" converts 10000000.0_f32 to "10000000.0" all exponents converts 1.729e-9_f32 to "1.729e-9" converts 1.729e-9_f32 to "1.729e-9" converts 1.729e19_f32 to "1.729e+19" converts 1.729e19_f32 to "1.729e+19" converts 1.729e-20_f32 to "1.729e-20" converts 1.729e-20_f32 to "1.729e-20" converts 1.729e-28_f32 to "1.729e-28" converts 1.729e-28_f32 to "1.729e-28" converts 1.729e-1_f32 to "0.1729" converts 1.729e-1_f32 to "0.1729" converts 1.729e-3_f32 to "0.001729" converts 1.729e-3_f32 to "0.001729" converts 1.729e-35_f32 to "1.729e-35" converts 1.729e-35_f32 to "1.729e-35" converts 1.729e30_f32 to "1.729e+30" converts 1.729e30_f32 to "1.729e+30" converts 1.729e-43_f32 to "1.72e-43" converts 1.729e-43_f32 to "1.72e-43" converts 1.729e+9_f32 to "1729000000.0" converts 1.729e+9_f32 to "1729000000.0" converts 1.729e17_f32 to "1.729e+17" converts 1.729e17_f32 to "1.729e+17" converts 1.729e+10_f32 to "17290000000.0" converts 1.729e+10_f32 to "17290000000.0" converts 1.729e+2_f32 to "172.9" converts 1.729e+2_f32 to "172.9" converts 1.729e-8_f32 to "1.729e-8" converts 1.729e-8_f32 to "1.729e-8" converts 1.729e15_f32 to "1.729e+15" converts 1.729e15_f32 to "1.729e+15" converts 1.729e-2_f32 to "0.01729" converts 1.729e-2_f32 to "0.01729" converts 1.729e-11_f32 to "1.729e-11" converts 1.729e-11_f32 to "1.729e-11" converts 1.729e35_f32 to "1.729e+35" converts 1.729e35_f32 to "1.729e+35" converts 1.729e+13_f32 to "17290000000000.0" converts 1.729e+13_f32 to "17290000000000.0" converts 1.729e-15_f32 to "1.729e-15" converts 1.729e-15_f32 to "1.729e-15" converts 1.729e-22_f32 to "1.729e-22" converts 1.729e-22_f32 to "1.729e-22" converts 1.729e-33_f32 to "1.729e-33" converts 1.729e-33_f32 to "1.729e-33" converts 1.729e-29_f32 to "1.729e-29" converts 1.729e-29_f32 to "1.729e-29" converts 1.729e27_f32 to "1.729e+27" converts 1.729e27_f32 to "1.729e+27" converts 1.729e16_f32 to "1.729e+16" converts 1.729e16_f32 to "1.729e+16" converts 1.729e-39_f32 to "1.729e-39" converts 1.729e-39_f32 to "1.729e-39" converts 1.729e-12_f32 to "1.729e-12" converts 1.729e-12_f32 to "1.729e-12" converts 1.729e+5_f32 to "172900.0" converts 1.729e+5_f32 to "172900.0" converts 1.729e21_f32 to "1.729e+21" converts 1.729e21_f32 to "1.729e+21" converts 1.729e26_f32 to "1.729e+26" converts 1.729e26_f32 to "1.729e+26" converts 1.729e-42_f32 to "1.729e-42" converts 1.729e-42_f32 to "1.729e-42" converts 1.729e-45_f32 to "1.0e-45" converts 1.729e-45_f32 to "1.0e-45" converts 1.729e-6_f32 to "1.729e-6" converts 1.729e-6_f32 to "1.729e-6" converts 1.729e34_f32 to "1.729e+34" converts 1.729e34_f32 to "1.729e+34" converts 1.729e-38_f32 to "1.729e-38" converts 1.729e-38_f32 to "1.729e-38" converts 1.729e-21_f32 to "1.729e-21" converts 1.729e-21_f32 to "1.729e-21" converts 1.729e-23_f32 to "1.729e-23" converts 1.729e-23_f32 to "1.729e-23" converts 1.729e-25_f32 to "1.729e-25" converts 1.729e-25_f32 to "1.729e-25" converts 1.729e37_f32 to "1.729e+37" converts 1.729e37_f32 to "1.729e+37" converts 1.729e-10_f32 to "1.729e-10" converts 1.729e-10_f32 to "1.729e-10" converts 1.729e20_f32 to "1.729e+20" converts 1.729e20_f32 to "1.729e+20" converts 1.729e32_f32 to "1.729e+32" converts 1.729e32_f32 to "1.729e+32" converts 1.729e-41_f32 to "1.729e-41" converts 1.729e-41_f32 to "1.729e-41" converts 1.729e-26_f32 to "1.729e-26" converts 1.729e-26_f32 to "1.729e-26" converts 1.729e+14_f32 to "172900000000000.0" converts 1.729e+14_f32 to "172900000000000.0" converts 1.729e28_f32 to "1.729e+28" converts 1.729e28_f32 to "1.729e+28" converts 1.729e-19_f32 to "1.729e-19" converts 1.729e-19_f32 to "1.729e-19" converts 1.729e-36_f32 to "1.729e-36" converts 1.729e-36_f32 to "1.729e-36" converts 1.729e-18_f32 to "1.729e-18" converts 1.729e-18_f32 to "1.729e-18" converts 1.729e24_f32 to "1.729e+24" converts 1.729e24_f32 to "1.729e+24" converts 1.729e-34_f32 to "1.729e-34" converts 1.729e-34_f32 to "1.729e-34" converts 1.729e-37_f32 to "1.729e-37" converts 1.729e-37_f32 to "1.729e-37" converts 1.729e-30_f32 to "1.729e-30" converts 1.729e-30_f32 to "1.729e-30" converts 1.729e-16_f32 to "1.729e-16" converts 1.729e-16_f32 to "1.729e-16" converts 1.729e36_f32 to "1.729e+36" converts 1.729e36_f32 to "1.729e+36" converts 1.729e+3_f32 to "1729.0" converts 1.729e+3_f32 to "1729.0" converts 1.729e29_f32 to "1.729e+29" converts 1.729e29_f32 to "1.729e+29" converts 1.729e-17_f32 to "1.729e-17" converts 1.729e-17_f32 to "1.729e-17" converts 1.729e-32_f32 to "1.729e-32" converts 1.729e-32_f32 to "1.729e-32" converts 1.729e+1_f32 to "17.29" converts 1.729e+1_f32 to "17.29" converts 1.729e-24_f32 to "1.729e-24" converts 1.729e-24_f32 to "1.729e-24" converts 1.729e25_f32 to "1.729e+25" converts 1.729e25_f32 to "1.729e+25" converts 1.729e-27_f32 to "1.729e-27" converts 1.729e-27_f32 to "1.729e-27" converts 1.729e+7_f32 to "17290000.0" converts 1.729e+7_f32 to "17290000.0" converts 1.729e-31_f32 to "1.729e-31" converts 1.729e-31_f32 to "1.729e-31" converts 1.729e+6_f32 to "1729000.0" converts 1.729e+6_f32 to "1729000.0" converts 1.729e+8_f32 to "172900000.0" converts 1.729e+8_f32 to "172900000.0" converts 1.729e33_f32 to "1.729e+33" converts 1.729e33_f32 to "1.729e+33" converts 1.729e-5_f32 to "1.729e-5" converts 1.729e-5_f32 to "1.729e-5" converts 1.729e31_f32 to "1.729e+31" converts 1.729e31_f32 to "1.729e+31" converts 1.729e-4_f32 to "0.0001729" converts 1.729e-4_f32 to "0.0001729" converts 1.729e18_f32 to "1.729e+18" converts 1.729e18_f32 to "1.729e+18" converts 1.729e23_f32 to "1.729e+23" converts 1.729e23_f32 to "1.729e+23" converts 1.729e-14_f32 to "1.729e-14" converts 1.729e-14_f32 to "1.729e-14" converts 1.729e-44_f32 to "1.7e-44" converts 1.729e-44_f32 to "1.7e-44" converts 1.729e+11_f32 to "172900000000.0" converts 1.729e+11_f32 to "172900000000.0" converts 1.729e+4_f32 to "17290.0" converts 1.729e+4_f32 to "17290.0" converts 1.729e-7_f32 to "1.729e-7" converts 1.729e-7_f32 to "1.729e-7" converts 1.729e22_f32 to "1.729e+22" converts 1.729e22_f32 to "1.729e+22" converts 1.729e38_f32 to "1.729e+38" converts 1.729e38_f32 to "1.729e+38" converts 1.729e-13_f32 to "1.729e-13" converts 1.729e-13_f32 to "1.729e-13" converts 1.729e+12_f32 to "1729000000000.0" converts 1.729e+12_f32 to "1729000000000.0" converts 1.729e-40_f32 to "1.729e-40" converts 1.729e-40_f32 to "1.729e-40" converts 1.729e+0_f32 to "1.729" converts 1.729e+0_f32 to "1.729" converts 100000000000000.0_f32 to "100000000000000.0" converts 100000000000000.0_f32 to "100000000000000.0" converts 1000000000.0_f32 to "1000000000.0" converts 1000000000.0_f32 to "1000000000.0" converts 524288000.0_f32 to "524288000.0" converts 524288000.0_f32 to "524288000.0" converts 1000000.0_f32 to "1000000.0" converts 1000000.0_f32 to "1000000.0" converts 1.2345678_f32 to "1.2345678" converts 1.2345678_f32 to "1.2345678" converts 8192.0_f32 to "8192.0" converts 8192.0_f32 to "8192.0" converts 65536.0_f32 to "65536.0" converts 65536.0_f32 to "65536.0" converts 8192000.0_f32 to "8192000.0" converts 8192000.0_f32 to "8192000.0" converts 1000010000000000.0_f32 to "1.00001e+15" converts 1000010000000000.0_f32 to "1.00001e+15" converts 123.0_f32 to "123.0" converts 123.0_f32 to "123.0" converts 64000.0_f32 to "64000.0" converts 64000.0_f32 to "64000.0" converts 12345678901.0_f32 to "12345679000.0" converts 12345678901.0_f32 to "12345679000.0" converts 1.2_f32 to "1.2" converts 1.2_f32 to "1.2" Ryu f2s_test.cc BoundaryRoundEven converts 8.999999e9_f32 to "9000000000.0" converts 8.999999e9_f32 to "9000000000.0" converts 3.4366717e10_f32 to "34366720000.0" converts 3.4366717e10_f32 to "34366720000.0" converts 3.355445e7_f32 to "33554450.0" converts 3.355445e7_f32 to "33554450.0" converts 8000.0_f32 to "8000.0" converts 8000.0_f32 to "8000.0" converts 123456789012.0_f32 to "123456790000.0" converts 123456789012.0_f32 to "123456790000.0" converts 12.0_f32 to "12.0" converts 12.0_f32 to "12.0" converts 100000000.0_f32 to "100000000.0" converts 100000000.0_f32 to "100000000.0" highly-trimmed powers of 2 converts 0x1p118_f32 to "3.32307e+35" converts 0x1p118_f32 to "3.32307e+35" converts 0x1p119_f32 to "6.64614e+35" converts 0x1p119_f32 to "6.64614e+35" converts 1.234567_f32 to "1.234567" converts 1.234567_f32 to "1.234567" Ryu f2s_test.cc LooksLikePow5 converts 0x1.2a05f2p+59_f32 to "6.7108864e+17" converts 0x1.2a05f2p+59_f32 to "6.7108864e+17" converts 0x1.2a05f2p+60_f32 to "1.3421773e+18" converts 0x1.2a05f2p+60_f32 to "1.3421773e+18" converts 0x1.2a05f2p+61_f32 to "2.6843546e+18" converts 0x1.2a05f2p+61_f32 to "2.6843546e+18" converts 1000100000000000.0_f32 to "1.0001e+15" converts 1000100000000000.0_f32 to "1.0001e+15" converts 1000000010000000.0_f32 to "1.0e+15" converts 1000000010000000.0_f32 to "1.0e+15" converts 1010000000000000.0_f32 to "1.01e+15" converts 1010000000000000.0_f32 to "1.01e+15" converts 64.0_f32 to "64.0" converts 64.0_f32 to "64.0" converts 512.0_f32 to "512.0" converts 512.0_f32 to "512.0" Ryu f2s_test.cc Regression converts 5.368709e18_f32 to "5.368709e+18" converts 5.368709e18_f32 to "5.368709e+18" converts 1.00014165e-36_f32 to "1.00014165e-36" converts 1.00014165e-36_f32 to "1.00014165e-36" converts 9.223372e18_f32 to "9.223372e+18" converts 9.223372e18_f32 to "9.223372e+18" converts 2.8823261e17_f32 to "2.882326e+17" converts 2.8823261e17_f32 to "2.882326e+17" converts 1.6777216e7_f32 to "16777216.0" converts 1.6777216e7_f32 to "16777216.0" converts 4.7223665e21_f32 to "4.7223665e+21" converts 4.7223665e21_f32 to "4.7223665e+21" converts -2.47e-43_f32 to "-2.47e-43" converts -2.47e-43_f32 to "-2.47e-43" converts 4.6143165e18_f32 to "4.6143166e+18" converts 4.6143165e18_f32 to "4.6143166e+18" converts 6.7108872e7_f32 to "67108870.0" converts 6.7108872e7_f32 to "67108870.0" converts 0.007812537_f32 to "0.007812537" converts 0.007812537_f32 to "0.007812537" converts 6.7131496e7_f32 to "67131496.0" converts 6.7131496e7_f32 to "67131496.0" converts 7.038531e-26_f32 to "7.038531e-26" converts 7.038531e-26_f32 to "7.038531e-26" converts 200.0_f32 to "200.0" converts 200.0_f32 to "200.0" converts 1.0e-44_f32 to "1.0e-44" converts 1.0e-44_f32 to "1.0e-44" converts 0.0010310042_f32 to "0.0010310042" converts 0.0010310042_f32 to "0.0010310042" converts 1.1811161e19_f32 to "1.1811161e+19" converts 1.1811161e19_f32 to "1.1811161e+19" converts 1.4e-45_f32 to "1.0e-45" converts 1.4e-45_f32 to "1.0e-45" converts 1.5846085e29_f32 to "1.5846086e+29" converts 1.5846085e29_f32 to "1.5846086e+29" converts 8388608.0_f32 to "8388608.0" converts 8388608.0_f32 to "8388608.0" converts 5.3399997e9_f32 to "5339999700.0" converts 5.3399997e9_f32 to "5339999700.0" converts 1.9310392e-38_f32 to "1.9310392e-38" converts 1.9310392e-38_f32 to "1.9310392e-38" converts 6.0898e-39_f32 to "6.0898e-39" converts 6.0898e-39_f32 to "6.0898e-39" converts 3.3554436e7_f32 to "33554436.0" converts 3.3554436e7_f32 to "33554436.0" converts 3.3554432e7_f32 to "33554432.0" converts 3.3554432e7_f32 to "33554432.0" converts 1.18697724e20_f32 to "1.18697725e+20" converts 1.18697724e20_f32 to "1.18697725e+20" converts 1.993244e-38_f32 to "1.993244e-38" converts 1.993244e-38_f32 to "1.993244e-38" converts 4103.9003_f32 to "4103.9004" converts 4103.9003_f32 to "4103.9004" converts 2.816025e14_f32 to "281602500000000.0" converts 2.816025e14_f32 to "281602500000000.0" converts 9.2234038e17_f32 to "9.223404e+17" converts 9.2234038e17_f32 to "9.223404e+17" converts 1.0_f32 to "1.0" converts 1.0_f32 to "1.0" converts 123456789012345.0_f32 to "123456790000000.0" converts 123456789012345.0_f32 to "123456790000000.0" Ryu f2s_test.cc LotsOfTrailingZeros converts 2.4414062e-3_f32 to "0.0024414062" converts 2.4414062e-3_f32 to "0.0024414062" converts 6.3476562e-3_f32 to "0.0063476562" converts 6.3476562e-3_f32 to "0.0063476562" converts 4.3945312e-3_f32 to "0.0043945312" converts 4.3945312e-3_f32 to "0.0043945312" converts 2.4414062e-4_f32 to "0.00024414062" converts 2.4414062e-4_f32 to "0.00024414062" converts 1234567890123.0_f32 to "1234568000000.0" converts 1234567890123.0_f32 to "1234568000000.0" converts 1234.0_f32 to "1234.0" converts 1234.0_f32 to "1234.0" converts 1100000000000000.0_f32 to "1.1e+15" converts 1100000000000000.0_f32 to "1.1e+15" converts 524288.0_f32 to "524288.0" converts 524288.0_f32 to "524288.0" converts 1000000100000000.0_f32 to "1.0000001e+15" converts 1000000100000000.0_f32 to "1.0000001e+15" Grisu failures converts 85_f32 / 512_f32 to "0.16601562" converts 85_f32 / 512_f32 to "0.16601562" converts 8388608.0_f32 to "8388608.0" converts 8388608.0_f32 to "8388608.0" converts 12345.0_f32 to "12345.0" converts 12345.0_f32 to "12345.0" converts 100000000000.0_f32 to "100000000000.0" converts 100000000000.0_f32 to "100000000000.0" converts 67108864.0_f32 to "67108864.0" converts 67108864.0_f32 to "67108864.0" converts 123456789.0_f32 to "123456790.0" converts 123456789.0_f32 to "123456790.0" special cases converts -Float32::INFINITY to "-Infinity" converts -Float32::INFINITY to "-Infinity" converts -0.0_f32 to "-0.0" converts -0.0_f32 to "-0.0" converts 4290772992_u32.unsafe_as(Float32) to "NaN" converts 4290772992_u32.unsafe_as(Float32) to "NaN" converts Float32::MIN_SUBNORMAL to "1.0e-45" converts Float32::MIN_SUBNORMAL to "1.0e-45" converts Float32::INFINITY to "Infinity" converts Float32::INFINITY to "Infinity" converts Float32::MAX to "3.4028235e+38" converts Float32::MAX to "3.4028235e+38" converts 0.0_f32 to "0.0" converts 0.0_f32 to "0.0" converts 2143289344_u32.unsafe_as(Float32) to "NaN" converts 2143289344_u32.unsafe_as(Float32) to "NaN" converts Float32::MIN_POSITIVE to "1.1754944e-38" converts Float32::MIN_POSITIVE to "1.1754944e-38" converts Float32::MIN_POSITIVE.prev_float to "1.1754942e-38" converts Float32::MIN_POSITIVE.prev_float to "1.1754942e-38" converts 100000.0_f32 to "100000.0" converts 100000.0_f32 to "100000.0" converts 1000.0_f32 to "1000.0" converts 1000.0_f32 to "1000.0" converts 1234567895.0_f32 to "1234568000.0" converts 1234567895.0_f32 to "1234568000.0" converts 10.0_f32 to "10.0" converts 10.0_f32 to "10.0" converts 10000000000.0_f32 to "10000000000.0" converts 10000000000.0_f32 to "10000000000.0" converts 65536000.0_f32 to "65536000.0" converts 65536000.0_f32 to "65536000.0" converts 123456.0_f32 to "123456.0" converts 123456.0_f32 to "123456.0" converts 1.2345_f32 to "1.2345" converts 1.2345_f32 to "1.2345" converts 1234567.0_f32 to "1234567.0" converts 1234567.0_f32 to "1234567.0" converts 1.23456735e-36_f32 to "1.23456735e-36" converts 1.23456735e-36_f32 to "1.23456735e-36" converts 1.23456_f32 to "1.23456" converts 1.23456_f32 to "1.23456" converts 1234567890123456.0_f32 to "1.234568e+15" converts 1234567890123456.0_f32 to "1.234568e+15" converts 512000.0_f32 to "512000.0" converts 512000.0_f32 to "512000.0" converts 10000000000000.0_f32 to "10000000000000.0" converts 10000000000000.0_f32 to "10000000000000.0" converts 10000.0_f32 to "10000.0" converts 10000.0_f32 to "10000.0" HTTP::Server::Response changes status and others after headers sent changes status and others after headers sent retrieves status code retrieves status code prints with content length prints with content length changes status and others changes status and others flushes flushes sets content type sets content type closes closes prints less then buffer's size to output prints less then buffer's size to output sets status code sets status code does not automatically add the `content-length` header if the response is informational does not automatically add the `content-length` header if the response is informational #respond_with_status uses default values uses default values raises when response is closed raises when response is closed raises when headers written raises when headers written sends HTTP::Status and custom message sends HTTP::Status and custom message sends HTTP::Status sends HTTP::Status sends custom code and message sends custom code and message #redirect with header with header doesn't encode URIs twice doesn't encode URIs twice fails if headers already sent fails if headers already sent permanent redirect permanent redirect encodes special characters encodes special characters URI location URI location fails if closed fails if closed String location String location writes and flushes with HTTP 1.0 writes and flushes with HTTP 1.0 prints more then buffer's size prints more then buffer's size doesn't override content-length when there's no body doesn't override content-length when there's no body adds header adds header does not automatically add the `content-length` header if the response is a 204 does not automatically add the `content-length` header if the response is a 204 allows specifying the content-length header explicitly allows specifying the content-length header explicitly closes when it fails to write closes when it fails to write does not automatically add the `content-length` header if the response is a 304 does not automatically add the `content-length` header if the response is a 304 wraps output wraps output closes gracefully with replaced output that syncs close (#11389) closes gracefully with replaced output that syncs close (#11389) changes status message changes status message writes cookie headers writes cookie headers sets content type after headers sent sets content type after headers sent prints less then buffer's size prints less then buffer's size prints with content length (method) prints with content length (method) resets and clears headers and cookies resets and clears headers and cookies OpenSSL::SSL::HostnameValidation validate_hostname falls back to CN entry (unless SAN entry is defined) falls back to CN entry (unless SAN entry is defined) matches IP from certificate SAN entries matches IP from certificate SAN entries matches domains from certificate SAN entries matches domains from certificate SAN entries verifies all SAN entries verifies all SAN entries matches_hostname? matches leading dot matches leading dot matches IDNA label matches IDNA label skips trailing dot skips trailing dot wildcard matches according to RFC 6125, section 6.4.3 wildcard matches according to RFC 6125, section 6.4.3 literal matches literal matches normalizes case normalizes case IO "#each_line(chomp: false)" iterator "#each_line(chomp: false)" iterator IO::Error .new accepts `cause` argument (#14241) accepts `cause` argument (#14241) read operations does gets with empty string (with peek) does gets with empty string (with peek) gets with string as delimiter and chomp = true gets with string as delimiter and chomp = true raises on EOF with readline and delimiter raises on EOF with readline and delimiter does gets with \n (no peek) does gets with \n (no peek) does each_line does each_line does gets with \r\n (with peek) does gets with \r\n (with peek) does gets with \r\n, chomp true goes past \r does gets with \r\n, chomp true goes past \r does gets with limit does gets with limit does gets with unicode char delimiter does gets with unicode char delimiter does read_line with limit does read_line with limit does read_fully does read_fully reads char reads char does each_byte does each_byte .same_content? compares two ios, one way (false) compares two ios, one way (false) compares two ios, second way (false) compares two ios, second way (false) refutes prefix match, second way refutes prefix match, second way refutes prefix match, one way refutes prefix match, one way refutes prefix match, one way refutes prefix match, one way compares two ios, one way (true) compares two ios, one way (true) compares two ios, second way (true) compares two ios, second way (true) refutes prefix match, second way refutes prefix match, second way does gets with \r\n (no peek) does gets with \r\n (no peek) gets with string as delimiter gets with string as delimiter reads byte reads byte reads all remaining content as bytes reads all remaining content as bytes does gets with char and limit does gets with char and limit does gets with \r\n does gets with \r\n does gets with chomp false does gets with chomp false raises if invoking gets with negative limit raises if invoking gets with negative limit does read_line with char and limit does read_line with char and limit reads all remaining content reads all remaining content does read_fully? does read_fully? does gets with char delimiter does gets with char delimiter does gets with big line does gets with big line gets with single byte string as delimiter gets with single byte string as delimiter raises on EOF with read_line raises on EOF with read_line does gets with \n (with peek) does gets with \n (with peek) doesn't underflow when limit is unsigned doesn't underflow when limit is unsigned reads string reads string gets with empty string as delimiter gets with empty string as delimiter does gets does gets does gets with empty string (no peek) does gets with empty string (no peek) does each_char does each_char raises if trying to read to an IO not opened for reading raises if trying to read to an IO not opened for reading #close aborts 'write' in a different fiber aborts 'write' in a different fiber aborts 'read' in a different fiber aborts 'read' in a different fiber "#char" iterator "#char" iterator encoding #encoding returns "UTF-8" if the encoding is not manually set returns "UTF-8" if the encoding is not manually set returns the name of the encoding set via #set_encoding returns the name of the encoding set via #set_encoding decode sets encoding to utf8 and stays as UTF-8 sets encoding to utf8 and stays as UTF-8 gets with string delimiter gets with string delimiter gets with limit gets with limit sets encoding to utf-8 and stays as UTF-8 sets encoding to utf-8 and stays as UTF-8 does skips when converting to UTF-8 does skips when converting to UTF-8 decodes incomplete multibyte sequence with skip (2) (#3285) decodes incomplete multibyte sequence with skip (2) (#3285) decodes incomplete multibyte sequence with skip (3) (#3285) decodes incomplete multibyte sequence with skip (3) (#3285) reads string reads string gets_to_end gets_to_end gets gets gets with non-ascii and chomp: false gets with non-ascii and chomp: false reads char reads char gets with limit (big) gets with limit (big) gets with non-ascii gets with non-ascii reads utf8 byte reads utf8 byte gets with limit (small, no newline) gets with limit (small, no newline) says invalid encoding says invalid encoding says invalid 'invalid' option says invalid 'invalid' option skips invalid byte sequences skips invalid byte sequences gets ascii from socket (#9056) gets ascii from socket (#9056) reads utf8 reads utf8 gets big EUC-JP string gets big EUC-JP string raises on incomplete byte sequence raises on incomplete byte sequence decodes incomplete multibyte sequence with skip (#3285) decodes incomplete multibyte sequence with skip (#3285) does gets on unicode with char and limit without off-by-one does gets on unicode with char and limit without off-by-one says invalid byte sequence says invalid byte sequence gets big string gets big string gets with chomp = false gets with chomp = false encode printf printf raises on invalid byte sequence raises on invalid byte sequence raises on incomplete byte sequence raises on incomplete byte sequence prints char prints char puts puts prints a string prints a string prints numbers prints numbers skips on invalid byte sequence skips on invalid byte sequence prints big int prints big int prints symbol prints symbol says invalid encoding says invalid encoding prints bool prints bool partial read doesn't block on first read. blocks on 2nd read doesn't block on first read. blocks on 2nd read "#each_line" iterator "#each_line" iterator write operations skips but raises if not enough bytes skips but raises if not enough bytes writes bytes writes bytes skips a few bytes skips a few bytes writes with printf as an array writes with printf as an array skips to end skips to end prints prints writes with printf writes with printf puts several arguments puts several arguments raises if trying to write to an IO not opened for writing raises if trying to write to an IO not opened for writing prints several arguments prints several arguments does puts does puts does puts with big string does puts with big string does puts many times does puts many times skips more than 4096 bytes skips more than 4096 bytes "#each_line(chomp: false)" yielding "#each_line(chomp: false)" yielding "#char" yielding "#char" yielding "#char" iterator "#char" iterator raises on copy with negative limit raises on copy with negative limit copies with limit copies with limit copies copies "#each_line" yielding "#each_line" yielding "#char" yielding "#char" yielding HTTP::Cookies allows transform to hash allows transform to hash allows adding cookies and retrieving allows adding cookies and retrieving .from_client_headers parses Cookie header parses Cookie header does not accept Set-Cookie header does not accept Set-Cookie header allows deleting a particular cookie by key allows deleting a particular cookie by key adding request headers merges multiple cookies into one Cookie header merges multiple cookies into one Cookie header overwrites a pre-existing Cookie header overwrites a pre-existing Cookie header use encode_www_form to write the cookie's value use encode_www_form to write the cookie's value when no cookies are set does not set a Cookie header does not set a Cookie header allows to iterate over the cookies allows to iterate over the cookies allows clearing the cookies collection allows clearing the cookies collection .from_server_headers does not accept Cookie header does not accept Cookie header parses Set-Cookie header parses Set-Cookie header disallows adding inconsistent state disallows adding inconsistent state adding response headers overwrites all pre-existing Set-Cookie headers overwrites all pre-existing Set-Cookie headers when no cookies are set does not set a Set-Cookie header does not set a Set-Cookie header uses encode_www_form on Set-Cookie value uses encode_www_form on Set-Cookie value sets one Set-Cookie header per cookie sets one Set-Cookie header per cookie allows retrieving the size of the cookies collection allows retrieving the size of the cookies collection BigFloat #+ assert assert assert assert assert assert assert assert #trunc assert assert assert assert assert assert #ceil assert assert assert assert assert assert .new new(String) new(String) raises if creating from NaN raises if creating from NaN raises if creating from infinity raises if creating from infinity new(BigRational) new(BigRational) new(BigInt) new(BigInt) new(Int) new(Int) new(BigFloat) new(BigFloat) raises an ArgumentError unless string denotes valid float raises an ArgumentError unless string denotes valid float #* assert assert assert assert assert assert assert assert #** assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #- assert assert assert assert assert assert assert assert #to_i64! doesn't raise on overflow doesn't raise on overflow basic basic clones clones #to_u64! basic basic doesn't raise on overflow doesn't raise on overflow #integer? assert assert assert assert assert assert #to_i assert assert assert assert assert assert #<=> compares against NaNs compares against NaNs #to_u! assert assert assert assert assert assert #to_f assert assert assert assert assert assert unary #- assert assert assert assert assert assert #/ assert assert assert assert assert assert assert assert assert assert assert assert #round rounding modes default (=ties_even) default (=ties_even) to_negative to_negative ties_away ties_away to_zero to_zero ties_even ties_even to_positive to_positive #abs assert assert assert assert assert assert assert assert #to_f! assert assert assert assert assert assert #to_i64 assert assert basic basic assert assert assert assert #to_u64 assert assert basic basic assert assert assert assert #to_u assert assert assert assert assert assert assert assert #to_i! assert assert assert assert assert assert #inspect assert assert to_s assert assert converts to 3.0 converts to 3.0 assert assert assert assert assert assert converts to 48600000.0 converts to 48600000.0 converts to 10.0 converts to 10.0 converts to 1.0e-234 converts to 1.0e-234 assert assert converts to 1.0 converts to 1.0 converts to 100.0 converts to 100.0 assert assert converts to 0.01 converts to 0.01 converts to -3.0 converts to -3.0 converts to 1.23e+45 converts to 1.23e+45 assert assert converts to 3.0 converts to 3.0 converts to 150.0 converts to 150.0 converts to 1.2345678901234567e+16 converts to 1.2345678901234567e+16 converts to 1.7976931348623157e+308 converts to 1.7976931348623157e+308 converts to -0.01 converts to -0.01 converts to 1.0e-6 converts to 1.0e-6 converts to -0.1 converts to -0.1 converts to 0.0 converts to 0.0 converts to 12345678.87654 converts to 12345678.87654 assert assert converts to 12345678.87654321 converts to 12345678.87654321 converts to 9.000000000000987 converts to 9.000000000000987 converts to 0.0 converts to 0.0 converts to 0.1 converts to 0.1 converts to -1.0 converts to -1.0 assert assert converts to 2.2250738585072014e-308 converts to 2.2250738585072014e-308 converts to 1.234567890123456789e+18 converts to 1.234567890123456789e+18 #// assert assert assert assert assert assert assert assert assert assert assert assert assert assert #floor assert assert assert assert assert assert #hash #hash JSON::PullParser errors on {"foo",1} errors on {"foo",1} parses false parses false parses [1.5] parses [1.5] #read? reads > Float32::MAX reads > Float32::MAX reads Int64: -10 reads Int64: -10 returns nil in place of Int128 when an overflow occurs returns nil in place of Int128 when an overflow occurs reads Int128: 0 reads Int128: 0 reads UInt16: 10 reads UInt16: 10 reads Int8: 0 reads Int8: 0 returns nil instead of Float64 when the token is not compatible returns nil instead of Float64 when the token is not compatible returns nil instead of Int8 when the token is not compatible returns nil instead of Int8 when the token is not compatible reads Int32: 2147483647 reads Int32: 2147483647 reads Int64: 10 reads Int64: 10 reads Int8 when the token is a compatible kind reads Int8 when the token is a compatible kind returns nil in place of UInt64 when an overflow occurs returns nil in place of UInt64 when an overflow occurs reads UInt8: 255 reads UInt8: 255 reads Int8: -128 reads Int8: -128 reads Int128: -10 reads Int128: -10 reads UInt32 when the token is a compatible kind reads UInt32 when the token is a compatible kind returns nil in place of Int64 when an overflow occurs returns nil in place of Int64 when an overflow occurs reads UInt8: 0 reads UInt8: 0 reads UInt64: 18446744073709551615 reads UInt64: 18446744073709551615 returns nil instead of Int64 when the token is not compatible returns nil instead of Int64 when the token is not compatible reads UInt64: 10 reads UInt64: 10 returns nil instead of UInt128 when the token is not compatible returns nil instead of UInt128 when the token is not compatible reads Bool when the token is a compatible kind reads Bool when the token is a compatible kind reads UInt128: 340282366920938463463374607431768211455 reads UInt128: 340282366920938463463374607431768211455 reads UInt16: 0 reads UInt16: 0 returns nil instead of UInt32 when the token is not compatible returns nil instead of UInt32 when the token is not compatible reads Int128: 10 reads Int128: 10 returns nil in place of Int8 when an overflow occurs returns nil in place of Int8 when an overflow occurs returns nil instead of String when the token is not compatible returns nil instead of String when the token is not compatible returns nil in place of UInt16 when an overflow occurs returns nil in place of UInt16 when an overflow occurs reads UInt8: 10 reads UInt8: 10 reads UInt8 when the token is a compatible kind reads UInt8 when the token is a compatible kind reads Int16 when the token is a compatible kind reads Int16 when the token is a compatible kind reads < Float64::MIN reads < Float64::MIN reads UInt128 when the token is a compatible kind reads UInt128 when the token is a compatible kind returns nil in place of Int32 when an overflow occurs returns nil in place of Int32 when an overflow occurs reads Float64 when the token is a compatible kind reads Float64 when the token is a compatible kind reads Int16: -32768 reads Int16: -32768 reads UInt16: 65535 reads UInt16: 65535 reads Int128: 170141183460469231731687303715884105727 reads Int128: 170141183460469231731687303715884105727 reads UInt16 when the token is a compatible kind reads UInt16 when the token is a compatible kind returns nil instead of UInt64 when the token is not compatible returns nil instead of UInt64 when the token is not compatible returns nil instead of UInt16 when the token is not compatible returns nil instead of UInt16 when the token is not compatible reads Int8: 10 reads Int8: 10 reads Int128: -170141183460469231731687303715884105728 reads Int128: -170141183460469231731687303715884105728 returns nil instead of Float32 when the token is not compatible returns nil instead of Float32 when the token is not compatible reads Int32: -2147483648 reads Int32: -2147483648 doesn't accept nan or infinity doesn't accept nan or infinity reads < Float32::MIN reads < Float32::MIN returns nil in place of UInt8 when an overflow occurs returns nil in place of UInt8 when an overflow occurs returns nil instead of Bool when the token is not compatible returns nil instead of Bool when the token is not compatible reads UInt64: 0 reads UInt64: 0 reads Int64 when the token is a compatible kind reads Int64 when the token is a compatible kind reads UInt128: 0 reads UInt128: 0 reads Int32: -10 reads Int32: -10 returns nil instead of Int16 when the token is not compatible returns nil instead of Int16 when the token is not compatible reads Int16: 10 reads Int16: 10 reads Int64: -9223372036854775808 reads Int64: -9223372036854775808 reads Int16: 0 reads Int16: 0 reads > Float64::MAX reads > Float64::MAX reads Int8: 127 reads Int8: 127 returns nil instead of Int128 when the token is not compatible returns nil instead of Int128 when the token is not compatible reads String when the token is a compatible kind reads String when the token is a compatible kind reads Int32 when the token is a compatible kind reads Int32 when the token is a compatible kind returns nil instead of UInt8 when the token is not compatible returns nil instead of UInt8 when the token is not compatible reads Int32: 0 reads Int32: 0 reads UInt32: 0 reads UInt32: 0 returns nil in place of Int16 when an overflow occurs returns nil in place of Int16 when an overflow occurs reads Int16: -10 reads Int16: -10 reads Float32 when the token is a compatible kind reads Float32 when the token is a compatible kind reads Int64: 9223372036854775807 reads Int64: 9223372036854775807 reads Int16: 32767 reads Int16: 32767 returns nil instead of Int32 when the token is not compatible returns nil instead of Int32 when the token is not compatible returns nil in place of UInt32 when an overflow occurs returns nil in place of UInt32 when an overflow occurs reads UInt32: 4294967295 reads UInt32: 4294967295 returns nil in place of UInt128 when an overflow occurs returns nil in place of UInt128 when an overflow occurs reads Int8: -10 reads Int8: -10 reads UInt32: 10 reads UInt32: 10 reads Int32: 10 reads Int32: 10 reads UInt128: 10 reads UInt128: 10 reads UInt64 when the token is a compatible kind reads UInt64 when the token is a compatible kind reads Int128 when the token is a compatible kind reads Int128 when the token is a compatible kind reads Int64: 0 reads Int64: 0 parses [[]] parses [[]] reads array or null reads array or null errors on {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} errors on {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} parses ["hello"] parses ["hello"] parses {"foo": "foo1", "bar": "bar1"} parses {"foo": "foo1", "bar": "bar1"} parses [false] parses [false] parses "hello" parses "hello" parses true parses true parses [1, 2] parses [1, 2] errors on [[] errors on [[] parses {} parses {} reads object or null reads object or null errors on [true 2] errors on [true 2] errors on [null 2] errors on [null 2] parses {"foo": [1, 2]} parses {"foo": [1, 2]} errors on []] errors on []] parses {"foo": 1} parses {"foo": 1} #raise #raise errors on {}} errors on {}} errors on ["foo":1] errors on ["foo":1] errors on {"name": "John", "age": "foo", "bar"} errors on {"name": "John", "age": "foo", "bar"} parses [] parses [] reads float or null reads float or null parses [1] parses [1] errors on {"foo"::1} errors on {"foo"::1} parses when the input IO is already empty parses when the input IO is already empty parses [null] parses [null] errors on [ errors on [ errors on [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] errors on [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] errors on [1 2] errors on [1 2] reads bool or null reads bool or null parses 1 parses 1 parses {"foo": 1, "bar": 2} parses {"foo": 1, "bar": 2} reads string or null reads string or null raw parses raw "{\"foo\":[1,2,{\"bar\":[1,\"hello\",true,false,1.5]}]}" parses raw "{\"foo\":[1,2,{\"bar\":[1,\"hello\",true,false,1.5]}]}" parses raw "null" parses raw "null" parses raw "[1,\"hello\",true,false,null,[1,2,3]]" parses raw "[1,\"hello\",true,false,null,[1,2,3]]" parses raw "1234.5678" parses raw "1234.5678" parses raw "{\"foo\":\"bar\"}" parses raw "{\"foo\":\"bar\"}" parses raw "true" parses raw "true" parses raw "false" parses raw "false" parses raw "1234" parses raw "1234" parses raw "\"hello\"" parses raw "\"hello\"" parses null parses null parses 1.5 parses 1.5 on key doesn't find key doesn't find key finds key finds key yields all keys when skipping [1] yields all keys when skipping [1] yields all keys when skipping {"x": [1]} yields all keys when skipping {"x": [1]} yields all keys when skipping 1 yields all keys when skipping 1 yields parser with bang yields parser with bang doesn't find key with bang doesn't find key with bang finds key with bang finds key with bang yields parser yields parser reads float when it is an int reads float when it is an int errors on [,1] errors on [,1] errors on {"foo": []:1} errors on {"foo": []:1} errors on {,"foo": 1} errors on {,"foo": 1} errors on [}] errors on [}] prevents stack overflow for arrays prevents stack overflow for arrays errors on [false 2] errors on [false 2] reads int or null reads int or null errors on {"name": "John", "age", 1} errors on {"name": "John", "age", 1} parses [true] parses [true] prevents stack overflow for hashes prevents stack overflow for hashes parses {"foo": "bar"} parses {"foo": "bar"} errors on ["hello" 2] errors on ["hello" 2] errors on {"foo": {} errors on {"foo": {} errors on [1.5 2] errors on [1.5 2] skip skips object skips object skips array skips array skips null skips null skips bool skips bool skips string skips string skips int skips int skips float skips float ::sprintf strings works works calls to_s on non-strings calls to_s on non-strings works works numbered parameters can be used before flags can be used before flags raises if used as width or precision specifier of a sequential parameter raises if used as width or precision specifier of a sequential parameter raises if sequential parameters also given raises if sequential parameters also given raises if index is zero raises if index is zero raises if multiple indices specified raises if multiple indices specified gets width and precision specifier at specified index gets width and precision specifier at specified index gets argument at specified index gets argument at specified index raises if index is out of bounds raises if index is out of bounds raises if named parameters also given raises if named parameters also given doesn't format %% doesn't format %% doesn't stop at null character when doing '%' doesn't stop at null character when doing '%' doesn't accept modifiers for %% doesn't accept modifiers for %% accepts multiple positional arguments accepts multiple positional arguments formatted substitution raises if numbered parameters also given raises if numbered parameters also given applies formatting to %<...> placeholder applies formatting to %<...> placeholder doesn't raise if plain substitution also given doesn't raise if plain substitution also given raises if sequential parameters also given raises if sequential parameters also given sequential parameters raises if numbered parameters also given raises if numbered parameters also given raises if named parameters also given raises if named parameters also given floats not-a-numbers not-a-numbers general format zero flag can be used with precision can be used with precision is ignored if string is left-justified is ignored if string is left-justified left-pads the result with zeros left-pads the result with zeros width specifier sets the minimum length of the string sets the minimum length of the string left-justifies on negative width left-justifies on negative width space flag writes a space for positive values writes a space for positive values writes space before left space-padding writes space before left space-padding is ignored if plus flag is also specified is ignored if plus flag is also specified precision specifier is ignored if precision argument is negative is ignored if precision argument is negative can be used with width can be used with width sets the precision of the value sets the precision of the value sharp flag prints decimal point and trailing zeros prints decimal point and trailing zeros minus flag left-justifies the string left-justifies the string plus flag writes plus sign after left space-padding writes plus sign after left space-padding writes plus sign before left zero-padding writes plus sign before left zero-padding writes a plus sign for positive values writes a plus sign for positive values works works scientific format sharp flag prints a decimal point even if no digits follow prints a decimal point even if no digits follow plus flag writes a plus sign for positive values writes a plus sign for positive values writes plus sign after left space-padding writes plus sign after left space-padding writes plus sign before left zero-padding writes plus sign before left zero-padding zero flag can be used with precision can be used with precision is ignored if string is left-justified is ignored if string is left-justified left-pads the result with zeros left-pads the result with zeros works works minus flag left-justifies the string left-justifies the string width specifier left-justifies on negative width left-justifies on negative width sets the minimum length of the string sets the minimum length of the string space flag is ignored if plus flag is also specified is ignored if plus flag is also specified writes space before left space-padding writes space before left space-padding writes a space for positive values writes a space for positive values precision specifier is ignored if precision argument is negative is ignored if precision argument is negative can be used with width can be used with width sets the minimum length of the fractional part sets the minimum length of the fractional part infinities infinities not-a-numbers not-a-numbers infinities infinities hex format width specifier left-justifies on negative width left-justifies on negative width sets the minimum length of the string sets the minimum length of the string zero flag can be used with precision can be used with precision is ignored if string is left-justified is ignored if string is left-justified left-pads the result with zeros left-pads the result with zeros minus flag left-justifies the string left-justifies the string space flag is ignored if plus flag is also specified is ignored if plus flag is also specified writes a space for positive values writes a space for positive values writes space before left space-padding writes space before left space-padding sharp flag prints a decimal point even if no digits follow prints a decimal point even if no digits follow works works plus flag writes plus sign after left space-padding writes plus sign after left space-padding writes plus sign before left zero-padding writes plus sign before left zero-padding writes a plus sign for positive values writes a plus sign for positive values precision specifier sets the minimum length of the fractional part sets the minimum length of the fractional part is ignored if precision argument is negative is ignored if precision argument is negative can be used with width can be used with width fixed format works works plain substitution raises if sequential parameters also given raises if sequential parameters also given throws an error when the key is not found throws an error when the key is not found raises if expecting hash or named tuple but not given raises if expecting hash or named tuple but not given raises on unbalanced curly raises on unbalanced curly doesn't raise if 1-element list of hash or named tuple given doesn't raise if 1-element list of hash or named tuple given substitutes one placeholder substitutes one placeholder doesn't raise on balanced curly with null byte doesn't raise on balanced curly with null byte doesn't raise if formatted substitution also given doesn't raise if formatted substitution also given substitutes multiple placeholder substitutes multiple placeholder raises if numbered parameters also given raises if numbered parameters also given integers width specifier sets the minimum length of the string sets the minimum length of the string left-justifies on negative width left-justifies on negative width sharp flag omits the base prefix for 0 omits the base prefix for 0 adds a base prefix adds a base prefix base specifier supports base 16 supports base 16 supports base 2 supports base 2 supports base 10 supports base 10 supports base 8 supports base 8 works with BigInt works with BigInt plus flag writes plus sign before left zero-padding writes plus sign before left zero-padding writes a plus sign for positive integers writes a plus sign for positive integers writes plus sign after left space-padding writes plus sign after left space-padding works with Int*::MIN works with Int*::MIN precision specifier sets the minimum length of the number part sets the minimum length of the number part is ignored if precision argument is negative is ignored if precision argument is negative can be used with width can be used with width space flag writes space before left padding writes space before left padding writes a space for positive integers writes a space for positive integers is ignored if plus flag is also specified is ignored if plus flag is also specified zero flag is ignored if precision is specified is ignored if precision is specified left-pads the result with zeros left-pads the result with zeros is ignored if string is left-justified is ignored if string is left-justified minus flag left-justifies the string left-justifies the string reserves space for the number prefix reserves space for the number prefix OpenSSL::Digest returns the digest size returns the digest size correctly reads from IO correctly reads from IO .dup leads to not sharing state leads to not sharing state leads to deterministic updates leads to deterministic updates preserves value preserves value preserves type preserves type returns the block size returns the block size digest with file content digest with file content should be able to calculate SHA1 should be able to calculate SHA1 should be able to calculate SHA256 should be able to calculate SHA256 raises a UnsupportedError if digest is unsupported raises a UnsupportedError if digest is unsupported can't call #final more than once can't call #final more than once should be able to calculate SHA512 should be able to calculate SHA512 LLVM::ABI::ARM size for double for double for struct for struct for array for array for float for float for packed struct for packed struct for integer for integer for pointer for pointer align for packed struct for packed struct for array for array for struct for struct for pointer for pointer for double for double for integer for integer for float for float abi_info does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with primitives does with primitives does with structs less than 64 bits does with structs less than 64 bits YAML::PullParser raises exception at correct location raises exception at correct location reads a sequence with an anchor reads a sequence with an anchor reads a mapping reads a mapping reads empty stream reads empty stream reads an empty document reads an empty document reads a scalar with an anchor reads a scalar with an anchor reads a mapping with an anchor reads a mapping with an anchor reads a sequence reads a sequence skip skips event in other cases skips event in other cases document document sequence sequence mapping mapping scalar scalar alias alias stream stream reads a scalar reads a scalar reads a scalar having a null character reads a scalar having a null character parses alias parses alias CSV lex raises if command, newline or end doesn't follow quote raises if command, newline or end doesn't follow quote lexes with a given quote char lexes with a given quote char lexes with a given separator lexes with a given separator lexes two columns lexes two columns lexes two empty columns lexes two empty columns doesn't consume char after \n (#11172) doesn't consume char after \n (#11172) lexes two columns with two rows with lexes two columns with two rows with lexes two with inner quotes lexes two with inner quotes doesn't consume char after \r (#11172) doesn't consume char after \r (#11172) lexes two with quotes lexes two with quotes raises on unclosed quote raises on unclosed quote lexes newline followed by eof lexes newline followed by eof lexes last empty column lexes last empty column lexes with comma inside quote lexes with comma inside quote lexes two columns with two rows lexes two columns with two rows lexes with whitespace lexes with whitespace raises if single quote in the middle raises if single quote in the middle lexes with newline inside quote lexes with newline inside quote lexes with empty columns lexes with empty columns Log::AsyncDispatcher dispatches entry dispatches entry wait for entries to flush before closing wait for entries to flush before closing can be closed twice can be closed twice Symbol clone assert assert inspects inspects can be compared with another symbol can be compared with another symbol displays symbols that don't need quotes without quotes displays symbols that don't need quotes without quotes displays the empty symbol with quotes displays the empty symbol with quotes Log::DirectDispatcher dispatches entry dispatches entry OAuth::Params builds builds IO::FileDescriptor #finalize does not flush does not flush closes closes reopens reopens opens STDERR in binary mode opens STDERR in binary mode #tty? returns false for standard streams redirected to null device returns false for standard streams redirected to null device returns false for null device returns false for null device does not close if close_on_finalize is false does not close if close_on_finalize is false #initialize handles closed file descriptor gracefully handles closed file descriptor gracefully opens STDIN in binary mode opens STDIN in binary mode close_on_exec can be disabled and reenabled can be disabled and reenabled is enabled by default (open) is enabled by default (open) sets close on exec on the reopened standard descriptors sets close on exec on the reopened standard descriptors is copied on reopen is copied on reopen is enabled by default (pipe) is enabled by default (pipe) /bin/sh: line 1: echo: write error: Broken pipe reopen STDIN with the right mode reopen STDIN with the right mode opens STDOUT in binary mode opens STDOUT in binary mode UNIXServer accept? sets close on exec flag sets close on exec flag returns nil when server is closed returns nil when server is closed returns the client UNIXSocket returns the client UNIXSocket .new raises when path is too long raises when path is too long raises when socket file already exists raises when socket file already exists won't delete existing file on bind failure won't delete existing file on bind failure creates the socket file creates the socket file deletes socket file on close deletes socket file on close accept returns the client UNIXSocket returns the client UNIXSocket raises when server is closed raises when server is closed datagrams can send and receive datagrams can send and receive datagrams Log::SyncDispatcher dispatches entry dispatches entry Compress::Deflate::Writer can be closed with sync (1) can be closed with sync (1) .open yields itself to block yields itself to block should be able to write should be able to write can be closed without sync can be closed without sync can be closed with sync (2) can be closed with sync (2) YAML::Schema::Core parses "0o123" parses "0o123" raises on parse "!!binary [1]" raises on parse "!!binary [1]" parses "!!int 123" parses "!!int 123" parses "2002-1-2T10:11:12+03x" parses "2002-1-2T10:11:12+03x" parses "-.INF" parses "-.INF" parses "+.Inf" parses "+.Inf" parses "2002-1-2 10:11:12" parses "2002-1-2 10:11:12" parses "0x123abc" parses "0x123abc" parses "Yes" parses "Yes" parses "OFF" parses "OFF" parses "off" parses "off" .parse_null_or .parse_null_or parses "TRUE" parses "TRUE" parses "!!int 0755" parses "!!int 0755" parses "!!int 0" parses "!!int 0" parses ".inf" parses ".inf" parses "2002-34-45" parses "2002-34-45" raises on parse "!!float 'hello'" raises on parse "!!float 'hello'" parses "0." parses "0." parses "+.inf" parses "+.inf" raises on parse "!!null 1" raises on parse "!!null 1" parses "!!seq [ 1, 2, 3 ]" parses "!!seq [ 1, 2, 3 ]" parses !!float .nan parses !!float .nan parses "-.inf" parses "-.inf" parses "!!float '1.2'" parses "!!float '1.2'" parses "!!timestamp 2010-01-02" parses "!!timestamp 2010-01-02" parses "!!binary aGVsbG8=" parses "!!binary aGVsbG8=" parses "!!set { 1, 2, 3 }" parses "!!set { 1, 2, 3 }" parses "2002-1-2T10:11:12Z" parses "2002-1-2T10:11:12Z" parses "-123" parses "-123" parses "NULL" parses "NULL" raises on parse "!!timestamp foo" raises on parse "!!timestamp foo" parses "\"1\"" parses "\"1\"" parses ".Inf" parses ".Inf" parses "!!float '1_234.2'" parses "!!float '1_234.2'" parses "+.INF" parses "+.INF" raises on parse "!!pairs 1" raises on parse "!!pairs 1" parses "FALSE" parses "FALSE" raises on parse "!!set 1" raises on parse "!!set 1" parses "2002-1-2T10:11:12 Z" parses "2002-1-2T10:11:12 Z" parses ".5" parses ".5" parses "2002-1-2T10:11:12.3456" parses "2002-1-2T10:11:12.3456" parses "!!float 0" parses "!!float 0" parses "0" parses "0" parses "y" parses "y" parses "!!float '0.5'" parses "!!float '0.5'" parses "True" parses "True" parses "0b10110" parses "0b10110" parses "!!pairs [{1: 2}, {3: 4}]" parses "!!pairs [{1: 2}, {3: 4}]" parses "0x0" parses "0x0" parses "1.2" parses "1.2" parses "Null" parses "Null" parses "n" parses "n" parses "!!float -1" parses "!!float -1" parses "2002-12-14" parses "2002-12-14" parses "2002-1-2T10:11:12 -03:31" parses "2002-1-2T10:11:12 -03:31" parses "true" parses "true" parses "no" parses "no" parses "2002-1-2T10:11:12 +3" parses "2002-1-2T10:11:12 +3" parses "On" parses "On" parses "-.5" parses "-.5" parses "2002-1-2T10:11:12.3" parses "2002-1-2T10:11:12.3" parses "~" parses "~" raises on parse "!!int 'hello'" raises on parse "!!int 'hello'" parses nan parses nan parses "2002-1-2T10:11:12.345" parses "2002-1-2T10:11:12.345" raises on parse "!!omap 1" raises on parse "!!omap 1" parses "-0.0" parses "-0.0" parses "+123" parses "+123" parses "+.5" parses "+.5" parses "0.815" parses "0.815" parses "-2E+05" parses "-2E+05" parses "2002-1-2T10:11:12 +03:00" parses "2002-1-2T10:11:12 +03:00" parses "!!str 1" parses "!!str 1" parses "2002-12-14 x" parses "2002-12-14 x" parses "!!bool yes" parses "!!bool yes" parses "False" parses "False" raises on parse "!!bool 1" raises on parse "!!bool 1" parses "1_234.2" parses "1_234.2" parses "null" parses "null" parses "2002-1-2T10:11:12Zx" parses "2002-1-2T10:11:12Zx" parses "-.Inf" parses "-.Inf" parses "!!int 0o123" parses "!!int 0o123" parses "2002-1-2T10:11:12x" parses "2002-1-2T10:11:12x" parses "2002-1-2T10:11:12.34" parses "2002-1-2T10:11:12.34" parses "123" parses "123" parses "2002-1-2" parses "2002-1-2" parses "ON" parses "ON" parses "!!null ~" parses "!!null ~" parses "!!float .inf" parses "!!float .inf" parses "!!int -123" parses "!!int -123" parses "!!omap {1: 2}" parses "!!omap {1: 2}" parses "No" parses "No" parses "2002-1-2T10:11:12-03:31" parses "2002-1-2T10:11:12-03:31" parses "Y" parses "Y" parses "on" parses "on" parses "!!int 0xabc" parses "!!int 0xabc" parses "+12.3" parses "+12.3" parses "false" parses "false" parses "-0x123abc" parses "-0x123abc" parses "!!float 2.3e4" parses "!!float 2.3e4" raises on parse "!!str [1]" raises on parse "!!str [1]" parses "0b0" parses "0b0" parses "0o0" parses "0o0" parses "2002-1-2 1:11:12" parses "2002-1-2 1:11:12" parses "2002-1-2T10:11:12 -03:00" parses "2002-1-2T10:11:12 -03:00" parses "2002-1-2T10:11:12" parses "2002-1-2T10:11:12" parses "!!map {1: 2}" parses "!!map {1: 2}" parses "NO" parses "NO" parses ".INF" parses ".INF" parses "00" parses "00" parses "Off" parses "Off" parses "YES" parses "YES" raises on parse "!!seq 1" raises on parse "!!seq 1" raises on parse "!!binary 1" raises on parse "!!binary 1" parses "2002-1-2T10:11:12 +0300" parses "2002-1-2T10:11:12 +0300" parses "yes" parses "yes" parses "!!int 0b10" parses "!!int 0b10" raises on parse "!!pairs [{1: 2, 3: 4}]" raises on parse "!!pairs [{1: 2, 3: 4}]" parses "N" parses "N" raises on parse "!!map 1" raises on parse "!!map 1" parses "0755" parses "0755" Compress::Zlib write read should be inverse with random string write read should be inverse with random string write read should be inverse (utf-8) write read should be inverse (utf-8) hardware exception detects stack overflow on a fiber stack detects stack overflow on a fiber stack detects stack overflow on the main stack detects stack overflow on the main stack reports invalid memory access reports invalid memory access levenshtein assert assert assert assert assert assert assert assert assert assert finds with finder finds with finder finds with finder and other values finds with finder and other values assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert UUID serializes #to_json #to_json from_json_object_key? from_json_object_key? CSV parses row by row parses row by row does CSV.each_row with separator and quotes does CSV.each_row with separator and quotes parse parses some commas parses some commas raises if command, newline or end doesn't follow quote raises if command, newline or end doesn't follow quote parses one simple row parses one simple row parses from IO parses from IO parses with quote parses with quote parses empty quoted string parses empty quoted string parses two rows parses two rows raises if command, newline or end doesn't follow quote (2) raises if command, newline or end doesn't follow quote (2) parses with double quote parses with double quote parses one row with spaces parses one row with spaces parses empty string parses empty string parses with quote and newline parses with quote and newline parses two rows with the last one having a newline parses two rows with the last one having a newline raises if single quote in the middle raises if single quote in the middle takes an optional quote char argument takes an optional quote char argument takes an optional separator argument takes an optional separator argument gets row iterator gets row iterator does CSV.each_row does CSV.each_row Crypto::Bcrypt doesn't have the sign expansion (high 8bit) security flaw doesn't have the sign expansion (high 8bit) security flaw validates cost validates cost computes digest vectors computes digest vectors validates password size validates password size validates salt size validates salt size Crypto::Blowfish encrypt and decrypt pair encrypt and decrypt pair String::Grapheme #size #size #== #== .new .new #inspect #inspect #to_s #to_s .break? .break? #bytesize #bytesize VaList works with C code works with C code Crystal::PointerLinkedList(T) empty? return true if there is no element in list return true if there is no element in list does each does each delete remove a node from list remove a node from list push append the node into the list append the node into the list shift? return nil if list is empty return nil if list is empty remove and return the first element remove and return the first element Deque does each does each select! with pattern with pattern with block with block "#cycle(limit)" yielding "#cycle(limit)" yielding first? gives nil when empty gives nil when empty gets first? when non empty gets first? when non empty does clear does clear new creates with default value in block creates with default value in block creates from an array creates from an array creates with default value creates with default value raises on negative capacity raises on negative capacity raises on negative count raises on negative count "#cycle" iterator "#cycle" iterator implementation works the same as array when inserting at 3/4 size and deleting at 1/8 size works the same as array when inserting at 3/4 size and deleting at 1/8 size works the same as array works the same as array works the same as array when inserting at 1/8 size and deleting at 3/4 size works the same as array when inserting at 1/8 size and deleting at 3/4 size does clone does clone inspect assert assert does clone with recursive type does clone with recursive type does hash does hash [] gets nilable gets nilable gets on positive index gets on positive index gets on negative index gets on negative index delete deletes many deletes many delete not found delete not found + does + does + does + with different types does + with different types last gets last when non empty gets last when non empty raises when empty raises when empty []= sets on positive index sets on positive index sets on negative index sets on negative index each_index iterator works while modifying deque works while modifying deque "#each_index" iterator "#each_index" iterator "#each_index" yielding "#each_index" yielding == compares empty compares empty compares other types compares other types compares other compares other compares elements compares elements each iterator "#each" yielding "#each" yielding works while modifying deque works while modifying deque "#each" iterator "#each" iterator does unshift does unshift shift shifts when non empty shifts when non empty shifts negative count raises shifts negative count raises shifts more than what is available shifts more than what is available raises when empty raises when empty shifts many elements shifts many elements swap swaps but raises out of bounds on right swaps but raises out of bounds on right swaps with negative indices swaps with negative indices swaps swaps swaps but raises out of bounds on left swaps but raises out of bounds on left concat concats deque concats deque concats enumerable concats enumerable concats large deques concats large deques concats itself concats itself concats indexable concats indexable first gets first when non empty gets first when non empty raises when empty raises when empty empty is empty is empty is not empty is not empty rotate! rotates with size=0 rotates with size=0 rotates with size=capacity rotates with size=capacity rotates rotates rotates with size=1 rotates with size=1 "#cycle" yielding "#cycle" yielding does each_index does each_index pop pops many elements pops many elements pops negative count raises pops negative count raises raises when empty raises when empty pops when non empty pops when non empty pops more elements than what is available pops more elements than what is available "#reverse_each" yielding "#reverse_each" yielding size has size 2 has size 2 has size 0 has size 0 insert inserts with negative index inserts with negative index inserts with positive index inserts with positive index inserts out of range inserts out of range inserts with negative index (2) inserts with negative index (2) to_s does with recursive does with recursive does to_s does to_s "#cycle(limit)" iterator "#cycle(limit)" iterator does dup does dup reject! with block with block with pattern with pattern delete_at deletes out of bounds deletes out of bounds deletes negative index deletes negative index deletes positive index deletes positive index does equals? with custom block does equals? with custom block "#reverse_each" iterator "#reverse_each" iterator push has the << alias has the << alias returns the deque returns the deque adds one element to the deque adds one element to the deque Time::Location .load_android loads Europe/Berlin loads Europe/Berlin loads new data if tzdata file was changed loads new data if tzdata file was changed .fixed with name with name positive positive raises if offset to large raises if offset to large negative negative without name without name .load_local with empty TZ with empty TZ with TZ with TZ with unset TZ with unset TZ #lookup reads from cache reads from cache looks up looks up first zone PST8PDT PST8PDT Pacific/Fakaofo Pacific/Fakaofo handles dst change handles dst change handles value after last transition handles value after last transition caches last zone caches last zone UTC UTC .load treats UTC as special case treats UTC as special case invalid timezone identifier invalid timezone identifier invalid zone file invalid zone file loads Europe/Berlin loads Europe/Berlin validating name dot dot dot dot absolute path absolute path name is folder name is folder with ZONEINFO does not fall back to default sources does not fall back to default sources loads new data if ZIP file was changed loads new data if ZIP file was changed loads from custom directory loads from custom directory loads from custom zipfile loads from custom zipfile caches result caches result raises if not available raises if not available loads new data if file was changed loads new data if file was changed .local .local Float32 boundaries largest denormal 32 largest denormal 32 smallest normal 32 smallest normal 32 max Float32 max Float32 min Float32 min Float32 boundaries 1.5 boundaries 1.5 boundaries 1.0 boundaries 1.0 Crystal::System::File .mktemp creates random file name creates random file name raises when no valid path is found raises when no valid path is found retries when file exists retries when file exists HTTP::LogHandler logs logs log failed request log failed request logs to custom logger logs to custom logger Char::Reader #next_char? #next_char? errors on invalid UTF-8 errors on invalid UTF-8 #current_char? #current_char? gets previous char (unicode) gets previous char (unicode) #previous_char reads on valid UTF-8 reads on valid UTF-8 errors on invalid UTF-8 errors on invalid UTF-8 #each yields chars yields chars does not yield if empty does not yield if empty checks bounds after block checks bounds after block starts at pos starts at pos starts at end starts at end iterates through chars iterates through chars gets previous char (ascii) gets previous char (ascii) iterates through empty string iterates through empty string iterates through string of size one iterates through string of size one sets pos sets pos peeks next char peeks next char #previous_char? #previous_char? __udivti3 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests Pointer creates from int creates from int move_to performs with overlap left to right performs with overlap left to right raises on negative count raises on negative count performs with overlap right to left performs with overlap right to left moves to union of pointers moves to union of pointers maps_with_index! maps_with_index! performs arithmetic with u32 performs arithmetic with u32 does to_s does to_s copy_to raises on negative count raises on negative count doesn't raise OverflowError on unsigned size and different target type doesn't raise OverflowError on unsigned size and different target type performs performs copies to union of pointers copies to union of pointers memcmp assert assert compares two pointers by address compares two pointers by address does malloc with value does malloc with value maps! maps! maps_with_index!, with offset maps_with_index!, with offset does ! does ! does malloc with value from block does malloc with value from block realloc raises on negative count raises on negative count move_from performs with overlap right to left performs with overlap right to left moves from union of pointers moves from union of pointers performs with overlap left to right performs with overlap left to right raises on negative count raises on negative count does index with count does index with count raises if mallocs negative size raises if mallocs negative size copy_from raises on negative count raises on negative count copies from union of pointers copies from union of pointers performs performs copies/move with different types copies/move with different types clear clears with union clears with union clears many clears many clears one clears one clones clones shuffles! shuffles! performs arithmetic with u64 performs arithmetic with u64 BigRational Math sqrt sqrt NamedTuple compares with other named tuple type compares with other named tuple type #to_h creates a hash creates a hash creates an empty hash from an empty named tuple creates an empty hash from an empty named tuple does keys does keys compares with same named tuple type compares with same named tuple type does has_key? with symbol does has_key? with symbol merges with other named tuple merges with other named tuple .[] with non-literal index gets named tuple metaclass value with String key gets named tuple metaclass value with String key raises missing key raises missing key gets named tuple metaclass value with Symbol key gets named tuple metaclass value with Symbol key #dig? gets the value at given path given splat gets the value at given path given splat returns nil if not found returns nil if not found does map does map does NamedTuple#from does NamedTuple#from gets size gets size does sorted_keys does sorted_keys does has_key? with string does has_key? with string dups dups does empty does empty does each does each #[]? with non-literal index gets named tuple value or nil with Symbol key gets named tuple value or nil with Symbol key gets named tuple value or nil with String key gets named tuple value or nil with String key does types does types does each_with_index does each_with_index #to_a creates an array of key-value pairs creates an array of key-value pairs preserves key type for empty named tuples preserves key type for empty named tuples #dig gets the value at given path given splat gets the value at given path given splat raises KeyError if not found raises KeyError if not found does to_s does to_s .[]? with non-literal index gets named tuple metaclass value or nil with Symbol key gets named tuple metaclass value or nil with Symbol key gets named tuple metaclass value or nil with String key gets named tuple metaclass value or nil with String key does each_value does each_value compares with named tuple union (#5131) compares with named tuple union (#5131) clones clones does values does values does NamedTuple.from does NamedTuple.from computes a hash value computes a hash value does NamedTuple.new, without type vars does NamedTuple.new, without type vars #[] with non-literal index raises missing key raises missing key gets named tuple value with Symbol key gets named tuple value with Symbol key gets named tuple value with String key gets named tuple value with String key does NamedTuple.new, with hyphen in key does NamedTuple.new, with hyphen in key does NamedTuple.new, with type vars does NamedTuple.new, with type vars merges two empty named tuples merges two empty named tuples does each_key does each_key OpenSSL::SSL::Socket OpenSSL::SSL::Socket::Server doesn't accept client when specified doesn't accept client when specified auto accept client by default auto accept client by default LLVM::ABI::X86_Win64 abi_info does with packed struct containing unaligned fields (#9873) does with packed struct containing unaligned fields (#9873) does with packed struct not containing unaligned fields does with packed struct not containing unaligned fields does with structs between 64 and 128 bits does with structs between 64 and 128 bits does with structs larger than 128 bits does with structs larger than 128 bits Path #parent "/foo" (posix) "/foo" (posix) "C:\foo" (windows) "C:\foo" (windows) "foo\" (posix) "foo\" (posix) "/." (posix) "/." (posix) "C:/foo" (windows) "C:/foo" (windows) "\Users/foo\bar.cr" (posix) "\Users/foo\bar.cr" (posix) "./foo" (windows) "./foo" (windows) "/foo/C:/bar" (posix) "/foo/C:/bar" (posix) "\Users\foo\bar.cr" (windows) "\Users\foo\bar.cr" (windows) "foo/bar/" (posix) "foo/bar/" (posix) "foo//.//" (windows) "foo//.//" (windows) "C:\" (posix) "C:\" (posix) "/" (posix) "/" (posix) "./foo" (posix) "./foo" (posix) "C:/" (posix) "C:/" (posix) "/" (windows) "/" (windows) "foo" (posix) "foo" (posix) ".\foo" (windows) ".\foo" (windows) "/Users/foo/bar.cr" (posix) "/Users/foo/bar.cr" (posix) "C:/" (windows) "C:/" (windows) "foo\bar\." (windows) "foo\bar\." (windows) "/foo" (windows) "/foo" (windows) "Users/foo/bar.cr" (windows) "Users/foo/bar.cr" (windows) "/foo/C:/bar" (windows) "/foo/C:/bar" (windows) "foo\" (windows) "foo\" (windows) "C:" (windows) "C:" (windows) "foo\bar\" (posix) "foo\bar\" (posix) "\Users\foo\bar.cr" (posix) "\Users\foo\bar.cr" (posix) "foo/bar/." (posix) "foo/bar/." (posix) "." (windows) "." (windows) "/." (posix) "/." (posix) "foo//.//" (posix) "foo//.//" (posix) "foo/bar/.." (windows) "foo/bar/.." (windows) "foo/bar/." (windows) "foo/bar/." (windows) "" (windows) "" (windows) "C:\" (windows) "C:\" (windows) "foo\bar\.." (windows) "foo\bar\.." (windows) "\Users/foo\bar.cr" (windows) "\Users/foo\bar.cr" (windows) "foo" (windows) "foo" (windows) "////" (windows) "////" (windows) "\" (posix) "\" (posix) "\." (posix) "\." (posix) "C:\foo" (posix) "C:\foo" (posix) "" (posix) "" (posix) "foo\bar\." (posix) "foo\bar\." (posix) "foo/" (windows) "foo/" (windows) "/Users/foo/bar.cr" (windows) "/Users/foo/bar.cr" (windows) "foo\bar\" (windows) "foo\bar\" (windows) ".\foo" (posix) ".\foo" (posix) "." (posix) "." (posix) "C:" (posix) "C:" (posix) "C:/foo" (posix) "C:/foo" (posix) "foo/bar/" (windows) "foo/bar/" (windows) "foo/bar/.." (posix) "foo/bar/.." (posix) "Users/foo/bar.cr" (posix) "Users/foo/bar.cr" (posix) "////" (posix) "////" (posix) "/." (windows) "/." (windows) "\" (windows) "\" (windows) "foo/" (posix) "foo/" (posix) "foo\bar\.." (posix) "foo\bar\.." (posix) "/." (windows) "/." (windows) "\." (windows) "\." (windows) #== simple simple case sensitivity case sensitivity .home uses home from environment variable if set uses home from environment variable if set doesn't return empty string if environment variable is empty doesn't return empty string if environment variable is empty doesn't raise if environment variable is missing doesn't raise if environment variable is missing #relative_to mixed input paths mixed input paths paths that can't be relativized paths that can't be relativized relativizable paths relativizable paths #to_windows "foo/bar" (posix) "foo/bar" (posix) ""*/:<>?\| " (posix) ""*/:<>?\| " (posix) "C:\foo\bar" (posix) "C:\foo\bar" (posix) default: mappings=true "C:\foo\bar" (windows) default: mappings=true "C:\foo\bar" (windows) "C:\foo\bar" (windows) "C:\foo\bar" (windows) "C:\foo\bar" (posix) "C:\foo\bar" (posix) ""*/:<>?\| " (posix) ""*/:<>?\| " (posix) "C:\foo\bar" (windows) "C:\foo\bar" (windows) default: mappings=true "C:\foo\bar" (posix) default: mappings=true "C:\foo\bar" (posix) ""*/:<>?\| " (windows) ""*/:<>?\| " (windows) "foo/bar" (windows) "foo/bar" (windows) ""*/:<>?\| " (windows) ""*/:<>?\| " (windows) "foo/bar" (windows) "foo/bar" (windows) "foo/bar" (posix) "foo/bar" (posix) #drive "\\_.-~!$;=&'()*+,aB1\ !-.@^_`{}~#$%&'()aB1\" (posix) "\\_.-~!$;=&'()*+,aB1\ !-.@^_`{}~#$%&'()aB1\" (posix) "\\not-a\\share" (windows) "\\not-a\\share" (windows) "//foo" (posix) "//foo" (posix) "\\127.0.0.1\share\" (posix) "\\127.0.0.1\share\" (posix) "\\%10%20\share\" (posix) "\\%10%20\share\" (posix) "///not-a/share/" (posix) "///not-a/share/" (posix) "///not-a/share/" (windows) "///not-a/share/" (windows) "/not-a//share/" (windows) "/not-a//share/" (windows) "\\%10%20\share\" (windows) "\\%10%20\share\" (windows) "//some/share/foo/" (posix) "//some/share/foo/" (posix) "\\\not-a\share" (windows) "\\\not-a\share" (windows) "C:foo" (posix) "C:foo" (posix) "/foo" (windows) "/foo" (windows) "//some/share/" (posix) "//some/share/" (posix) "\\some\share" (windows) "\\some\share" (windows) "C:/foo" (posix) "C:/foo" (posix) "\\127.0.0.1\share\" (windows) "\\127.0.0.1\share\" (windows) "\\some\share\" (windows) "\\some\share\" (windows) "\\some\share" (posix) "\\some\share" (posix) "C:\foo" (windows) "C:\foo" (windows) "\\some$\share\" (windows) "\\some$\share\" (windows) "//some/share/" (windows) "//some/share/" (windows) "//foo" (windows) "//foo" (windows) "//some/share" (posix) "//some/share" (posix) "\\some\share\" (posix) "\\some\share\" (posix) "C:foo" (windows) "C:foo" (windows) "C:\foo" (posix) "C:\foo" (posix) "C:/foo" (windows) "C:/foo" (windows) "\\_.-~!$;=&'()*+,aB1\ !-.@^_`{}~#$%&'()aB1\" (windows) "\\_.-~!$;=&'()*+,aB1\ !-.@^_`{}~#$%&'()aB1\" (windows) "\\not-a\\share" (posix) "\\not-a\\share" (posix) "\\some\share\foo" (windows) "\\some\share\foo" (windows) "//some/share" (windows) "//some/share" (windows) "/foo" (posix) "/foo" (posix) "\\some$\share\" (posix) "\\some$\share\" (posix) "\\\not-a\share" (posix) "\\\not-a\share" (posix) "\\some\share\foo" (posix) "\\some\share\foo" (posix) "//some/share/foo/" (windows) "//some/share/foo/" (windows) "/not-a//share/" (posix) "/not-a//share/" (posix) #anchor "C:foo" (windows) "C:foo" (windows) "C:/foo" (posix) "C:/foo" (posix) "C:\foo" (windows) "C:\foo" (windows) "\foo" (posix) "\foo" (posix) "\\some\share" (posix) "\\some\share" (posix) "//some/share/" (posix) "//some/share/" (posix) "\\some\share\" (windows) "\\some\share\" (windows) "/foo" (posix) "/foo" (posix) "C:foo" (posix) "C:foo" (posix) "//some/share" (windows) "//some/share" (windows) "\foo" (windows) "\foo" (windows) "/foo" (windows) "/foo" (windows) "C:/foo" (windows) "C:/foo" (windows) "//some/share/" (windows) "//some/share/" (windows) "\\some\share" (windows) "\\some\share" (windows) "C:\foo" (posix) "C:\foo" (posix) "\\some\share\" (posix) "\\some\share\" (posix) "//some/share" (posix) "//some/share" (posix) #basename "a/x" (posix) "a/x" (posix) "a/.x" (posix) "a/.x" (posix) "////" (posix) "////" (posix) "/foo/" (windows) "/foo/" (windows) "" (windows) "" (windows) "\" (posix) "\" (posix) "\." (posix) "\." (posix) "/." (posix) "/." (posix) "\foo\bar\baz.cr" (windows) "\foo\bar\baz.cr" (windows) removes suffix "/foo/bar/baz.cr.tmp" (windows) "/foo/bar/baz.cr.tmp" (windows) "\foo\bar\baz.cr" (windows) "\foo\bar\baz.cr" (windows) "\foo/bar\baz.cr" (windows) "\foo/bar\baz.cr" (windows) "/foo/bar/baz.cr.tmp" (windows) "/foo/bar/baz.cr.tmp" (windows) "/foo/bar/baz.cr.tmp" (posix) "/foo/bar/baz.cr.tmp" (posix) "\foo\bar\baz.cr" (posix) "\foo\bar\baz.cr" (posix) "/foo/bar/baz.cr" (posix) "/foo/bar/baz.cr" (posix) "a.x" (windows) "a.x" (windows) "/foo/bar/baz.cr.tmp" (posix) "/foo/bar/baz.cr.tmp" (posix) "/foo/bar/baz.cr" (windows) "/foo/bar/baz.cr" (windows) "\foo\bar\baz.cr.tmp" (posix) "\foo\bar\baz.cr.tmp" (posix) "\foo\bar\baz.cr.tmp" (windows) "\foo\bar\baz.cr.tmp" (windows) "/foo/bar/baz.cr.tmp" (posix) "/foo/bar/baz.cr.tmp" (posix) "\foo/bar\baz.cr" (posix) "\foo/bar\baz.cr" (posix) "/foo/bar/baz.cr.tmp" (windows) "/foo/bar/baz.cr.tmp" (windows) "a.x" (posix) "a.x" (posix) "a.txt" (posix) "a.txt" (posix) "\foo\bar\baz.cr.tmp" (windows) "\foo\bar\baz.cr.tmp" (windows) "\foo\bar\baz.cr.tmp" (posix) "\foo\bar\baz.cr.tmp" (posix) "\foo\bar\baz.cr.tmp" (posix) "\foo\bar\baz.cr.tmp" (posix) "\foo\bar\baz.cr.tmp" (windows) "\foo\bar\baz.cr.tmp" (windows) "a.txt" (windows) "a.txt" (windows) "a/x." (posix) "a/x." (posix) "/foo/" (posix) "/foo/" (posix) "/foo/bar/baz.cr" (windows) "/foo/bar/baz.cr" (windows) "foo" (posix) "foo" (posix) "a/x" (windows) "a/x" (windows) "\." (windows) "\." (windows) "." (posix) "." (posix) "/" (windows) "/" (windows) "\foo\" (posix) "\foo\" (posix) "x" (windows) "x" (windows) "////" (windows) "////" (windows) "a/.x" (windows) "a/.x" (windows) "foo" (windows) "foo" (windows) "/foo/bar/baz.cr" (posix) "/foo/bar/baz.cr" (posix) "/" (posix) "/" (posix) "x" (posix) "x" (posix) "/." (windows) "/." (windows) "." (windows) "." (windows) "\foo\bar\baz.cr" (posix) "\foo\bar\baz.cr" (posix) "\" (windows) "\" (windows) "\foo\" (windows) "\foo\" (windows) "a/x." (windows) "a/x." (windows) "" (posix) "" (posix) #to_posix default: mappings=true "Cfoobar" (windows) default: mappings=true "Cfoobar" (windows) "C:\foo\bar" (windows) "C:\foo\bar" (windows) default: mappings=true "Cfoobar" (posix) default: mappings=true "Cfoobar" (posix) "/" (posix) "/" (posix) "/" (windows) "/" (windows) "Cfoobar" (posix) "Cfoobar" (posix) "C:\foo\bar" (posix) "C:\foo\bar" (posix) "Cfoobar" (windows) "Cfoobar" (windows) "Cfoobar" (windows) "Cfoobar" (windows) "/" (posix) "/" (posix) "foo/bar" (posix) "foo/bar" (posix) "foo/bar" (windows) "foo/bar" (windows) "foo/bar" (posix) "foo/bar" (posix) "C:\foo\bar" (posix) "C:\foo\bar" (posix) "Cfoobar" (posix) "Cfoobar" (posix) "foo/bar" (windows) "foo/bar" (windows) "C:\foo\bar" (windows) "C:\foo\bar" (windows) "/" (windows) "/" (windows) .[] .[] .posix assert assert assert assert assert assert joins components joins components fails with null byte fails with null byte assert assert .new assert assert fails with null byte fails with null byte assert assert assert assert joins components joins components #expand expands a path with multi-byte characters (base: "") "Ångström" (posix) (base: "") "Ångström" (posix) (base: "") "Ångström" (windows) (base: "") "Ångström" (windows) converts a pathname to an absolute pathname, using ~ (home) as base (trailing /) (base: "/tmp/gumby/ddd") "~/a" (posix) (base: "/tmp/gumby/ddd") "~/a" (posix) (base: "") "~" (posix) (base: "") "~" (posix) (base: "/tmp/gumby/ddd") "~/a" (windows) (base: "/tmp/gumby/ddd") "~/a" (windows) (base: "") "~/..badfilename" (posix) (base: "") "~/..badfilename" (posix) (base: "~/b") "~/a" (posix) (base: "~/b") "~/a" (posix) (base: "") "~/.." (windows) (base: "") "~/.." (windows) (base: "") "~/..badfilename" (windows) (base: "") "~/..badfilename" (windows) (base: "/tmp/gumby/ddd") "~" (windows) (base: "/tmp/gumby/ddd") "~" (windows) (base: "~/b") "~/a" (windows) (base: "~/b") "~/a" (windows) (base: "") "~" (windows) (base: "") "~" (windows) (base: "/tmp/gumby/ddd") "~" (posix) (base: "/tmp/gumby/ddd") "~" (posix) (base: "") "~/" (windows) (base: "") "~/" (windows) (base: "") "~/.." (posix) (base: "") "~/.." (posix) (base: "") "~/" (posix) (base: "") "~/" (posix) keeps trailing dots on absolute pathname (base: "") "a.." (posix) (base: "") "a.." (posix) (base: "") "a.." (windows) (base: "") "a.." (windows) (base: "") "a." (posix) (base: "") "a." (posix) (base: "") "a." (windows) (base: "") "a." (windows) ignores name starting with ~ (base: "/current") "~foo.txt" (posix) (base: "/current") "~foo.txt" (posix) (base: "/current") "~foo.txt" (windows) (base: "/current") "~foo.txt" (windows) expands /./dir to /dir (base: "/") "/./dir" (posix) (base: "/") "/./dir" (posix) (base: "/") "/./dir" (windows) (base: "/") "/./dir" (windows) converts a pathname to an absolute pathname (base: "") "a" (windows) (base: "") "a" (windows) (base: "") "" (posix) (base: "") "" (posix) (base: "") "a" (windows) (base: "") "a" (windows) (base: "") "a" (posix) (base: "") "a" (posix) (base: "") "" (windows) (base: "") "" (windows) (base: "") "a" (posix) (base: "") "a" (posix) UNC path (base: "\\foo\bar\") "baz" (posix) (base: "\\foo\bar\") "baz" (posix) (base: "\\foo\bar\") "baz" (windows) (base: "\\foo\bar\") "baz" (windows) (base: "\\foo$\bar\") "baz" (posix) (base: "\\foo$\bar\") "baz" (posix) (base: "\\foo$\bar\") "baz" (windows) (base: "\\foo$\bar\") "baz" (windows) expand path with .. (base: "/tmp") "../../bin" (windows) (base: "/tmp") "../../bin" (windows) (base: "x/../tmp") "../bin" (windows) (base: "x/../tmp") "../bin" (windows) (base: "tmp/x") "../bin" (windows) (base: "tmp/x") "../bin" (windows) (base: "/") "../../bin" (posix) (base: "/") "../../bin" (posix) (base: "/tmp/x") "../../bin" (windows) (base: "/tmp/x") "../../bin" (windows) (base: "/tmp/x") "../../bin" (posix) (base: "/tmp/x") "../../bin" (posix) (base: "x/../tmp") "../bin" (posix) (base: "x/../tmp") "../bin" (posix) (base: "tmp/x") "../bin" (posix) (base: "tmp/x") "../bin" (posix) (base: "/") "../../bin" (windows) (base: "/") "../../bin" (windows) (base: "/tmp") "../../bin" (posix) (base: "/tmp") "../../bin" (posix) expand_path for common unix path gives a full path (base: "") "/tmp/" (windows) (base: "") "/tmp/" (windows) (base: "") "." (windows) (base: "") "." (windows) (base: "") "/tmp/" (posix) (base: "") "/tmp/" (posix) (base: "") "." (posix) (base: "") "." (posix) (base: "") "/default/base" (windows) (base: "") "/default/base" (windows) (base: "") "/default/base" (posix) (base: "") "/default/base" (posix) (base: "") "" (posix) (base: "") "" (posix) (base: "") "./////" (windows) (base: "") "./////" (windows) (base: "") "" (windows) (base: "") "" (windows) (base: "") "/tmp/../../../tmp" (windows) (base: "") "/tmp/../../../tmp" (windows) (base: "") "./////" (posix) (base: "") "./////" (posix) (base: "") "/tmp/../../../tmp" (posix) (base: "") "/tmp/../../../tmp" (posix) converts a pathname to an absolute pathname, using ~ (home) as base (HOME=/) (base: "") "~/..badfilename" (windows) (base: "") "~/..badfilename" (windows) (base: "") ".." (windows) (base: "") ".." (windows) (base: "/tmp/gumby/ddd") "~" (windows) (base: "/tmp/gumby/ddd") "~" (windows) (base: "/tmp/gumby/ddd") "~/a" (windows) (base: "/tmp/gumby/ddd") "~/a" (windows) (base: "") "~/..badfilename" (posix) (base: "") "~/..badfilename" (posix) (base: "") "~/" (posix) (base: "") "~/" (posix) (base: "~/b") "~/a" (windows) (base: "~/b") "~/a" (windows) (base: "/tmp/gumby/ddd") "~/a" (posix) (base: "/tmp/gumby/ddd") "~/a" (posix) (base: "/tmp/gumby/ddd") "~" (posix) (base: "/tmp/gumby/ddd") "~" (posix) (base: "~/b") "~/a" (posix) (base: "~/b") "~/a" (posix) (base: "") ".." (posix) (base: "") ".." (posix) (base: "") "~" (posix) (base: "") "~" (posix) (base: "") "~/" (windows) (base: "") "~/" (windows) (base: "") "~" (windows) (base: "") "~" (windows) supports ~\ for Windows paths only (base: "") "~\a" (windows) (base: "") "~\a" (windows) (base: "") "~\a" (posix) (base: "") "~\a" (posix) checks all possible types for expand(home:) (base: "") "~/a" (posix) (base: "") "~/a" (posix) (base: "") "~/a" (posix) (base: "") "~/a" (posix) (base: "") "~/a" (posix) (base: "") "~/a" (posix) (base: "") "~/a" (windows) (base: "") "~/a" (windows) (base: "") "~/a" (windows) (base: "") "~/a" (windows) (base: "") "~/a" (windows) (base: "") "~/a" (windows) replaces multiple / with a single / (base: "") "////some/path" (posix) (base: "") "////some/path" (posix) (base: "") "/some////path" (posix) (base: "") "/some////path" (posix) (base: "") "//some/path" (windows) (base: "") "//some/path" (windows) (base: "") "////some/path" (windows) (base: "") "////some/path" (windows) (base: "") "/some////path" (windows) (base: "") "/some////path" (windows) (base: "") "//some/path" (posix) (base: "") "//some/path" (posix) converts a pathname to an absolute pathname, using ~ (home) as base (base: "") "~" (windows) (base: "") "~" (windows) (base: "/tmp/gumby/ddd") "~/a" (posix) (base: "/tmp/gumby/ddd") "~/a" (posix) (base: "") "~/..badfilename" (windows) (base: "") "~/..badfilename" (windows) (base: "/tmp/gumby/ddd") "~" (posix) (base: "/tmp/gumby/ddd") "~" (posix) (base: "~/b") "~/a" (windows) (base: "~/b") "~/a" (windows) (base: "") "~/..badfilename" (posix) (base: "") "~/..badfilename" (posix) (base: "") "~" (posix) (base: "") "~" (posix) (base: "") "~/" (posix) (base: "") "~/" (posix) (base: "~/b") "~/a" (posix) (base: "~/b") "~/a" (posix) (base: "") ".." (windows) (base: "") ".." (windows) (base: "") ".." (posix) (base: "") ".." (posix) (base: "") "~/" (windows) (base: "") "~/" (windows) (base: "/tmp/gumby/ddd") "~" (windows) (base: "/tmp/gumby/ddd") "~" (windows) (base: "/tmp/gumby/ddd") "~/a" (windows) (base: "/tmp/gumby/ddd") "~/a" (windows) converts a pathname to an absolute pathname, using a complete path (base: "C:\tmp") "a" (posix) (base: "C:\tmp") "a" (posix) (base: "C:\tmp") "" (windows) (base: "C:\tmp") "" (windows) (base: "C:\tmp\xxx") "../a" (windows) (base: "C:\tmp\xxx") "../a" (windows) (base: "C:\tmp") "" (posix) (base: "C:\tmp") "" (posix) (base: "/tmp") "a" (posix) (base: "/tmp") "a" (posix) (base: "C:\tmp\xxx") "../a" (posix) (base: "C:\tmp\xxx") "../a" (posix) assert assert (base: "/") "." (posix) (base: "/") "." (posix) (base: "/tmp") "" (posix) (base: "/tmp") "" (posix) (base: "C:\tmp\xxx") "../a" (windows) (base: "C:\tmp\xxx") "../a" (windows) (base: "/tmp") "" (windows) (base: "/tmp") "" (windows) (base: "/tmp/xxx") "../a" (posix) (base: "/tmp/xxx") "../a" (posix) (base: "C:\tmp") "a" (windows) (base: "C:\tmp") "a" (windows) (base: "/tmp/xxx") "../a" (windows) (base: "/tmp/xxx") "../a" (windows) (base: "/tmp/xxx") "../a" (windows) (base: "/tmp/xxx") "../a" (windows) (base: "/") "." (windows) (base: "/") "." (windows) (base: "/tmp/xxx") "../a" (posix) (base: "/tmp/xxx") "../a" (posix) (base: "/tmp") "a" (windows) (base: "/tmp") "a" (windows) (base: "C:\tmp\xxx") "../a" (posix) (base: "C:\tmp\xxx") "../a" (posix) with drive (base: "D:\") "foo" (windows) (base: "D:\") "foo" (windows) (base: "D:\") "C:\foo" (posix) (base: "D:\") "C:\foo" (posix) (base: "D:\") "C:\" (windows) (base: "D:\") "C:\" (windows) (base: "D:\") "C:/foo" (posix) (base: "D:\") "C:/foo" (posix) (base: "D:\") "C:\" (windows) (base: "D:\") "C:\" (windows) (base: "D:") "foo" (posix) (base: "D:") "foo" (posix) (base: "D:") "C:" (windows) (base: "D:") "C:" (windows) (base: "D:\") "C:foo" (windows) (base: "D:\") "C:foo" (windows) (base: "D:\") "C:\" (posix) (base: "D:\") "C:\" (posix) (base: "D:/") "/foo" (posix) (base: "D:/") "/foo" (posix) (base: "D:\") "/foo" (windows) (base: "D:\") "/foo" (windows) (base: "D:/") "C:\foo" (windows) (base: "D:/") "C:\foo" (windows) (base: "D:") "\foo" (windows) (base: "D:") "\foo" (windows) (base: "D:/") "foo" (windows) (base: "D:/") "foo" (windows) (base: "D:\") "C:\foo" (windows) (base: "D:\") "C:\foo" (windows) (base: "D:\") "C:\foo" (windows) (base: "D:\") "C:\foo" (windows) (base: "D:/") "C:\" (windows) (base: "D:/") "C:\" (windows) (base: "D:\") "\foo" (windows) (base: "D:\") "\foo" (windows) (base: "D:") "C:/" (windows) (base: "D:") "C:/" (windows) (base: "D:") "C:foo" (windows) (base: "D:") "C:foo" (windows) (base: "D:\") "foo" (windows) (base: "D:\") "foo" (windows) (base: "D:\") "C:foo" (posix) (base: "D:\") "C:foo" (posix) (base: "D:") "C:/" (posix) (base: "D:") "C:/" (posix) (base: "D:") "/foo" (posix) (base: "D:") "/foo" (posix) (base: "D:/") "C:/" (windows) (base: "D:/") "C:/" (windows) (base: "D:\") "C:/" (windows) (base: "D:\") "C:/" (windows) (base: "D:\") "C:foo" (posix) (base: "D:\") "C:foo" (posix) (base: "D:\") "C:/" (windows) (base: "D:\") "C:/" (windows) (base: "D:") "C:/foo" (windows) (base: "D:") "C:/foo" (windows) (base: "D:\") "C:/foo" (windows) (base: "D:\") "C:/foo" (windows) (base: "D:\") "/foo" (posix) (base: "D:\") "/foo" (posix) (base: "D:/") "C:/foo" (windows) (base: "D:/") "C:/foo" (windows) (base: "D:\") "C:/" (posix) (base: "D:\") "C:/" (posix) (base: "D:/") "\foo" (posix) (base: "D:/") "\foo" (posix) (base: "D:") "\foo" (posix) (base: "D:") "\foo" (posix) (base: "D:/") "C:" (posix) (base: "D:/") "C:" (posix) (base: "D:/") "C:\foo" (posix) (base: "D:/") "C:\foo" (posix) (base: "D:") "C:\" (windows) (base: "D:") "C:\" (windows) (base: "D:\") "C:/" (posix) (base: "D:\") "C:/" (posix) (base: "D:/") "C:/foo" (posix) (base: "D:/") "C:/foo" (posix) (base: "D:") "C:/foo" (posix) (base: "D:") "C:/foo" (posix) (base: "D:\") "C:foo" (windows) (base: "D:\") "C:foo" (windows) (base: "D:") "C:\foo" (windows) (base: "D:") "C:\foo" (windows) (base: "D:/") "C:/" (posix) (base: "D:/") "C:/" (posix) (base: "D:") "C:\" (posix) (base: "D:") "C:\" (posix) (base: "D:\") "foo" (posix) (base: "D:\") "foo" (posix) (base: "D:\") "C:\" (posix) (base: "D:\") "C:\" (posix) (base: "D:/") "C:foo" (posix) (base: "D:/") "C:foo" (posix) (base: "D:/") "C:" (windows) (base: "D:/") "C:" (windows) (base: "D:/") "C:foo" (windows) (base: "D:/") "C:foo" (windows) (base: "D:") "C:\foo" (posix) (base: "D:") "C:\foo" (posix) (base: "D:\") "C:" (posix) (base: "D:\") "C:" (posix) (base: "D:\") "C:\foo" (posix) (base: "D:\") "C:\foo" (posix) (base: "D:\") "\foo" (windows) (base: "D:\") "\foo" (windows) (base: "D:\") "\foo" (posix) (base: "D:\") "\foo" (posix) (base: "D:\") "\foo" (posix) (base: "D:\") "\foo" (posix) (base: "D:") "C:foo" (posix) (base: "D:") "C:foo" (posix) (base: "D:") "foo" (windows) (base: "D:") "foo" (windows) (base: "D:\") "C:/foo" (windows) (base: "D:\") "C:/foo" (windows) (base: "D:\") "C:" (windows) (base: "D:\") "C:" (windows) (base: "D:\") "C:" (windows) (base: "D:\") "C:" (windows) (base: "D:\") "foo" (posix) (base: "D:\") "foo" (posix) (base: "D:/") "C:\" (posix) (base: "D:/") "C:\" (posix) (base: "D:/") "foo" (posix) (base: "D:/") "foo" (posix) (base: "D:") "C:" (posix) (base: "D:") "C:" (posix) (base: "D:\") "C:/foo" (posix) (base: "D:\") "C:/foo" (posix) (base: "D:/") "\foo" (windows) (base: "D:/") "\foo" (windows) (base: "D:/") "/foo" (windows) (base: "D:/") "/foo" (windows) (base: "D:") "/foo" (windows) (base: "D:") "/foo" (windows) (base: "D:\") "C:" (posix) (base: "D:\") "C:" (posix) doesn't expand ~ doesn't expand ~ converts a pathname to an absolute pathname, Ruby-Talk:18512 (base: "") ".a" (windows) (base: "") ".a" (windows) (base: "") "a../b" (windows) (base: "") "a../b" (windows) (base: "") "..a" (posix) (base: "") "..a" (posix) (base: "") "..a" (windows) (base: "") "..a" (windows) (base: "") ".a" (posix) (base: "") ".a" (posix) (base: "") "a../b" (posix) (base: "") "a../b" (posix) #absolute? "C:/" (windows) "C:/" (windows) "foo" (posix) "foo" (posix) "foo" (windows) "foo" (windows) "\\some\share" (posix) "\\some\share" (posix) "C:" (posix) "C:" (posix) "C:" (windows) "C:" (windows) "./foo" (posix) "./foo" (posix) "c:\\" (windows) "c:\\" (windows) "//some/share/" (windows) "//some/share/" (windows) "C:/foo/bar" (posix) "C:/foo/bar" (posix) "\foo" (posix) "\foo" (posix) "C:/" (posix) "C:/" (posix) "/foo" (windows) "/foo" (windows) "\\some\share" (windows) "\\some\share" (windows) "C:\foo" (windows) "C:\foo" (windows) "c:\\" (posix) "c:\\" (posix) "foo" (windows) "foo" (windows) "/foo" (posix) "/foo" (posix) "foo" (posix) "foo" (posix) "/./foo" (windows) "/./foo" (windows) "./foo" (windows) "./foo" (windows) "C:/foo" (posix) "C:/foo" (posix) "\.\foo" (posix) "\.\foo" (posix) "\\some\share\" (posix) "\\some\share\" (posix) "\.\foo" (windows) "\.\foo" (windows) "C:/foo" (windows) "C:/foo" (windows) "//some/share" (windows) "//some/share" (windows) "~\foo" (posix) "~\foo" (posix) "C:\" (posix) "C:\" (posix) "~/foo" (windows) "~/foo" (windows) "C:/foo/bar" (windows) "C:/foo/bar" (windows) "\foo" (windows) "\foo" (windows) "C:\" (windows) "C:\" (windows) ".\foo" (posix) ".\foo" (posix) "\\some\share\" (windows) "\\some\share\" (windows) "//some/share/" (posix) "//some/share/" (posix) ".\foo" (windows) ".\foo" (windows) "/./foo" (posix) "/./foo" (posix) "~/foo" (posix) "~/foo" (posix) "~\foo" (windows) "~\foo" (windows) "C:\foo" (posix) "C:\foo" (posix) "//some/share" (posix) "//some/share" (posix) #join resolving "/a" "" (posix) resolving "/a" "" (posix) resolving "bar/baz" "foo" (posix) resolving "bar/baz" "foo" (posix) resolving "{"bar", "baz"}" "foo" (windows) resolving "{"bar", "baz"}" "foo" (windows) resolving ["/"] "" (windows) resolving ["/"] "" (windows) resolving "{"/", "bar"}" "foo" (posix) resolving "{"/", "bar"}" "foo" (posix) resolving ["bar\baz"] "foo" (posix) resolving ["bar\baz"] "foo" (posix) resolving ["a"].each "/" (posix) resolving ["a"].each "/" (posix) resolving ["bar"] "\\\\foo" (posix) resolving ["bar"] "\\\\foo" (posix) resolving [""] "/" (windows) resolving [""] "/" (windows) resolving ["\"].each "foo" (windows) resolving ["\"].each "foo" (windows) resolving ["Program Files"].each "c:" (windows) resolving ["Program Files"].each "c:" (windows) resolving ["\"] "foo" (windows) resolving ["\"] "foo" (windows) resolving ["/bar"] "/foo/" (posix) resolving ["/bar"] "/foo/" (posix) resolving ["Program Files"].each "c:\" (posix) resolving ["Program Files"].each "c:\" (posix) resolving "Program Files" "c:/" (windows) resolving "Program Files" "c:/" (windows) resolving "//bar" "///foo" (windows) resolving "//bar" "///foo" (windows) resolving ["a"] "/" (posix) resolving ["a"] "/" (posix) resolving "{"\\", "bar"}" "foo" (windows) resolving "{"\\", "bar"}" "foo" (windows) resolving "a" "" (posix) resolving "a" "" (posix) resolving ["//bar"] "///foo" (posix) resolving ["//bar"] "///foo" (posix) resolving ["/bar"] "/foo/" (windows) resolving ["/bar"] "/foo/" (windows) resolving "{"bar", ""}" "foo" (posix) resolving "{"bar", ""}" "foo" (posix) resolving "\" "foo" (windows) resolving "\" "foo" (windows) resolving "\\bar" "\\\foo" (windows) resolving "\\bar" "\\\foo" (windows) resolving ["a"].each "/" (windows) resolving ["a"].each "/" (windows) resolving "Program Files" "c:\" (windows) resolving "Program Files" "c:\" (windows) resolving ["bar\baz"].each "foo" (windows) resolving ["bar\baz"].each "foo" (windows) resolving "{"/", "bar"}" "foo" (windows) resolving "{"/", "bar"}" "foo" (windows) resolving [""].each "/" (windows) resolving [""].each "/" (windows) resolving ["//bar"] "///foo" (windows) resolving ["//bar"] "///foo" (windows) resolving ["Program Files"].each "c:\" (windows) resolving ["Program Files"].each "c:\" (windows) resolving "a" "/" (posix) resolving "a" "/" (posix) resolving ["bar/baz"].each "foo" (windows) resolving ["bar/baz"].each "foo" (windows) resolving ["bar"] "\\\\foo" (windows) resolving ["bar"] "\\\\foo" (windows) resolving ["/a"].each "" (windows) resolving ["/a"].each "" (windows) resolving "bar\baz" "foo" (windows) resolving "bar\baz" "foo" (windows) resolving [""].each "" (posix) resolving [""].each "" (posix) resolving "/bar" "/foo/" (posix) resolving "/bar" "/foo/" (posix) resolving ["bar"].each "\\\\foo" (posix) resolving ["bar"].each "\\\\foo" (posix) resolving "a" "\" (windows) resolving "a" "\" (windows) resolving "bar\baz" "foo" (windows) resolving "bar\baz" "foo" (windows) resolving "\a" "" (posix) resolving "\a" "" (posix) resolving "{"/bar/", "/baz/"}" "/foo/" (posix) resolving "{"/bar/", "/baz/"}" "/foo/" (posix) resolving ["a"].each "\" (windows) resolving ["a"].each "\" (windows) resolving "{"\\", "\\", "bar"}" "foo" (posix) resolving "{"\\", "\\", "bar"}" "foo" (posix) resolving ["/"].each "foo" (posix) resolving ["/"].each "foo" (posix) resolving [""] "" (posix) resolving [""] "" (posix) resolving "bar\baz" "foo" (posix) resolving "bar\baz" "foo" (posix) resolving "{"\\foo", "\\", "bar\\", "\\"}" "\" (posix) resolving "{"\\foo", "\\", "bar\\", "\\"}" "\" (posix) resolving "{"\\\\bar\\\\", "baz\\\\\\"}" "foo" (windows) resolving "{"\\\\bar\\\\", "baz\\\\\\"}" "foo" (windows) resolving ["/"].each "foo" (windows) resolving ["/"].each "foo" (windows) resolving ["\\bar"] "\\\foo" (posix) resolving ["\\bar"] "\\\foo" (posix) resolving ["a"] "" (windows) resolving ["a"] "" (windows) resolving ["\a"].each "" (posix) resolving ["\a"].each "" (posix) resolving ["Program Files"] "c:/" (posix) resolving ["Program Files"] "c:/" (posix) resolving ["/"] "foo" (windows) resolving ["/"] "foo" (windows) resolving ["\a"].each "" (windows) resolving ["\a"].each "" (windows) resolving ["a"].each "" (windows) resolving ["a"].each "" (windows) resolving "{"bar", "baz"}" "foo" (posix) resolving "{"bar", "baz"}" "foo" (posix) resolving "/a" "" (windows) resolving "/a" "" (windows) resolving "{"/", "/", "bar"}" "foo" (posix) resolving "{"/", "/", "bar"}" "foo" (posix) resolving "" "" (posix) resolving "" "" (posix) resolving "bar" "\\\\foo" (posix) resolving "bar" "\\\\foo" (posix) resolving "{"\\foo", "\\", "bar\\", "\\"}" "\" (windows) resolving "{"\\foo", "\\", "bar\\", "\\"}" "\" (windows) resolving ["/"].each "" (windows) resolving ["/"].each "" (windows) resolving ["bar"].each "///foo" (posix) resolving ["bar"].each "///foo" (posix) resolving ["bar/baz"] "foo" (windows) resolving ["bar/baz"] "foo" (windows) resolving "{"//bar//", "baz///"}" "foo" (windows) resolving "{"//bar//", "baz///"}" "foo" (windows) resolving ["Program Files"].each "c:/" (posix) resolving ["Program Files"].each "c:/" (posix) resolving "Program Files" "c:" (windows) resolving "Program Files" "c:" (windows) resolving "bar" "///foo" (posix) resolving "bar" "///foo" (posix) resolving "" "" (windows) resolving "" "" (windows) resolving "{"/bar/", "/baz/"}" "/foo/" (windows) resolving "{"/bar/", "/baz/"}" "/foo/" (windows) resolving "a" "\" (posix) resolving "a" "\" (posix) resolving "/" "" (posix) resolving "/" "" (posix) resolving ["Program Files"] "c:\" (windows) resolving ["Program Files"] "c:\" (windows) resolving ["/a"] "" (windows) resolving ["/a"] "" (windows) resolving ["bar"] "///foo" (posix) resolving ["bar"] "///foo" (posix) resolving "/bar" "/foo/" (windows) resolving "/bar" "/foo/" (windows) resolving ["a"] "\" (posix) resolving ["a"] "\" (posix) resolving ["a"] "\" (windows) resolving ["a"] "\" (windows) resolving ["/"] "" (posix) resolving ["/"] "" (posix) resolving "a" "/" (windows) resolving "a" "/" (windows) resolving "{"/foo", "/", "bar/", "/"}" "/" (posix) resolving "{"/foo", "/", "bar/", "/"}" "/" (posix) resolving ["\bar"].each "\foo\" (posix) resolving ["\bar"].each "\foo\" (posix) resolving [""] "/" (posix) resolving [""] "/" (posix) resolving ["a"].each "" (posix) resolving ["a"].each "" (posix) resolving "{"/", "/", "bar"}" "foo" (windows) resolving "{"/", "/", "bar"}" "foo" (windows) resolving "bar\baz" "foo" (posix) resolving "bar\baz" "foo" (posix) resolving ["//bar"].each "///foo" (windows) resolving ["//bar"].each "///foo" (windows) resolving "a" "" (windows) resolving "a" "" (windows) resolving ["\\bar"] "\\\foo" (windows) resolving ["\\bar"] "\\\foo" (windows) resolving "{"\\\\bar\\\\", "baz\\\\\\"}" "foo" (posix) resolving "{"\\\\bar\\\\", "baz\\\\\\"}" "foo" (posix) resolving ["Program Files"].each "c:/" (windows) resolving ["Program Files"].each "c:/" (windows) resolving ["\"].each "foo" (posix) resolving ["\"].each "foo" (posix) resolving ["\bar"] "\foo\" (posix) resolving ["\bar"] "\foo\" (posix) resolving ["bar/baz"].each "foo" (posix) resolving ["bar/baz"].each "foo" (posix) resolving ["\a"] "" (posix) resolving ["\a"] "" (posix) resolving "Program Files" "c:\" (posix) resolving "Program Files" "c:\" (posix) resolving "Program Files" "c:" (posix) resolving "Program Files" "c:" (posix) resolving ["Program Files"] "c:" (posix) resolving ["Program Files"] "c:" (posix) resolving "\bar" "\foo\" (windows) resolving "\bar" "\foo\" (windows) resolving "{"bar", ""}" "foo" (windows) resolving "{"bar", ""}" "foo" (windows) resolving ["\a"] "" (windows) resolving ["\a"] "" (windows) resolving ["\\bar"].each "\\\foo" (posix) resolving ["\\bar"].each "\\\foo" (posix) resolving ["a"] "/" (windows) resolving ["a"] "/" (windows) resolving ["/bar"].each "/foo/" (windows) resolving ["/bar"].each "/foo/" (windows) resolving ["bar\baz"].each "foo" (windows) resolving ["bar\baz"].each "foo" (windows) resolving ["bar\baz"] "foo" (windows) resolving ["bar\baz"] "foo" (windows) resolving "/" "" (windows) resolving "/" "" (windows) resolving "" "/" (posix) resolving "" "/" (posix) resolving ["Program Files"] "c:\" (posix) resolving ["Program Files"] "c:\" (posix) resolving ["bar\baz"].each "foo" (posix) resolving ["bar\baz"].each "foo" (posix) resolving ["bar/baz"] "foo" (posix) resolving ["bar/baz"] "foo" (posix) resolving "{"/foo", "/", "bar/", "/"}" "/" (windows) resolving "{"/foo", "/", "bar/", "/"}" "/" (windows) resolving ["\\bar"].each "\\\foo" (windows) resolving ["\\bar"].each "\\\foo" (windows) resolving ["/a"].each "" (posix) resolving ["/a"].each "" (posix) resolving "\\bar" "\\\foo" (posix) resolving "\\bar" "\\\foo" (posix) resolving "{"bar", ""}" "foo" (posix) resolving "{"bar", ""}" "foo" (posix) resolving ["/"] "foo" (posix) resolving ["/"] "foo" (posix) resolving "/" "foo" (windows) resolving "/" "foo" (windows) resolving [""].each "/" (posix) resolving [""].each "/" (posix) resolving ["Program Files"] "c:/" (windows) resolving ["Program Files"] "c:/" (windows) resolving "{"\\bar\\", "\\baz\\"}" "\foo\" (windows) resolving "{"\\bar\\", "\\baz\\"}" "\foo\" (windows) resolving "//bar" "///foo" (posix) resolving "//bar" "///foo" (posix) resolving [""].each "" (windows) resolving [""].each "" (windows) resolving "\bar" "\foo\" (posix) resolving "\bar" "\foo\" (posix) resolving ["\"] "foo" (posix) resolving ["\"] "foo" (posix) resolving ["/a"] "" (posix) resolving ["/a"] "" (posix) resolving ["a"] "" (posix) resolving ["a"] "" (posix) resolving "{"\\", "bar"}" "foo" (posix) resolving "{"\\", "bar"}" "foo" (posix) resolving "{"//bar//", "baz///"}" "foo" (posix) resolving "{"//bar//", "baz///"}" "foo" (posix) resolving ["Program Files"] "c:" (windows) resolving ["Program Files"] "c:" (windows) resolving "Program Files" "c:/" (posix) resolving "Program Files" "c:/" (posix) resolving ["/"].each "" (posix) resolving ["/"].each "" (posix) resolving ["bar\baz"].each "foo" (posix) resolving ["bar\baz"].each "foo" (posix) resolving ["bar"].each "\\\\foo" (windows) resolving ["bar"].each "\\\\foo" (windows) resolving ["bar\baz"] "foo" (windows) resolving ["bar\baz"] "foo" (windows) resolving "{"\\", "\\", "bar"}" "foo" (windows) resolving "{"\\", "\\", "bar"}" "foo" (windows) resolving "{"bar", ""}" "foo" (windows) resolving "{"bar", ""}" "foo" (windows) resolving ["Program Files"].each "c:" (posix) resolving ["Program Files"].each "c:" (posix) resolving ["\bar"] "\foo\" (windows) resolving ["\bar"] "\foo\" (windows) resolving "{"\\bar\\", "\\baz\\"}" "\foo\" (posix) resolving "{"\\bar\\", "\\baz\\"}" "\foo\" (posix) resolving "" "/" (windows) resolving "" "/" (windows) resolving ["//bar"].each "///foo" (posix) resolving ["//bar"].each "///foo" (posix) resolving ["a"].each "\" (posix) resolving ["a"].each "\" (posix) resolving "/" "foo" (posix) resolving "/" "foo" (posix) resolving ["bar"].each "///foo" (windows) resolving ["bar"].each "///foo" (windows) resolving "bar" "\\\\foo" (windows) resolving "bar" "\\\\foo" (windows) resolving [""] "" (windows) resolving [""] "" (windows) resolving ["bar\baz"] "foo" (posix) resolving ["bar\baz"] "foo" (posix) resolving "\a" "" (windows) resolving "\a" "" (windows) resolving "\" "foo" (posix) resolving "\" "foo" (posix) resolving ["\bar"].each "\foo\" (windows) resolving ["\bar"].each "\foo\" (windows) resolving "bar" "///foo" (windows) resolving "bar" "///foo" (windows) resolving ["/bar"].each "/foo/" (posix) resolving ["/bar"].each "/foo/" (posix) resolving "bar/baz" "foo" (windows) resolving "bar/baz" "foo" (windows) resolving ["bar"] "///foo" (windows) resolving ["bar"] "///foo" (windows) #parents "foo/bar/." (posix) "foo/bar/." (posix) "/foo" (windows) "/foo" (windows) "foo/../bar/" (windows) "foo/../bar/" (windows) "./foo" (posix) "./foo" (posix) "foo/bar/." (windows) "foo/bar/." (windows) "foo/./bar/." (posix) "foo/./bar/." (posix) ".\foo" (windows) ".\foo" (windows) "." (windows) "." (windows) "C:\Users\foo\bar.cr" (windows) "C:\Users\foo\bar.cr" (windows) "foo\bar\" (windows) "foo\bar\" (windows) "" (posix) "" (posix) "foo/bar/../." (windows) "foo/bar/../." (windows) "/" (posix) "/" (posix) "m/" (posix) "m/" (posix) "m/.gitignore" (windows) "m/.gitignore" (windows) "\" (posix) "\" (posix) "\Users\foo\bar.cr" (windows) "\Users\foo\bar.cr" (windows) "foo/../bar/." (windows) "foo/../bar/." (windows) "/Users/foo/bar.cr" (posix) "/Users/foo/bar.cr" (posix) "C:folder" (posix) "C:folder" (posix) "foo/bar/" (windows) "foo/bar/" (windows) "\Users/foo\bar.cr" (posix) "\Users/foo\bar.cr" (posix) "\Users\foo\bar.cr" (posix) "\Users\foo\bar.cr" (posix) "foo" (posix) "foo" (posix) "C:\" (posix) "C:\" (posix) "foo\bar\" (posix) "foo\bar\" (posix) "foo/./bar/" (posix) "foo/./bar/" (posix) "Users/foo/bar.cr" (posix) "Users/foo/bar.cr" (posix) "foo/bar/." (windows) "foo/bar/." (windows) "" (windows) "" (windows) "/" (windows) "/" (windows) "C:\" (windows) "C:\" (windows) "m/.gitignore" (posix) "m/.gitignore" (posix) "foo\" (windows) "foo\" (windows) "////" (windows) "////" (windows) "foo/./bar/" (windows) "foo/./bar/" (windows) "m//" (windows) "m//" (windows) "C:" (windows) "C:" (windows) "foo/../bar/." (posix) "foo/../bar/." (posix) "foo/bar/." (posix) "foo/bar/." (posix) "m" (windows) "m" (windows) "C:\." (windows) "C:\." (windows) "foo/bar/.." (posix) "foo/bar/.." (posix) "foo/bar/./." (posix) "foo/bar/./." (posix) "/m/" (posix) "/m/" (posix) "m//a/b" (posix) "m//a/b" (posix) "C:/" (windows) "C:/" (windows) "C:\\folder" (posix) "C:\\folder" (posix) "foo" (windows) "foo" (windows) "C:\\folder" (windows) "C:\\folder" (windows) "foo\" (posix) "foo\" (posix) "foo/../bar/" (posix) "foo/../bar/" (posix) "/." (posix) "/." (posix) "foo/bar/.." (windows) "foo/bar/.." (windows) "." (posix) "." (posix) "C:folder" (windows) "C:folder" (windows) "C:\Users\foo\bar.cr" (posix) "C:\Users\foo\bar.cr" (posix) "C:" (posix) "C:" (posix) "C:\folder" (posix) "C:\folder" (posix) "foo/" (posix) "foo/" (posix) "foo/bar/../." (posix) "foo/bar/../." (posix) "////" (posix) "////" (posix) "m//" (posix) "m//" (posix) "m" (posix) "m" (posix) "foo/./bar/." (windows) "foo/./bar/." (windows) ".\foo" (posix) ".\foo" (posix) "/m" (windows) "/m" (windows) "/foo" (posix) "/foo" (posix) "m//a/b" (windows) "m//a/b" (windows) "foo/bar/" (posix) "foo/bar/" (posix) "m/" (windows) "m/" (windows) "foo/" (windows) "foo/" (windows) "/." (windows) "/." (windows) "/Users/foo/bar.cr" (windows) "/Users/foo/bar.cr" (windows) "/m" (posix) "/m" (posix) "./foo" (windows) "./foo" (windows) "C:\." (posix) "C:\." (posix) "C:/" (posix) "C:/" (posix) "\Users/foo\bar.cr" (windows) "\Users/foo\bar.cr" (windows) "foo/bar/./." (windows) "foo/bar/./." (windows) "\" (windows) "\" (windows) "C:\folder" (windows) "C:\folder" (windows) "/m/" (windows) "/m/" (windows) "Users/foo/bar.cr" (windows) "Users/foo/bar.cr" (windows) #relative_to? on "/a/b": "/c/d" (windows) on "/a/b": "/c/d" (windows) on "./a/b": "a/b" (windows) on "./a/b": "a/b" (windows) on "a/b": "./a/b" (posix) on "a/b": "./a/b" (posix) on ".": ".." (posix) on ".": ".." (posix) on "a/b": "a/b/c/d" (posix) on "a/b": "a/b/c/d" (posix) on "a/b": "a/b/c/d" (windows) on "a/b": "a/b/c/d" (windows) on "a": "/a" (windows) on "a": "/a" (windows) on "a/b/c/d": "a/b/" (posix) on "a/b/c/d": "a/b/" (posix) on "/a/b/c/d": "/a/b/" (posix) on "/a/b/c/d": "/a/b/" (posix) on "/a/b": "/a/b" (posix) on "/a/b": "/a/b" (posix) on "a/b/c": "a/c/d" (posix) on "a/b/c": "a/c/d" (posix) on "a/b": "a/b/." (windows) on "a/b": "a/b/." (windows) on "./a/b": "a/b" (posix) on "./a/b": "a/b" (posix) on "a/b": "a/b/c" (windows) on "a/b": "a/b/c" (windows) on "/": "/a/c" (posix) on "/": "/a/c" (posix) on "/a/b/../c": "/a/b" (windows) on "/a/b/../c": "/a/b" (windows) on ".": "a/b" (windows) on ".": "a/b" (windows) on "/a/b": "/a/b/../c" (posix) on "/a/b": "/a/b/../c" (posix) on "a/b": "c/d" (posix) on "a/b": "c/d" (posix) on "a/b/.": "a/b" (windows) on "a/b/.": "a/b" (windows) on "/a/b": "/a/b" (windows) on "/a/b": "/a/b" (windows) on "a/b/.": "a/b" (posix) on "a/b/.": "a/b" (posix) on "a/b": "a/b/c" (posix) on "a/b": "a/b/c" (posix) on "/a/b": "/a/b/." (windows) on "/a/b": "/a/b/." (windows) on "../../a/b": "../../a/b/c/d" (windows) on "../../a/b": "../../a/b/c/d" (windows) on "/a/b/.": "/a/b" (windows) on "/a/b/.": "/a/b" (windows) on "a": "/a" (posix) on "a": "/a" (posix) on "/a/b/../c": "/a/b" (posix) on "/a/b/../c": "/a/b" (posix) on "/ab/cd": "/ab/c" (windows) on "/ab/cd": "/ab/c" (windows) on "a/b": "a/b/../c" (posix) on "a/b": "a/b/../c" (posix) on "a/b": "c/d" (windows) on "a/b": "c/d" (windows) on "/a/b": "/a/b/c/d" (posix) on "/a/b": "/a/b/c/d" (posix) on "/a/b": "/a/b/c/d" (windows) on "/a/b": "/a/b/c/d" (windows) on "a/b/../c": "a/b" (posix) on "a/b/../c": "a/b" (posix) on "/": "/" (windows) on "/": "/" (windows) on "/a/b/c/d": "/a/b/" (windows) on "/a/b/c/d": "/a/b/" (windows) on "ab/cd": "ab/c" (windows) on "ab/cd": "ab/c" (windows) on "/a/b/c/d": "/a/b" (posix) on "/a/b/c/d": "/a/b" (posix) on "a/b/c/d": "a/b/" (windows) on "a/b/c/d": "a/b/" (windows) on "/a/b": "/c/d" (posix) on "/a/b": "/c/d" (posix) on "a/b/c/d": "a/b" (posix) on "a/b/c/d": "a/b" (posix) on "a/b": "a/b" (posix) on "a/b": "a/b" (posix) on "..": "a" (posix) on "..": "a" (posix) on "..": "." (windows) on "..": "." (windows) on "/ab/cd": "/ab/c" (posix) on "/ab/cd": "/ab/c" (posix) on "..": "." (posix) on "..": "." (posix) on "a/b": "a/b/." (posix) on "a/b": "a/b/." (posix) on "/": "/a/c" (windows) on "/": "/a/c" (windows) on "/a/b/c/d/": "/a/b" (windows) on "/a/b/c/d/": "/a/b" (windows) on "/a/b/c/d/": "/a/b/" (windows) on "/a/b/c/d/": "/a/b/" (windows) on ".": "a/b" (posix) on ".": "a/b" (posix) on "/a/b/c": "/a/c/d" (windows) on "/a/b/c": "/a/c/d" (windows) on "/a/b": "/a/b/../c" (windows) on "/a/b": "/a/b/../c" (windows) on "ab/cd": "ab/cde" (windows) on "ab/cd": "ab/cde" (windows) on "a/b/c/d/": "a/b/" (posix) on "a/b/c/d/": "a/b/" (posix) on "a/b/c/d": "a/b" (windows) on "a/b/c/d": "a/b" (windows) on "/a/b/c/d/": "/a/b/" (posix) on "/a/b/c/d/": "/a/b/" (posix) on "/a/b/c": "/a/c/d" (posix) on "/a/b/c": "/a/c/d" (posix) on "../../a/b": "../../a/b/c/d" (posix) on "../../a/b": "../../a/b/c/d" (posix) on "a/b/c/d/": "a/b/" (windows) on "a/b/c/d/": "a/b/" (windows) on "/a/b/.": "/a/b" (posix) on "/a/b/.": "/a/b" (posix) on "a/b/c": "a/c/d" (windows) on "a/b/c": "a/c/d" (windows) special windows paths on "C:\Projects\a\..": "c:\projects" (posix) on "C:\Projects\a\..": "c:\projects" (posix) on "C:\Projects": "c:\projects" (windows) on "C:\Projects": "c:\projects" (windows) on "/a": "a" (windows) on "/a": "a" (windows) on "C:\Projects": "c:\projects\src" (windows) on "C:\Projects": "c:\projects\src" (windows) on "C:a\b\c": "c:a/b/d" (windows) on "C:a\b\c": "c:a/b/d" (windows) on "C:a\b\c": "c:a/b/d" (posix) on "C:a\b\c": "c:a/b/d" (posix) on "/a": "a" (posix) on "/a": "a" (posix) on "C:": "D:" (windows) on "C:": "D:" (windows) on "C:\Projects\a\..": "c:\projects" (windows) on "C:\Projects\a\..": "c:\projects" (windows) on "C:": "D:" (posix) on "C:": "D:" (posix) on "C:\": "D:\" (posix) on "C:\": "D:\" (posix) on "C:a\b\c": "C:a/b/d" (posix) on "C:a\b\c": "C:a/b/d" (posix) on "C:\Projects": "c:\projects" (posix) on "C:\Projects": "c:\projects" (posix) on "C:\": "D:\" (windows) on "C:\": "D:\" (windows) on "C:\Projects": "c:\projects\src" (posix) on "C:\Projects": "c:\projects\src" (posix) on "C:a\b\c": "C:a/b/d" (windows) on "C:a\b\c": "C:a/b/d" (windows) on "a/b": "./a/b" (windows) on "a/b": "./a/b" (windows) on "/a/b": "/a/b/." (posix) on "/a/b": "/a/b/." (posix) on "a/b": "a/b" (windows) on "a/b": "a/b" (windows) on "a/b": "a/b/../c" (windows) on "a/b": "a/b/../c" (windows) on "/../../a/b": "/../../a/b/c/d" (windows) on "/../../a/b": "/../../a/b/c/d" (windows) on "../..": ".." (posix) on "../..": ".." (posix) on "/": "/" (posix) on "/": "/" (posix) on ".": ".." (windows) on ".": ".." (windows) on "a/b/c/d/": "a/b" (posix) on "a/b/c/d/": "a/b" (posix) on "a/b/c/d/": "a/b" (windows) on "a/b/c/d/": "a/b" (windows) on "/ab/cd": "/ab/cde" (windows) on "/ab/cd": "/ab/cde" (windows) on "/a/b/c/d/": "/a/b" (posix) on "/a/b/c/d/": "/a/b" (posix) on "a/b/../c": "a/b" (windows) on "a/b/../c": "a/b" (windows) on "../..": ".." (windows) on "../..": ".." (windows) on "ab/cd": "ab/cde" (posix) on "ab/cd": "ab/cde" (posix) on "..": "a" (windows) on "..": "a" (windows) on "/../../a/b": "/../../a/b/c/d" (posix) on "/../../a/b": "/../../a/b/c/d" (posix) on "/a/b/c/d": "/a/b" (windows) on "/a/b/c/d": "/a/b" (windows) on "ab/cd": "ab/c" (posix) on "ab/cd": "ab/c" (posix) on "/ab/cd": "/ab/cde" (posix) on "/ab/cd": "/ab/cde" (posix) #stem "bar/foo.txt." (windows) "bar/foo.txt." (windows) "bar\.txt" (windows) "bar\.txt" (windows) "foo.txt.txt/" (posix) "foo.txt.txt/" (posix) "bar\foo.txt." (windows) "bar\foo.txt." (windows) ".txt.txt" (windows) ".txt.txt" (windows) ".txt.txt/" (posix) ".txt.txt/" (posix) "foo./" (posix) "foo./" (posix) "foo." (windows) "foo." (windows) "foo.txt./" (windows) "foo.txt./" (windows) "foo.txt." (posix) "foo.txt." (posix) "foo./" (windows) "foo./" (windows) "bar\foo.txt" (posix) "bar\foo.txt" (posix) "bar\.txt.txt" (windows) "bar\.txt.txt" (windows) ".txt.txt" (posix) ".txt.txt" (posix) "bar/foo.txt.txt" (windows) "bar/foo.txt.txt" (windows) "foo..txt" (windows) "foo..txt" (windows) "bar/foo..txt" (windows) "bar/foo..txt" (windows) "bar/foo.txt.txt" (posix) "bar/foo.txt.txt" (posix) "foo.txt" (windows) "foo.txt" (windows) "bar\.txt.txt" (posix) "bar\.txt.txt" (posix) "bar\.txt" (posix) "bar\.txt" (posix) "foo.txt" (posix) "foo.txt" (posix) "bar\foo..txt" (windows) "bar\foo..txt" (windows) "bar/foo." (posix) "bar/foo." (posix) "foo.txt./" (posix) "foo.txt./" (posix) "foo..txt/" (posix) "foo..txt/" (posix) "bar\foo.txt" (windows) "bar\foo.txt" (windows) "bar\foo.txt.txt" (posix) "bar\foo.txt.txt" (posix) "bar/.txt.txt" (windows) "bar/.txt.txt" (windows) "bar/foo.txt" (posix) "bar/foo.txt" (posix) ".txt.txt/" (windows) ".txt.txt/" (windows) "foo.txt." (windows) "foo.txt." (windows) "foo.txt.txt" (windows) "foo.txt.txt" (windows) "foo.txt.txt/" (windows) "foo.txt.txt/" (windows) "bar/.txt.txt" (posix) "bar/.txt.txt" (posix) "bar/foo.txt." (posix) "bar/foo.txt." (posix) "bar\foo..txt" (posix) "bar\foo..txt" (posix) "foo.txt.txt" (posix) "foo.txt.txt" (posix) "bar\foo." (windows) "bar\foo." (windows) "foo..txt/" (windows) "foo..txt/" (windows) ".txt" (posix) ".txt" (posix) "bar/foo." (windows) "bar/foo." (windows) ".txt/" (windows) ".txt/" (windows) "bar/.txt" (windows) "bar/.txt" (windows) "bar/foo..txt" (posix) "bar/foo..txt" (posix) ".txt/" (posix) ".txt/" (posix) "foo.txt/" (windows) "foo.txt/" (windows) "foo..txt" (posix) "foo..txt" (posix) "bar\foo.txt.txt" (windows) "bar\foo.txt.txt" (windows) "bar/.txt" (posix) "bar/.txt" (posix) "bar/foo.txt" (windows) "bar/foo.txt" (windows) "bar\foo.txt." (posix) "bar\foo.txt." (posix) "foo.txt/" (posix) "foo.txt/" (posix) "bar\foo." (posix) "bar\foo." (posix) "foo." (posix) "foo." (posix) ".txt" (windows) ".txt" (windows) #extension "test.ext/foo" (windows) "test.ext/foo" (windows) "/foo/bar/foo." (windows) "/foo/bar/foo." (windows) "test.ext/foo/" (posix) "test.ext/foo/" (posix) "/foo/bar/baz.cr" (posix) "/foo/bar/baz.cr" (posix) "test.ext\" (posix) "test.ext\" (posix) "test.ext/" (posix) "test.ext/" (posix) "/foo/bar/baz.cr.cz" (windows) "/foo/bar/baz.cr.cz" (windows) "test.ext/foo" (posix) "test.ext/foo" (posix) "/foo/bar/.profile.sh" (windows) "/foo/bar/.profile.sh" (windows) "test" (windows) "test" (windows) "test.ext/foo/" (windows) "test.ext/foo/" (windows) "/foo/bar/.profile.sh" (posix) "/foo/bar/.profile.sh" (posix) "test.ext/" (windows) "test.ext/" (windows) "test/." (posix) "test/." (posix) "/foo/bar/baz.cr.cz" (posix) "/foo/bar/baz.cr.cz" (posix) "test" (posix) "test" (posix) "/foo/bar/baz.cr" (windows) "/foo/bar/baz.cr" (windows) "/foo/bar/foo." (posix) "/foo/bar/foo." (posix) "test\." (posix) "test\." (posix) "test\." (windows) "test\." (windows) "test.ext\" (windows) "test.ext\" (windows) "/foo/bar/.profile" (posix) "/foo/bar/.profile" (posix) "/foo/bar/.profile" (windows) "/foo/bar/.profile" (windows) "test/." (windows) "test/." (windows) #each_part iterator "./foo" (windows) iterator "./foo" (windows) block "foo/bar/." (posix) block "foo/bar/." (posix) iterator "/" (windows) iterator "/" (windows) iterator "m//" (posix) iterator "m//" (posix) block ".\foo" (posix) block ".\foo" (posix) block "//some/share" (posix) block "//some/share" (posix) iterator "C:\." (windows) iterator "C:\." (windows) #parts "/." (posix) #parts "/." (posix) #parts "C:folder" (posix) #parts "C:folder" (posix) iterator "foo/bar/" (windows) iterator "foo/bar/" (windows) iterator "Users/foo/bar.cr" (windows) iterator "Users/foo/bar.cr" (windows) #parts "//some/share/bar.cr" (windows) #parts "//some/share/bar.cr" (windows) block "m//" (posix) block "m//" (posix) #parts "\\some\share\bar.cr" (windows) #parts "\\some\share\bar.cr" (windows) block "m/" (posix) block "m/" (posix) block "foo/bar/./." (windows) block "foo/bar/./." (windows) iterator "\\some\share\" (windows) iterator "\\some\share\" (windows) block "foo/bar/./." (posix) block "foo/bar/./." (posix) block "C:" (posix) block "C:" (posix) #parts "foo/bar/../." (windows) #parts "foo/bar/../." (windows) iterator "\Users/foo\bar.cr" (windows) iterator "\Users/foo\bar.cr" (windows) iterator "/m/" (posix) iterator "/m/" (posix) iterator "C:\\folder" (windows) iterator "C:\\folder" (windows) block "/." (posix) block "/." (posix) #parts "foo" (windows) #parts "foo" (windows) block "/Users/foo/bar.cr" (posix) block "/Users/foo/bar.cr" (posix) iterator "foo/bar/./." (windows) iterator "foo/bar/./." (windows) block "foo/./bar/" (windows) block "foo/./bar/" (windows) iterator "\\some\share" (windows) iterator "\\some\share" (windows) iterator "." (posix) iterator "." (posix) block "C:/" (posix) block "C:/" (posix) iterator "m/" (posix) iterator "m/" (posix) iterator "//some/share" (windows) iterator "//some/share" (windows) block "C:/" (windows) block "C:/" (windows) block "foo/../bar/" (windows) block "foo/../bar/" (windows) block "m/.gitignore" (windows) block "m/.gitignore" (windows) #parts "foo/bar/.." (windows) #parts "foo/bar/.." (windows) #parts "/m" (windows) #parts "/m" (windows) iterator "C:/" (windows) iterator "C:/" (windows) #parts "foo/bar/." (windows) #parts "foo/bar/." (windows) #parts "C:\Users\foo\bar.cr" (windows) #parts "C:\Users\foo\bar.cr" (windows) block "foo/" (posix) block "foo/" (posix) block "foo/bar/." (windows) block "foo/bar/." (windows) block "foo/bar/" (posix) block "foo/bar/" (posix) iterator "C:\." (posix) iterator "C:\." (posix) #parts "m//a/b" (windows) #parts "m//a/b" (windows) block "Users/foo/bar.cr" (windows) block "Users/foo/bar.cr" (windows) block "foo/./bar/." (posix) block "foo/./bar/." (posix) iterator "C:\Users\foo\bar.cr" (posix) iterator "C:\Users\foo\bar.cr" (posix) #parts "foo/" (windows) #parts "foo/" (windows) iterator "m" (posix) iterator "m" (posix) block "foo\" (posix) block "foo\" (posix) #parts "//some/share" (posix) #parts "//some/share" (posix) #parts "foo/../bar/." (posix) #parts "foo/../bar/." (posix) #parts "foo\" (windows) #parts "foo\" (windows) iterator "m/.gitignore" (posix) iterator "m/.gitignore" (posix) iterator "foo/bar/.." (posix) iterator "foo/bar/.." (posix) iterator "" (windows) iterator "" (windows) block "foo/./bar/." (windows) block "foo/./bar/." (windows) #parts "foo\bar\" (windows) #parts "foo\bar\" (windows) #parts ".\foo" (windows) #parts ".\foo" (windows) #parts "////" (windows) #parts "////" (windows) iterator "foo/bar/." (posix) iterator "foo/bar/." (posix) iterator "/m/" (windows) iterator "/m/" (windows) iterator "m" (windows) iterator "m" (windows) block "foo/../bar/." (windows) block "foo/../bar/." (windows) block "\\some\share" (windows) block "\\some\share" (windows) #parts "m/" (posix) #parts "m/" (posix) #parts "m\" (windows) #parts "m\" (windows) block "foo/" (windows) block "foo/" (windows) block "\\some\share\" (posix) block "\\some\share\" (posix) iterator "C:\folder" (windows) iterator "C:\folder" (windows) block "C:\Users\foo\bar.cr" (posix) block "C:\Users\foo\bar.cr" (posix) #parts "m//a/b" (posix) #parts "m//a/b" (posix) #parts "C:\" (windows) #parts "C:\" (windows) #parts "C:\\folder" (posix) #parts "C:\\folder" (posix) block "/" (windows) block "/" (windows) #parts "C:/" (posix) #parts "C:/" (posix) iterator "foo\bar\" (windows) iterator "foo\bar\" (windows) iterator "C:\Users\foo\bar.cr" (windows) iterator "C:\Users\foo\bar.cr" (windows) block "//some/share/bar.cr" (posix) block "//some/share/bar.cr" (posix) iterator "foo/bar/." (windows) iterator "foo/bar/." (windows) block "foo/bar/.." (posix) block "foo/bar/.." (posix) block "foo\bar\" (posix) block "foo\bar\" (posix) iterator "foo/" (windows) iterator "foo/" (windows) block "m\" (windows) block "m\" (windows) #parts "C:\" (posix) #parts "C:\" (posix) block "C:folder" (windows) block "C:folder" (windows) #parts "/m" (posix) #parts "/m" (posix) block "." (posix) block "." (posix) iterator "foo" (posix) iterator "foo" (posix) block "foo" (windows) block "foo" (windows) #parts "//some/share/bar.cr" (posix) #parts "//some/share/bar.cr" (posix) iterator "m\a/b" (windows) iterator "m\a/b" (windows) #parts ".\foo" (posix) #parts ".\foo" (posix) #parts "/m/" (posix) #parts "/m/" (posix) #parts "foo\bar\" (posix) #parts "foo\bar\" (posix) iterator "m\" (windows) iterator "m\" (windows) #parts "/" (windows) #parts "/" (windows) block "C:" (windows) block "C:" (windows) #parts "foo/bar/." (posix) #parts "foo/bar/." (posix) iterator "\\some\share" (posix) iterator "\\some\share" (posix) block "m" (posix) block "m" (posix) iterator "//some/share/" (posix) iterator "//some/share/" (posix) block "m//a/b" (windows) block "m//a/b" (windows) #parts "C:\folder" (windows) #parts "C:\folder" (windows) #parts "foo/bar/../." (posix) #parts "foo/bar/../." (posix) iterator "foo/bar/./." (posix) iterator "foo/bar/./." (posix) #parts "foo/../bar/." (windows) #parts "foo/../bar/." (windows) iterator "/." (posix) iterator "/." (posix) block "/Users/foo/bar.cr" (windows) block "/Users/foo/bar.cr" (windows) block "foo/../bar/." (posix) block "foo/../bar/." (posix) iterator "/m" (windows) iterator "/m" (windows) block "foo/./bar/" (posix) block "foo/./bar/" (posix) block "////" (windows) block "////" (windows) #parts "/Users/foo/bar.cr" (windows) #parts "/Users/foo/bar.cr" (windows) iterator "foo/./bar/." (windows) iterator "foo/./bar/." (windows) iterator "m\a/b" (posix) iterator "m\a/b" (posix) #parts "/." (windows) #parts "/." (windows) iterator "Users/foo/bar.cr" (posix) iterator "Users/foo/bar.cr" (posix) #parts "Users/foo/bar.cr" (windows) #parts "Users/foo/bar.cr" (windows) iterator "\\some\share\bar.cr" (posix) iterator "\\some\share\bar.cr" (posix) #parts "foo/bar/./." (windows) #parts "foo/bar/./." (windows) iterator "C:\" (posix) iterator "C:\" (posix) block "foo/bar/../." (windows) block "foo/bar/../." (windows) iterator "/foo" (posix) iterator "/foo" (posix) #parts "C:/" (windows) #parts "C:/" (windows) block "m//" (windows) block "m//" (windows) block "C:\Users\foo\bar.cr" (windows) block "C:\Users\foo\bar.cr" (windows) #parts "foo/./bar/." (windows) #parts "foo/./bar/." (windows) iterator "foo/../bar/." (windows) iterator "foo/../bar/." (windows) #parts "m//" (posix) #parts "m//" (posix) iterator "\Users/foo\bar.cr" (posix) iterator "\Users/foo\bar.cr" (posix) #parts "C:\." (posix) #parts "C:\." (posix) iterator "C:folder" (posix) iterator "C:folder" (posix) iterator "" (posix) iterator "" (posix) block "\\some\share\bar.cr" (windows) block "\\some\share\bar.cr" (windows) #parts "m" (windows) #parts "m" (windows) iterator "foo/bar/.." (windows) iterator "foo/bar/.." (windows) iterator "foo/bar/../." (posix) iterator "foo/bar/../." (posix) iterator "foo/../bar/" (posix) iterator "foo/../bar/" (posix) iterator "/" (posix) iterator "/" (posix) block "////" (posix) block "////" (posix) block "/" (posix) block "/" (posix) block "C:\\folder" (posix) block "C:\\folder" (posix) block "\\some\share\" (windows) block "\\some\share\" (windows) block "m\a/b" (windows) block "m\a/b" (windows) iterator "C:\\folder" (posix) iterator "C:\\folder" (posix) #parts "." (windows) #parts "." (windows) block "/." (windows) block "/." (windows) block "//some/share/bar.cr" (windows) block "//some/share/bar.cr" (windows) #parts "foo/" (posix) #parts "foo/" (posix) iterator "C:\folder" (posix) iterator "C:\folder" (posix) #parts "//some/share/" (windows) #parts "//some/share/" (windows) block ".\foo" (windows) block ".\foo" (windows) #parts "C:" (windows) #parts "C:" (windows) iterator "/Users/foo/bar.cr" (windows) iterator "/Users/foo/bar.cr" (windows) block "//some/share" (windows) block "//some/share" (windows) #parts "./foo" (posix) #parts "./foo" (posix) iterator "//some/share/bar.cr" (posix) iterator "//some/share/bar.cr" (posix) block "/m" (windows) block "/m" (windows) iterator "foo/bar/." (posix) iterator "foo/bar/." (posix) #parts "C:\Users\foo\bar.cr" (posix) #parts "C:\Users\foo\bar.cr" (posix) #parts "m/.gitignore" (posix) #parts "m/.gitignore" (posix) #parts "foo/../bar/" (posix) #parts "foo/../bar/" (posix) iterator "foo/./bar/" (windows) iterator "foo/./bar/" (windows) block "m\" (posix) block "m\" (posix) iterator "////" (windows) iterator "////" (windows) iterator "foo/bar/." (windows) iterator "foo/bar/." (windows) iterator "m/" (windows) iterator "m/" (windows) #parts "\" (posix) #parts "\" (posix) iterator "foo/bar/../." (windows) iterator "foo/bar/../." (windows) iterator "m\" (posix) iterator "m\" (posix) #parts "foo/bar/.." (posix) #parts "foo/bar/.." (posix) block "//some/share/" (windows) block "//some/share/" (windows) #parts "/" (posix) #parts "/" (posix) #parts "foo/bar/." (windows) #parts "foo/bar/." (windows) block "foo" (posix) block "foo" (posix) iterator "foo/./bar/" (posix) iterator "foo/./bar/" (posix) iterator "m//a/b" (posix) iterator "m//a/b" (posix) #parts "./foo" (windows) #parts "./foo" (windows) #parts "foo/../bar/" (windows) #parts "foo/../bar/" (windows) iterator "m/.gitignore" (windows) iterator "m/.gitignore" (windows) block "m" (windows) block "m" (windows) block "/m/" (posix) block "/m/" (posix) iterator "foo/./bar/." (posix) iterator "foo/./bar/." (posix) block "Users/foo/bar.cr" (posix) block "Users/foo/bar.cr" (posix) iterator "foo\" (windows) iterator "foo\" (windows) iterator "/m" (posix) iterator "/m" (posix) #parts "\\some\share" (posix) #parts "\\some\share" (posix) #parts "\Users/foo\bar.cr" (posix) #parts "\Users/foo\bar.cr" (posix) block "foo/bar/." (posix) block "foo/bar/." (posix) block "" (posix) block "" (posix) #parts "/foo" (posix) #parts "/foo" (posix) iterator "m//" (windows) iterator "m//" (windows) #parts "foo/bar/" (windows) #parts "foo/bar/" (windows) #parts "C:" (posix) #parts "C:" (posix) iterator "." (windows) iterator "." (windows) block "\Users\foo\bar.cr" (posix) block "\Users\foo\bar.cr" (posix) iterator "foo/../bar/" (windows) iterator "foo/../bar/" (windows) block "C:\" (windows) block "C:\" (windows) iterator "C:/" (posix) iterator "C:/" (posix) iterator "/Users/foo/bar.cr" (posix) iterator "/Users/foo/bar.cr" (posix) #parts "foo" (posix) #parts "foo" (posix) block "C:\\folder" (windows) block "C:\\folder" (windows) #parts "////" (posix) #parts "////" (posix) #parts "foo/./bar/." (posix) #parts "foo/./bar/." (posix) iterator "//some/share" (posix) iterator "//some/share" (posix) #parts "C:\\folder" (windows) #parts "C:\\folder" (windows) iterator "//some/share/bar.cr" (windows) iterator "//some/share/bar.cr" (windows) #parts "m/" (windows) #parts "m/" (windows) #parts "\" (windows) #parts "\" (windows) #parts "m\a/b" (windows) #parts "m\a/b" (windows) block "foo/../bar/" (posix) block "foo/../bar/" (posix) block "C:\folder" (windows) block "C:\folder" (windows) block "C:\." (posix) block "C:\." (posix) iterator "foo/" (posix) iterator "foo/" (posix) #parts "C:\." (windows) #parts "C:\." (windows) block "." (windows) block "." (windows) #parts "\\some\share\" (posix) #parts "\\some\share\" (posix) iterator "foo\bar\" (posix) iterator "foo\bar\" (posix) block "\Users/foo\bar.cr" (posix) block "\Users/foo\bar.cr" (posix) #parts "m/.gitignore" (windows) #parts "m/.gitignore" (windows) block "m\a/b" (posix) block "m\a/b" (posix) iterator "foo/../bar/." (posix) iterator "foo/../bar/." (posix) block "\\some\share" (posix) block "\\some\share" (posix) #parts "foo/./bar/" (posix) #parts "foo/./bar/" (posix) iterator "/." (windows) iterator "/." (windows) #parts "//some/share/" (posix) #parts "//some/share/" (posix) #parts "C:folder" (windows) #parts "C:folder" (windows) block "/m" (posix) block "/m" (posix) #parts "." (posix) #parts "." (posix) #parts "/Users/foo/bar.cr" (posix) #parts "/Users/foo/bar.cr" (posix) iterator "\\some\share\bar.cr" (windows) iterator "\\some\share\bar.cr" (windows) #parts "//some/share" (windows) #parts "//some/share" (windows) #parts "" (windows) #parts "" (windows) #parts "C:\folder" (posix) #parts "C:\folder" (posix) #parts "\\some\share\" (windows) #parts "\\some\share\" (windows) #parts "m\a/b" (posix) #parts "m\a/b" (posix) iterator "C:" (posix) iterator "C:" (posix) block "\\some\share\bar.cr" (posix) block "\\some\share\bar.cr" (posix) block "\Users\foo\bar.cr" (windows) block "\Users\foo\bar.cr" (windows) block "" (windows) block "" (windows) iterator ".\foo" (posix) iterator ".\foo" (posix) #parts "foo/bar/." (posix) #parts "foo/bar/." (posix) iterator "C:folder" (windows) iterator "C:folder" (windows) block "\Users/foo\bar.cr" (windows) block "\Users/foo\bar.cr" (windows) #parts "/m/" (windows) #parts "/m/" (windows) block "foo/bar/.." (windows) block "foo/bar/.." (windows) block "//some/share/" (posix) block "//some/share/" (posix) iterator "\" (windows) iterator "\" (windows) iterator "foo\" (posix) iterator "foo\" (posix) iterator "./foo" (posix) iterator "./foo" (posix) block "foo\" (windows) block "foo\" (windows) #parts "\\some\share" (windows) #parts "\\some\share" (windows) iterator "/foo" (windows) iterator "/foo" (windows) block "/foo" (posix) block "/foo" (posix) block "/foo" (windows) block "/foo" (windows) #parts "foo\" (posix) #parts "foo\" (posix) #parts "m" (posix) #parts "m" (posix) block "\" (posix) block "\" (posix) block "./foo" (windows) block "./foo" (windows) block "m/" (windows) block "m/" (windows) iterator "C:\" (windows) iterator "C:\" (windows) iterator "\\some\share\" (posix) iterator "\\some\share\" (posix) block "foo/bar/." (windows) block "foo/bar/." (windows) iterator "C:" (windows) iterator "C:" (windows) block "C:folder" (posix) block "C:folder" (posix) iterator "////" (posix) iterator "////" (posix) #parts "m\" (posix) #parts "m\" (posix) block "C:\folder" (posix) block "C:\folder" (posix) iterator "foo/bar/" (posix) iterator "foo/bar/" (posix) block "m/.gitignore" (posix) block "m/.gitignore" (posix) #parts "" (posix) #parts "" (posix) #parts "foo/bar/" (posix) #parts "foo/bar/" (posix) block "C:\." (windows) block "C:\." (windows) #parts "\Users\foo\bar.cr" (windows) #parts "\Users\foo\bar.cr" (windows) #parts "\\some\share\bar.cr" (posix) #parts "\\some\share\bar.cr" (posix) block "foo/bar/../." (posix) block "foo/bar/../." (posix) #parts "\Users/foo\bar.cr" (windows) #parts "\Users/foo\bar.cr" (windows) block "m//a/b" (posix) block "m//a/b" (posix) iterator "m//a/b" (windows) iterator "m//a/b" (windows) block "C:\" (posix) block "C:\" (posix) #parts "m//" (windows) #parts "m//" (windows) block "foo\bar\" (windows) block "foo\bar\" (windows) #parts "foo/bar/./." (posix) #parts "foo/bar/./." (posix) iterator "\Users\foo\bar.cr" (posix) iterator "\Users\foo\bar.cr" (posix) iterator ".\foo" (windows) iterator ".\foo" (windows) block "./foo" (posix) block "./foo" (posix) iterator "\" (posix) iterator "\" (posix) #parts "foo/./bar/" (windows) #parts "foo/./bar/" (windows) block "\" (windows) block "\" (windows) iterator "//some/share/" (windows) iterator "//some/share/" (windows) iterator "\Users\foo\bar.cr" (windows) iterator "\Users\foo\bar.cr" (windows) #parts "Users/foo/bar.cr" (posix) #parts "Users/foo/bar.cr" (posix) block "/m/" (windows) block "/m/" (windows) block "foo/bar/" (windows) block "foo/bar/" (windows) #parts "/foo" (windows) #parts "/foo" (windows) #parts "\Users\foo\bar.cr" (posix) #parts "\Users\foo\bar.cr" (posix) iterator "foo" (windows) iterator "foo" (windows) #ends_with_separator? "foo\" (posix) "foo\" (posix) "foo/" (windows) "foo/" (windows) "C:/" (posix) "C:/" (posix) "foo\" (windows) "foo\" (windows) "foo/" (posix) "foo/" (posix) "C:/" (windows) "C:/" (windows) "foo" (windows) "foo" (windows) "foo/." (posix) "foo/." (posix) "foo/bar" (windows) "foo/bar" (windows) "foo/." (windows) "foo/." (windows) "foo" (posix) "foo" (posix) "foo/bar" (posix) "foo/bar" (posix) .windows assert assert assert assert joins components joins components assert assert fails with null byte fails with null byte assert assert #dirname "C:\" (posix) "C:\" (posix) "m" (windows) "m" (windows) "/foo" (windows) "/foo" (windows) "/foo//" (windows) "/foo//" (windows) "C:/" (posix) "C:/" (posix) "m//a/b" (posix) "m//a/b" (posix) "foo" (posix) "foo" (posix) "m//" (posix) "m//" (posix) "foo/" (windows) "foo/" (windows) "m" (posix) "m" (posix) "m//a/b" (windows) "m//a/b" (windows) "m/" (posix) "m/" (posix) "C:" (windows) "C:" (windows) "/m" (posix) "/m" (posix) "C:" (posix) "C:" (posix) "m/.gitignore" (posix) "m/.gitignore" (posix) "m/.gitignore" (windows) "m/.gitignore" (windows) "/m" (windows) "/m" (windows) "/Users/foo/bar.cr" (posix) "/Users/foo/bar.cr" (posix) "C:\" (windows) "C:\" (windows) "/Users/foo/bar.cr" (windows) "/Users/foo/bar.cr" (windows) "m//" (windows) "m//" (windows) "C:/" (windows) "C:/" (windows) "/foo" (posix) "/foo" (posix) "/m/" (posix) "/m/" (posix) "/foo//" (posix) "/foo//" (posix) "m/" (windows) "m/" (windows) "/m/" (windows) "/m/" (windows) "/foo/" (windows) "/foo/" (windows) "/foo/" (posix) "/foo/" (posix) "foo/" (posix) "foo/" (posix) "foo" (windows) "foo" (windows) #root "C:\foo" (windows) "C:\foo" (windows) "//some/share" (posix) "//some/share" (posix) "//foo" (posix) "//foo" (posix) "\\foo" (posix) "\\foo" (posix) "\\foo" (windows) "\\foo" (windows) "/foo" (posix) "/foo" (posix) "/foo" (windows) "/foo" (windows) "C:foo" (windows) "C:foo" (windows) "\foo" (posix) "\foo" (posix) "\foo" (windows) "\foo" (windows) "//foo" (windows) "//foo" (windows) "//some/share" (windows) "//some/share" (windows) "\\some\share" (posix) "\\some\share" (posix) "\\some\share\" (windows) "\\some\share\" (windows) "\\some\share\" (posix) "\\some\share\" (posix) "C:\foo" (posix) "C:\foo" (posix) "\\some\share" (windows) "\\some\share" (windows) "C:/foo" (posix) "C:/foo" (posix) "//some/share/" (posix) "//some/share/" (posix) "C:foo" (posix) "C:foo" (posix) "C:/foo" (windows) "C:/foo" (windows) "//some/share/" (windows) "//some/share/" (windows) #normalize paths with backslash removes . normalizes "abc\." (windows) normalizes "abc\." (windows) normalizes "abc\.\def" (posix) normalizes "abc\.\def" (posix) normalizes "abc\.\def" (windows) normalizes "abc\.\def" (windows) normalizes "\.\abc\def" (posix) normalizes "\.\abc\def" (posix) normalizes "abc\." (posix) normalizes "abc\." (posix) normalizes "\.\abc\def" (windows) normalizes "\.\abc\def" (windows) already clean normalizes "a\b\c" (windows) normalizes "a\b\c" (windows) normalizes "..\.." (posix) normalizes "..\.." (posix) normalizes "abc\def" (windows) normalizes "abc\def" (windows) normalizes "\abc" (windows) normalizes "\abc" (windows) normalizes "..\..\abc" (posix) normalizes "..\..\abc" (posix) normalizes "\" (windows) normalizes "\" (windows) normalizes "\abc" (posix) normalizes "\abc" (posix) normalizes "a\b\c" (posix) normalizes "a\b\c" (posix) normalizes "\" (posix) normalizes "\" (posix) normalizes "..\..\abc" (windows) normalizes "..\..\abc" (windows) normalizes "abc\def" (posix) normalizes "abc\def" (posix) normalizes "..\.." (windows) normalizes "..\.." (windows) removes .. normalizes "abc\def\..\..\.." (posix) normalizes "abc\def\..\..\.." (posix) normalizes "abc\def\..\ghi\..\jkl" (windows) normalizes "abc\def\..\ghi\..\jkl" (windows) normalizes "\abc\def\..\..\.." (windows) normalizes "\abc\def\..\..\.." (windows) normalizes "abc\def\..\.." (windows) normalizes "abc\def\..\.." (windows) normalizes "abc\def\.." (posix) normalizes "abc\def\.." (posix) normalizes "abc\def\..\.." (posix) normalizes "abc\def\..\.." (posix) normalizes "abc\def\ghi\..\jkl" (posix) normalizes "abc\def\ghi\..\jkl" (posix) normalizes "abc\def\..\..\.." (windows) normalizes "abc\def\..\..\.." (windows) normalizes "abc\def\..\ghi\..\jkl" (posix) normalizes "abc\def\..\ghi\..\jkl" (posix) normalizes "\abc\def\..\..\.." (posix) normalizes "\abc\def\..\..\.." (posix) normalizes "abc\def\..\..\..\ghi\jkl\..\..\..\mno" (posix) normalizes "abc\def\..\..\..\ghi\jkl\..\..\..\mno" (posix) normalizes "\abc\def\..\.." (posix) normalizes "\abc\def\..\.." (posix) normalizes "abc\def\.." (windows) normalizes "abc\def\.." (windows) normalizes "abc\def\ghi\..\jkl" (windows) normalizes "abc\def\ghi\..\jkl" (windows) normalizes "\abc\def\..\.." (windows) normalizes "\abc\def\..\.." (windows) normalizes "abc\def\..\..\..\ghi\jkl\..\..\..\mno" (windows) normalizes "abc\def\..\..\..\ghi\jkl\..\..\..\mno" (windows) removes double slash normalizes "abc\\def\\ghi" (windows) normalizes "abc\\def\\ghi" (windows) normalizes "abc\\def\\ghi" (posix) normalizes "abc\\def\\ghi" (posix) normalizes "\\abc" (posix) normalizes "\\abc" (posix) normalizes "\\abc\\" (windows) normalizes "\\abc\\" (windows) normalizes "\\abc\\" (posix) normalizes "\\abc\\" (posix) normalizes "\\\abc" (posix) normalizes "\\\abc" (posix) normalizes "abc\\" (posix) normalizes "abc\\" (posix) normalizes "\\\abc" (windows) normalizes "\\\abc" (windows) normalizes "\\abc" (windows) normalizes "\\abc" (windows) normalizes "abc\\" (windows) normalizes "abc\\" (windows) combinations normalizes "abc\..\..\.\.\..\def" (posix) normalizes "abc\..\..\.\.\..\def" (posix) normalizes "abc\\.\..\def" (windows) normalizes "abc\\.\..\def" (windows) normalizes "abc\.\..\def" (windows) normalizes "abc\.\..\def" (windows) normalizes "abc\\.\..\def" (posix) normalizes "abc\\.\..\def" (posix) normalizes "abc\.\..\def" (posix) normalizes "abc\.\..\def" (posix) normalizes "abc\..\..\.\.\..\def" (windows) normalizes "abc\..\..\.\.\..\def" (windows) removes trailing slash normalizes "abc\" (posix) normalizes "abc\" (posix) normalizes "abc\def\" (windows) normalizes "abc\def\" (windows) normalizes "a\b\c\" (windows) normalizes "a\b\c\" (windows) normalizes "abc\" (windows) normalizes "abc\" (windows) normalizes "..\" (posix) normalizes "..\" (posix) normalizes "\abc\" (windows) normalizes "\abc\" (windows) normalizes "a\b\c\" (posix) normalizes "a\b\c\" (posix) normalizes ".\" (posix) normalizes ".\" (posix) normalizes "abc\def\" (posix) normalizes "abc\def\" (posix) normalizes ".\" (windows) normalizes ".\" (windows) normalizes "..\" (windows) normalizes "..\" (windows) normalizes "..\..\" (posix) normalizes "..\..\" (posix) normalizes "..\..\" (windows) normalizes "..\..\" (windows) normalizes "\abc\" (posix) normalizes "\abc\" (posix) path with forward slash removes . normalizes "abc/." (posix) normalizes "abc/." (posix) normalizes "abc/./def" (windows) normalizes "abc/./def" (windows) normalizes "abc/." (windows) normalizes "abc/." (windows) normalizes "/./abc/def" (posix) normalizes "/./abc/def" (posix) normalizes "abc/./def" (posix) normalizes "abc/./def" (posix) normalizes "/./abc/def" (windows) normalizes "/./abc/def" (windows) removes trailing slash normalizes "../" (posix) normalizes "../" (posix) normalizes "a/b/c/" (windows) normalizes "a/b/c/" (windows) normalizes "../" (windows) normalizes "../" (windows) normalizes "abc/" (windows) normalizes "abc/" (windows) normalizes "abc/def/" (posix) normalizes "abc/def/" (posix) normalizes "abc/" (posix) normalizes "abc/" (posix) normalizes "../../" (windows) normalizes "../../" (windows) normalizes "a/b/c/" (posix) normalizes "a/b/c/" (posix) normalizes "/abc/" (posix) normalizes "/abc/" (posix) normalizes "../../" (posix) normalizes "../../" (posix) normalizes "./" (windows) normalizes "./" (windows) normalizes "/abc/" (windows) normalizes "/abc/" (windows) normalizes "abc/def/" (windows) normalizes "abc/def/" (windows) normalizes "./" (posix) normalizes "./" (posix) removes double slash normalizes "//abc" (windows) normalizes "//abc" (windows) normalizes "abc//def//ghi" (windows) normalizes "abc//def//ghi" (windows) normalizes "abc//" (windows) normalizes "abc//" (windows) normalizes "abc//" (posix) normalizes "abc//" (posix) normalizes "///abc" (windows) normalizes "///abc" (windows) normalizes "//abc" (posix) normalizes "//abc" (posix) normalizes "//abc//" (windows) normalizes "//abc//" (windows) normalizes "abc//def//ghi" (posix) normalizes "abc//def//ghi" (posix) normalizes "///abc" (posix) normalizes "///abc" (posix) normalizes "//abc//" (posix) normalizes "//abc//" (posix) combinations normalizes "abc/../../././../def" (windows) normalizes "abc/../../././../def" (windows) normalizes "abc//./../def" (posix) normalizes "abc//./../def" (posix) normalizes "abc//./../def" (windows) normalizes "abc//./../def" (windows) normalizes "abc/./../def" (windows) normalizes "abc/./../def" (windows) normalizes "abc/./../def" (posix) normalizes "abc/./../def" (posix) normalizes "abc/../../././../def" (posix) normalizes "abc/../../././../def" (posix) removes .. normalizes "abc/def/../../.." (posix) normalizes "abc/def/../../.." (posix) normalizes "abc/def/ghi/../jkl" (windows) normalizes "abc/def/ghi/../jkl" (windows) normalizes "abc/def/ghi/../jkl" (posix) normalizes "abc/def/ghi/../jkl" (posix) normalizes "abc/def/.." (windows) normalizes "abc/def/.." (windows) normalizes "/abc/def/../.." (windows) normalizes "/abc/def/../.." (windows) normalizes "/abc/def/../../.." (windows) normalizes "/abc/def/../../.." (windows) normalizes "/abc/def/../../.." (posix) normalizes "/abc/def/../../.." (posix) normalizes "abc/def/../ghi/../jkl" (posix) normalizes "abc/def/../ghi/../jkl" (posix) normalizes "abc/def/../../.." (windows) normalizes "abc/def/../../.." (windows) normalizes "abc/def/../../../ghi/jkl/../../../mno" (posix) normalizes "abc/def/../../../ghi/jkl/../../../mno" (posix) normalizes "abc/def/.." (posix) normalizes "abc/def/.." (posix) normalizes "abc/def/../.." (windows) normalizes "abc/def/../.." (windows) normalizes "abc/def/../ghi/../jkl" (windows) normalizes "abc/def/../ghi/../jkl" (windows) normalizes "/abc/def/../.." (posix) normalizes "/abc/def/../.." (posix) normalizes "abc/def/../../../ghi/jkl/../../../mno" (windows) normalizes "abc/def/../../../ghi/jkl/../../../mno" (windows) normalizes "abc/def/../.." (posix) normalizes "abc/def/../.." (posix) already clean normalizes "a/b/c" (posix) normalizes "a/b/c" (posix) normalizes "." (posix) normalizes "." (posix) normalizes "abc" (windows) normalizes "abc" (windows) normalizes "" (windows) normalizes "" (windows) normalizes ".." (posix) normalizes ".." (posix) normalizes "../.." (posix) normalizes "../.." (posix) normalizes "" (posix) normalizes "" (posix) normalizes "abc" (posix) normalizes "abc" (posix) normalizes "abc/def" (posix) normalizes "abc/def" (posix) normalizes ".." (windows) normalizes ".." (windows) normalizes "../../abc" (posix) normalizes "../../abc" (posix) normalizes "/" (windows) normalizes "/" (windows) normalizes "abc/def" (windows) normalizes "abc/def" (windows) normalizes "../.." (windows) normalizes "../.." (windows) normalizes "../../abc" (windows) normalizes "../../abc" (windows) normalizes "." (windows) normalizes "." (windows) normalizes "a/b/c" (windows) normalizes "a/b/c" (windows) normalizes "/" (posix) normalizes "/" (posix) normalizes "/abc" (posix) normalizes "/abc" (posix) normalizes "/abc" (windows) normalizes "/abc" (windows) with drive normalizes "C:\foo" (posix) normalizes "C:\foo" (posix) normalizes "C:\" (windows) normalizes "C:\" (windows) normalizes "C:foo" (windows) normalizes "C:foo" (windows) normalizes "C:" (windows) normalizes "C:" (windows) normalizes "C:" (posix) normalizes "C:" (posix) normalizes "C:\foo" (windows) normalizes "C:\foo" (windows) normalizes "C:foo" (posix) normalizes "C:foo" (posix) normalizes "C:/foo" (windows) normalizes "C:/foo" (windows) normalizes "C:/foo" (posix) normalizes "C:/foo" (posix) normalizes "C:/" (windows) normalizes "C:/" (windows) normalizes "C:/" (posix) normalizes "C:/" (posix) normalizes "C:\" (posix) normalizes "C:\" (posix) #<=> case sensitivity case sensitivity p can be used with tuples can be used with tuples Float32 #to_hexfloat trimming assert assert assert assert assert assert assert assert assert assert assert assert assert assert exponents assert assert assert assert assert assert assert assert assert assert assert assert assert assert hexits assert assert assert assert assert assert assert assert corner cases assert assert assert assert assert assert assert assert assert assert special cases assert assert assert assert assert assert assert assert assert assert assert assert assert assert .parse_hexfloat assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert invalid hexfloats assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert special cases assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert values close to zero assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert values close to MIN_POSITIVE and MAX assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert pp can be used with tuples can be used with tuples Indexable::Mutable(T) #map! replaces each element with the block value replaces each element with the block value #update updates the value at the given index with the block updates the value at the given index with the block raises on out-of-bound indices raises on out-of-bound indices wraps negative indices wraps negative indices #[]= wraps negative indices wraps negative indices raises on out-of-bound indices raises on out-of-bound indices sets the value at the given index sets the value at the given index #shuffle! randomizes the order of all elements randomizes the order of all elements #map_with_index! without offset yields each element and index to the block yields each element and index to the block with offset yields each element and index plus offset to the block yields each element and index plus offset to the block #reverse! reverses the order of all elements in place reverses the order of all elements in place #swap wraps negative indices wraps negative indices raises on out-of-bound indices raises on out-of-bound indices exchanges the values at two indices exchanges the values at two indices #fill with block + range sets zero elements sets zero elements yields index to the block and sets elements in a subrange yields index to the block and sets elements in a subrange raises on out of bound start index raises on out of bound start index with block + start + count raises on out of bound start index raises on out of bound start index yields index to the block and sets elements in a subrange yields index to the block and sets elements in a subrange sets zero elements sets zero elements without block sets all elements to the same value sets all elements to the same value without block, with range sets zero elements sets zero elements sets a subrange of elements to the same value sets a subrange of elements to the same value raises on out of bound start index raises on out of bound start index without block, with start + count sets zero elements sets zero elements raises on out of bound start index raises on out of bound start index sets a subrange of elements to the same value sets a subrange of elements to the same value with block yields index to the block and sets all elements yields index to the block and sets all elements with block + offset yields index plus offset to the block and sets all elements yields index plus offset to the block and sets all elements #rotate! left-shifts all elements left-shifts all elements Digest::SHA256 does digest for "" in a block does digest for "" in a block digest with file content digest with file content does hexdigest for "" does hexdigest for "" resets resets does digest for "abc" in a block does digest for "abc" in a block does digest for "The quick brown fox jumps over the lazy dog" in a block does digest for "The quick brown fox jumps over the lazy dog" in a block resets resets #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) can't call #final more than once can't call #final more than once does digest for "a" does digest for "a" does digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "0123456701234567012345670123456701234567012345670123456701234567" does digest for "fooø" does digest for "fooø" does digest for "a" in a block does digest for "a" in a block resets resets can't call #final more than once can't call #final more than once resets resets does base64digest for "" does base64digest for "" does base64digest for "fooø" does base64digest for "fooø" resets resets does hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "a" does hexdigest for "a" does digest for "abc" does digest for "abc" does digest for "The quick brown fox jumps over the lazy dog" does digest for "The quick brown fox jumps over the lazy dog" resets resets does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does digest for "0123456701234567012345670123456701234567012345670123456701234567" in a block does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" can't call #final more than once can't call #final more than once does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block does digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" in a block does hexdigest for "fooø" does hexdigest for "fooø" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does base64digest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" context are independent context are independent .dup leads to deterministic updates leads to deterministic updates preserves value preserves value leads to not sharing state leads to not sharing state preserves type preserves type resets resets does digest for "fooø" in a block does digest for "fooø" in a block does base64digest for "a" does base64digest for "a" does digest for "" does digest for "" does hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does hexdigest for "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" does base64digest for "The quick brown fox jumps over the lazy dog" does base64digest for "The quick brown fox jumps over the lazy dog" can't call #final more than once can't call #final more than once can't call #final more than once can't call #final more than once does hexdigest for "abc" does hexdigest for "abc" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does base64digest for "0123456701234567012345670123456701234567012345670123456701234567" does hexdigest for "The quick brown fox jumps over the lazy dog" does hexdigest for "The quick brown fox jumps over the lazy dog" can't call #final more than once can't call #final more than once does base64digest for "abc" does base64digest for "abc" can't call #final more than once can't call #final more than once returns the digest_size returns the digest_size HTTP::Server #bind_tls binds SSL server context binds SSL server context doesn't raise on accept after close #2692 doesn't raise on accept after close #2692 binds to unused port binds to unused port #max_headers_size sets and gets size sets and gets size respects size on request respects size on request #close closes gracefully closes gracefully closes the server closes the server can process simultaneous SSL handshakes can process simultaneous SSL handshakes reuses the TCP port (SO_REUSEPORT) reuses the TCP port (SO_REUSEPORT) lists addresses lists addresses handles exception during SSL handshake (#6577) handles exception during SSL handshake (#6577) handles Expect: 100-continue correctly when body is read handles Expect: 100-continue correctly when body is read #remote_address / #local_address for https server for https server for http server for http server handles Expect: 100-continue correctly when body isn't read handles Expect: 100-continue correctly when body isn't read binds to different ports binds to different ports #bind fails after close fails after close with URI accepts String accepts String accepts URI accepts URI parses SSL parses SSL parses TCP parses TCP fails with unknown scheme fails with unknown scheme fails SSL with invalid params fails SSL with invalid params fails after listen fails after listen #max_request_line_size respects size on request respects size on request sets and gets size sets and gets size #listen fails after listen fails after listen fails after close fails after close #bind_unix binds to different unix sockets binds to different unix sockets #max_request_line_size respects size on request respects size on request sets and gets size sets and gets size System::Group .find_by?(*, name) returns a group by name returns a group by name returns nil on nonexistent group returns nil on nonexistent group #to_s returns a string representation returns a string representation .find_by(*, name) raises on nonexistent group raises on nonexistent group returns a group by name returns a group by name .find_by?(*, id) returns nil on nonexistent group id returns nil on nonexistent group id returns a group by id returns a group by id #name is the same as the source name is the same as the source name .find_by(*, id) raises on nonexistent group name raises on nonexistent group name returns a group by id returns a group by id #id is the same as the source ID is the same as the source ID Bool to_unsafe assert assert assert assert ! assert assert assert assert | assert assert assert assert assert assert assert assert & assert assert assert assert assert assert assert assert clone assert assert assert assert to_s assert assert assert assert ^ assert assert assert assert assert assert assert assert hash assert assert .__powidf2 .__powidf2 #to_www_form Number Number Enum Enum Bool Bool String String Array(T) of a union of types of a union of types of a single type of a single type Nil Nil Time Time String#each_grapheme string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding GB9c GB9c string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator GB9c GB9c string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator GB9c GB9c string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding GB9c GB9c string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator GB9c GB9c string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding GB9c GB9c string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding GB9c GB9c string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump iterator string.dump iterator string.dump yielding string.dump yielding string.dump yielding string.dump yielding string.dump iterator string.dump iterator IO::MultiWriter #read raises raises #close stops reading stops reading closes the underlying stream if sync_close is true closes the underlying stream if sync_close is true #flush writes to IO and File writes to IO and File #write writes to multiple IOs writes to multiple IOs LLVM::Type .const_int support Int128 support Int128 support Int64 support Int64 HTTP::Headers #serialize #serialize doesn't match empty string doesn't match empty string deletes deletes does to_s does to_s doesn't match word with comma separated value, partial match doesn't match word with comma separated value, partial match #== equals other instance equals other instance case-insensitive keys case-insensitive keys different internal representation different internal representation adds array of string adds array of string matches word with comma separated value, partial match matches word with comma separated value, partial match fetches with block fetches with block is case insensitive is case insensitive gets all values gets all values is empty is empty raises an error if header value contains invalid character raises an error if header value contains invalid character dups dups validates content validates content merges and return self merges and return self fetches with default value fetches with default value matches word with comma separated value, partial match (array) matches word with comma separated value, partial match (array) adds string adds string matches word among headers matches word among headers doesn't match word with comma separated value, partial match (array) doesn't match word with comma separated value, partial match (array) is gets with []? is gets with []? clones clones matches word matches word can create header value with all US-ASCII visible chars (#2999) can create header value with all US-ASCII visible chars (#2999) matches word with comma separated value matches word with comma separated value matches word with comma separated value, case insensitive (#3626) matches word with comma separated value, case insensitive (#3626) has key has key it allows indifferent access for underscore and dash separated keys it allows indifferent access for underscore and dash separated keys should retain the input casing should retain the input casing does not matches word if missing header does not matches word if missing header Char hex? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does to_s for multibyte char does to_s for multibyte char to_i rejects unsupported base (37) to_i rejects unsupported base (37) #dump #dump bytesize does for ascii does for ascii does for unicode does for unicode - assert assert in_set? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert rejects invalid ranges rejects invalid ranges assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does <=> does <=> does to_i with 16 base does to_i with 16 base index assert assert assert assert does bytes does bytes #inspect #inspect does to_i with base 36 does to_i with base 36 ascii_whitespace? assert assert assert assert assert assert assert assert assert assert assert assert assert assert does to_f does to_f #titlecase? assert assert assert assert assert assert assert assert does number? does number? #unicode_escape #unicode_escape does ord for multibyte char does ord for multibyte char #step "basic by" iterator "basic by" iterator "basic" iterator "basic" iterator "basic by" yielding "basic by" yielding "basic" yielding "basic" yielding does to_i without a base does to_i without a base #letter? #letter? does each_byte does each_byte lowercase? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert + assert assert #titlecase assert assert assert assert assert assert assert assert #ascii_control? #ascii_control? uppercase? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert escapes escapes does ascii_number? does ascii_number? #pred #pred + does for both unicode does for both unicode does for both ascii does for both ascii escapes with unicode escapes with unicode ascii_uppercase? assert assert assert assert assert assert assert assert #===(:Int) #===(:Int) #downcase assert assert assert assert assert assert assert assert assert assert assert assert assert assert #upcase assert assert assert assert assert assert ascii_letter? assert assert assert assert assert assert assert assert does mark? does mark? ascii_lowercase? assert assert assert assert assert assert assert assert does ascii? does ascii? #printable? #printable? to_i rejects unsupported base (1) to_i rejects unsupported base (1) clone assert assert #succ #succ alphanumeric? assert assert assert assert assert assert assert assert does to_s for single-byte char does to_s for single-byte char .__ashlti3 .__ashlti3 FileUtils tests rm with an existing path tests rm with an existing path .rm_rf delete recursively multiple directory delete recursively multiple directory doesn't return error on nonexistent file doesn't return error on nonexistent file delete recursively a directory delete recursively a directory doesn't return error on nonexistent files doesn't return error on nonexistent files .touch creates file if it doesn't exist creates file if it doesn't exist creates multiple files if they don't exists creates multiple files if they don't exists .ln fails with an extant destination fails with an extant destination fails with a nonexistent source fails with a nonexistent source creates a hardlink inside a destination dir creates a hardlink inside a destination dir creates multiple hardlinks inside a destination dir creates multiple hardlinks inside a destination dir creates a hardlink creates a hardlink tests mkdir_p with multiple existing path tests mkdir_p with multiple existing path tests mkdir with an existing path tests mkdir with an existing path .cp_r copies a directory recursively if destination exists leaving existing files copies a directory recursively if destination exists leaving existing files copies a directory recursively copies a directory recursively copies a directory recursively if destination exists and is empty copies a directory recursively if destination exists and is empty tests mkdir and rmdir with multiple new paths tests mkdir and rmdir with multiple new paths tests rmdir with multiple nonexistent path tests rmdir with multiple nonexistent path tests rmdir with an nonexistent path tests rmdir with an nonexistent path .cmp compares two equal files compares two equal files compares two different files compares two different files .pwd returns the current working directory returns the current working directory .mv raises an error if non correct arguments raises an error if non correct arguments raises an error if dest is non correct raises an error if dest is non correct moves multiple files to one place moves multiple files to one place moves a file from one place to another moves a file from one place to another moves all existing files to destination moves all existing files to destination .cp copies a file copies a file raises an error if the directory doesn't exist raises an error if the directory doesn't exist copies permissions copies permissions copies multiple files copies multiple files tests rmdir with multiple path that cannot be removed tests rmdir with multiple path that cannot be removed .ln_sf overwrites a destination file inside a dir overwrites a destination file inside a dir creates multiple symlinks in a destination dir, with overwrites creates multiple symlinks in a destination dir, with overwrites overwrites a destination named pipe overwrites a destination named pipe overwrites a destination file overwrites a destination file overwrites a destination dir in dir overwrites a destination dir in dir creates a symlink even if there's nothing to overwrite creates a symlink even if there's nothing to overwrite .cd accepts a block accepts a block raises raises should work should work tests mkdir_p with multiples new path tests mkdir_p with multiples new path tests rm with nonexistent path tests rm with nonexistent path tests mkdir and rmdir with a new path tests mkdir and rmdir with a new path tests mkdir with multiples existing paths tests mkdir with multiples existing paths tests rm with multiple existing paths tests rm with multiple existing paths .rm_r deletes a directory recursively deletes a directory recursively doesn't follow symlinks doesn't follow symlinks tests rm with some nonexistent paths tests rm with some nonexistent paths tests rmdir with a path that cannot be removed tests rmdir with a path that cannot be removed .ln_s creates a symlink creates a symlink creates multiple symlinks inside a destination dir creates multiple symlinks inside a destination dir creates a symlink inside a destination dir creates a symlink inside a destination dir works with a nonexistent source works with a nonexistent source fails with an existing destination fails with an existing destination BigDecimal performs arithmetic with other number types performs arithmetic with other number types can be converted from scientific notation can be converted from scientific notation #inspect assert assert keeps precision keeps precision upkeeps hashing invariant upkeeps hashing invariant is comparable with other types is comparable with other types #trunc assert assert assert assert assert assert assert assert assert assert assert assert #round #integer? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert with digits to_positive to_positive ties_away ties_away to_negative to_negative ties_even ties_even to_zero to_zero rounding modes ties_even ties_even to_positive to_positive default (=ties_even) default (=ties_even) to_zero to_zero to_negative to_negative ties_away ties_away raises if creating from infinity raises if creating from infinity performs arithmetic with bigdecimals performs arithmetic with bigdecimals initializes from valid input initializes from valid input exponentiates exponentiates can normalize quotient can normalize quotient exponentiates with negative powers exponentiates with negative powers #<=> compares against NaNs compares against NaNs can be converted from other types can be converted from other types converts to string converts to string #ceil assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert raises if creating from NaN raises if creating from NaN handles modulus correctly handles modulus correctly converts to other number types converts to other number types hashes hashes #floor assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert raises InvalidBigDecimalException when initializing from invalid input raises InvalidBigDecimalException when initializing from invalid input Log building for type ignores parent source (types are absolute sources) building for type ignores parent source (types are absolute sources) can build with Log = ::Log.for(self) can build with Log = ::Log.for(self) can build nested with level override can build nested with level override can build for class can build for class can build with level override can build with level override can build sources from nested can build sources from nested can build for structs can build for structs can build for module type can build for module type can build for generic class (ignores generic args) can build for generic class (ignores generic args) Class does to_s does to_s clones clones #nilable? #nilable? does | does | does === does === does to_s with name redefined (#7292) does to_s with name redefined (#7292) comparison operators >= >= > > < < <= <= dups dups casts, allowing the class to be passed in at runtime casts, allowing the class to be passed in at runtime Socket .accept .accept .unix creates a unix socket creates a unix socket closes on exec by default closes on exec by default sends messages sends messages #tty? with non TTY with non TTY #finalize does not flush does not flush accept raises timeout error if read_timeout is specified accept raises timeout error if read_timeout is specified #bind using IPv4 binds to port using Socket::IPAddress binds to port using Socket::IPAddress binds to port using default IP binds to port using default IP binds to port binds to port using IPv6 binds to port using Socket::IPAddress binds to port using Socket::IPAddress binds to port using default IP binds to port using default IP binds to port binds to port sends datagram over unix socket sends datagram over unix socket XML::XPathContext finds with variable binding (float) finds with variable binding (float) finds nodes finds nodes finds boolean finds boolean finds with variable binding (nodes) finds with variable binding (nodes) finds with implicit (root) namespaces finds with implicit (root) namespaces finds string finds string finds with root namespaces (using prefix) finds with root namespaces (using prefix) finds with root namespaces finds with root namespaces raises on invalid xpath raises on invalid xpath NodeSet#to_s NodeSet#to_s returns nil with invalid xpath returns nil with invalid xpath finds with variable binding (bool) finds with variable binding (bool) finds with variable binding finds with variable binding finds with explicit namespace finds with explicit namespace finds with variable binding (node) finds with variable binding (node) finds with variable binding (string) finds with variable binding (string) finds number finds number Compress::Gzip writes and reads to memory writes and reads to memory reads file with extra fields from file system reads file with extra fields from file system rewinds rewinds writes and reads file with extra fields writes and reads file with extra fields XML doesn't set invalid node name doesn't set invalid node name parses HTML UTF-8 from IO (#13703) parses HTML UTF-8 from IO (#13703) unlinks nodes unlinks nodes deletes an attribute deletes an attribute parses XML UTF-8 from IO (#13703) parses XML UTF-8 from IO (#13703) #namespace when the element does not have a namespace, but has namespace declarations should return nil should return nil when the node has a namespace with a default prefix return the default namespace return the default namespace with a prefix return the prefixed namespace return the prefixed namespace without an explicit declaration on the node returns the related namespace returns the related namespace when the node does not have namespace should return nil should return nil gets version gets version parses parses #namespace_scopes includes parent namespaces includes parent namespaces returns empty array if no namespaces scopes exists returns empty array if no namespaces scopes exists gets root namespaces scopes gets root namespaces scopes #namespaces gets root namespaces as hash gets root namespaces as hash returns an empty hash if there are no namespaces returns an empty hash if there are no namespaces includes parent namespaces includes parent namespaces does to_s with correct encoding (#2319) does to_s with correct encoding (#2319) escapes content escapes content shows content when inspecting attribute shows content when inspecting attribute gets empty content gets empty content changes an attribute changes an attribute #namespace_definitions returns namespaces explicitly defined returns namespaces explicitly defined returns an empty array if no namespaces are defined returns an empty array if no namespaces are defined parses HTML UTF-8 from memory (#13703) parses HTML UTF-8 from memory (#13703) sets node text/content sets node text/content does to_s does to_s .build_fragment closes open elements closes open elements builds fragment without XML declaration builds fragment without XML declaration gets encoding gets encoding parses from io parses from io sets an attribute sets an attribute gets encoding when nil gets encoding when nil escapes content HTML fragment escapes content HTML fragment raises exception on empty string raises exception on empty string #errors #errors navigates in tree navigates in tree parses XML UTF-8 from memory (#13703) parses XML UTF-8 from memory (#13703) reads big xml file (#1455) reads big xml file (#1455) .build .build doesn't set invalid node content doesn't set invalid node content sets node name sets node name String UTF16 .from_utf16 in the range U+D800..U+DFFF in the range U+D800..U+DFFF in the range U+E000 to U+FFFF in the range U+E000 to U+FFFF handles null bytes handles null bytes in the range U+10000..U+10FFFF in the range U+10000..U+10FFFF in the range U+0000..U+D7FF in the range U+0000..U+D7FF with pointer reads multiple strings with pointer reads multiple strings to_utf16 in the range U+E000 to U+FFFF in the range U+E000 to U+FFFF in the range U+D800..U+DFFF in the range U+D800..U+DFFF in the range U+0000..U+D7FF in the range U+0000..U+D7FF in the range U+10000..U+10FFFF in the range U+10000..U+10FFFF in the range U+0000..U+FF in the range U+0000..U+FF BitArray #any? without block returns true if any bits are set returns true if any bits are set "#each" yielding "#each" yielding #rotate! rotates medium BitArray rotates medium BitArray rotates large BitArray rotates large BitArray rotates short BitArray rotates short BitArray rotates empty BitArray rotates empty BitArray #includes? returns whether the given bit is included returns whether the given bit is included #toggle toggles a bit toggles a bit raises on out of bound index raises on out of bound index toggles with index == size and count toggles with index == size and count toggles with index and count toggles with index and count toggles with range toggles with range toggles with index < 0 and count toggles with index < 0 and count toggles with index and count, not enough bits toggles with index and count, not enough bits raises on negative count raises on negative count toggles zero bits correctly toggles zero bits correctly #none? without block returns true if no bits are set returns true if no bits are set does to_s and inspect does to_s and inspect .new without block initializes with initial value initializes with initial value initializes with false by default initializes with false by default initializes with non-Int32 size initializes with non-Int32 size initializes with unused bits cleared initializes with unused bits cleared raises if size is negative raises if size is negative with block initializes elements with block initializes elements with block sets first bit to false sets first bit to false #tally without block tallies into the given hash tallies into the given hash doesn't add key into the tally hash if element doesn't exist doesn't add key into the tally hash if element doesn't exist tallies the number of set and cleared bits tallies the number of set and cleared bits sets first bit to true sets first bit to true #one? returns true if exactly one bit is set returns true if exactly one bit is set "#each_index" yielding "#each_index" yielding #fill without block, with range raises if start index is out of range raises if start index is out of range sets or clears a subrange of bits sets or clears a subrange of bits without block sets all bits sets all bits clears all bits clears all bits without block, with start and count raises if start index is out of range raises if start index is out of range sets or clears a subrange of bits sets or clears a subrange of bits reads bits from slice reads bits from slice [] gets with start and count exceeding size gets with start and count exceeding size gets on inclusive range gets on inclusive range zeroes unused bits zeroes unused bits raises on index out of bounds raises on index out of bounds doesn't exceed limits doesn't exceed limits gets on inclusive range with negative indices gets on inclusive range with negative indices gets (0..0) on empty array gets (0..0) on empty array raises on too negative left bound raises on too negative left bound gets with negative start gets with negative start raises on negative count raises on negative count gets 0, 0 on empty array gets 0, 0 on empty array gets on endless range gets on endless range raises on index out of bounds with start and count raises on index out of bounds with start and count gets on exclusive range gets on exclusive range gets with start and count gets with start and count gets on large bitarrays gets on large bitarrays gets on beginless range gets on beginless range raises on negative count on empty Array raises on negative count on empty Array raises on index out of bounds with range raises on index out of bounds with range gets on range with start higher than end gets on range with start higher than end does not cause overflow (#8494) does not cause overflow (#8494) gets on medium bitarrays gets on medium bitarrays returns empty if at end returns empty if at end gets on exclusive range with negative indices gets on exclusive range with negative indices raises on negative count raises on negative count preserves equality preserves equality gets on range with start higher than negative end gets on range with start higher than negative end sets second bit to false sets second bit to false provides dup provides dup #rindex without block accepts a start offset accepts a start offset returns index of last bit cleared returns index of last bit cleared returns index of last bit set returns index of last bit set has size has size #count without block returns the number of bits set returns the number of bits set returns the number of bits cleared returns the number of bits cleared "#reverse_each" iterator "#reverse_each" iterator is initially empty is initially empty #all? without block returns true if all bits are set returns true if all bits are set sets last bit to true with negative index sets last bit to true with negative index == compares other type compares other type compares other initialized with true (#8543) compares other initialized with true (#8543) compares empty compares empty compares elements compares elements compares other compares other sets second bit to true sets second bit to true raises when out of bounds raises when out of bounds "#reverse_each" yielding "#reverse_each" yielding inverts all bits inverts all bits #reverse! reverses large BitArray reverses large BitArray reverses empty BitArray reverses empty BitArray reverses short BitArray reverses short BitArray reverses medium BitArray reverses medium BitArray read bits written from slice read bits written from slice #index without block returns index of first bit cleared returns index of first bit cleared accepts a start offset accepts a start offset returns index of first bit set returns index of first bit set "#each_index" iterator "#each_index" iterator "#each" iterator "#each" iterator Exception inspects with cause inspects with cause allows subclassing #message allows subclassing #message inspects inspects collect memory within ensure block collect memory within ensure block IO::Buffered does new with block does new with block sync syncs (write) syncs (write) does puts with big string does puts with big string encoding decode gets big string gets big string gets gets gets_to_end gets_to_end gets big EUC-JP string gets big EUC-JP string reads char reads char gets with chomp = false gets with chomp = false does gets with chomp = false does gets with chomp = false shouldn't call unbuffered read if reading to an empty slice shouldn't call unbuffered read if reading to an empty slice skips skips does gets with char delimiter does gets with char delimiter does gets with char and limit without off-by-one does gets with char and limit without off-by-one does gets does gets does gets with big line does gets with big line read_buffering works with IO#read_byte works with IO#read_byte works with IO#read_byte (already buffered) works with IO#read_byte (already buffered) works with IO#read works with IO#read works with IO#read (already buffered) works with IO#read (already buffered) does gets with char and limit when not found in buffer does gets with char and limit when not found in buffer does puts does puts does gets with unicode char delimiter does gets with unicode char delimiter does gets with char and limit does gets with char and limit can set buffer_size to the same value after first use can set buffer_size to the same value after first use raises if invoking gets with negative limit raises if invoking gets with negative limit does puts many times does puts many times does gets with limit does gets with limit reads char reads char skips big skips big can report buffer_size can report buffer_size does gets with char and limit when not found in buffer (2) does gets with char and limit when not found in buffer (2) can not set buffer_size after first use can not set buffer_size after first use does gets with big line and \r\n does gets with big line and \r\n rewinds rewinds reads more than the buffer's internal capacity reads more than the buffer's internal capacity peeks peeks flush_on_newline flushes on flushes on doesn't write past count doesn't write past count can set buffer_size can set buffer_size reads byte reads byte does gets with big line and chomp = false does gets with big line and chomp = false writes more than the buffer's internal capacity writes more than the buffer's internal capacity writes bytes writes bytes Log::Metadata::Value initialize initialize json json accessors accessors Float::Printer::DiyFP normalizes ordered normalizes ordered converts min f64 converts min f64 multiply rounding multiply rounding normalizes min f64 normalizes min f64 converts ordered 64 converts ordered 64 multiply rounding multiply rounding multiply multiply converts ordered 32 converts ordered 32 converts max f64 converts max f64 converts min f32 converts min f32 multiply multiply normalizes max f64 normalizes max f64 multiply big numbers multiply big numbers converts max f32 converts max f32 Crypto::Bcrypt::Password new parses salt parses salt validates the hash string has the required amount of parts validates the hash string has the required amount of parts parses cost parses cost parses digest parses digest raises on unsupported version (#11584) raises on unsupported version (#11584) parses version parses version verify verifies password version 2 is correct (#11584) verifies password version 2 is correct (#11584) verifies password version 2y is correct verifies password version 2y is correct verifies password version 2b is correct (#11584) verifies password version 2b is correct (#11584) verifies password is correct verifies password is correct verifies password version 2a is correct (#11584) verifies password version 2a is correct (#11584) verifies password is incorrect verifies password is incorrect create generates salt generates salt generates digest generates digest uses cost uses cost OAuth::AuthorizationHeader builds builds Digest::CRC32 calculates hash from UInt8 slices calculates hash from UInt8 slices calculates digest from string calculates digest from string #hexdigest can update within a loop from explicit expr (#9483) #hexdigest can update within a loop from explicit expr (#9483) can take a block can take a block calculates hash from string calculates hash from string should be able to calculate crc32 should be able to calculate crc32 digest with file content digest with file content context are independent context are independent should be able to calculate crc32 combined should be able to calculate crc32 combined calculates hash from unicode string calculates hash from unicode string resets resets calculates base64'd hash from string calculates base64'd hash from string .dup preserves type preserves type preserves value preserves value leads to deterministic updates leads to deterministic updates leads to not sharing state leads to not sharing state return the digest size return the digest size can't call final twice can't call final twice calculates hash of #to_slice calculates hash of #to_slice #hexdigest can update within a loop by indirect expr (#9483) #hexdigest can update within a loop by indirect expr (#9483) UUID parsing strings returns nil if it has the wrong number of characters returns nil if it has the wrong number of characters returns a properly parsed UUID returns a properly parsed UUID returns nil if it has incorrect characters returns nil if it has incorrect characters initialize from static array works with static array and version works with static array and version works with static array, variant and version works with static array, variant and version works with static array and variant works with static array and variant works with static array only works with static array only #== matches identical UUIDs matches identical UUIDs initialize with String works with string and version works with string and version works with string only works with string only works with string and variant works with string and variant can be built from strings can be built from strings v1 returns true if UUID is v1, false otherwise returns true if UUID is v1, false otherwise v4! returns true if UUID is v4, raises otherwise returns true if UUID is v4, raises otherwise v3 generates DNS based names correctly generates DNS based names correctly generates X500 based names correctly generates X500 based names correctly generates OID based names correctly generates OID based names correctly generates URL based names correctly generates URL based names correctly v4? returns true if UUID is v4, false otherwise returns true if UUID is v4, false otherwise v7 generates UUIDs that are sortable with 1ms precision generates UUIDs that are sortable with 1ms precision generates a v7 UUID generates a v7 UUID initializes zeroed UUID initializes zeroed UUID fails on invalid arguments when creating fails on invalid arguments when creating #<=> correctly compares two UUIDs correctly compares two UUIDs v2 returns true if UUID is v2, false otherwise returns true if UUID is v2, false otherwise v5 generates OID based names correctly generates OID based names correctly generates X500 based names correctly generates X500 based names correctly generates DNS based names correctly generates DNS based names correctly generates URL based names correctly generates URL based names correctly initializes with slice initializes with slice initializes from UUID initializes from UUID supports different string formats hexstring hexstring urn urn normal output normal output random initialize does inspect does inspect works with no options works with no options works with variant works with variant works with version works with version exit exits with given error code exits with given error code exits normally with status 0 exits normally with status 0 Log::Dispatcher create dispatcher from enum create dispatcher from enum Log::Metadata empty? empty? []? []? extend extend json json extend against empty values without creating a new instance extend against empty values without creating a new instance #dup creates a shallow copy creates a shallow copy defrags defrags [] [] == == empty empty Regex #inspect with literal-compatible options escapes escapes prints flags prints flags with non-literal-compatible options escapes escapes prints flags prints flags #== #== .error? .error? #matches? options anchored anchored extended ignores white space ignores white space ignores comments ignores comments multiline anchor anchor span span ignore case ignore case with options deprecated Regex::Options deprecated Regex::Options Regex::MatchOptions Regex::MatchOptions doesn't crash with a large single line string doesn't crash with a large single line string basic basic unicode unicode support unicode support matches unicode char against [[:print:]] (#11262) matches unicode char against [[:print:]] (#11262) matches unicode char against [[:alnum:]] (#4704) matches unicode char against [[:alnum:]] (#4704) invalid codepoint invalid codepoint #=== basic basic assigns captures assigns captures #match with options deprecated Regex::Options deprecated Regex::Options Regex::Match options Regex::Match options returns nil on non-match returns nil on non-match with invalid UTF-8 with invalid UTF-8 skip invalid UTF check skip invalid UTF check with pos char index char index positive positive negative negative assigns captures assigns captures returns matchdata returns matchdata #options #options #+ #+ #match! with options Regex::Match options Regex::Match options assigns captures assigns captures raises on non-match raises on non-match returns match data returns match data #name_table alpanumeric alpanumeric is a map of capture group number to name is a map of capture group number to name more than 255 groups more than 255 groups duplicate name duplicate name .new doesn't crash when PCRE tries to free some memory (#771) doesn't crash when PCRE tries to free some memory (#771) raises on invalid UTF-8 raises on invalid UTF-8 raises exception with invalid regex raises exception with invalid regex options regular regular unnamed option unnamed option #capture_count #capture_count #clone #clone .supports_match_options? .supports_match_options? .escape .escape #to_s with options with options with slash with slash interpolation interpolation #matches_at_byte_index? positive index positive index multibyte index multibyte index negative negative with options deprecated Regex::Options deprecated Regex::Options Regex::MatchOptions Regex::MatchOptions #dup #dup .literal .literal .union combines Regex objects in the same way as Regex#+ combines Regex objects in the same way as Regex#+ constructs a Regex that matches things any of its arguments match constructs a Regex that matches things any of its arguments match returns a regular expression that will match passed arguments returns a regular expression that will match passed arguments accepts a single Array(String | Regex) argument accepts a single Array(String | Regex) argument quotes any string arguments quotes any string arguments returns a Regex with an Array(String) with special characters returns a Regex with an Array(String) with special characters accepts a single Tuple(String | Regex) argument accepts a single Tuple(String | Regex) argument #hash #hash #=~ accepts any type accepts any type returns match index or nil returns match index or nil assigns captures assigns captures #match_at_byte_index negative negative with options deprecated Regex::Options deprecated Regex::Options Regex::MatchOptions Regex::MatchOptions assigns captures assigns captures positive index positive index multibyte index multibyte index .supports_compile_options? .supports_compile_options? #source #source .needs_escape? String String Char Char XML::Reader #node_type returns the node type returns the node type #next reads next node in doc order, skipping subtrees reads next node in doc order, skipping subtrees #[]? reads node attributes reads node attributes raises if attribute contains null byte raises if attribute contains null byte #move_to_first_attribute moves to the first attribute of the node moves to the first attribute of the node #move_to_attribute moves to attribute with the specified name moves to attribute with the specified name raises if attribute contains null byte raises if attribute contains null byte #read_inner_xml reads the contents of the node including child nodes and markup reads the contents of the node including child nodes and markup #expand? is only available until the next read is only available until the next read parses the content of the node and subtree parses the content of the node and subtree .new with default parser options can be initialized from an io can be initialized from an io can be initialized from a string can be initialized from a string with custom parser options can be initialized from a string can be initialized from a string can be initialized from an io can be initialized from an io #expand parses the content of the node and subtree parses the content of the node and subtree is only available until the next read is only available until the next read raises an exception if the node could not be expanded raises an exception if the node could not be expanded #read reads all nodes reads all nodes reads all non-blank nodes with NOBLANKS option reads all non-blank nodes with NOBLANKS option #move_to_next_attribute moves to the next attribute of the node moves to the next attribute of the node #depth returns the depth of the node returns the depth of the node #empty_element? checks if the node is empty checks if the node is empty #to_unsafe returns a pointer to the underlying LibXML::XMLTextReader returns a pointer to the underlying LibXML::XMLTextReader #read_outer_xml reads the xml of the node including child nodes and markup reads the xml of the node including child nodes and markup #move_to_element moves to the element node that contains the current attribute node moves to the element node that contains the current attribute node #value reads node text value reads node text value #[] reads node attributes reads node attributes raises if attribute contains null byte raises if attribute contains null byte #name reads node name reads node name #has_attributes? checks if the node has attributes checks if the node has attributes #attributes_count returns the node's number of attributes returns the node's number of attributes #next_sibling reads next sibling node in doc order, skipping subtrees reads next sibling node in doc order, skipping subtrees Spec list_tags does nothing if there are no examples does nothing if there are no examples lists the count of all tags lists the count of all tags lists the count of slow tags lists the count of slow tags Indexable(T) #to_a without a block of an interface type without a block of an interface type permutations accepts a block accepts a block assert assert assert assert assert assert returns iterator returns iterator yielding dup of arrays yielding dup of arrays yields with reuse = true yields with reuse = true returns iterator with given size returns iterator with given size assert assert assert assert assert assert assert assert assert assert assert assert returns iterator with reuse = true returns iterator with reuse = true does each does each .each_cartesian does with an Indexable of Indexables, without block, combined with select does with an Indexable of Indexables, without block, combined with select does with reuse = array, with block does with reuse = array, with block does with an Indexable of Indexables, without block does with an Indexable of Indexables, without block does with reuse = true, with block does with reuse = true, with block does with reuse = true, without block does with reuse = true, without block does with an Indexable of Indexables, with block does with an Indexable of Indexables, with block does with reuse = array, without block does with reuse = array, without block combinations yielding dup of arrays yielding dup of arrays assert assert assert assert assert assert accepts a block accepts a block assert assert does with reuse = true does with reuse = true returns iterator with reuse = array returns iterator with reuse = array assert assert assert assert returns iterator with reuse = true returns iterator with reuse = true assert assert does with reuse = array does with reuse = array assert assert assert assert assert assert returns iterator returns iterator assert assert fetch fetches with block fetches with block fetches with default value fetches with default value .cartesian_product does with an Indexable of Indexables does with an Indexable of Indexables does with a Tuple of Tuples with mixed types does with a Tuple of Tuples with mixed types #join joins non-strings joins non-strings joins strings (non-empty case) joins strings (non-empty case) joins when T has String joins when T has String joins strings (empty case) joins strings (empty case) with IO with IO iterates until its size, having mutated (#3386) iterates until its size, having mutated (#3386) iterates through a subset of its elements (#3386) iterates through a subset of its elements (#3386) #index does index with big offset does index with big offset offset type offset type does index with big negative offset does index with big negative offset #index! raises if no element is found raises if no element is found offset type offset type #rindex does rindex with big offset does rindex with big offset offset type offset type does rindex with big negative offset does rindex with big negative offset #cartesian_product does with >1 other Indexables does with >1 other Indexables does with 1 other Indexable does with 1 other Indexable does each_index does each_index iterates within a range of indices, no beginning iterates within a range of indices, no beginning iterates within a range of indices, no end iterates within a range of indices, no end iterates until its size, having mutated (#3386) iterates until its size, having mutated (#3386) #rindex! does rindex with big negative offset does rindex with big negative offset does rindex with big offset does rindex with big offset offset type offset type iterates within a range of indices (#3386) iterates within a range of indices (#3386) iterates until its size (#3386) iterates until its size (#3386) dig raises IndexError if not found raises IndexError if not found gets the value at given path given splat gets the value at given path given splat dig? returns nil if not found returns nil if not found gets the value at given path given splat gets the value at given path given splat repeated_combinations returns iterator with reuse = array returns iterator with reuse = array assert assert yields with reuse = array yields with reuse = array assert assert returns iterator returns iterator assert assert assert assert assert assert yielding dup of arrays yielding dup of arrays returns iterator with reuse = true returns iterator with reuse = true assert assert accepts a block accepts a block n > size (#14088) "#each_repeated_combination" iterator "#each_repeated_combination" iterator "#each_repeated_combination" yielding "#each_repeated_combination" yielding "#each_repeated_combination" iterator "#each_repeated_combination" iterator "#each_repeated_combination" yielding "#each_repeated_combination" yielding assert assert yields with reuse = true yields with reuse = true assert assert assert assert #each_cartesian does with 1 other Indexable, without block does with 1 other Indexable, without block does with >1 other Indexables, without block does with >1 other Indexables, without block does with 1 other Indexable, with block does with 1 other Indexable, with block does with 1 other Indexable, without block, combined with select does with 1 other Indexable, without block, combined with select does with >1 other Indexables, with block does with >1 other Indexables, with block JSON serialization provide symmetric encoding and decoding for Union types provide symmetric encoding and decoding for Union types to_json does for Int32 does for Int32 does for Hash with Float64 keys does for Hash with Float64 keys does for Iterator does for Iterator does for Set does for Set does for Array does for Array does for Int128 does for Int128 does for BigDecimal does for BigDecimal does for Hash with Float32 keys does for Hash with Float32 keys does for String with control codes does for String with control codes does for Tuple does for Tuple does for String with control codes in a few places does for String with control codes in a few places does for String with quote does for String with quote raises if Float is NaN raises if Float is NaN does for String does for String does for BigFloat does for BigFloat raises if Float is infinity raises if Float is infinity Enum normal enum normal enum flag enum flag enum does for NamedTuple does for NamedTuple does for Path does for Path does for Hash does for Hash does for Nil does for Nil does for Float64 does for Float64 does for Hash with symbol keys does for Hash with symbol keys does for Hash with newlines does for Hash with newlines Enum::ValueConverter flag enum flag enum normal enum normal enum does for Hash with BigInt keys does for Hash with BigInt keys does for Hash with int keys does for Hash with int keys does for UUID does for UUID does for Deque does for Deque does for StaticArray does for StaticArray does for Bool does for Bool does for BigInt does for BigInt does for String with slash does for String with slash from_json deserializes union with Int64 (fast path) deserializes union with Int64 (fast path) does UInt128.from_json does UInt128.from_json deserializes with root deserializes with root does for tuple does for tuple parse exceptions captures overflows for integer types captures overflows for integer types has correct location when raises in NamedTuple#from_json has correct location when raises in NamedTuple#from_json has correct location when raises in Union#from_json has correct location when raises in Union#from_json deserializes union with UInt64 (fast path) deserializes union with UInt64 (fast path) errors on non-base-10 ints errors on non-base-10 ints does for BigDecimal from int does for BigDecimal from int does Array(Float64)#from_json does Array(Float64)#from_json Enum::ValueConverter.from_json flag enum flag enum normal enum normal enum deserializes union with Int16 (fast path) deserializes union with Int16 (fast path) does UInt16.from_json does UInt16.from_json raises for BigFloat from unsupported types raises for BigFloat from unsupported types deserializes union with Float64 (fast path) deserializes union with Float64 (fast path) does for tuple with file-private type does for tuple with file-private type Enum flag enum flag enum normal enum normal enum does for empty named tuple does for empty named tuple does for BigFloat from int does for BigFloat from int does Path.from_json does Path.from_json does UInt32.from_json does UInt32.from_json does Hash(String, String)#from_json does Hash(String, String)#from_json does Array(Float32)#from_json does Array(Float32)#from_json does Hash(String, Int32)#from_json does Hash(String, Int32)#from_json deserializes union with UInt8 (fast path) deserializes union with UInt8 (fast path) raises if Int32.from_json overflows raises if Int32.from_json overflows deserializes union with Int128 (fast path) deserializes union with Int128 (fast path) raises an error Iterator(String)#from_json with invalid JSON raises an error Iterator(String)#from_json with invalid JSON does Int64.from_json does Int64.from_json does Array(Bool)#from_json does Array(Bool)#from_json does for UUID (hyphenated) does for UUID (hyphenated) deserializes union deserializes union does for BigFloat from string does for BigFloat from string does for named tuple with nilable fields and null (#8089) does for named tuple with nilable fields and null (#8089) raises if UInt128.from_json overflows raises if UInt128.from_json overflows does Hash(BigDecimal, String)#from_json does Hash(BigDecimal, String)#from_json deserializes union with bool (fast path) deserializes union with bool (fast path) deserializes Time deserializes Time does for BigInt does for BigInt raises for BigInt from unsupported types raises for BigInt from unsupported types deserializes union with Int8 (fast path) deserializes union with Int8 (fast path) does String.from_json does String.from_json deserializes union with UInt16 (fast path) deserializes union with UInt16 (fast path) deserializes union with Int32 (fast path) deserializes union with Int32 (fast path) raises if Int8.from_json overflows raises if Int8.from_json overflows does Hash(Float64, String)#from_json does Hash(Float64, String)#from_json deserializes union with Float32 (fast path) deserializes union with Float32 (fast path) does for UUID (hex) does for UUID (hex) raises if UInt32.from_json overflows raises if UInt32.from_json overflows does Hash(Float32, String)#from_json does Hash(Float32, String)#from_json does UInt64.from_json does UInt64.from_json does Hash(BigFloat, String)#from_json does Hash(BigFloat, String)#from_json does for named tuple with file-private type does for named tuple with file-private type does UInt8.from_json does UInt8.from_json raises an error Iterator(String)#from_json with invalid types raises an error Iterator(String)#from_json with invalid types does for Array(Int32) from IO does for Array(Int32) from IO raises for BigDecimal from unsupported types raises for BigDecimal from unsupported types raises if UInt8.from_json overflows raises if UInt8.from_json overflows does Int16.from_json does Int16.from_json errors on underscores inside ints errors on underscores inside ints does for named tuple with nilable fields (#8089) does for named tuple with nilable fields (#8089) does Hash(BigInt, String)#from_json does Hash(BigInt, String)#from_json raises if UInt64.from_json overflows raises if UInt64.from_json overflows does for empty tuple does for empty tuple raises an error Hash(String, Int32)#from_json with null value raises an error Hash(String, Int32)#from_json with null value does for named tuple does for named tuple does Deque(String)#from_json does Deque(String)#from_json does Array(Int64)#from_json does Array(Int64)#from_json does Array(Int32)#from_json does Array(Int32)#from_json does for named tuple with spaces in key and quote char (#10918) does for named tuple with spaces in key and quote char (#10918) does for Array(Int32) with block does for Array(Int32) with block does Iterator(String)#from_json does Iterator(String)#from_json deserializes unions of the same kind and remains stable deserializes unions of the same kind and remains stable deserializes union with UInt128 (fast path) deserializes union with UInt128 (fast path) does Int128.from_json does Int128.from_json raises if Int128.from_json overflows raises if Int128.from_json overflows deserializes union with UInt32 (fast path) deserializes union with UInt32 (fast path) does for named tuple with spaces in key (#10918) does for named tuple with spaces in key (#10918) deserializes union of Int32 and Float64 (#7333) deserializes union of Int32 and Float64 (#7333) raises if Int64.from_json overflows raises if Int64.from_json overflows raises if UInt16.from_json overflows raises if UInt16.from_json overflows does for UUID (urn) does for UUID (urn) does for BigDecimal from string does for BigDecimal from string does Int8.from_json does Int8.from_json does Hash(Int32, String)#from_json does Hash(Int32, String)#from_json does for BigDecimal from float does for BigDecimal from float does Array(Nil)#from_json does Array(Nil)#from_json raises if Int16.from_json overflows raises if Int16.from_json overflows does Int32.from_json does Int32.from_json does for BigFloat does for BigFloat to_pretty_json does for empty Array does for empty Array does for Array with indent does for Array with indent does for Float64 does for Float64 Time omit sub-second precision omit sub-second precision #to_json #to_json does for empty Hash does for empty Hash does for Int32 does for Int32 does for Hash does for Hash does for String does for String does for Bool does for Bool does for nested Array does for nested Array does for nested Hash with indent does for nested Hash with indent does for Nil does for Nil does for Array does for Array does for nested Hash does for nested Hash Spec::ExampleGroup #randomize with a seed with a seed by default by default #report should include parent's description should include parent's description #all_tags should include ancestor tags should include ancestor tags Box boxing nil in a reference-like union returns a null pointer (#11839) boxing nil in a reference-like union returns a null pointer (#11839) boxing a nilable value returns the same value boxing a nilable value returns the same value boxing nil in a value-like union doesn't crash (#11839) boxing nil in a value-like union doesn't crash (#11839) boxing a nilable reference returns the same pointer boxing a nilable reference returns the same pointer boxes with explicit type boxes with explicit type boxes and unboxes boxes and unboxes boxing a reference returns the same pointer boxing a reference returns the same pointer boxing nil returns a null pointer boxing nil returns a null pointer File .tempfile accepts single suffix argument accepts single suffix argument with block accepts dir argument accepts dir argument closes file closes file accepts single suffix argument accepts single suffix argument accepts prefix and suffix arguments accepts prefix and suffix arguments accepts prefix and suffix arguments accepts prefix and suffix arguments creates and writes creates and writes fails in nonwriteable folder fails in nonwriteable folder accepts dir argument accepts dir argument rejects null byte rejects null byte .tempname accepts single suffix argument accepts single suffix argument accepts dir argument accepts dir argument creates a path without creating the file creates a path without creating the file accepts prefix with separator accepts prefix with separator accepts prefix and suffix arguments accepts prefix and suffix arguments WaitGroup waits until concurrent executions are finished waits until concurrent executions are finished increments the counter from executing fibers increments the counter from executing fibers #add can't increment after reaching negative counter can't increment after reaching negative counter resumes waiters when reaching negative counter resumes waiters when reaching negative counter can't decrement to a negative counter can't decrement to a negative counter takes a block to WaitGroup.wait takes a block to WaitGroup.wait #done can't decrement to a negative counter can't decrement to a negative counter resumes waiters when reaching negative counter resumes waiters when reaching negative counter stress add/done/wait stress add/done/wait #wait immediately raises when counter is negative immediately raises when counter is negative raises when counter is positive after wake up raises when counter is positive after wake up immediately returns when counter is zero immediately returns when counter is zero __modti3 passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests YAML::Any .new .new clones clones exposes $~ when doing Regex#=== exposes $~ when doing Regex#=== #size of array of array of hash of hash can compare with === can compare with === #dig? returns nil for non-Hash/Array intermediary values returns nil for non-Hash/Array intermediary values returns nil if not found returns nil if not found gets the value at given path given splat gets the value at given path given splat #[]? hash fetches Float64 fetches Float64 fetches Slice(UInt8) fetches Slice(UInt8) fetches Int64 fetches Int64 fetches Array(YAML::Any) fetches Array(YAML::Any) fetches Set(YAML::Any) fetches Set(YAML::Any) fetches Nil fetches Nil fetches Hash(YAML::Any, YAML::Any) fetches Hash(YAML::Any, YAML::Any) fetches Time fetches Time fetches Bool fetches Bool fetches String fetches String of array of array of hash with integer keys of hash with integer keys of hash of hash is enumerable is enumerable returns array of any when doing parse all returns array of any when doing parse all #[] of array of array hash fetches Hash(YAML::Any, YAML::Any) fetches Hash(YAML::Any, YAML::Any) fetches Bool fetches Bool fetches Time fetches Time fetches Nil fetches Nil fetches Array(YAML::Any) fetches Array(YAML::Any) fetches Slice(UInt8) fetches Slice(UInt8) fetches Set(YAML::Any) fetches Set(YAML::Any) fetches String fetches String fetches Float64 fetches Float64 fetches Int64 fetches Int64 #to_json #to_json traverses big structure traverses big structure dups dups compares to other objects compares to other objects dig raises if not found raises if not found gets the value at given path given splat gets the value at given path given splat casts gets anchor gets anchor gets float64 gets float64 doesn't get quoted numbers doesn't get quoted numbers gets int32 gets int32 gets bytes gets bytes gets hash gets hash gets int64 gets int64 gets string gets string gets yes/no unquoted booleans gets yes/no unquoted booleans gets nil gets nil gets float32 from JSON integer (#8618) gets float32 from JSON integer (#8618) gets float64 from JSON integer (#8618) gets float64 from JSON integer (#8618) gets time gets time gets array gets array gets bool gets bool gets float32 gets float32 String::Builder raises EOFError raises EOFError raises if invokes to_s twice raises if invokes to_s twice builds builds #chomp! returns self returns self goes back goes back allocates for > 1 GB allocates for > 1 GB goes back all goes back all HTTP::Client will retry once on connection error will retry once on connection error cannot reconnect when initialized with IO cannot reconnect when initialized with IO doesn't read the body if request was HEAD doesn't read the body if request was HEAD tests write_timeout tests write_timeout #set_defaults sets default Host header sets default Host header will not retry when closed (block) (#12464) will not retry when closed (block) (#12464) will not retry when closed (non-block) (#12464) will not retry when closed (non-block) (#12464) works with IO works with IO tests empty Content-Type tests empty Content-Type tests read_timeout tests read_timeout can be subclassed can be subclassed raises if URI is missing scheme raises if URI is missing scheme from String raises when not a host raises when not a host will retry a broken socket will retry a broken socket sends a 'connection: close' header on one-shot request with block sends a 'connection: close' header on one-shot request with block raises if URI is missing host raises if URI is missing host logging emit logs with block emit logs with block emit logs emit logs tests connect_timeout tests connect_timeout sends a 'connection: close' header on one-shot request sends a 'connection: close' header on one-shot request from a host yields to a block yields to a block will not retry if IO::Error in request handling will not retry if IO::Error in request handling from URI raises error if URI is missing host raises error if URI is missing host keeps context keeps context allows for specified ports allows for specified ports has sane defaults has sane defaults doesn't take context for HTTP doesn't take context for HTTP yields to a block yields to a block raises error if not http schema raises error if not http schema detects HTTPS detects HTTPS can specify host and port when initialized with IO can specify host and port when initialized with IO ensures closing the response when breaking out of block ensures closing the response when breaking out of block sends the host header ipv6 with brackets sends the host header ipv6 with brackets retry does not affect implicit compression (#11354) retry does not affect implicit compression (#11354) Log::Builder creates a log with nil backend creates a log with nil backend can turn off parent and allow child source can turn off parent and allow child source creates a log for broadcast backend creates a log for broadcast backend can reconfigures existing logs can reconfigures existing logs creates a log with single backend creates a log with single backend uses last level for a source x backend (single-backend) uses last level for a source x backend (single-backend) creates a log with broadcast backend creates a log with broadcast backend removes all logs backends on .clear removes all logs backends on .clear should allow collection of unreferenced logs should allow collection of unreferenced logs creates a log for same broadcast backend added multiple times creates a log for same broadcast backend added multiple times should allow recreation of deallocated logs should allow recreation of deallocated logs returns log without backend if pattern does not match returns log without backend if pattern does not match returns log with backend if pattern matches returns log with backend if pattern matches uses last level for a source x backend uses last level for a source x backend returns same instance returns same instance .matches on third level on third level on second level on second level on top-level on top-level avoids prefix collision avoids prefix collision on first level on first level does not alter user-provided broadcast backend does not alter user-provided broadcast backend UNIXSocket sends and receives messages sends and receives messages tests read and write timeouts tests read and write timeouts raises when path is too long raises when path is too long tests socket options tests socket options creates a pair of sockets creates a pair of sockets sync flag after accept sync flag after accept Backtrace prints exception backtrace to stderr prints exception backtrace to stderr print exception with non-existing PWD print exception with non-existing PWD prints file line:column prints file line:column prints crash backtrace to stderr prints crash backtrace to stderr doesn't relativize paths outside of current dir (#10169) doesn't relativize paths outside of current dir (#10169) OpenSSL::SSL::Context insecure for server insecure for server returns options returns options sets the verify mode sets the verify mode fails to set private key fails to set private key new for server new for server sets certificate chain sets certificate chain ciphers sets cipher_suites sets cipher_suites sets old ciphers sets old ciphers sets modern ciphers sets modern ciphers sets ciphers sets ciphers sets intermediate ciphers sets intermediate ciphers uses intermediate default ciphers uses intermediate default ciphers removes options removes options returns modes returns modes sets private key sets private key adds options adds options calls #finalize on insecure client context calls #finalize on insecure client context calls #finalize on insecure server context calls #finalize on insecure server context new for client new for client adds temporary ecdh curve (P-256) adds temporary ecdh curve (P-256) changes security level changes security level LibSSL::VerifyMode .parse none (#7455) .parse none (#7455) removes modes removes modes fails to set certificate chain fails to set certificate chain .from_hash builds builds errors errors alpn_protocol= alpn_protocol= adds modes adds modes insecure for client insecure for client IO::Delimited #write raises raises #read with partial read handles partial reads handles partial reads without peeking doesn't clobber active_delimiter_buffer doesn't clobber active_delimiter_buffer handles nearly a delimiter at the end handles nearly a delimiter at the end doesn't clobber the buffer on closely-offset partial matches doesn't clobber the buffer on closely-offset partial matches doesn't read past the limit doesn't read past the limit handles the delimiter at the start handles the delimiter at the start doesn't read past the limit (char-by-char) doesn't read past the limit (char-by-char) handles the delimiter at the end handles the delimiter at the end with peeking handles the delimiter at the end handles the delimiter at the end handles the delimiter at the start handles the delimiter at the start handles the case of peek matching first byte, not having enough room, but later matching handles the case of peek matching first byte, not having enough room, but later matching handles the case of peek matching first byte, not having enough room, but rest not matching handles the case of peek matching first byte, not having enough room, but rest not matching doesn't read past the limit, single byte doesn't read past the limit, single byte returns empty when there's no data returns empty when there's no data peeks, everything matches but we can't know what will happen after that peeks, everything matches but we can't know what will happen after that handles the case of the active delimited buffer including the delimiter handles the case of the active delimited buffer including the delimiter handles nearly a delimiter at the end handles nearly a delimiter at the end handles the case of peek matching first byte, not having enough room, but later not matching handles the case of peek matching first byte, not having enough room, but later not matching handles the case of peek matching first byte, not having enough room, but rest not immediately matching (with a potential match afterwards) handles the case of peek matching first byte, not having enough room, but rest not immediately matching (with a potential match afterwards) doesn't read past the limit (char-by-char) doesn't read past the limit (char-by-char) can peek if first byte found but doesn't fully match, and the byte isn't there in the peek buffer can peek if first byte found but doesn't fully match, and the byte isn't there in the peek buffer doesn't clobber the buffer on closely-offset partial matches doesn't clobber the buffer on closely-offset partial matches doesn't read past the limit doesn't read past the limit handles the case of peek matching first byte, not having enough room, but later not matching (limted slice) handles the case of peek matching first byte, not having enough room, but later not matching (limted slice) doesn't clobber active_delimiter_buffer doesn't clobber active_delimiter_buffer can peek if first byte found but doesn't fully match, and there's that first byte again in the peek buffer can peek if first byte found but doesn't fully match, and there's that first byte again in the peek buffer handles the case of peek matching first byte, not having enough room, later only partially matching handles the case of peek matching first byte, not having enough room, later only partially matching #gets with peeking when can't peek gets gets peeks peeks #close stops reading stops reading closes the underlying stream if sync_close is true closes the underlying stream if sync_close is true Number #format assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does not perform double rounding when decimal places are given does not perform double rounding when decimal places are given assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert extracts integer part correctly (#12997) extracts integer part correctly (#12997) assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #humanize assert assert assert assert assert assert assert assert assert assert using custom prefixes assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert Enumerable index_by creates a hash indexed by the value returned by the block creates a hash indexed by the value returned by the block overrides values if a value is returned twice overrides values if a value is returned twice first calls block if empty calls block if empty assert assert raises if enumerable empty raises if enumerable empty gets first gets first in_groups_of raises argument error if size is less than 0 raises argument error if size is less than 0 assert assert reuses with existing array reuses with existing array assert assert assert assert assert assert reuses with true reuses with true takes a block takes a block assert assert to_h with block with block for array for array for tuples for tuples find! finds finds raises if not found raises if not found sum assert assert slices slices strings strings assert assert array of arrays array of arrays assert assert assert assert uses additive_identity from type uses additive_identity from type assert assert assert assert float float max_by? returns nil if empty returns nil if empty first? returns nil if enumerable empty returns nil if enumerable empty gets first? gets first? zip works for Iterators as receiver works for Iterators as receiver minmax_by assert assert product assert assert assert assert uses zero from type uses zero from type assert assert assert assert assert assert assert assert #present? assert assert assert assert partition assert assert with mono type on mono type with mono type on mono type with missing type on union type with missing type on union type assert assert with mono type on union type with mono type on union type with union type on union type with union type on union type max_of raises if not comparable raises if not comparable assert assert #join (&) (&) (io, separator, &) (io, separator, &) (separator, io) (deprecated) (separator, io) (deprecated) (io) (io) (separator, io, &) (deprecated) (separator, io, &) (deprecated) (separator, &) (separator, &) (separator) (separator) (io, &) (io, &) (io, separator) (io, separator) () () all? with pattern returns true returns true returns false returns false map_with_index yields the element and the index yields the element and the index yields the element and the index of an iterator yields the element and the index of an iterator count with block returns the number of the times the item is present returns the number of the times the item is present chunk does not return elements for which the block returns Enumerable::Chunk::Drop does not return elements for which the block returns Enumerable::Chunk::Drop rewind rewind returns elements for which the block returns Enumerable::Chunk::Alone in separate Arrays returns elements for which the block returns Enumerable::Chunk::Alone in separate Arrays nil allowed as value nil allowed as value alone all alone all work with class work with class drop all drop all nil 2 case nil 2 case works with block works with block returns elements of the Enumerable in an Array of Tuple, {v, ary}, where 'ary' contains the consecutive elements for which the block returned the value 'v' returns elements of the Enumerable in an Array of Tuple, {v, ary}, where 'ary' contains the consecutive elements for which the block returned the value 'v' reuses true reuses true works works #to_set without block creates a Set from the unique elements of the collection creates a Set from the unique elements of the collection with block creates a Set from running the block against the collection's elements creates a Set from running the block against the collection's elements first assert assert raises if count is negative raises if count is negative assert assert min raises if empty raises if empty raises if n is negative raises if n is negative assert assert assert assert raises if not comparable raises if not comparable assert assert assert assert assert assert assert assert assert assert assert assert raises if not comparable in min(n) raises if not comparable in min(n) assert assert does not modify the array does not modify the array #empty? assert assert assert assert max? returns nil if empty returns nil if empty max_of? returns nil if empty returns nil if empty none? assert assert assert assert to_a without a block of an interface type without a block of an interface type without a block without a block with a block with a block index with a block returns nil if no object could be found returns nil if no object could be found returns the index of the first element where the block returns true returns the index of the first element where the block returns true to_a converts to an Array converts to an Array reduce does not raise if empty if there is a memo argument does not raise if empty if there is a memo argument assert assert assert assert raises if empty raises if empty assert assert allows block return type to be different from element type allows block return type to be different from element type assert assert zip? works for Iterators as receiver works for Iterators as receiver any? without block returns true if at least one element is truthy returns true if at least one element is truthy returns false if all elements are falsey returns false if all elements are falsey size without block returns the number of elements in the Enumerable returns the number of elements in the Enumerable #accumulate prefix sums assert assert assert assert assert assert prefix sums, with init assert assert preserves initial type preserves initial type assert assert assert assert generic cumulative fold assert assert assert assert generic cumulative fold, with init preserves initial type preserves initial type assert assert assert assert max_by assert assert index! with a block raises if not found raises if not found returns the index of the first element where the block returns true returns the index of the first element where the block returns true min? returns nil if empty returns nil if empty sample multiple-element samples k elements out of n samples k elements out of n samples 0 elements samples 0 elements samples k elements out of n, where k > n samples k elements out of n, where k > n raises on k < 0 raises on k < 0 samples k elements out of n, with random samples k elements out of n, with random samples 1 element samples 1 element single-element raises on empty self raises on empty self samples without random samples without random samples with random samples with random each_with_index gets each_with_index iterator gets each_with_index iterator yields the element and the index yields the element and the index accepts an optional offset parameter accepts an optional offset parameter index with an object returns nil if the object was not found returns nil if the object was not found returns the index of that object if found returns the index of that object if found compact map assert assert each_with_object yields the element and the given object yields the element and the given object gets each_with_object iterator gets each_with_object iterator includes? is false if the object is not part of the collection is false if the object is not part of the collection is true if the object exists in the collection is true if the object exists in the collection skip returns an empty array when skipping more elements than array size returns an empty array when skipping more elements than array size returns an array without the skipped elements returns an array without the skipped elements raises if count is negative raises if count is negative min_of? returns nil if empty returns nil if empty map applies the function to each element and returns a new array applies the function to each element and returns a new array leaves the original unmodified leaves the original unmodified minmax_of assert assert raises if not comparable raises if not comparable index! with an object raises if not found raises if not found returns the index of that object if found returns the index of that object if found min_by assert assert all? with block returns false returns false returns true returns true minmax assert assert raises if empty raises if empty min_by? returns nil if empty returns nil if empty minmax? raises if not comparable raises if not comparable returns two nils if empty returns two nils if empty group_by groups can group by size (like the doc example) groups can group by size (like the doc example) assert assert all? without block returns false returns false returns true returns true none? with pattern assert assert assert assert select with type with type selects the values for which the block returns true selects the values for which the block returns true with pattern with pattern in slices of assert assert assert assert raises argument error if size is less than 0 raises argument error if size is less than 0 assert assert assert assert each_slice reuses with existing array reuses with existing array returns each_slice iterator returns each_slice iterator returns full slices returns full slices returns partial slices returns partial slices reuses with true reuses with true none? without block assert assert assert assert any? with block returns true if at least one element fulfills the condition returns true if at least one element fulfills the condition returns false if all elements does not fulfill the condition returns false if all elements does not fulfill the condition reduce? assert assert returns nil if empty returns nil if empty allows block return type to be different from element type allows block return type to be different from element type cycle calls forever if we don't break calls forever if we don't break calls the block n times given the optional argument calls the block n times given the optional argument #each_cons_pair returns running pairs returns running pairs minmax_of? returns two nils if empty returns two nils if empty any? with pattern returns false returns false returns true returns true reject with type with type with type, for tuples with type, for tuples rejects with pattern rejects with pattern rejects the values for which the block returns true rejects the values for which the block returns true tally_by returns a hash with counts according to the value returned by the block returns a hash with counts according to the value returned by the block with hash returns a hash with counts according to the value returned by the block returns a hash with counts according to the value returned by the block min_of assert assert raises if not comparable raises if not comparable flat_map does example 4 does example 4 does example 1 does example 1 does example 2 does example 2 does example 3 does example 3 accepts mixed element types accepts mixed element types flattens iterators flattens iterators find doesn't find with default value doesn't find with default value doesn't find doesn't find finds finds each_step "accepts an offset larger then the enumerable size" yielding "accepts an offset larger then the enumerable size" yielding "yields every 2nd element" yielding "yields every 2nd element" yielding "accepts an optional offset parameter" iterator "accepts an optional offset parameter" iterator "accepts an offset larger then the step size" yielding "accepts an offset larger then the step size" yielding doesn't accept a negative offset doesn't accept a negative offset "accepts a step larger then the enumerable size" iterator "accepts a step larger then the enumerable size" iterator doesn't accept a step of 0 doesn't accept a step of 0 "accepts an offset larger then the enumerable size" iterator "accepts an offset larger then the enumerable size" iterator "accepts a step larger then the enumerable size" yielding "accepts a step larger then the enumerable size" yielding "accepts an offset larger then the step size" iterator "accepts an offset larger then the step size" iterator "accepts an offset of 0" yielding "accepts an offset of 0" yielding "accepts an offset of 0" iterator "accepts an offset of 0" iterator doesn't accept a negative step doesn't accept a negative step "yields every 2nd element" iterator "yields every 2nd element" iterator "accepts an optional offset parameter" yielding "accepts an optional offset parameter" yielding max raises if n is negative raises if n is negative assert assert does not modify the array does not modify the array assert assert assert assert assert assert raises if not comparable raises if not comparable assert assert assert assert assert assert assert assert assert assert raises if empty raises if empty raises if not comparable in max(n) raises if not comparable in max(n) chunks nil 2 case nil 2 case returns elements for which the block returns Enumerable::Chunk::Alone in separate Arrays returns elements for which the block returns Enumerable::Chunk::Alone in separate Arrays works works drop all drop all work with class work with class nil allowed as value nil allowed as value work with pure enumerable work with pure enumerable alone all alone all does not return elements for which the block returns Enumerable::Chunk::Drop does not return elements for which the block returns Enumerable::Chunk::Drop minmax_by? returns two nils if empty returns two nils if empty tally returns a hash with counts according to the value returns a hash with counts according to the value with hash tallies an interface type tallies an interface type updates existing hash with counts according to the value updates existing hash with counts according to the value returns a hash with Int64 counts according to the value returns a hash with Int64 counts according to the value returns a hash with counts according to the value returns a hash with counts according to the value ignores the default value ignores the default value one? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert skip_while skips elements while the condition holds true skips elements while the condition holds true returns the full Array if the first check is false returns the full Array if the first check is false does not yield to the block anymore once it returned false does not yield to the block anymore once it returned false returns an empty array if the condition is always true returns an empty array if the condition is always true take_while returns the full Array if the condition is always true returns the full Array if the condition is always true returns an empty Array if the block is false for the first element returns an empty Array if the block is false for the first element keeps elements while the block returns true keeps elements while the block returns true does not call the block again once it returned false does not call the block again once it returned false #each_cons yield returns running pairs returns running pairs yields running pairs with reuse = deque yields running pairs with reuse = deque yields running pairs with reuse = true yields running pairs with reuse = true yields running pairs with reuse = array yields running pairs with reuse = array returns running triples returns running triples iterator iterates iterates iterates with reuse = true iterates with reuse = true iterates with reuse = array iterates with reuse = array iterates with reuse = deque iterates with reuse = deque Struct does dup does dup does == does == does hash for struct wrapper (#1940) does hash for struct wrapper (#1940) should retrieve multiple descendants from hashed data structure should retrieve multiple descendants from hashed data structure clones with def_clone clones with def_clone does hash does hash does to_s does to_s File iterates with each_byte iterates with each_byte fsync syncs OS file buffer to disk syncs OS file buffer to disk closed stream raises if writing on a closed stream raises if writing on a closed stream size raises an error when the file does not exist raises an error when the file does not exist assert assert raises an error when a component of the path is a file raises an error when a component of the path is a file assert assert .copy copies a file copies a file overwrites existing destination and permissions overwrites existing destination and permissions copies permissions copies permissions link creates a hard link creates a hard link rewinds rewinds encoding reads with encoding reads with encoding writes with encoding writes with encoding does each line with encoding does each line with encoding reads lines with encoding reads lines with encoding opens with encoding opens with encoding raises if invoking seek with a closed file raises if invoking seek with a closed file reads at offset reads at offset opens with perm (File::Permissions) opens with perm (File::Permissions) File::Info gets for a character device gets for a character device .readable? gives false when the file has no read permissions gives false when the file has no read permissions gives false when the file has no permissions gives false when the file has no permissions gives false when the file doesn't exist gives false when the file doesn't exist follows symlinks follows symlinks gives true gives true gives false when the symbolic link destination doesn't exist gives false when the symbolic link destination doesn't exist gives false when a component of the path is a file gives false when a component of the path is a file tests unequal for file and directory tests unequal for file and directory gets mtime for new file gets mtime for new file gets for non-existent file and raises gets for non-existent file and raises tests equal for the same file tests equal for the same file .executable? gives true gives true gives false when the file doesn't exist gives false when the file doesn't exist gives false when a component of the path is a file gives false when a component of the path is a file gives false gives false follows symlinks follows symlinks gets for a symlink gets for a symlink gets for this file gets for this file gets for pipe gets for pipe .writable? gives true gives true gives false when the symbolic link destination doesn't exist gives false when the symbolic link destination doesn't exist gives false when a component of the path is a file gives false when a component of the path is a file gives false when the file doesn't exist gives false when the file doesn't exist follows symlinks follows symlinks gives false when the file has no write permissions gives false when the file has no write permissions tests unequal for different files tests unequal for different files gets for this directory gets for this directory tests equal for the same directory tests equal for the same directory gets for open file gets for open file raises when reading at offset outside of bounds raises when reading at offset outside of bounds raises when writing to a file with no permission raises when writing to a file with no permission raises when reading a file with no permission raises when reading a file with no permission .match? * don't match path separator * don't match path separator special chars special chars ** matches path separator ** matches path separator alternates alternates matches basics matches basics matches unicode characters matches unicode characters classes classes escape escape classes escapes classes escapes matches multiple expansions matches multiple expansions truncate truncates truncates truncates completely when no size is passed truncates completely when no size is passed requires a file opened for writing requires a file opened for writing .expand_path converts a pathname to an absolute pathname converts a pathname to an absolute pathname gets basename gets basename .readlink reads link reads link utime raises if file not found raises if file not found sets times with instance method sets times with instance method sets times with class method sets times with class method reads lines from file with chomp = false reads lines from file with chomp = false raises if invoking tell with a closed file raises if invoking tell with a closed file opens with perm (int) opens with perm (int) raises on null byte errors on symlink? errors on symlink? errors on basename errors on basename errors on directory? errors on directory? errors on exists? errors on exists? errors on symlink, second arg errors on symlink, second arg errors on executable? errors on executable? errors on rename (second arg) errors on rename (second arg) errors on symlink, first arg errors on symlink, first arg errors on file? errors on file? errors on link, second arg errors on link, second arg errors on expand_path, first arg errors on expand_path, first arg errors on extname errors on extname errors on new errors on new errors on rename (first arg) errors on rename (first arg) errors on join errors on join errors on readable? errors on readable? errors on link, first arg errors on link, first arg errors on expand_path, second arg errors on expand_path, second arg errors on writable? errors on writable? errors on size errors on size errors on info? errors on info? errors on basename 2, first arg errors on basename 2, first arg errors on basename 2, second arg errors on basename 2, second arg errors on dirname errors on dirname errors on delete errors on delete errors on info errors on info returns the current write position with tell returns the current write position with tell gets dirname gets dirname close should not raise when closing twice should not raise when closing twice is not closed when opening is not closed when opening does to_s when closed does to_s when closed is closed when closed is closed when closed rename renames a File instance renames a File instance replaces a file replaces a file raises if old file doesn't exist raises if old file doesn't exist renames a file renames a file returns the actual position with tell after append returns the actual position with tell after append locks file opened in append mode (#14702) locks file opened in append mode (#14702) exists? gives false gives false gives true gives true follows symlinks follows symlinks gives false when a component of the path is a file gives false when a component of the path is a file clears the read buffer after a seek clears the read buffer after a seek reads entire file from proc virtual filesystem reads entire file from proc virtual filesystem truncates file opened in append mode (#14702) truncates file opened in append mode (#14702) #realpath raises if file doesn't exist raises if file doesn't exist expands paths for normal files expands paths for normal files expands paths of symlinks expands paths of symlinks expands multiple layers of symlinks expands multiple layers of symlinks empty? gives false when file is not empty gives false when file is not empty gives true when file is empty gives true when file is empty raises an error when a component of the path is a file raises an error when a component of the path is a file raises an error when the file does not exist raises an error when the file does not exist can navigate with pos can navigate with pos blocking reads non-blocking file reads non-blocking file opens regular file as blocking opens regular file as blocking opens regular file as non-blocking opens regular file as non-blocking writes and reads large non-blocking file writes and reads large non-blocking file opens fifo file as non-blocking opens fifo file as non-blocking opens character device opens character device symlink works if destination contains forward slashes (#14520) works if destination contains forward slashes (#14520) creates a symbolic link creates a symbolic link reads entire file reads entire file chmod can take File::Permissions can take File::Permissions changes file permissions with instance method changes file permissions with instance method raises when destination doesn't exist raises when destination doesn't exist changes dir permissions changes dir permissions changes file permissions with class method changes file permissions with class method follows symlinks follows symlinks #delete deletes deletes reads lines from file reads lines from file supports the `b` mode flag supports the `b` mode flag file? gives false when a component of the path is a file gives false when a component of the path is a file gives false when the file doesn't exist gives false when the file doesn't exist gives false with dir gives false with dir gives true gives true flock blocking: false #flock_exclusive soft blocking fiber #flock_exclusive soft blocking fiber #flock_shared soft blocking fiber #flock_shared soft blocking fiber #flock_shared #flock_shared blocking: true #flock_shared #flock_shared #flock_shared soft blocking fiber #flock_shared soft blocking fiber #flock_exclusive soft blocking fiber #flock_exclusive soft blocking fiber #flock_exclusive #flock_exclusive write raises if trying to write to a file not opened for writing raises if trying to write to a file not opened for writing can write to a file can write to a file writes bytes writes bytes can create a new file in append mode can create a new file in append mode writes io writes io can append to an existing file can append to an existing file does not overwrite existing content in append mode does not overwrite existing content in append mode .same_content? compares two different files compares two different files compares two equal files compares two equal files symlink? gives false when the symlink doesn't exist gives false when the symlink doesn't exist gives false when a component of the path is a file gives false when a component of the path is a file gives false gives false reads lines from file with each reads lines from file with each gets path gets path returns the current read position with tell returns the current read position with tell .delete deletes a read-only file deletes a read-only file deletes a file deletes a file deletes an open file deletes an open file raises when file doesn't exist raises when file doesn't exist deletes? a file deletes? a file deletes a symlink directory deletes a symlink directory same? compares following symlinks only if requested compares following symlinks only if requested does to_s and inspect does to_s and inspect constructs a path from parts constructs a path from parts raises if opening a non-existent file raises if opening a non-existent file File::Permissions does to_s does to_s iterates with each_char iterates with each_char .touch touches existing directory directory file file raises if path contains non-existent directory raises if path contains non-existent directory creates file if it doesn't exist creates file if it doesn't exist sets file times to given time sets file times to given time sets file times to current time if no time argument given sets file times to current time if no time argument given raises if file cannot be accessed raises if file cannot be accessed gets extname gets extname seeks from the current position seeks from the current position reads lines from file with each, chomp = false reads lines from file with each, chomp = false chown chown directory? gives false gives false gives true gives true gives false when the directory doesn't exist gives false when the directory doesn't exist gives false when a component of the path is a file gives false when a component of the path is a file gets basename removing suffix gets basename removing suffix Float does infinite? does infinite? #next_float does for f64 does for f64 does for f32 does for f32 #prev_float does for f32 does for f32 does for f64 does for f64 ** assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert hash does for Float64 does for Float64 does for Float32 does for Float32 round assert assert assert assert assert assert remainder preserves type preserves type assert assert assert assert raises when mods by zero raises when mods by zero assert assert assert assert assert assert assert assert assert assert assert assert floor division // applies floor applies floor preserves type of lhs preserves type of lhs clones clones #inspect does inspect for f64 with IO does inspect for f64 with IO does inspect for f64 does inspect for f64 does inspect for f32 does inspect for f32 does inspect for f32 does inspect for f32 does nan? does nan? does finite? does finite? constants have right binary value constants have right binary value does unary - does unary - fdiv assert assert assert assert assert assert assert assert assert assert converts infinity converts infinity ceil assert assert assert assert assert assert assert assert assert assert assert assert #abs #abs #to_s does to_s for f32 does to_s for f32 does to_s for f64 does to_s for f64 divmod assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #integer? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert % uses modulo behavior, not remainder behavior uses modulo behavior, not remainder behavior returns nil in <=> for NaN values (Float32) returns nil in <=> for NaN values (Float32) modulo assert assert assert assert assert assert assert assert raises when mods by zero raises when mods by zero assert assert assert assert assert assert assert assert returns nil in <=> for NaN values (Float64) returns nil in <=> for NaN values (Float64) .new fallback overload fallback overload String overload String overload floor assert assert assert assert ARGV accepts UTF-8 command-line arguments accepts UTF-8 command-line arguments Int #rotate_right assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does % does % "#times for UInt32 (#5019)" yielding "#times for UInt32 (#5019)" yielding #to_unsigned! does for Int16 does for Int16 does for Int128 does for Int128 does for UInt128 does for UInt128 does for UInt64 does for UInt64 does for Int32 does for Int32 does for Int64 does for Int64 does for UInt16 does for UInt16 does for UInt32 does for UInt32 does for UInt8 does for UInt8 does for Int8 does for Int8 #popcount assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #to_unsigned does for Int8 does for Int8 does for UInt128 does for UInt128 does for Int128 does for Int128 does for Int32 does for Int32 does for UInt64 does for UInt64 does for Int64 does for Int64 does for Int16 does for Int16 does for UInt8 does for UInt8 does for UInt32 does for UInt32 does for UInt16 does for UInt16 arithmetic division / divides negative numbers divides negative numbers divides Int::MIN by -1 divides Int::MIN by -1 divides by zero divides by zero upto iterator ups and downs upto iterator ups and downs #to_signed does for UInt128 does for UInt128 does for Int64 does for Int64 does for UInt32 does for UInt32 does for UInt64 does for UInt64 does for Int8 does for Int8 does for Int128 does for Int128 does for UInt8 does for UInt8 does for UInt16 does for UInt16 does for Int16 does for Int16 does for Int32 does for Int32 #unsafe_chr #unsafe_chr lcm assert assert assert assert assert assert assert assert assert assert doesn't silently overflow doesn't silently overflow gcd assert assert doesn't silently overflow doesn't silently overflow assert assert raises on too big result to fit in result type raises on too big result to fit in result type assert assert assert assert assert assert assert assert assert assert assert assert does downto does downto tdivs tdivs downto iterator ups and downs downto iterator ups and downs abs does for unsigned does for unsigned does for signed does for signed floor division // preserves type of lhs preserves type of lhs divides negative numbers divides negative numbers pred assert assert assert assert assert assert #bits assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert raises when invalid indexes are provided raises when invalid indexes are provided assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #chr #chr raises when divides Int::MIN by -1 raises when divides Int::MIN by -1 fdiv assert assert assert assert assert assert assert assert assert assert #to_signed! does for Int64 does for Int64 does for Int8 does for Int8 does for UInt32 does for UInt32 does for UInt64 does for UInt64 does for Int16 does for Int16 does for Int128 does for Int128 does for UInt16 does for UInt16 does for Int32 does for Int32 does for UInt128 does for UInt128 does for UInt8 does for UInt8 gets upto iterator max gets upto iterator max ** with positive Int32 with positive Int32 should work with large integers should work with large integers raises with negative exponent raises with negative exponent with positive UInt8 with positive UInt8 with float assert assert assert assert assert assert #to_s precision parameter converts 0 to "0" * 200 converts 0 to "0" * 200 converts -1 to "-#{"0" * 199}1" converts -1 to "-#{"0" * 199}1" converts 1 to "1" converts 1 to "1" converts 1 to "01" converts 1 to "01" converts 123 to "123" converts 123 to "123" converts 0 to "00000" converts 0 to "00000" converts 9223372036854775807_i64 to "#{"0" * 137}#{"1" * 63}" converts 9223372036854775807_i64 to "#{"0" * 137}#{"1" * 63}" converts 1 to "1" converts 1 to "1" converts 1 to "00001" converts 1 to "00001" converts 9223372036854775807_i64 to "#{"1" * 63}" converts 9223372036854775807_i64 to "#{"1" * 63}" converts 123 to "123" converts 123 to "123" converts 2 to "#{"0" * 199}2" converts 2 to "#{"0" * 199}2" converts -9223372036854775808_i64 to "-#{"0" * 136}1#{"0" * 63}" converts -9223372036854775808_i64 to "-#{"0" * 136}1#{"0" * 63}" converts 0 to "0" converts 0 to "0" converts 1 to "#{"0" * 199}1" converts 1 to "#{"0" * 199}1" converts -9223372036854775808_i64 to "-01#{"0" * 63}" converts -9223372036854775808_i64 to "-01#{"0" * 63}" converts -1 to "-1" converts -1 to "-1" converts 123 to "#{"0" * 197}123" converts 123 to "#{"0" * 197}123" raises on negative precision raises on negative precision converts -1 to "-00001" converts -1 to "-00001" converts -9223372036854775808_i64 to "-1#{"0" * 63}" converts -9223372036854775808_i64 to "-1#{"0" * 63}" converts 0 to "" converts 0 to "" converts 2 to "2" converts 2 to "2" converts 2 to "02" converts 2 to "02" converts 9223372036854775807_i64 to "#{"1" * 63}" converts 9223372036854775807_i64 to "#{"1" * 63}" converts 9223372036854775807_i64 to "0#{"1" * 63}" converts 9223372036854775807_i64 to "0#{"1" * 63}" converts 2 to "2" converts 2 to "2" converts 123 to "123" converts 123 to "123" converts 0 to "00" converts 0 to "00" converts -1 to "-01" converts -1 to "-01" converts -9223372036854775808_i64 to "-1#{"0" * 63}" converts -9223372036854775808_i64 to "-1#{"0" * 63}" converts 123 to "00123" converts 123 to "00123" converts -1 to "-1" converts -1 to "-1" converts 2 to "00002" converts 2 to "00002" converts 1 to "1" converts 1 to "1" converts 0 to "0" converts 0 to "0" extrema for various int sizes converts -32768_i16 to "-32768" converts -32768_i16 to "-32768" converts 65535_u16 to "65535" converts 65535_u16 to "65535" converts Int128::MIN to "-170141183460469231731687303715884105728" converts Int128::MIN to "-170141183460469231731687303715884105728" converts 9223372036854775807_i64 to "9223372036854775807" converts 9223372036854775807_i64 to "9223372036854775807" converts 18446744073709551615_u64 to "18446744073709551615" converts 18446744073709551615_u64 to "18446744073709551615" converts 255_u8 to "255" converts 255_u8 to "255" converts Int128::MAX to "170141183460469231731687303715884105727" converts Int128::MAX to "170141183460469231731687303715884105727" converts 127_i8 to "127" converts 127_i8 to "127" converts -9223372036854775808_i64 to "-9223372036854775808" converts -9223372036854775808_i64 to "-9223372036854775808" converts 32767_i16 to "32767" converts 32767_i16 to "32767" converts UInt128::MAX to "340282366920938463463374607431768211455" converts UInt128::MAX to "340282366920938463463374607431768211455" converts -128_i8 to "-128" converts -128_i8 to "-128" converts -2147483648 to "-2147483648" converts -2147483648 to "-2147483648" converts 2147483647 to "2147483647" converts 2147483647 to "2147483647" converts 4294967295_u32 to "4294967295" converts 4294967295_u32 to "4294967295" base and upcase parameters converts 61 to "Z" converts 61 to "Z" converts -12 to "-1100" converts -12 to "-1100" converts -1234 to "-ya" converts -1234 to "-ya" converts -1234 to "-4d2" converts -1234 to "-4d2" converts 0 to "0" converts 0 to "0" converts 1 to "1" converts 1 to "1" converts -1234 to "-YA" converts -1234 to "-YA" raises on base 1 raises on base 1 converts 1234 to "4d2" converts 1234 to "4d2" converts 0 to "0" converts 0 to "0" converts 0 to "0" converts 0 to "0" converts 36 to "A" converts 36 to "A" raises on base 62 with upcase raises on base 62 with upcase converts 12 to "1100" converts 12 to "1100" converts 3843 to "ZZ" converts 3843 to "ZZ" converts 10 to "a" converts 10 to "a" converts 1234 to "YA" converts 1234 to "YA" converts Int128::MIN to "-1#{"0" * 127}" converts Int128::MIN to "-1#{"0" * 127}" converts -1234 to "-4D2" converts -1234 to "-4D2" converts 1 to "1" converts 1 to "1" converts 35 to "z" converts 35 to "z" converts 97 to "1z" converts 97 to "1z" converts 1 to "1" converts 1 to "1" converts 62 to "10" converts 62 to "10" raises on base 37 raises on base 37 converts 1234 to "ya" converts 1234 to "ya" converts -123456 to "-11110001001000000" converts -123456 to "-11110001001000000" converts 1234 to "4D2" converts 1234 to "4D2" divisible_by? assert assert assert assert returns 0 when doing IntN::MIN % -1 (#8306) returns 0 when doing IntN::MIN % -1 (#8306) #integer? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert step steps through limit steps through limit ~ assert assert assert assert .new fallback overload fallback overload String overload String overload #byte_swap assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert does upto does upto #neg_signed does not overflow on Int32::MIN.abs_unsigned does not overflow on Int32::MIN.abs_unsigned does for Int64 does for Int64 does for UInt128 does for UInt128 does for UInt32 does for UInt32 does for Int128 does for Int128 does for UInt8 does for UInt8 does for Int32 does for Int32 does for Int16 does for Int16 does for UInt64 does for UInt64 does for UInt16 does for UInt16 does for Int8 does for Int8 does not overflow on Int128::MIN.abs_unsigned does not overflow on Int128::MIN.abs_unsigned does not overflow on Int16::MIN.abs_unsigned does not overflow on Int16::MIN.abs_unsigned does not overflow on Int64::MIN.abs_unsigned does not overflow on Int64::MIN.abs_unsigned does not overflow on Int8::MIN.abs_unsigned does not overflow on Int8::MIN.abs_unsigned raises when mods by zero raises when mods by zero gets downto iterator unsigned gets downto iterator unsigned holds true that x == q*y + r holds true that x == q*y + r &** works with large integers works with large integers wraps with larger integers wraps with larger integers with UInt8 with UInt8 raises with negative exponent raises with negative exponent with positive Int32 with positive Int32 "#times" yielding "#times" yielding #inspect doesn't append the type using IO doesn't append the type using IO doesn't append the type doesn't append the type gets upto iterator gets upto iterator does downto min does downto min #bit_reverse assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert divmod assert assert gets to iterator gets to iterator #===(:Char) assert assert assert assert assert assert assert assert odd? assert assert assert assert does downto min unsigned does downto min unsigned compares signed vs. unsigned integers compares signed vs. unsigned integers "#times" iterator "#times" iterator bit assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #trailing_zeros_count assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert % doesn't overflow (#7979) % doesn't overflow (#7979) #rotate_left assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert compares equality and inequality of signed vs. unsigned integers compares equality and inequality of signed vs. unsigned integers #abs_unsigned does for UInt8 does for UInt8 does for Int8 does for Int8 does for Int128 does for Int128 does not overflow on Int128::MIN does not overflow on Int128::MIN does for Int64 does for Int64 does for UInt32 does for UInt32 does for Int16 does for Int16 does for UInt128 does for UInt128 does for Int32 does for Int32 does not overflow on Int8::MIN does not overflow on Int8::MIN does for UInt64 does for UInt64 does not overflow on Int64::MIN does not overflow on Int64::MIN does for UInt16 does for UInt16 does not overflow on Int16::MIN does not overflow on Int16::MIN does not overflow on Int32::MIN does not overflow on Int32::MIN << assert assert assert assert assert assert assert assert gets downto iterator gets downto iterator succ assert assert assert assert assert assert returns 0 when doing IntN::MIN.remainder(-1) (#8306) returns 0 when doing IntN::MIN.remainder(-1) (#8306) even? assert assert assert assert "#times for UInt32 (#5019)" iterator "#times for UInt32 (#5019)" iterator does upto max does upto max #digits works for non-Int32 works for non-Int32 works for positive numbers or zero works for positive numbers or zero works with a base works with a base raises for invalid base raises for invalid base raises for negative numbers raises for negative numbers works for maximums works for maximums raises when divides by zero raises when divides by zero #leading_zeros_count assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert >> assert assert assert assert assert assert assert assert clones clones #bit_length for primitive integers for primitive integers for BigInt for BigInt does remainder does remainder to does downwards does downwards does upwards does upwards does when same does when same Compress::Zlib::Writer can be closed without sync can be closed without sync can be closed with sync (2) can be closed with sync (2) can be flushed can be flushed can be closed with sync (1) can be closed with sync (1) should be able to write should be able to write Process.find_executable fails to find '/tmp/cr-spec-abc463dd/find_executable/base/inbase/' fails to find '/tmp/cr-spec-abc463dd/find_executable/base/inbase/' fails to find 'inbase/' fails to find 'inbase/' fails to find 'inbase' fails to find 'inbase' fails to find './inpath' fails to find './inpath' fails to find 'not_exe' fails to find 'not_exe' finds '../base/inbase' as 'inbase' finds '../base/inbase' as 'inbase' fails to find '.' fails to find '.' fails to find './not_exe' fails to find './not_exe' finds '/tmp/cr-spec-abc463dd/find_executable/base/inbase' as 'inbase' finds '/tmp/cr-spec-abc463dd/find_executable/base/inbase' as 'inbase' fails to find 'sub/insub/' fails to find 'sub/insub/' fails to find './sub' fails to find './sub' finds './inbase' as 'inbase' finds './inbase' as 'inbase' fails to find '' fails to find '' fails to find 'sub' fails to find 'sub' finds 'inpath' as '../path/inpath' finds 'inpath' as '../path/inpath' fails to find '/tmp/cr-spec-abc463dd/find_executable/base/sub' fails to find '/tmp/cr-spec-abc463dd/find_executable/base/sub' finds 'sub/insub' as 'sub/insub' finds 'sub/insub' as 'sub/insub' fails to find 'sub/not_exe' fails to find 'sub/not_exe' Process .parse_arguments_windows assert assert assert assert assert assert assert assert raises an error if double quote is unclosed raises an error if double quote is unclosed assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert .quote_posix assert assert assert assert assert assert assert assert assert assert assert assert assert assert join assert assert assert assert assert assert assert assert assert assert assert assert .parse_arguments_posix assert assert raises an error when double quote is unclosed raises an error when double quote is unclosed assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert raises an error if single quote is unclosed raises an error if single quote is unclosed .executable_path searches executable searches executable .quote_windows assert assert assert assert join assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert .parse_arguments uses the native platform rules uses the native platform rules BigInt adds adds #bit #bit can use Number::[] can use Number::[] #divisible_by? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert exponentiates exponentiates raises if creating from infinity raises if creating from infinity raises if factorial of negative raises if factorial of negative creates from unsigned ints creates from unsigned ints does gcd and lcm does gcd and lcm #to_u128! converts to UInt128 converts to UInt128 converts modulo (2 ** 128) converts modulo (2 ** 128) negates negates #to_i8 converts to Int8 converts to Int8 raises OverflowError raises OverflowError #integer? assert assert assert assert #trailing_zeros_count #trailing_zeros_count #to_u32! converts modulo (2 ** 32) converts modulo (2 ** 32) converts to UInt32 converts to UInt32 #to_i! converts to Int32 converts to Int32 multiplies multiplies tdivs tdivs #to_i converts to Int32 converts to Int32 does modulo with negative numbers does modulo with negative numbers #to_u64 raises OverflowError raises OverflowError converts to UInt64 converts to UInt64 #to_u8! converts to UInt8 converts to UInt8 converts modulo (2 ** 8) converts modulo (2 ** 8) #to_u128 converts to UInt128 converts to UInt128 raises OverflowError raises OverflowError subs subs #to_u16! converts modulo (2 ** 16) converts modulo (2 ** 16) converts to UInt16 converts to UInt16 #to_u! converts to UInt32 converts to UInt32 #to_i16 converts to Int16 converts to Int16 raises OverflowError raises OverflowError does bitwise not does bitwise not has unsafe_shr (#8691) has unsafe_shr (#8691) does remainder with negative numbers does remainder with negative numbers does String#to_big_i does String#to_big_i compares against float compares against float does to_big_f does to_big_f creates from signed ints creates from signed ints #to_i8! converts modulo (2 ** 8) converts modulo (2 ** 8) converts to Int8 converts to Int8 divides divides #to_i32 raises OverflowError raises OverflowError converts to Int32 converts to Int32 creates from string creates from string compares compares #digits raises for invalid base raises for invalid base works for positive numbers or zero works for positive numbers or zero raises for negative numbers raises for negative numbers works with a base works with a base raises if creating from NaN raises if creating from NaN #to_s precision parameter assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert base and upcase parameters assert assert raises on base 1 raises on base 1 assert assert assert assert assert assert raises on base 37 raises on base 37 assert assert assert assert assert assert assert assert raises on base 62 with upcase raises on base 62 with upcase assert assert assert assert assert assert assert assert assert assert assert assert raises if mods by zero raises if mods by zero #to_u16 raises OverflowError raises OverflowError converts to UInt16 converts to UInt16 does bitwise and does bitwise and gets factorial value gets factorial value clones clones #to_u8 raises OverflowError raises OverflowError converts to UInt8 converts to UInt8 #humanize_bytes assert assert assert assert divides with negative numbers divides with negative numbers raises if factorial of 2^64 raises if factorial of 2^64 raises if divides by zero raises if divides by zero creates with a value of zero creates with a value of zero raises if creates from string but invalid raises if creates from string but invalid #to_i64 converts to Int64 converts to Int64 raises OverflowError raises OverflowError #to_i16! converts modulo (2 ** 16) converts modulo (2 ** 16) converts to Int16 converts to Int16 creates from float creates from float #hash #hash #to_u converts to UInt32 converts to UInt32 #to_i64! converts to Int64 converts to Int64 converts modulo (2 ** 64) converts modulo (2 ** 64) #to_u64! converts to UInt64 converts to UInt64 converts modulo (2 ** 64) converts modulo (2 ** 64) raises if divides by zero raises if divides by zero does bitwise left shift does bitwise left shift #to_i128! converts modulo (2 ** 128) converts modulo (2 ** 128) converts to Int128 converts to Int128 does modulo does modulo #to_i32! converts modulo (2 ** 32) converts modulo (2 ** 32) converts to Int32 converts to Int32 divides with negative numbers divides with negative numbers #inspect assert assert #to_i128 raises OverflowError raises OverflowError converts to Int128 converts to Int128 divides divides does bitwise or does bitwise or gets absolute value gets absolute value does bitwise xor does bitwise xor does popcount does popcount #to_u32 converts to UInt32 converts to UInt32 raises OverflowError raises OverflowError does bitwise right shift does bitwise right shift divides and calculates the modulo divides and calculates the modulo Spec::Methods .assert_iterates_yielding tuple tuple less than expected elements less than expected elements ensures type equality ensures type equality infinite infinite more than expected elements more than expected elements basic basic .assert_iterates_iterator less than expected elements less than expected elements ensures type equality ensures type equality basic basic more than expected elements more than expected elements infinite infinite tuple tuple YAML::Schema::FailSafe raises on parse all ":" raises on parse all ":" raises on parse all "\n this: \"raises\"\n an: \"yaml\"\n parse: \"exception\"\n " raises on parse all "\n this: \"raises\"\n an: \"yaml\"\n parse: \"exception\"\n " raises on parse "\n this: \"gives\"\n an: \"error\"\n " raises on parse "\n this: \"gives\"\n an: \"error\"\n " parses "\n context:\n replace_me: \"Yes please!\"\n " parses "\n context:\n replace_me: \"Yes please!\"\n " parses "123" parses "123" parses all "\n context:\n replace_me: \"Yes please!\"\n " parses all "\n context:\n replace_me: \"Yes please!\"\n " raises on parse ":" raises on parse ":" parses "321" parses "321" parses "\n first:\n document:\n\n second:\n document:\n " parses "\n first:\n document:\n\n second:\n document:\n " parses all "\n foo:\n bar: 123\n\n bar:\n foo: 321\n " parses all "\n foo:\n bar: 123\n\n bar:\n foo: 321\n " Log::ShortFormat appends the exception appends the exception shows the context data shows the context data formats an entry formats an entry shows context and entry data shows context and entry data hides the source if empty hides the source if empty Atomic(T) #max with signed enum #max with signed enum #max with pointer type #max with pointer type #min with signed #min with signed #xor #xor #compare_and_set with integer with integer with pointer with pointer with reference union with reference union with bool with bool explicit ordering explicit ordering with nilable reference with nilable reference with enum with enum with flags enum with flags enum with reference type with reference type #min with signed enum #min with signed enum #adds #adds #max with unsigned #max with unsigned #and #and #min with unsigned #min with unsigned #sub #sub #swap with integer with integer with reference union with reference union explicit ordering explicit ordering with reference type with reference type with bool with bool with nilable reference with nilable reference with pointer type with pointer type #nand #nand #min with pointer type #min with pointer type atomic bool sizeof sizeof gets and sets gets and sets #or #or #set with integer with integer with pointer type with pointer type explicit ordering explicit ordering with bool with bool with nil (#4062) with nil (#4062) #max with signed #max with signed #lazy_set #lazy_set OpenSSL::SSL::Socket closes connection to server that doesn't properly terminate SSL session closes connection to server that doesn't properly terminate SSL session returns the peer certificate returns the peer certificate accepts clients that only write then close the connection accepts clients that only write then close the connection interprets graceful EOF of underlying socket as SSL termination interprets graceful EOF of underlying socket as SSL termination returns selected alpn protocol returns selected alpn protocol returns the TLS version returns the TLS version returns the cipher that is currently in use returns the cipher that is currently in use __floattidf passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests passes compiler-rt builtins unit tests record can copy_with record with parent type can copy_with record with parent type uses the default values on the ivars uses the default values on the ivars can clone record with parent type can clone record with parent type defines record with type declaration and initialization defines record with type declaration and initialization defines record with type declarations defines record with type declarations defines record with assignments defines record with assignments IO::ByteFormat big endian decode from slice reads float64 reads float64 reads float32 reads float32 reads int16 reads int16 reads int8 reads int8 from io reads float32 reads float32 reads unt16 reads unt16 reads int8 reads int8 reads int16 reads int16 reads int32 reads int32 reads float64 reads float64 reads int64 reads int64 encode writes float64 writes float64 writes int16 writes int16 writes int8 writes int8 writes int64 writes int64 writes float32 writes float32 writes int32 writes int32 little endian encode to slice writes int16 to larger slice writes int16 to larger slice writes int8 writes int8 writes int16 writes int16 to io writes float32 writes float32 writes int32 writes int32 writes float64 writes float64 writes int8 writes int8 writes int16 writes int16 writes uint16 writes uint16 writes int64 writes int64 decode from io reads int16 reads int16 reads float32 reads float32 reads int64 reads int64 reads float64 reads float64 reads int8 reads int8 reads int32 reads int32 reads unt16 reads unt16 from slice reads int16 reads int16 reads float32 reads float32 reads int16 from larger slice reads int16 from larger slice reads int8 reads int8 reads float64 reads float64 Random::Secure returns a random integer in range (#8219) returns a random integer in range (#8219) fully fills a large buffer fully fills a large buffer returns random number from a secure system source returns random number from a secure system source HTTP::Request doesn't raise on request with multiple Content_length headers doesn't raise on request with multiple Content_length headers serialize GET (with cookie) serialize GET (with cookie) serialize POST (with bytes body) serialize POST (with bytes body) #path returns parsed path returns parsed path falls back to / falls back to / .from_io handles malformed request handles malformed request parses empty string (EOF), returns nil (no peek) parses empty string (EOF), returns nil (no peek) parses POST (with body) parses POST (with body) handles unsupported HTTP version handles unsupported HTTP version headers are case insensitive headers are case insensitive parses GET parses GET stores normalized case for common header name (capitalized) (#8060) stores normalized case for common header name (capitalized) (#8060) parses GET with query params parses GET with query params parses GET with spaces in request line parses GET with spaces in request line parses empty header parses empty header stores normalized case for common header name (mixed) (#8060) stores normalized case for common header name (mixed) (#8060) parses empty string (EOF), returns nil parses empty string (EOF), returns nil long headers fails for too-long headers with custom size fails for too-long headers with custom size fails for too-long headers fails for too-long headers handles long headers with custom size handles long headers with custom size handles long headers handles long headers stores normalized case for common header name (lowercase) (#8060) stores normalized case for common header name (lowercase) (#8060) long single header fails for too-long header fails for too-long header handles long header handles long header parses GET without \r parses GET without \r parses GET with cookie parses GET with cookie parses GET (just \n instead of \r\n) parses GET (just \n instead of \r\n) long request lines fails for too-long URI with custom size fails for too-long URI with custom size handles long URI handles long URI handles long URI with custom size handles long URI with custom size fails for too-long URI fails for too-long URI #if_match reads single value reads single value reads multiple values reads multiple values reads * reads * keep-alive is false in HTTP/1.1 if `Connection: close` header is present is false in HTTP/1.1 if `Connection: close` header is present is true by default in HTTP/1.1 is true by default in HTTP/1.1 is true in HTTP/1.0 if `Connection: keep-alive` header is present is true in HTTP/1.0 if `Connection: keep-alive` header is present is false by default in HTTP/1.0 is false by default in HTTP/1.0 raises if serializing POST body with incorrect content-length (less then real) raises if serializing POST body with incorrect content-length (less then real) #path= updates serialized form updates serialized form updates @resource updates @resource sets path sets path serialize GET (with cookies, from headers) serialize GET (with cookies, from headers) #host_with_port gets request host with port from the headers gets request host with port from the headers #hostname #hostname #hostname gets request hostname from the headers gets request hostname from the headers #if_none_match reads single value reads single value reads multiple values reads multiple values reads * reads * #form_params returns ignors invalid content-type returns ignors invalid content-type returns can safely be called on get requests returns can safely be called on get requests returns parsed HTTP::Params returns parsed HTTP::Params serialize POST (with body) serialize POST (with body) #query_params affects #query when modified affects #query when modified updates serialized form when modified updates serialized form when modified happily parses when query is not a canonical url-encoded string happily parses when query is not a canonical url-encoded string updates @resource when modified updates @resource when modified is affected when #query is modified is affected when #query is modified returns parsed URI::Params returns parsed URI::Params serialize POST (with io body, with content-length header) serialize POST (with io body, with content-length header) serialize GET (with query params) serialize GET (with query params) #query= updates @resource updates @resource sets query sets query updates serialized form updates serialized form #query returns request's query returns request's query raises if request has multiple and differing content-length headers raises if request has multiple and differing content-length headers raises if serializing POST body with incorrect content-length (more then real) raises if serializing POST body with incorrect content-length (more then real) serialize GET serialize GET serialize POST (with io body, without content-length header) serialize POST (with io body, without content-length header) Compress::Zlib::Reader can be closed without sync can be closed without sync should not freeze when reading empty slice should not freeze when reading empty slice should not read from empty stream should not read from empty stream can be closed with sync (2) can be closed with sync (2) can be closed with sync (1) can be closed with sync (1) rewinds rewinds should be able to read should be able to read should raise buffer error on error (#6575) should raise buffer error on error (#6575) .__lshrti3 .__lshrti3 Socket .ip? .ip? == == StringScanner #string assert assert #scan returns nil if it can't match from the offset returns nil if it can't match from the offset returns the string matched and advances the offset returns the string matched and advances the offset #skip advances the offset but does not returns the string matched advances the offset but does not returns the string matched #check_until returns the string matched and advances the offset returns the string matched and advances the offset returns nil if it can't match from the offset returns nil if it can't match from the offset #eos it is true when the offset is at the end it is true when the offset is at the end #peek shows the next len characters without advancing the offset shows the next len characters without advancing the offset #offset returns the current position returns the current position #rest returns the remainder of the string from the offset returns the remainder of the string from the offset #reset resets the scan offset to the beginning and clears the last match resets the scan offset to the beginning and clears the last match #offset= sets the current position sets the current position raises on negative positions raises on negative positions #scan_until returns nil if it can't match from the offset returns nil if it can't match from the offset returns the string matched and advances the offset returns the string matched and advances the offset #skip_until advances the offset but does not returns the string matched advances the offset but does not returns the string matched #[]? allows access to subgroups of the last match allows access to subgroups of the last match raises when there is no subgroup raises when there is no subgroup returns nil when there is no last match returns nil when there is no last match #inspect works with small strings works with small strings has information on the scanner has information on the scanner #check returns the string matched but does not advances the offset returns the string matched but does not advances the offset returns nil if it can't match from the offset returns nil if it can't match from the offset #terminate moves the scan offset to the end of the string and clears the last match moves the scan offset to the end of the string and clears the last match #[] allows access to subgroups of the last match allows access to subgroups of the last match raises when there is no subgroup raises when there is no subgroup raises when there is no last match raises when there is no last match unbuffered can be closed can be closed can receive? when closed can receive? when closed blocks if there is no receiver blocks if there is no receiver pings pings deliver many senders deliver many senders wakes up sender fiber when channel is closed wakes up sender fiber when channel is closed can be closed after sending can be closed after sending works with select works with select can receive? when not empty can receive? when not empty can be closed from different fiber can be closed from different fiber can send and receive nil can send and receive nil wakes up receiver fibers when channel is closed wakes up receiver fibers when channel is closed cannot send if closed cannot send if closed can send successfully without raise can send successfully without raise OpenSSL::X509::Certificate extension extension #signature_algorithm #signature_algorithm subject subject #digest #digest LLVM::ABI::AVR abi_info struct args within 18 bytes struct args within 18 bytes struct args over 18 bytes struct args over 18 bytes returns struct within 8 bytes returns struct within 8 bytes multiple arguments multiple arguments int64 int64 double double int32 int32 int1 int1 float float int16 int16 multiple arguments above registers multiple arguments above registers int8 int8 returns struct over 8 bytes returns struct over 8 bytes size for struct for struct for packed struct for packed struct for pointer for pointer for integer for integer for float for float for array for array for double for double align for double for double for packed struct for packed struct for struct for struct for integer for integer for array for array for float for float for pointer for pointer Socket::IPAddress .parse_v4_fields? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #== #== .v4_mapped_v6 constructs an IPv4-mapped IPv6 address constructs an IPv4-mapped IPv6 address raises on out of bound port number raises on out of bound port number constructs from StaticArray constructs from StaticArray raises on out of bound field raises on out of bound field .v6 constructs from StaticArray constructs from StaticArray raises on out of bound port number raises on out of bound port number raises on out of bound field raises on out of bound field constructs an IPv6 address constructs an IPv6 address .valid_v6? .valid_v6? #private? #private? errors on out of range port numbers errors on out of range port numbers .parse parses IPv6 parses IPv6 ignores path and params ignores path and params fails with missing host fails with missing host fails host name fails host name fails with missing port fails with missing port parses IPv4 parses IPv4 transforms an IPv6 address into a C struct and back transforms an IPv6 address into a C struct and back .valid? .valid? .parse_v6_fields? assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert #loopback? #loopback? transforms an IPv4 address into a C struct and back transforms an IPv4 address into a C struct and back #unspecified? #unspecified? #to_s #to_s .valid_port? .valid_port? #link_local? #link_local? .v4 raises on out of bound field raises on out of bound field constructs an IPv4 address constructs an IPv4 address constructs from StaticArray constructs from StaticArray raises on out of bound port number raises on out of bound port number .valid_v4? .valid_v4? #address #address won't resolve domains won't resolve domains Float64 #to_hexfloat hexits assert assert assert assert exponents assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert trimming assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert corner cases assert assert assert assert assert assert assert assert assert assert special cases assert assert assert assert assert assert assert assert assert assert assert assert assert assert .parse_hexfloat assert assert assert assert assert assert assert assert assert assert assert assert assert assert special cases assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert values close to zero assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert values close to MIN_POSITIVE and MAX assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert invalid hexfloats assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert round-to-nearest, ties-to-even assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert assert IO::Sized peeks peeks gets gets #close closes the underlying stream if sync_close is true closes the underlying stream if sync_close is true stops reading stops reading gets with chomp = false gets with chomp = false skips skips read_byte read_byte #read allows extending the size allows extending the size doesn't read past the limit when reading char-by-char doesn't read past the limit when reading char-by-char doesn't read past the limit when reading the correct size doesn't read past the limit when reading the correct size raises on negative numbers raises on negative numbers reads partially when supplied with a larger slice reads partially when supplied with a larger slice doesn't peek when remaining = 0 (#4261) doesn't peek when remaining = 0 (#4261) #write raises raises Regex::MatchData #to_s #to_s #byte_end with unmatched capture with unmatched capture char index char index #to_a converts into an array converts into an array converts into an array having nil converts into an array having nil #pre_match returns the part of the string before the match returns the part of the string before the match works with unicode works with unicode returns an empty string when there's nothing before returns an empty string when there's nothing before #to_h converts into a hash converts into a hash converts into a hash with duplicated names converts into a hash with duplicated names converts into a hash having nil converts into a hash having nil #string #string #size #size #== #== #begin with unmatched capture with unmatched capture out of range out of range with capture with capture no captures no captures char index char index #end out of range out of range char index char index no captures no captures with capture with capture with unmatched capture with unmatched capture #[] String captures duplicated named group captures duplicated named group raises exception on optional empty group raises exception on optional empty group raises exception when named group doesn't exist raises exception when named group doesn't exist captures empty group captures empty group capture named group capture named group named groups with same prefix named groups with same prefix Range can use range can use range can use start and count can use start and count Int captures empty group captures empty group raises exception on optional empty group raises exception on optional empty group raises if outside match range with [] raises if outside match range with [] raises if special variable accessed on invalid capture group raises if special variable accessed on invalid capture group can use negative index can use negative index #named_captures gets more than 127 named captures gets more than 127 named captures gets a hash of named captures with optional gets a hash of named captures with optional gets a hash of named captures gets a hash of named captures gets a hash of named captures with duplicated name gets a hash of named captures with duplicated name #inspect #inspect #byte_begin char index char index with unmatched capture with unmatched capture #pretty_print #pretty_print #captures gets an array of unnamed captures gets an array of unnamed captures gets an array of unnamed captures with optional gets an array of unnamed captures with optional doesn't get named captures when there are more than 255 doesn't get named captures when there are more than 255 #post_match works with unicode works with unicode returns the part of the string after the match returns the part of the string after the match returns an empty string when there's nothing after returns an empty string when there's nothing after #regex #regex #hash #hash #[]? Range can use start and count can use start and count can use range can use range Int can use negative index can use negative index returns nil if outside match range with [] returns nil if outside match range with [] capture optional empty group capture optional empty group capture empty group capture empty group String capture empty group capture empty group capture named group capture named group capture optional empty group capture optional empty group returns nil exception when named group doesn't exist returns nil exception when named group doesn't exist captures duplicated named group captures duplicated named group CSV strips strips gets row values with string gets row values with string gets row values with regex gets row values with regex can do new with block can do new with block works without headers works without headers rewind IO based without headers without headers with headers with headers string based without headers without headers with headers with headers raises if trying to access before first row raises if trying to access before first row returns a Tuple(String, String) for current row with indices returns a Tuple(String, String) for current row with indices gets row values with integer gets row values with integer works without headers works without headers can do each can do each returns a Tuple(String, String) for current row with headers returns a Tuple(String, String) for current row with headers gets current row gets current row gets headers gets headers returns a Tuple(String, String) for this row with headers returns a Tuple(String, String) for this row with headers returns a Tuple(String, String) for this row with indices returns a Tuple(String, String) for this row with indices raise shouldn't overwrite the callstack on re-raise shouldn't overwrite the callstack on re-raise should set exception's callstack should set exception's callstack Comparable(T) clamp number clamps integers clamps integers fails with an exclusive range fails with an exclusive range clamps floats clamps floats String clamps strings clamps strings can compare against Int (#2461) can compare against Int (#2461) checks for nil checks for nil Socket::Address .parse fails with unknown scheme fails with unknown scheme accepts URI accepts URI parses UNIX parses UNIX parses UDP parses UDP parses TCP parses TCP URI::Punycode encodes Hello-Another-Way-それぞれ to Hello-Another-Way--fc4qua97gba encodes Hello-Another-Way-それぞれ to Hello-Another-Way--fc4qua97gba decodes Hello-Another-Way--fc4qua05auwb3674vfr0b to Hello-Another-Way-それぞれの場所 decodes Hello-Another-Way--fc4qua05auwb3674vfr0b to Hello-Another-Way-それぞれの場所 decodes de-jg4avhby1noc0d to パフィーdeルンバ decodes de-jg4avhby1noc0d to パフィーdeルンバ translate to ascii only host name translate to ascii only host name encodes MajiでKoiする5秒前 to MajiKoi5-783gue6qz075azm5e encodes MajiでKoiする5秒前 to MajiKoi5-783gue6qz075azm5e encodes ひとつ屋根の下2 to 2-u9tlzr9756bt3uc0v encodes ひとつ屋根の下2 to 2-u9tlzr9756bt3uc0v decodes MajiKoi5-783gue6qz075azm5e to MajiでKoiする5秒前 decodes MajiKoi5-783gue6qz075azm5e to MajiでKoiする5秒前 decodes -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n to 安室奈美恵-with-SUPER-MONKEYS decodes -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n to 安室奈美恵-with-SUPER-MONKEYS decodes d9juau41awczczp to そのスピードで decodes d9juau41awczczp to そのスピードで decodes 3B-ww4c5e180e575a65lsy2b to 3年B組金八先生 decodes 3B-ww4c5e180e575a65lsy2b to 3年B組金八先生 encodes 3年B組金八先生 to 3B-ww4c5e180e575a65lsy2b encodes 3年B組金八先生 to 3B-ww4c5e180e575a65lsy2b decodes Hello-Another-Way--fc4qua97gba to Hello-Another-Way-それぞれ decodes Hello-Another-Way--fc4qua97gba to Hello-Another-Way-それぞれ encodes 安室奈美恵-with-SUPER-MONKEYS to -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n encodes 安室奈美恵-with-SUPER-MONKEYS to -with-SUPER-MONKEYS-pc58ag80a8qai00g7n9n encodes Hello-Another-Way-それぞれの場所 to Hello-Another-Way--fc4qua05auwb3674vfr0b encodes Hello-Another-Way-それぞれの場所 to Hello-Another-Way--fc4qua05auwb3674vfr0b encodes そのスピードで to d9juau41awczczp encodes そのスピードで to d9juau41awczczp encodes パフィーdeルンバ to de-jg4avhby1noc0d encodes パフィーdeルンバ to de-jg4avhby1noc0d decodes 2-u9tlzr9756bt3uc0v to ひとつ屋根の下2 decodes 2-u9tlzr9756bt3uc0v to ひとつ屋根の下2 Thread allows passing an argumentless fun to execute allows passing an argumentless fun to execute names the thread names the thread yields the processor yields the processor returns current thread object returns current thread object raises inside thread and gets it on join raises inside thread and gets it on join BigRational #denominator #denominator #to_big_r #to_big_r #% #% #to_f #to_f #to_f! #to_f! #* #* is a number is a number clones clones #floor #floor #ceil #ceil #// #// #to_f64! #to_f64! #format #format #to_s #to_s #round rounding modes to_negative to_negative default (=ties_even) default (=ties_even) to_zero to_zero ties_away ties_away to_positive to_positive ties_even ties_even #+ #+ Float64#to_big_r Float64#to_big_r #to_f32! #to_f32! #tdiv #tdiv BigDecimal#to_big_r BigDecimal#to_big_r .new initializes from BigFloat with high precision initializes from BigFloat with high precision raises if creating from infinity raises if creating from infinity raises if creating from NaN raises if creating from NaN initialize initialize #remainder #remainder #- #- #<< #<< #to_f32 #to_f32 #>> #>> Int#to_big_r Int#to_big_r #- (negation) #- (negation) #abs #abs Float32#to_big_r Float32#to_big_r #inspect assert assert #<=> Float and Comparable Float and Comparable Int and Comparable Int and Comparable compares against NaNs compares against NaNs BigFloat and Comparable BigFloat and Comparable BigInt and Comparable BigInt and Comparable BigRational and Comparable BigRational and Comparable #/ #/ #numerator #numerator #to_f64 #to_f64 #** exponentiates with negative powers exponentiates with negative powers exponentiates with positive powers exponentiates with positive powers cannot raise 0 to a negative power cannot raise 0 to a negative power #integer? assert assert assert assert assert assert assert assert assert assert assert assert #inv #inv #trunc #trunc #to_big_f #to_big_f XML parses HTML from IO parses HTML from IO parses HTML parses HTML raises error when parsing empty string (#2752) raises error when parsing empty string (#2752) gets name of HTML document node (#4040) gets name of HTML document node (#4040) parses html5 (#1404) parses html5 (#1404) Crystal::SyntaxHighlighter::HTML #highlight! "foo = bar(\"baz\#{PI + 1}\") # comment" "foo = bar(\"baz\#{PI + 1}\") # comment" "\"foo" "\"foo" "%i[foo" "%i[foo" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO" "foo, bar = <<-FOO, <<-BAR\n foo" "foo, bar = <<-FOO, <<-BAR\n foo" "%w[foo" "%w[foo" .highlight "foo, bar = <<-FOO, <<-BAR\n foo\n FOO\n bar\n BAR" "foo, bar = <<-FOO, <<-BAR\n foo\n FOO\n bar\n BAR" "require" "require" "def []" "def []" "if" "if" "1 - 2" "1 - 2" "%w(foo bar\n baz)" "%w(foo bar\n baz)" "extend" "extend" "1 |= 2" "1 |= 2" "def >>" "def >>" "1 > 2" "1 > 2" "\"foo\#{[1, bar, \"str\"]}baz\"" "\"foo\#{[1, bar, \"str\"]}baz\"" "def <=" "def <=" "asm" "asm" "# foo" "# foo" "with" "with" "1 %= 2" "1 %= 2" "1 **= 2" "1 **= 2" "def +" "def +" "$~" "$~" "rescue" "rescue" "\"<>\"" "\"<>\"" "# foo\n# bar\n" "# foo\n# bar\n" "struct" "struct" "pointerof" "pointerof" "1 &** 2" "1 &** 2" "yield" "yield" "enum" "enum" ":\"foo\"" ":\"foo\"" "`foo`" "`foo`" "# <\">" "# <\">" "1 ! 2" "1 ! 2" "def []=" "def []=" "def <<" "def <<" "private" "private" "abstract" "abstract" "offsetof" "offsetof" "next" "next" "%w<foo bar baz>" "%w<foo bar baz>" "1 += 2" "1 += 2" "1 /2" "1 /2" "def &" "def &" "select" "select" "1/ 2" "1/ 2" "1 || 2" "1 || 2" "false" "false" "ensure" "ensure" "fun" "fun" "1 //= 2" "1 //= 2" "1 | 2" "1 | 2" "then" "then" "def **" "def **" "super" "super" "\"nest1\#{foo + \"nest2\#{1 + 1}bar\"}baz\"" "\"nest1\#{foo + \"nest2\#{1 + 1}bar\"}baz\"" "1 <=> 2" "1 <=> 2" "Foo" "Foo" "a /b/" "a /b/" "%<foo>" "%<foo>" "self" "self" "macro" "macro" "for" "for" "1 -= 2" "1 -= 2" "1 ** 2" "1 ** 2" "break" "break" "42" "42" "$2?" "$2?" "1 >= 2" "1 >= 2" "def !=" "def !=" "%Q(foo)" "%Q(foo)" "typeof" "typeof" "def -" "def -" "%r(foo)xim" "%r(foo)xim" "'a'" "'a'" "# bar\n" "# bar\n" "sizeof" "sizeof" "1 < 2" "1 < 2" "foo" "foo" "1 && 2" "1 && 2" "alias" "alias" "def //" "def //" "is_a?" "is_a?" "lib" "lib" "/foo/xim" "/foo/xim" "%w(foo bar baz)" "%w(foo bar baz)" "1 >> 2" "1 >> 2" "1 = 2" "1 = 2" "def >" "def >" "def |" "def |" "1 ^ 2" "1 ^ 2" "1 != 2" "1 != 2" "1 /= 2" "1 /= 2" "module" "module" "nil?" "nil?" "1 []? 2" "1 []? 2" "1 =~ 2" "1 =~ 2" "1 &+ 2" "1 &+ 2" "1 / 2" "1 / 2" "1 &* 2" "1 &* 2" "do" "do" "$?" "$?" "nil" "nil" "1 &- 2" "1 &- 2" "union" "union" "self" "self" "out" "out" "1 &&= 2" "1 &&= 2" "elsif" "elsif" "while" "while" "1 !~ 2" "1 !~ 2" "%x(foo)" "%x(foo)" "def =~" "def =~" "until" "until" "true" "true" "def >=" "def >=" "1 <<= 2" "1 <<= 2" "1 <= 2" "1 <= 2" "alignof" "alignof" "a/ b" "a/ b" "def foo" "def foo" "include" "include" "'<'" "'<'" "\"foo\#{bar}baz\"" "\"foo\#{bar}baz\"" "of" "of" "$1" "$1" "1/2" "1/2" "a / b" "a / b" "%i(foo bar baz)" "%i(foo bar baz)" "end" "end" "1 % 2" "1 % 2" "uninitialized" "uninitialized" "1 ||= 2" "1 ||= 2" "foo = bar(\"baz\#{PI + 1}\") # comment" "foo = bar(\"baz\#{PI + 1}\") # comment" "1 * 2" "1 * 2" "instance_sizeof" "instance_sizeof" "1 &-= 2" "1 &-= 2" "def" "def" "1 &+= 2" "1 &+= 2" "1 &= 2" "1 &= 2" "when" "when" "def ^" "def ^" "def ==" "def ==" "1 &*= 2" "1 &*= 2" "1 === 2" "1 === 2" "1 << 2" "1 << 2" "def <" "def <" "verbatim" "verbatim" "1 [] 2" "1 [] 2" "\"foo\"" "\"foo\"" "type" "type" "1 ^= 2" "1 ^= 2" "1 & 2" "1 & 2" "123_i64" "123_i64" "annotation" "annotation" "1 *= 2" "1 *= 2" "else" "else" "protected" "protected" "unless" "unless" "instance_alignof" "instance_alignof" "def %" "def %" "begin" "begin" "Foo::Bar" "Foo::Bar" "as" "as" "a/b" "a/b" "as?" "as?" "%q(foo)" "%q(foo)" "Set{1, 2, 3}" "Set{1, 2, 3}" "return" "return" "def *" "def *" "def !~" "def !~" "def <=>" "def <=>" "1 == 2" "1 == 2" "case" "case" "def ~" "def ~" "1 []= 2" "1 []= 2" "def []?" "def []?" "1 + 2" "1 + 2" "class" "class" "foo\nbar" "foo\nbar" "%(foo)" "%(foo)" "in" "in" "1 ~ 2" "1 ~ 2" ":foo" ":foo" "foo bar" "foo bar" "1 // 2" "1 // 2" "1 >>= 2" "1 >>= 2" "3.14" "3.14" "def /" "def /" OAuth::AccessToken creates from response body creates from response body WinError #message #message .value .value .wsa_value .wsa_value Random::PCG32 can be initialized without explicit seed can be initialized without explicit seed can jump ahead can jump ahead can jump back can jump back generates random numbers as generated official implementation generates random numbers as generated official implementation concurrent spawn uses spawn macro uses spawn macro spawns named with macro spawns named with macro spawns named spawns named schedules intermitting sleeps schedules intermitting sleeps accepts method call with receiver accepts method call with receiver YAML parser parses recursive sequence parses recursive sequence assert assert parses alias to scalar parses alias to scalar assert assert assert assert parses recursive mapping parses recursive mapping assert assert assert assert merging with << key parses from IO parses from IO raises if merging with missing alias raises if merging with missing alias doesn't merge explicit string key << doesn't merge explicit string key << merges other mapping with alias merges other mapping with alias has correct line/number info (#2585) has correct line/number info (#2585) merges other mapping merges other mapping has correct line/number info (2) has correct line/number info (2) merges other mapping with array of alias merges other mapping with array of alias has correct message (#4006) has correct message (#4006) doesn't merge empty mapping doesn't merge empty mapping doesn't merge arrays doesn't merge arrays assert assert dump writes YAML to a stream writes YAML to a stream returns YAML as a string returns YAML as a string OpenSSL::PKCS5 computes pbkdf2_hmac MD5 computes pbkdf2_hmac MD5 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac MD5 computes pbkdf2_hmac MD5 computes pbkdf2_hmac_sha1 computes pbkdf2_hmac_sha1 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac SHA256 computes pbkdf2_hmac MD5 computes pbkdf2_hmac MD5 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac MD5 computes pbkdf2_hmac MD5 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA384 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA1 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA512 computes pbkdf2_hmac SHA224 computes pbkdf2_hmac SHA224 Pending: Number #round edge cases URI .parse unescaped @ in user/password should not confuse host TCPServer settings Spec matchers pending block is not compiled pending has block with valid syntax, but invalid semantics UDPSocket #connect with a IPv6 address UDPSocket using IPv6 joins and transmits to multicast groups UDPSocket using IPv4 joins and transmits to multicast groups Math Functions for computing quotient and remainder String #reverse converts invalid code units to replacement char Path #expand converts a pathname to an absolute pathname, using a complete path assert String#each_grapheme GB9c String#each_grapheme GB9c String#each_grapheme GB9c String#each_grapheme GB9c String#each_grapheme GB9c String#each_grapheme GB9c String#each_grapheme GB9c Regex #match with pos negative Regex #matches_at_byte_index? negative Regex #match_at_byte_index negative OpenSSL::SSL::Context ciphers uses intermediate default ciphers OpenSSL::X509::Certificate #digest Finished in 8:52 minutes 17720 examples, 0 failures, 0 errors, 22 pending Randomized with seed: 26192 make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' make release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" interpreter=1 primitives_spec make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' ./bin/crystal build -D strict_multi_assign -D preview_overload_order --release --progress --threads 20 --link-flags="-Wl,-z,relro" --exclude-warnings spec/std --exclude-warnings spec/compiler --exclude-warnings spec/primitives -o .build/primitives_spec spec/primitives_spec.cr Using compiled compiler at .build/crystal [1/13] Parse [1/13] Parse [2/13] Semantic (top level) [2/13] Semantic (top level) [3/13] Semantic (new) [3/13] Semantic (new) [4/13] Semantic (type declarations) [4/13] Semantic (type declarations) [5/13] Semantic (abstract def check) [5/13] Semantic (abstract def check) [6/13] Semantic (restrictions augmenter) [6/13] Semantic (restrictions augmenter) [7/13] Semantic (ivars initializers) [7/13] Semantic (ivars initializers) [8/13] Semantic (cvars initializers) [8/13] Semantic (cvars initializers) [9/13] Semantic (main) [9/13] Semantic (main) [10/13] Semantic (cleanup) [10/13] Semantic (cleanup) [11/13] Semantic (recursive struct check) [11/13] Semantic (recursive struct check) [12/13] Codegen (crystal) [12/13] Codegen (crystal) [13/13] Codegen (bc+obj) [13/13] [0/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) .build/primitives_spec -v --order=random Randomized with seed: 92833 Primitives: Slice .literal creates multiple literals creates multiple literals creates a read-only Slice(Float64) creates a read-only Slice(Float64) creates multiple literals creates multiple literals creates a read-only Slice(Int128) creates a read-only Slice(Int128) creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates a read-only Slice(UInt32) creates a read-only Slice(UInt32) creates a read-only Slice(UInt64) creates a read-only Slice(UInt64) creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates a read-only Slice(UInt16) creates a read-only Slice(UInt16) creates multiple literals creates multiple literals creates a read-only Slice(Int64) creates a read-only Slice(Int64) creates a read-only Slice(UInt128) creates a read-only Slice(UInt128) creates a read-only Slice(Int16) creates a read-only Slice(Int16) creates a read-only Slice(UInt8) creates a read-only Slice(UInt8) creates a read-only Slice(Int8) creates a read-only Slice(Int8) creates a read-only Slice(Int32) creates a read-only Slice(Int32) creates multiple literals creates multiple literals creates multiple literals creates multiple literals creates a read-only Slice(Float32) creates a read-only Slice(Float32) creates multiple literals creates multiple literals Primitives: pointer .malloc is non-atomic for ReferenceStorage(T) if T is non-atomic (#14692) is non-atomic for ReferenceStorage(T) if T is non-atomic (#14692) Crystal::Command exec external commands exec external commands Primitives: Int #unsafe_chr doesn't raise on overflow doesn't raise on overflow #to_f raises on overflow for UInt128#to_f32 raises on overflow for UInt128#to_f32 #to_i raises on overflow for Int32#to_i128 raises on overflow for Int32#to_i128 raises on overflow for UInt16#to_i raises on overflow for UInt16#to_i raises on overflow for Int64#to_u32 raises on overflow for Int64#to_u32 raises on overflow for Int8#to_i32 raises on overflow for Int8#to_i32 raises on overflow for Int64#to_i16 raises on overflow for Int64#to_i16 raises on overflow for UInt128#to_u8 raises on overflow for UInt128#to_u8 raises on overflow for UInt32#to_u128 raises on overflow for UInt32#to_u128 raises on overflow for Int16#to_u16 raises on overflow for Int16#to_u16 raises on overflow for UInt64#to_i32 raises on overflow for UInt64#to_i32 raises on overflow for UInt8#to_u64 raises on overflow for UInt8#to_u64 raises on overflow for UInt64#to_i raises on overflow for UInt64#to_i raises on overflow for Int128#to_i64 raises on overflow for Int128#to_i64 raises on overflow for UInt8#to_u raises on overflow for UInt8#to_u raises on overflow for UInt32#to_u16 raises on overflow for UInt32#to_u16 raises on overflow for UInt8#to_u128 raises on overflow for UInt8#to_u128 raises on overflow for Int32#to_u32 raises on overflow for Int32#to_u32 raises on overflow for Int16#to_i raises on overflow for Int16#to_i raises on overflow for UInt32#to_i16 raises on overflow for UInt32#to_i16 raises on overflow for Int16#to_i8 raises on overflow for Int16#to_i8 raises on overflow for UInt128#to_u raises on overflow for UInt128#to_u raises on overflow for UInt128#to_i32 raises on overflow for UInt128#to_i32 raises on overflow for Int16#to_u128 raises on overflow for Int16#to_u128 raises on overflow for UInt8#to_u16 raises on overflow for UInt8#to_u16 raises on overflow for UInt128#to_u16 raises on overflow for UInt128#to_u16 raises on overflow for Int128#to_u32 raises on overflow for Int128#to_u32 raises on overflow for Int128#to_u raises on overflow for Int128#to_u raises on overflow for UInt64#to_u raises on overflow for UInt64#to_u raises on overflow for Int32#to_i8 raises on overflow for Int32#to_i8 raises on overflow for UInt32#to_u64 raises on overflow for UInt32#to_u64 raises on overflow for Int32#to_i64 raises on overflow for Int32#to_i64 raises on overflow for UInt32#to_i128 raises on overflow for UInt32#to_i128 raises on overflow for Int8#to_u raises on overflow for Int8#to_u raises on overflow for UInt32#to_i raises on overflow for UInt32#to_i raises on overflow for UInt64#to_u8 raises on overflow for UInt64#to_u8 raises on overflow for UInt16#to_i64 raises on overflow for UInt16#to_i64 raises on overflow for Int64#to_u16 raises on overflow for Int64#to_u16 raises on overflow for Int128#to_u128 raises on overflow for Int128#to_u128 raises on overflow for Int8#to_u8 raises on overflow for Int8#to_u8 raises on overflow for Int32#to_u raises on overflow for Int32#to_u raises on overflow for Int16#to_u32 raises on overflow for Int16#to_u32 raises on overflow for Int8#to_u32 raises on overflow for Int8#to_u32 raises on overflow for UInt128#to_i8 raises on overflow for UInt128#to_i8 raises on overflow for UInt16#to_u64 raises on overflow for UInt16#to_u64 raises on overflow for UInt32#to_i32 raises on overflow for UInt32#to_i32 raises on overflow for Int8#to_u16 raises on overflow for Int8#to_u16 raises on overflow for UInt64#to_u128 raises on overflow for UInt64#to_u128 raises on overflow for UInt8#to_u32 raises on overflow for UInt8#to_u32 raises on overflow for Int32#to_u128 raises on overflow for Int32#to_u128 raises on overflow for Int8#to_i128 raises on overflow for Int8#to_i128 raises on overflow for UInt16#to_i128 raises on overflow for UInt16#to_i128 raises on overflow for Int8#to_u64 raises on overflow for Int8#to_u64 raises on overflow for UInt128#to_i raises on overflow for UInt128#to_i raises on overflow for UInt64#to_i64 raises on overflow for UInt64#to_i64 raises on overflow for UInt128#to_i64 raises on overflow for UInt128#to_i64 raises on overflow for Int64#to_i32 raises on overflow for Int64#to_i32 raises on overflow for UInt16#to_i8 raises on overflow for UInt16#to_i8 raises on overflow for UInt8#to_i raises on overflow for UInt8#to_i raises on overflow for Int64#to_i8 raises on overflow for Int64#to_i8 raises on overflow for UInt32#to_i64 raises on overflow for UInt32#to_i64 raises on overflow for UInt16#to_u8 raises on overflow for UInt16#to_u8 raises on overflow for Int64#to_u128 raises on overflow for Int64#to_u128 raises on overflow for UInt64#to_u32 raises on overflow for UInt64#to_u32 raises on overflow for UInt8#to_i32 raises on overflow for UInt8#to_i32 raises on overflow for UInt16#to_u32 raises on overflow for UInt16#to_u32 raises on overflow for Int16#to_u raises on overflow for Int16#to_u raises on overflow for UInt32#to_i8 raises on overflow for UInt32#to_i8 raises on overflow for Int16#to_u64 raises on overflow for Int16#to_u64 raises on overflow for Int8#to_u128 raises on overflow for Int8#to_u128 raises on overflow for Int64#to_i raises on overflow for Int64#to_i raises on overflow for Int32#to_i16 raises on overflow for Int32#to_i16 raises on overflow for Int32#to_u8 raises on overflow for Int32#to_u8 raises on overflow for UInt128#to_u32 raises on overflow for UInt128#to_u32 raises on overflow for UInt16#to_u raises on overflow for UInt16#to_u raises on overflow for Int64#to_u raises on overflow for Int64#to_u raises on overflow for UInt128#to_i128 raises on overflow for UInt128#to_i128 raises on overflow for Int16#to_u8 raises on overflow for Int16#to_u8 raises on overflow for Int64#to_u64 raises on overflow for Int64#to_u64 raises on overflow for UInt64#to_i8 raises on overflow for UInt64#to_i8 raises on overflow for UInt64#to_u16 raises on overflow for UInt64#to_u16 raises on overflow for UInt64#to_i16 raises on overflow for UInt64#to_i16 raises on overflow for UInt128#to_i16 raises on overflow for UInt128#to_i16 raises on overflow for UInt8#to_i8 raises on overflow for UInt8#to_i8 raises on overflow for Int8#to_i16 raises on overflow for Int8#to_i16 raises on overflow for Int64#to_u8 raises on overflow for Int64#to_u8 raises on overflow for Int16#to_i64 raises on overflow for Int16#to_i64 raises on overflow for UInt16#to_u128 raises on overflow for UInt16#to_u128 raises on overflow for Int32#to_u64 raises on overflow for Int32#to_u64 raises on overflow for UInt128#to_u64 raises on overflow for UInt128#to_u64 raises on overflow for Int128#to_i8 raises on overflow for Int128#to_i8 raises on overflow for Int128#to_i raises on overflow for Int128#to_i raises on overflow for Int64#to_i128 raises on overflow for Int64#to_i128 raises on overflow for UInt32#to_u8 raises on overflow for UInt32#to_u8 raises on overflow for Int32#to_u16 raises on overflow for Int32#to_u16 raises on overflow for UInt16#to_i32 raises on overflow for UInt16#to_i32 raises on overflow for Int16#to_i128 raises on overflow for Int16#to_i128 raises on overflow for UInt8#to_i128 raises on overflow for UInt8#to_i128 raises on overflow for Int16#to_i32 raises on overflow for Int16#to_i32 raises on overflow for Int128#to_u64 raises on overflow for Int128#to_u64 raises on overflow for UInt64#to_i128 raises on overflow for UInt64#to_i128 raises on overflow for Int128#to_u16 raises on overflow for Int128#to_u16 raises on overflow for Int8#to_i raises on overflow for Int8#to_i raises on overflow for Int8#to_i64 raises on overflow for Int8#to_i64 raises on overflow for Int128#to_i32 raises on overflow for Int128#to_i32 raises on overflow for Int128#to_u8 raises on overflow for Int128#to_u8 raises on overflow for UInt8#to_i16 raises on overflow for UInt8#to_i16 raises on overflow for UInt8#to_i64 raises on overflow for UInt8#to_i64 raises on overflow for Int128#to_i16 raises on overflow for Int128#to_i16 raises on overflow for UInt16#to_i16 raises on overflow for UInt16#to_i16 #to_f! doesn't raise on overflow for UInt128#to_f32 doesn't raise on overflow for UInt128#to_f32 #to_i! preserves negative sign preserves negative sign works from greater values to smaller types works from greater values to smaller types works from negative values to unsigned types works from negative values to unsigned types #- overflow test UInt16 - Int128 overflow test UInt16 - Int128 overflow test Int32 - UInt64 overflow test Int32 - UInt64 overflow test UInt32 - UInt128 overflow test UInt32 - UInt128 overflow test Int16 - Int64 overflow test Int16 - Int64 overflow test UInt8 - UInt32 overflow test UInt8 - UInt32 overflow test Int16 - UInt32 overflow test Int16 - UInt32 overflow test Int16 - Int128 overflow test Int16 - Int128 overflow test Int8 - Int64 overflow test Int8 - Int64 overflow test Int16 - Int16 overflow test Int16 - Int16 overflow test UInt8 - UInt128 overflow test UInt8 - UInt128 overflow test Int128 - Int32 overflow test Int128 - Int32 overflow test UInt32 - Int64 overflow test UInt32 - Int64 overflow test UInt128 - Int8 overflow test UInt128 - Int8 overflow test UInt32 - UInt32 overflow test UInt32 - UInt32 overflow test UInt64 - Int128 overflow test UInt64 - Int128 overflow test UInt128 - Int32 overflow test UInt128 - Int32 overflow test Int64 - UInt128 overflow test Int64 - UInt128 overflow test UInt64 - Int64 overflow test UInt64 - Int64 overflow test UInt32 - Int32 overflow test UInt32 - Int32 overflow test UInt8 - Int64 overflow test UInt8 - Int64 overflow test UInt32 - UInt16 overflow test UInt32 - UInt16 overflow test UInt16 - UInt16 overflow test UInt16 - UInt16 overflow test Int16 - UInt16 overflow test Int16 - UInt16 overflow test Int32 - Int128 overflow test Int32 - Int128 overflow test UInt16 - UInt64 overflow test UInt16 - UInt64 overflow test Int32 - UInt8 overflow test Int32 - UInt8 overflow test UInt8 - UInt64 overflow test UInt8 - UInt64 overflow test UInt128 - UInt8 overflow test UInt128 - UInt8 overflow test Int8 - Int128 overflow test Int8 - Int128 overflow test Int128 - UInt8 overflow test Int128 - UInt8 overflow test Int64 - Int8 overflow test Int64 - Int8 overflow test Int32 - UInt32 overflow test Int32 - UInt32 overflow test Int32 - Int8 overflow test Int32 - Int8 overflow test UInt64 - UInt128 overflow test UInt64 - UInt128 overflow test Int64 - Int64 overflow test Int64 - Int64 overflow test Int8 - Int32 overflow test Int8 - Int32 overflow test UInt64 - UInt8 overflow test UInt64 - UInt8 overflow test UInt32 - Int16 overflow test UInt32 - Int16 overflow test Int32 - Int32 overflow test Int32 - Int32 overflow test Int16 - UInt8 overflow test Int16 - UInt8 overflow test Int64 - Int16 overflow test Int64 - Int16 overflow test Int128 - UInt16 overflow test Int128 - UInt16 overflow test UInt128 - Int128 overflow test UInt128 - Int128 overflow test Int32 - UInt128 overflow test Int32 - UInt128 overflow test UInt64 - UInt16 overflow test UInt64 - UInt16 overflow test UInt16 - Int64 overflow test UInt16 - Int64 overflow test UInt64 - UInt32 overflow test UInt64 - UInt32 overflow test UInt128 - Int64 overflow test UInt128 - Int64 overflow test Int8 - Int16 overflow test Int8 - Int16 overflow test UInt8 - UInt16 overflow test UInt8 - UInt16 overflow test UInt64 - Int8 overflow test UInt64 - Int8 overflow test Int8 - UInt64 overflow test Int8 - UInt64 overflow test UInt32 - UInt8 overflow test UInt32 - UInt8 overflow test UInt128 - Int16 overflow test UInt128 - Int16 overflow test Int8 - Int8 overflow test Int8 - Int8 overflow test Int8 - UInt16 overflow test Int8 - UInt16 overflow test UInt16 - Int32 overflow test UInt16 - Int32 overflow test Int16 - Int32 overflow test Int16 - Int32 overflow test Int64 - UInt64 overflow test Int64 - UInt64 overflow test Int64 - Int128 overflow test Int64 - Int128 overflow test Int64 - UInt8 overflow test Int64 - UInt8 overflow test Int64 - UInt16 overflow test Int64 - UInt16 overflow test Int128 - UInt64 overflow test Int128 - UInt64 overflow test Int32 - Int16 overflow test Int32 - Int16 overflow test Int128 - Int64 overflow test Int128 - Int64 overflow test UInt64 - Int16 overflow test UInt64 - Int16 overflow test UInt32 - Int8 overflow test UInt32 - Int8 overflow test Int64 - Int32 overflow test Int64 - Int32 overflow test UInt8 - Int16 overflow test UInt8 - Int16 overflow test Int8 - UInt8 overflow test Int8 - UInt8 overflow test UInt8 - Int8 overflow test UInt8 - Int8 overflow test Int16 - Int8 overflow test Int16 - Int8 overflow test Int128 - UInt128 overflow test Int128 - UInt128 overflow test Int128 - Int8 overflow test Int128 - Int8 overflow test UInt128 - UInt16 overflow test UInt128 - UInt16 overflow test UInt32 - UInt64 overflow test UInt32 - UInt64 overflow test Int16 - UInt128 overflow test Int16 - UInt128 overflow test UInt8 - Int32 overflow test UInt8 - Int32 overflow test Int64 - UInt32 overflow test Int64 - UInt32 overflow test Int32 - UInt16 overflow test Int32 - UInt16 overflow test UInt32 - Int128 overflow test UInt32 - Int128 overflow test Int32 - Int64 overflow test Int32 - Int64 overflow test UInt16 - UInt32 overflow test UInt16 - UInt32 overflow test UInt128 - UInt32 overflow test UInt128 - UInt32 overflow test UInt16 - Int8 overflow test UInt16 - Int8 overflow test UInt128 - UInt128 overflow test UInt128 - UInt128 overflow test Int128 - Int16 overflow test Int128 - Int16 overflow test UInt8 - Int128 overflow test UInt8 - Int128 overflow test Int16 - UInt64 overflow test Int16 - UInt64 overflow test UInt128 - UInt64 overflow test UInt128 - UInt64 overflow test UInt16 - UInt8 overflow test UInt16 - UInt8 overflow test UInt16 - UInt128 overflow test UInt16 - UInt128 overflow test UInt8 - UInt8 overflow test UInt8 - UInt8 overflow test Int128 - UInt32 overflow test Int128 - UInt32 overflow test Int8 - UInt32 overflow test Int8 - UInt32 overflow test Int128 - Int128 overflow test Int128 - Int128 overflow test UInt64 - Int32 overflow test UInt64 - Int32 overflow test UInt16 - Int16 overflow test UInt16 - Int16 overflow test UInt64 - UInt64 overflow test UInt64 - UInt64 overflow test Int8 - UInt128 overflow test Int8 - UInt128 #&* wraps around for UInt8 wraps around for UInt8 wraps around for UInt64 wraps around for UInt64 wraps around for Int128 wraps around for Int128 wraps around for UInt128 wraps around for UInt128 wraps around for UInt32 wraps around for UInt32 wraps around for UInt16 wraps around for UInt16 wraps around for Int8 wraps around for Int8 wraps around for Int16 wraps around for Int16 wraps around for Int32 wraps around for Int32 wraps around for Int64 wraps around for Int64 #&- wraps around for Int16 wraps around for Int16 wraps around for Int8 wraps around for Int8 wraps around for UInt8 wraps around for UInt8 wraps around for UInt64 wraps around for UInt64 wraps around for UInt16 wraps around for UInt16 wraps around for Int32 wraps around for Int32 wraps around for UInt128 wraps around for UInt128 wraps around for UInt32 wraps around for UInt32 wraps around for Int64 wraps around for Int64 wraps around for Int128 wraps around for Int128 #&+ wraps around for UInt128 wraps around for UInt128 wraps around for UInt8 wraps around for UInt8 wraps around for UInt16 wraps around for UInt16 wraps around for Int16 wraps around for Int16 wraps around for Int64 wraps around for Int64 wraps around for UInt32 wraps around for UInt32 wraps around for UInt64 wraps around for UInt64 wraps around for Int32 wraps around for Int32 wraps around for Int128 wraps around for Int128 wraps around for Int8 wraps around for Int8 #* overflow test Int8 * UInt32 overflow test Int8 * UInt32 overflow test UInt8 * Int32 overflow test UInt8 * Int32 overflow test Int64 * Int64 overflow test Int64 * Int64 overflow test UInt32 * UInt64 overflow test UInt32 * UInt64 overflow test Int16 * UInt32 overflow test Int16 * UInt32 overflow test Int8 * Int8 overflow test Int8 * Int8 overflow test UInt128 * UInt32 overflow test UInt128 * UInt32 overflow test UInt32 * Int128 overflow test UInt32 * Int128 overflow test Int8 * UInt128 overflow test Int8 * UInt128 overflow test UInt32 * UInt128 overflow test UInt32 * UInt128 overflow test Int32 * UInt64 overflow test Int32 * UInt64 overflow test Int128 * UInt128 overflow test Int128 * UInt128 overflow test Int16 * UInt16 overflow test Int16 * UInt16 overflow test Int16 * Int128 overflow test Int16 * Int128 overflow test UInt8 * UInt128 overflow test UInt8 * UInt128 overflow test Int128 * UInt16 overflow test Int128 * UInt16 overflow test UInt16 * UInt64 overflow test UInt16 * UInt64 overflow test Int64 * UInt64 overflow test Int64 * UInt64 overflow test Int16 * UInt8 overflow test Int16 * UInt8 overflow test Int16 * Int16 overflow test Int16 * Int16 overflow test UInt64 * Int32 overflow test UInt64 * Int32 overflow test Int32 * UInt8 overflow test Int32 * UInt8 overflow test Int8 * Int64 overflow test Int8 * Int64 overflow test UInt128 * Int128 overflow test UInt128 * Int128 overflow test UInt64 * UInt8 overflow test UInt64 * UInt8 overflow test Int32 * UInt16 overflow test Int32 * UInt16 overflow test UInt128 * UInt128 overflow test UInt128 * UInt128 overflow test Int16 * UInt128 overflow test Int16 * UInt128 overflow test UInt128 * Int32 overflow test UInt128 * Int32 overflow test Int8 * UInt16 overflow test Int8 * UInt16 overflow test UInt128 * UInt8 overflow test UInt128 * UInt8 overflow test UInt8 * Int64 overflow test UInt8 * Int64 overflow test Int128 * Int16 overflow test Int128 * Int16 overflow test Int8 * UInt64 overflow test Int8 * UInt64 overflow test UInt16 * Int16 overflow test UInt16 * Int16 overflow test Int128 * UInt32 overflow test Int128 * UInt32 overflow test Int16 * UInt64 overflow test Int16 * UInt64 overflow test Int64 * UInt8 overflow test Int64 * UInt8 overflow test Int64 * Int128 overflow test Int64 * Int128 overflow test UInt8 * Int16 overflow test UInt8 * Int16 overflow test Int32 * Int128 overflow test Int32 * Int128 overflow test Int32 * UInt32 overflow test Int32 * UInt32 overflow test UInt16 * UInt128 overflow test UInt16 * UInt128 overflow test UInt32 * Int16 overflow test UInt32 * Int16 overflow test Int32 * Int16 overflow test Int32 * Int16 overflow test Int128 * Int8 overflow test Int128 * Int8 overflow test UInt8 * UInt16 overflow test UInt8 * UInt16 overflow test Int64 * Int32 overflow test Int64 * Int32 overflow test UInt64 * Int64 overflow test UInt64 * Int64 overflow test UInt16 * Int8 overflow test UInt16 * Int8 overflow test Int64 * UInt16 overflow test Int64 * UInt16 overflow test UInt8 * UInt64 overflow test UInt8 * UInt64 overflow test Int64 * Int16 overflow test Int64 * Int16 overflow test Int128 * UInt64 overflow test Int128 * UInt64 overflow test Int128 * Int32 overflow test Int128 * Int32 overflow test UInt128 * UInt16 overflow test UInt128 * UInt16 overflow test UInt32 * UInt16 overflow test UInt32 * UInt16 overflow test UInt16 * UInt16 overflow test UInt16 * UInt16 overflow test Int16 * Int8 overflow test Int16 * Int8 overflow test UInt64 * UInt16 overflow test UInt64 * UInt16 overflow test UInt64 * Int8 overflow test UInt64 * Int8 overflow test Int32 * Int64 overflow test Int32 * Int64 overflow test UInt32 * UInt8 overflow test UInt32 * UInt8 overflow test UInt128 * Int16 overflow test UInt128 * Int16 overflow test Int16 * Int32 overflow test Int16 * Int32 overflow test UInt128 * Int64 overflow test UInt128 * Int64 overflow test UInt32 * Int32 overflow test UInt32 * Int32 overflow test UInt16 * UInt32 overflow test UInt16 * UInt32 overflow test Int8 * Int16 overflow test Int8 * Int16 overflow test Int8 * UInt8 overflow test Int8 * UInt8 overflow test Int8 * Int32 overflow test Int8 * Int32 overflow test UInt8 * UInt32 overflow test UInt8 * UInt32 overflow test Int8 * Int128 overflow test Int8 * Int128 overflow test Int32 * Int8 overflow test Int32 * Int8 overflow test UInt16 * Int128 overflow test UInt16 * Int128 overflow test Int64 * UInt128 overflow test Int64 * UInt128 overflow test Int64 * Int8 overflow test Int64 * Int8 overflow test Int128 * UInt8 overflow test Int128 * UInt8 overflow test UInt64 * UInt32 overflow test UInt64 * UInt32 overflow test UInt8 * UInt8 overflow test UInt8 * UInt8 overflow test Int32 * Int32 overflow test Int32 * Int32 overflow test UInt64 * UInt64 overflow test UInt64 * UInt64 overflow test Int64 * UInt32 overflow test Int64 * UInt32 overflow test UInt64 * Int128 overflow test UInt64 * Int128 overflow test UInt128 * UInt64 overflow test UInt128 * UInt64 overflow test Int16 * Int64 overflow test Int16 * Int64 overflow test UInt16 * Int32 overflow test UInt16 * Int32 overflow test UInt128 * Int8 overflow test UInt128 * Int8 overflow test UInt32 * UInt32 overflow test UInt32 * UInt32 overflow test UInt16 * UInt8 overflow test UInt16 * UInt8 overflow test UInt32 * Int8 overflow test UInt32 * Int8 overflow test Int128 * Int128 overflow test Int128 * Int128 overflow test Int128 * Int64 overflow test Int128 * Int64 overflow test UInt8 * Int128 overflow test UInt8 * Int128 overflow test Int32 * UInt128 overflow test Int32 * UInt128 overflow test UInt32 * Int64 overflow test UInt32 * Int64 overflow test UInt8 * Int8 overflow test UInt8 * Int8 overflow test UInt16 * Int64 overflow test UInt16 * Int64 overflow test UInt64 * Int16 overflow test UInt64 * Int16 overflow test UInt64 * UInt128 overflow test UInt64 * UInt128 #+ overflow test Int128 + UInt16 overflow test Int128 + UInt16 overflow test UInt128 + Int64 overflow test UInt128 + Int64 overflow test UInt64 + UInt8 overflow test UInt64 + UInt8 overflow test Int16 + UInt8 overflow test Int16 + UInt8 overflow test UInt64 + Int16 overflow test UInt64 + Int16 overflow test Int128 + UInt8 overflow test Int128 + UInt8 overflow test Int32 + Int128 overflow test Int32 + Int128 overflow test UInt32 + UInt16 overflow test UInt32 + UInt16 overflow test UInt64 + UInt16 overflow test UInt64 + UInt16 overflow test Int16 + Int16 overflow test Int16 + Int16 overflow test Int64 + Int64 overflow test Int64 + Int64 overflow test Int64 + UInt32 overflow test Int64 + UInt32 overflow test Int128 + Int128 overflow test Int128 + Int128 overflow test Int16 + UInt128 overflow test Int16 + UInt128 overflow test UInt128 + UInt128 overflow test UInt128 + UInt128 overflow test Int32 + Int8 overflow test Int32 + Int8 overflow test Int8 + Int64 overflow test Int8 + Int64 overflow test Int32 + Int32 overflow test Int32 + Int32 overflow test Int16 + UInt64 overflow test Int16 + UInt64 overflow test UInt32 + Int32 overflow test UInt32 + Int32 overflow test UInt128 + Int8 overflow test UInt128 + Int8 overflow test UInt8 + UInt32 overflow test UInt8 + UInt32 overflow test UInt64 + Int8 overflow test UInt64 + Int8 overflow test Int128 + UInt128 overflow test Int128 + UInt128 overflow test Int64 + UInt16 overflow test Int64 + UInt16 overflow test Int32 + UInt32 overflow test Int32 + UInt32 overflow test UInt128 + Int16 overflow test UInt128 + Int16 overflow test UInt32 + UInt8 overflow test UInt32 + UInt8 overflow test UInt8 + Int32 overflow test UInt8 + Int32 overflow test Int16 + Int64 overflow test Int16 + Int64 overflow test Int32 + Int16 overflow test Int32 + Int16 overflow test UInt64 + UInt64 overflow test UInt64 + UInt64 overflow test UInt32 + Int128 overflow test UInt32 + Int128 overflow test UInt8 + Int64 overflow test UInt8 + Int64 overflow test Int8 + UInt64 overflow test Int8 + UInt64 overflow test Int16 + Int8 overflow test Int16 + Int8 overflow test Int8 + UInt32 overflow test Int8 + UInt32 overflow test UInt32 + Int64 overflow test UInt32 + Int64 overflow test Int16 + Int128 overflow test Int16 + Int128 overflow test UInt64 + Int64 overflow test UInt64 + Int64 overflow test UInt128 + UInt64 overflow test UInt128 + UInt64 overflow test UInt16 + UInt32 overflow test UInt16 + UInt32 overflow test Int128 + Int64 overflow test Int128 + Int64 overflow test Int128 + UInt32 overflow test Int128 + UInt32 overflow test UInt16 + Int16 overflow test UInt16 + Int16 overflow test Int8 + Int32 overflow test Int8 + Int32 overflow test UInt32 + Int8 overflow test UInt32 + Int8 overflow test UInt128 + UInt8 overflow test UInt128 + UInt8 overflow test Int64 + UInt64 overflow test Int64 + UInt64 overflow test UInt16 + Int128 overflow test UInt16 + Int128 overflow test Int128 + Int8 overflow test Int128 + Int8 overflow test UInt16 + Int32 overflow test UInt16 + Int32 overflow test Int64 + Int8 overflow test Int64 + Int8 overflow test UInt32 + Int16 overflow test UInt32 + Int16 overflow test UInt16 + UInt8 overflow test UInt16 + UInt8 overflow test UInt8 + UInt128 overflow test UInt8 + UInt128 overflow test Int32 + UInt16 overflow test Int32 + UInt16 overflow test UInt16 + Int8 overflow test UInt16 + Int8 overflow test Int8 + UInt16 overflow test Int8 + UInt16 overflow test UInt8 + UInt16 overflow test UInt8 + UInt16 overflow test UInt8 + Int128 overflow test UInt8 + Int128 overflow test Int8 + Int128 overflow test Int8 + Int128 overflow test Int8 + UInt8 overflow test Int8 + UInt8 overflow test UInt32 + UInt128 overflow test UInt32 + UInt128 overflow test Int64 + Int128 overflow test Int64 + Int128 overflow test UInt64 + UInt32 overflow test UInt64 + UInt32 overflow test Int32 + UInt8 overflow test Int32 + UInt8 overflow test Int32 + UInt64 overflow test Int32 + UInt64 overflow test Int16 + UInt32 overflow test Int16 + UInt32 overflow test UInt8 + Int16 overflow test UInt8 + Int16 overflow test UInt32 + UInt32 overflow test UInt32 + UInt32 overflow test Int64 + Int16 overflow test Int64 + Int16 overflow test Int128 + Int16 overflow test Int128 + Int16 overflow test UInt128 + UInt16 overflow test UInt128 + UInt16 overflow test Int64 + Int32 overflow test Int64 + Int32 overflow test UInt64 + UInt128 overflow test UInt64 + UInt128 overflow test Int32 + UInt128 overflow test Int32 + UInt128 overflow test UInt16 + UInt16 overflow test UInt16 + UInt16 overflow test UInt64 + Int128 overflow test UInt64 + Int128 overflow test UInt16 + UInt128 overflow test UInt16 + UInt128 overflow test UInt64 + Int32 overflow test UInt64 + Int32 overflow test Int128 + UInt64 overflow test Int128 + UInt64 overflow test Int16 + Int32 overflow test Int16 + Int32 overflow test UInt16 + UInt64 overflow test UInt16 + UInt64 overflow test Int8 + Int16 overflow test Int8 + Int16 overflow test Int16 + UInt16 overflow test Int16 + UInt16 overflow test UInt8 + UInt64 overflow test UInt8 + UInt64 overflow test UInt16 + Int64 overflow test UInt16 + Int64 overflow test Int128 + Int32 overflow test Int128 + Int32 overflow test Int8 + Int8 overflow test Int8 + Int8 overflow test Int8 + UInt128 overflow test Int8 + UInt128 overflow test UInt128 + UInt32 overflow test UInt128 + UInt32 overflow test UInt32 + UInt64 overflow test UInt32 + UInt64 overflow test UInt128 + Int32 overflow test UInt128 + Int32 overflow test Int64 + UInt128 overflow test Int64 + UInt128 overflow test Int32 + Int64 overflow test Int32 + Int64 overflow test UInt8 + Int8 overflow test UInt8 + Int8 overflow test UInt8 + UInt8 overflow test UInt8 + UInt8 overflow test Int64 + UInt8 overflow test Int64 + UInt8 overflow test UInt128 + Int128 overflow test UInt128 + Int128 Primitives: Float #> returns false for Float64::NAN > Float64::NAN returns false for Float64::NAN > Float64::NAN returns false for Float32::NAN > UInt16.zero returns false for Float32::NAN > UInt16.zero returns false for Float32::NAN > Int8.zero returns false for Float32::NAN > Int8.zero returns false for Float64::NAN > Int32.zero returns false for Float64::NAN > Int32.zero returns false for Float32::NAN > Int32.zero returns false for Float32::NAN > Int32.zero returns false for Float32::NAN > Float64.zero returns false for Float32::NAN > Float64.zero returns false for Float64::NAN > Int8.zero returns false for Float64::NAN > Int8.zero returns false for Float64::NAN > Int64.zero returns false for Float64::NAN > Int64.zero returns false for Float32::NAN > UInt128.zero returns false for Float32::NAN > UInt128.zero returns false for Float32::NAN > Float32.zero returns false for Float32::NAN > Float32.zero returns false for Float64::NAN > Int16.zero returns false for Float64::NAN > Int16.zero returns false for Float64::NAN > UInt32.zero returns false for Float64::NAN > UInt32.zero returns false for Float64::NAN > UInt128.zero returns false for Float64::NAN > UInt128.zero returns false for Float32::NAN > UInt8.zero returns false for Float32::NAN > UInt8.zero returns false for Float32::NAN > Int16.zero returns false for Float32::NAN > Int16.zero returns false for Float32::NAN > Float32::NAN returns false for Float32::NAN > Float32::NAN returns false for Float64::NAN > UInt64.zero returns false for Float64::NAN > UInt64.zero returns false for Float64::NAN > Float32.zero returns false for Float64::NAN > Float32.zero returns false for Float32::NAN > Float64::NAN returns false for Float32::NAN > Float64::NAN returns false for Float32::NAN > Int64.zero returns false for Float32::NAN > Int64.zero returns false for Float64::NAN > Float64.zero returns false for Float64::NAN > Float64.zero returns false for Float32::NAN > UInt64.zero returns false for Float32::NAN > UInt64.zero returns false for Float64::NAN > UInt8.zero returns false for Float64::NAN > UInt8.zero returns false for Float64::NAN > UInt16.zero returns false for Float64::NAN > UInt16.zero returns false for Float64::NAN > Int128.zero returns false for Float64::NAN > Int128.zero returns false for Float64::NAN > Float32::NAN returns false for Float64::NAN > Float32::NAN returns false for Float32::NAN > Int128.zero returns false for Float32::NAN > Int128.zero returns false for Float32::NAN > UInt32.zero returns false for Float32::NAN > UInt32.zero #!= returns true for Float32::NAN != Int128.zero returns true for Float32::NAN != Int128.zero returns true for Float32::NAN != Float32::NAN returns true for Float32::NAN != Float32::NAN returns true for Float64::NAN != Int128.zero returns true for Float64::NAN != Int128.zero returns true for Float64::NAN != Float64::NAN returns true for Float64::NAN != Float64::NAN returns true for Float64::NAN != Int16.zero returns true for Float64::NAN != Int16.zero returns true for Float64::NAN != Int64.zero returns true for Float64::NAN != Int64.zero returns true for Float32::NAN != Int64.zero returns true for Float32::NAN != Int64.zero returns true for Float32::NAN != UInt128.zero returns true for Float32::NAN != UInt128.zero returns true for Float64::NAN != Float32::NAN returns true for Float64::NAN != Float32::NAN returns true for Float64::NAN != Float64.zero returns true for Float64::NAN != Float64.zero returns true for Float64::NAN != UInt8.zero returns true for Float64::NAN != UInt8.zero returns true for Float32::NAN != Int32.zero returns true for Float32::NAN != Int32.zero returns true for Float64::NAN != UInt64.zero returns true for Float64::NAN != UInt64.zero returns true for Float64::NAN != UInt16.zero returns true for Float64::NAN != UInt16.zero returns true for Float64::NAN != Float32.zero returns true for Float64::NAN != Float32.zero returns true for Float32::NAN != Int16.zero returns true for Float32::NAN != Int16.zero returns true for Float32::NAN != UInt16.zero returns true for Float32::NAN != UInt16.zero returns true for Float64::NAN != Int32.zero returns true for Float64::NAN != Int32.zero returns true for Float32::NAN != Float64::NAN returns true for Float32::NAN != Float64::NAN returns true for Float64::NAN != UInt32.zero returns true for Float64::NAN != UInt32.zero returns true for Float64::NAN != UInt128.zero returns true for Float64::NAN != UInt128.zero returns true for Float32::NAN != UInt8.zero returns true for Float32::NAN != UInt8.zero returns true for Float32::NAN != Float64.zero returns true for Float32::NAN != Float64.zero returns true for Float64::NAN != Int8.zero returns true for Float64::NAN != Int8.zero returns true for Float32::NAN != Int8.zero returns true for Float32::NAN != Int8.zero returns true for Float32::NAN != UInt32.zero returns true for Float32::NAN != UInt32.zero returns true for Float32::NAN != UInt64.zero returns true for Float32::NAN != UInt64.zero returns true for Float32::NAN != Float32.zero returns true for Float32::NAN != Float32.zero #<= returns false for Float32::NAN <= UInt64.zero returns false for Float32::NAN <= UInt64.zero returns false for Float64::NAN <= UInt128.zero returns false for Float64::NAN <= UInt128.zero returns false for Float32::NAN <= UInt16.zero returns false for Float32::NAN <= UInt16.zero returns false for Float32::NAN <= Float32.zero returns false for Float32::NAN <= Float32.zero returns false for Float64::NAN <= Int64.zero returns false for Float64::NAN <= Int64.zero returns false for Float32::NAN <= Float32::NAN returns false for Float32::NAN <= Float32::NAN returns false for Float32::NAN <= Int8.zero returns false for Float32::NAN <= Int8.zero returns false for Float32::NAN <= UInt8.zero returns false for Float32::NAN <= UInt8.zero returns false for Float64::NAN <= Int16.zero returns false for Float64::NAN <= Int16.zero returns false for Float64::NAN <= Int128.zero returns false for Float64::NAN <= Int128.zero returns false for Float64::NAN <= Int32.zero returns false for Float64::NAN <= Int32.zero returns false for Float64::NAN <= Float32.zero returns false for Float64::NAN <= Float32.zero returns false for Float64::NAN <= UInt16.zero returns false for Float64::NAN <= UInt16.zero returns false for Float64::NAN <= Float64.zero returns false for Float64::NAN <= Float64.zero returns false for Float32::NAN <= Int32.zero returns false for Float32::NAN <= Int32.zero returns false for Float32::NAN <= Int128.zero returns false for Float32::NAN <= Int128.zero returns false for Float32::NAN <= Int64.zero returns false for Float32::NAN <= Int64.zero returns false for Float64::NAN <= UInt8.zero returns false for Float64::NAN <= UInt8.zero returns false for Float64::NAN <= UInt64.zero returns false for Float64::NAN <= UInt64.zero returns false for Float64::NAN <= Int8.zero returns false for Float64::NAN <= Int8.zero returns false for Float64::NAN <= Float64::NAN returns false for Float64::NAN <= Float64::NAN returns false for Float32::NAN <= Int16.zero returns false for Float32::NAN <= Int16.zero returns false for Float32::NAN <= UInt32.zero returns false for Float32::NAN <= UInt32.zero returns false for Float32::NAN <= UInt128.zero returns false for Float32::NAN <= UInt128.zero returns false for Float64::NAN <= Float32::NAN returns false for Float64::NAN <= Float32::NAN returns false for Float64::NAN <= UInt32.zero returns false for Float64::NAN <= UInt32.zero returns false for Float32::NAN <= Float64.zero returns false for Float32::NAN <= Float64.zero returns false for Float32::NAN <= Float64::NAN returns false for Float32::NAN <= Float64::NAN #< returns false for Float64::NAN < Int128.zero returns false for Float64::NAN < Int128.zero returns false for Float64::NAN < Float32.zero returns false for Float64::NAN < Float32.zero returns false for Float32::NAN < Int32.zero returns false for Float32::NAN < Int32.zero returns false for Float32::NAN < Int8.zero returns false for Float32::NAN < Int8.zero returns false for Float32::NAN < UInt64.zero returns false for Float32::NAN < UInt64.zero returns false for Float32::NAN < UInt128.zero returns false for Float32::NAN < UInt128.zero returns false for Float64::NAN < Int8.zero returns false for Float64::NAN < Int8.zero returns false for Float32::NAN < Float64.zero returns false for Float32::NAN < Float64.zero returns false for Float32::NAN < UInt8.zero returns false for Float32::NAN < UInt8.zero returns false for Float32::NAN < Float32::NAN returns false for Float32::NAN < Float32::NAN returns false for Float64::NAN < UInt128.zero returns false for Float64::NAN < UInt128.zero returns false for Float64::NAN < UInt8.zero returns false for Float64::NAN < UInt8.zero returns false for Float32::NAN < Int128.zero returns false for Float32::NAN < Int128.zero returns false for Float32::NAN < Float64::NAN returns false for Float32::NAN < Float64::NAN returns false for Float64::NAN < UInt32.zero returns false for Float64::NAN < UInt32.zero returns false for Float64::NAN < UInt16.zero returns false for Float64::NAN < UInt16.zero returns false for Float64::NAN < Float64.zero returns false for Float64::NAN < Float64.zero returns false for Float64::NAN < Int32.zero returns false for Float64::NAN < Int32.zero returns false for Float64::NAN < UInt64.zero returns false for Float64::NAN < UInt64.zero returns false for Float32::NAN < Int64.zero returns false for Float32::NAN < Int64.zero returns false for Float32::NAN < Int16.zero returns false for Float32::NAN < Int16.zero returns false for Float32::NAN < UInt16.zero returns false for Float32::NAN < UInt16.zero returns false for Float32::NAN < UInt32.zero returns false for Float32::NAN < UInt32.zero returns false for Float64::NAN < Int16.zero returns false for Float64::NAN < Int16.zero returns false for Float64::NAN < Float32::NAN returns false for Float64::NAN < Float32::NAN returns false for Float64::NAN < Int64.zero returns false for Float64::NAN < Int64.zero returns false for Float32::NAN < Float32.zero returns false for Float32::NAN < Float32.zero returns false for Float64::NAN < Float64::NAN returns false for Float64::NAN < Float64::NAN #to_i raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_i16 raises on overflow for Float64#to_i16 raises on overflow for Float64#to_i raises on overflow for Float64#to_i raises on overflow for Float32#to_i64 raises on overflow for Float32#to_i64 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float32#to_i8 raises on overflow for Float32#to_i8 raises on overflow for Float64#to_i64 raises on overflow for Float64#to_i64 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_i8 raises on overflow for Float64#to_i8 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float32#to_u8 raises on overflow for Float32#to_u8 raises overflow if equal to Int::MAX (#11105) raises overflow if equal to Int::MAX (#11105) raises on overflow for Float32#to_i128 raises on overflow for Float32#to_i128 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_u32 raises on overflow for Float64#to_u32 raises on overflow for Float32#to_i16 raises on overflow for Float32#to_i16 raises on overflow for Float64#to_u16 raises on overflow for Float64#to_u16 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float32#to_i raises on overflow for Float32#to_i raises on overflow for Float32#to_u64 raises on overflow for Float32#to_u64 raises on overflow for Float64#to_u8 raises on overflow for Float64#to_u8 raises on overflow for Float32#to_u32 raises on overflow for Float32#to_u32 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_u64 raises on overflow for Float64#to_u64 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_i32 raises on overflow for Float64#to_i32 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float32#to_u raises on overflow for Float32#to_u raises on overflow for Float64#to_i128 raises on overflow for Float64#to_i128 raises on overflow for Float32#to_u128 raises on overflow for Float32#to_u128 raises overflow if not a number (#10421) raises overflow if not a number (#10421) doesn't raise overflow if lower than Int::MAX (#11105) doesn't raise overflow if lower than Int::MAX (#11105) raises on overflow for Float32#to_u16 raises on overflow for Float32#to_u16 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_u raises on overflow for Float64#to_u raises on overflow for Float32#to_i32 raises on overflow for Float32#to_i32 raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises overflow if not a number (#10421) raises on overflow for Float64#to_u128 raises on overflow for Float64#to_u128 #>= returns false for Float64::NAN >= Int32.zero returns false for Float64::NAN >= Int32.zero returns false for Float64::NAN >= UInt64.zero returns false for Float64::NAN >= UInt64.zero returns false for Float32::NAN >= Int16.zero returns false for Float32::NAN >= Int16.zero returns false for Float64::NAN >= Float32::NAN returns false for Float64::NAN >= Float32::NAN returns false for Float64::NAN >= UInt32.zero returns false for Float64::NAN >= UInt32.zero returns false for Float64::NAN >= UInt16.zero returns false for Float64::NAN >= UInt16.zero returns false for Float32::NAN >= UInt64.zero returns false for Float32::NAN >= UInt64.zero returns false for Float64::NAN >= Int64.zero returns false for Float64::NAN >= Int64.zero returns false for Float32::NAN >= Float64::NAN returns false for Float32::NAN >= Float64::NAN returns false for Float32::NAN >= UInt128.zero returns false for Float32::NAN >= UInt128.zero returns false for Float32::NAN >= Int32.zero returns false for Float32::NAN >= Int32.zero returns false for Float32::NAN >= Float32.zero returns false for Float32::NAN >= Float32.zero returns false for Float32::NAN >= Int8.zero returns false for Float32::NAN >= Int8.zero returns false for Float64::NAN >= Int16.zero returns false for Float64::NAN >= Int16.zero returns false for Float64::NAN >= Int8.zero returns false for Float64::NAN >= Int8.zero returns false for Float32::NAN >= Float64.zero returns false for Float32::NAN >= Float64.zero returns false for Float64::NAN >= Float32.zero returns false for Float64::NAN >= Float32.zero returns false for Float32::NAN >= Float32::NAN returns false for Float32::NAN >= Float32::NAN returns false for Float64::NAN >= UInt8.zero returns false for Float64::NAN >= UInt8.zero returns false for Float32::NAN >= Int64.zero returns false for Float32::NAN >= Int64.zero returns false for Float32::NAN >= UInt8.zero returns false for Float32::NAN >= UInt8.zero returns false for Float64::NAN >= Float64::NAN returns false for Float64::NAN >= Float64::NAN returns false for Float64::NAN >= Float64.zero returns false for Float64::NAN >= Float64.zero returns false for Float32::NAN >= Int128.zero returns false for Float32::NAN >= Int128.zero returns false for Float64::NAN >= UInt128.zero returns false for Float64::NAN >= UInt128.zero returns false for Float64::NAN >= Int128.zero returns false for Float64::NAN >= Int128.zero returns false for Float32::NAN >= UInt32.zero returns false for Float32::NAN >= UInt32.zero returns false for Float32::NAN >= UInt16.zero returns false for Float32::NAN >= UInt16.zero #to_f doesn't raise for infinity doesn't raise for infinity raises on overflow for Float64#to_f32 raises on overflow for Float64#to_f32 doesn't raise for NaN doesn't raise for NaN #== returns false for Float32::NAN == Float32.zero returns false for Float32::NAN == Float32.zero returns false for Float32::NAN == Int32.zero returns false for Float32::NAN == Int32.zero returns false for Float32::NAN == Int16.zero returns false for Float32::NAN == Int16.zero returns false for Float32::NAN == Int64.zero returns false for Float32::NAN == Int64.zero returns false for Float64::NAN == Int32.zero returns false for Float64::NAN == Int32.zero returns false for Float64::NAN == Int8.zero returns false for Float64::NAN == Int8.zero returns false for Float64::NAN == Float32::NAN returns false for Float64::NAN == Float32::NAN returns false for Float32::NAN == Float64::NAN returns false for Float32::NAN == Float64::NAN returns false for Float64::NAN == UInt16.zero returns false for Float64::NAN == UInt16.zero returns false for Float64::NAN == Float64::NAN returns false for Float64::NAN == Float64::NAN returns false for Float64::NAN == Int128.zero returns false for Float64::NAN == Int128.zero returns false for Float32::NAN == UInt16.zero returns false for Float32::NAN == UInt16.zero returns false for Float64::NAN == UInt8.zero returns false for Float64::NAN == UInt8.zero returns false for Float32::NAN == Int8.zero returns false for Float32::NAN == Int8.zero returns false for Float64::NAN == Float64.zero returns false for Float64::NAN == Float64.zero returns false for Float64::NAN == Int16.zero returns false for Float64::NAN == Int16.zero returns false for Float32::NAN == UInt64.zero returns false for Float32::NAN == UInt64.zero returns false for Float64::NAN == UInt64.zero returns false for Float64::NAN == UInt64.zero returns false for Float64::NAN == UInt32.zero returns false for Float64::NAN == UInt32.zero returns false for Float32::NAN == UInt8.zero returns false for Float32::NAN == UInt8.zero returns false for Float64::NAN == Float32.zero returns false for Float64::NAN == Float32.zero returns false for Float32::NAN == UInt32.zero returns false for Float32::NAN == UInt32.zero returns false for Float32::NAN == Int128.zero returns false for Float32::NAN == Int128.zero returns false for Float64::NAN == UInt128.zero returns false for Float64::NAN == UInt128.zero returns false for Float32::NAN == UInt128.zero returns false for Float32::NAN == UInt128.zero returns false for Float32::NAN == Float64.zero returns false for Float32::NAN == Float64.zero returns false for Float64::NAN == Int64.zero returns false for Float64::NAN == Int64.zero returns false for Float32::NAN == Float32::NAN returns false for Float32::NAN == Float32::NAN Primitives: reference .pre_initialize doesn't fail on complex ivar initializer if value is discarded (#14325) doesn't fail on complex ivar initializer if value is discarded (#14325) works when address is on the stack works when address is on the stack sets type ID sets type ID runs inline instance initializers runs inline instance initializers raises on abstract virtual type raises on abstract virtual type zeroes the instance data zeroes the instance data works with virtual type works with virtual type .allocate doesn't fail on complex ivar initializer if value is discarded (#14325) doesn't fail on complex ivar initializer if value is discarded (#14325) .unsafe_construct constructs an object in-place constructs an object in-place Finished in 8.93 seconds 700 examples, 0 failures, 0 errors, 0 pending Randomized with seed: 92833 make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' create-stamp debian/debhelper-build-stamp dh_prep debian/rules override_dh_auto_install make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' dh_auto_install -- PREFIX=/usr make -j20 install DESTDIR=/build/reproducible-path/crystal-1.14.0\+dfsg/debian/tmp AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true" PREFIX=/usr make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' gzip -c -9 man/crystal.1 > man/crystal.1.gz install --strip-program=true -d -m 0755 "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/bin/" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -m 0755 ".build/crystal" "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/bin/crystal" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -d -m 0755 /build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal install: WARNING: ignoring --strip-program option as -s option was not specified cp -av src "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src" 'src' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src' 'src/SOURCE_DATE_EPOCH' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/SOURCE_DATE_EPOCH' 'src/VERSION' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/VERSION' 'src/annotations.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/annotations.cr' 'src/array.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/array.cr' 'src/atomic.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/atomic.cr' 'src/base64.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/base64.cr' 'src/benchmark.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/benchmark.cr' 'src/benchmark' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/benchmark' 'src/benchmark/bm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/benchmark/bm.cr' 'src/benchmark/ips.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/benchmark/ips.cr' 'src/big.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big.cr' 'src/big' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big' 'src/big/big_decimal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/big_decimal.cr' 'src/big/big_float.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/big_float.cr' 'src/big/big_int.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/big_int.cr' 'src/big/big_rational.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/big_rational.cr' 'src/big/json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/json.cr' 'src/big/lib_gmp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/lib_gmp.cr' 'src/big/number.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/number.cr' 'src/big/yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/big/yaml.cr' 'src/bit_array.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/bit_array.cr' 'src/bool.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/bool.cr' 'src/box.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/box.cr' 'src/channel.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/channel.cr' 'src/channel' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/channel' 'src/channel/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/channel/select.cr' 'src/channel/select' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/channel/select' 'src/channel/select/select_action.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/channel/select/select_action.cr' 'src/channel/select/timeout_action.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/channel/select/timeout_action.cr' 'src/char.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/char.cr' 'src/char' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/char' 'src/char/reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/char/reader.cr' 'src/class.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/class.cr' 'src/colorize.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/colorize.cr' 'src/comparable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/comparable.cr' 'src/compiler' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler' 'src/compiler/crystal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal.cr' 'src/compiler/crystal' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal' 'src/compiler/crystal/annotatable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/annotatable.cr' 'src/compiler/crystal/codegen' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen' 'src/compiler/crystal/codegen/asm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/asm.cr' 'src/compiler/crystal/codegen/ast.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/ast.cr' 'src/compiler/crystal/codegen/cache_dir.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/cache_dir.cr' 'src/compiler/crystal/codegen/call.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/call.cr' 'src/compiler/crystal/codegen/cast.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/cast.cr' 'src/compiler/crystal/codegen/class_var.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/class_var.cr' 'src/compiler/crystal/codegen/codegen.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/codegen.cr' 'src/compiler/crystal/codegen/cond.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/cond.cr' 'src/compiler/crystal/codegen/const.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/const.cr' 'src/compiler/crystal/codegen/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/context.cr' 'src/compiler/crystal/codegen/crystal_llvm_builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/crystal_llvm_builder.cr' 'src/compiler/crystal/codegen/debug.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/debug.cr' 'src/compiler/crystal/codegen/exception.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/exception.cr' 'src/compiler/crystal/codegen/experimental.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/experimental.cr' 'src/compiler/crystal/codegen/fun.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/fun.cr' 'src/compiler/crystal/codegen/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/link.cr' 'src/compiler/crystal/codegen/llvm_builder_helper.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/llvm_builder_helper.cr' 'src/compiler/crystal/codegen/llvm_id.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/llvm_id.cr' 'src/compiler/crystal/codegen/llvm_typer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/llvm_typer.cr' 'src/compiler/crystal/codegen/match.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/match.cr' 'src/compiler/crystal/codegen/once.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/once.cr' 'src/compiler/crystal/codegen/phi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/phi.cr' 'src/compiler/crystal/codegen/primitives.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/primitives.cr' 'src/compiler/crystal/codegen/target.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/target.cr' 'src/compiler/crystal/codegen/type_id.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/type_id.cr' 'src/compiler/crystal/codegen/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/types.cr' 'src/compiler/crystal/codegen/unions.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/codegen/unions.cr' 'src/compiler/crystal/command.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command.cr' 'src/compiler/crystal/command' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command' 'src/compiler/crystal/command/clear_cache.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/clear_cache.cr' 'src/compiler/crystal/command/cursor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/cursor.cr' 'src/compiler/crystal/command/docs.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/docs.cr' 'src/compiler/crystal/command/env.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/env.cr' 'src/compiler/crystal/command/eval.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/eval.cr' 'src/compiler/crystal/command/format.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/format.cr' 'src/compiler/crystal/command/playground.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/playground.cr' 'src/compiler/crystal/command/repl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/repl.cr' 'src/compiler/crystal/command/spec.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/command/spec.cr' 'src/compiler/crystal/compiler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/compiler.cr' 'src/compiler/crystal/config.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/config.cr' 'src/compiler/crystal/crystal_path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/crystal_path.cr' 'src/compiler/crystal/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/error.cr' 'src/compiler/crystal/exception.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/exception.cr' 'src/compiler/crystal/ffi' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/ffi' 'src/compiler/crystal/ffi/call_interface.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/ffi/call_interface.cr' 'src/compiler/crystal/ffi/closure.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/ffi/closure.cr' 'src/compiler/crystal/ffi/ffi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/ffi/ffi.cr' 'src/compiler/crystal/ffi/lib_ffi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/ffi/lib_ffi.cr' 'src/compiler/crystal/ffi/type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/ffi/type.cr' 'src/compiler/crystal/formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/formatter.cr' 'src/compiler/crystal/interpreter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter.cr' 'src/compiler/crystal/interpreter' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter' 'src/compiler/crystal/interpreter/c.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/c.cr' 'src/compiler/crystal/interpreter/cast.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/cast.cr' 'src/compiler/crystal/interpreter/class_vars.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/class_vars.cr' 'src/compiler/crystal/interpreter/closure.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/closure.cr' 'src/compiler/crystal/interpreter/closure_context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/closure_context.cr' 'src/compiler/crystal/interpreter/compiled_block.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/compiled_block.cr' 'src/compiler/crystal/interpreter/compiled_def.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/compiled_def.cr' 'src/compiler/crystal/interpreter/compiled_instructions.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/compiled_instructions.cr' 'src/compiler/crystal/interpreter/compiler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/compiler.cr' 'src/compiler/crystal/interpreter/constants.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/constants.cr' 'src/compiler/crystal/interpreter/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/context.cr' 'src/compiler/crystal/interpreter/debug.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/debug.cr' 'src/compiler/crystal/interpreter/disassembler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/disassembler.cr' 'src/compiler/crystal/interpreter/escaping_exception.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/escaping_exception.cr' 'src/compiler/crystal/interpreter/ffi_closure_context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/ffi_closure_context.cr' 'src/compiler/crystal/interpreter/instruction.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/instruction.cr' 'src/compiler/crystal/interpreter/instructions.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/instructions.cr' 'src/compiler/crystal/interpreter/interpreter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/interpreter.cr' 'src/compiler/crystal/interpreter/lib_function.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/lib_function.cr' 'src/compiler/crystal/interpreter/local_vars.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/local_vars.cr' 'src/compiler/crystal/interpreter/local_vars_gatherer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/local_vars_gatherer.cr' 'src/compiler/crystal/interpreter/multidispatch.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/multidispatch.cr' 'src/compiler/crystal/interpreter/op_code.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/op_code.cr' 'src/compiler/crystal/interpreter/primitives.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/primitives.cr' 'src/compiler/crystal/interpreter/pry_reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/pry_reader.cr' 'src/compiler/crystal/interpreter/repl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/repl.cr' 'src/compiler/crystal/interpreter/repl_reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/repl_reader.cr' 'src/compiler/crystal/interpreter/to_bool.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/to_bool.cr' 'src/compiler/crystal/interpreter/value.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/interpreter/value.cr' 'src/compiler/crystal/loader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/loader.cr' 'src/compiler/crystal/loader' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/loader' 'src/compiler/crystal/loader/msvc.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/loader/msvc.cr' 'src/compiler/crystal/loader/unix.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/loader/unix.cr' 'src/compiler/crystal/macros.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/macros.cr' 'src/compiler/crystal/macros' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/macros' 'src/compiler/crystal/macros/interpreter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/macros/interpreter.cr' 'src/compiler/crystal/macros/macros.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/macros/macros.cr' 'src/compiler/crystal/macros/methods.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/macros/methods.cr' 'src/compiler/crystal/macros/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/macros/types.cr' 'src/compiler/crystal/program.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/program.cr' 'src/compiler/crystal/progress_tracker.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/progress_tracker.cr' 'src/compiler/crystal/semantic.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic.cr' 'src/compiler/crystal/semantic' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic' 'src/compiler/crystal/semantic/abstract_def_checker.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/abstract_def_checker.cr' 'src/compiler/crystal/semantic/ast.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/ast.cr' 'src/compiler/crystal/semantic/bindings.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/bindings.cr' 'src/compiler/crystal/semantic/call.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/call.cr' 'src/compiler/crystal/semantic/call_error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/call_error.cr' 'src/compiler/crystal/semantic/class_vars_initializer_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/class_vars_initializer_visitor.cr' 'src/compiler/crystal/semantic/cleanup_transformer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/cleanup_transformer.cr' 'src/compiler/crystal/semantic/conversions.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/conversions.cr' 'src/compiler/crystal/semantic/cover.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/cover.cr' 'src/compiler/crystal/semantic/default_arguments.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/default_arguments.cr' 'src/compiler/crystal/semantic/exception.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/exception.cr' 'src/compiler/crystal/semantic/exhaustiveness_checker.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/exhaustiveness_checker.cr' 'src/compiler/crystal/semantic/filters.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/filters.cr' 'src/compiler/crystal/semantic/fix_missing_types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/fix_missing_types.cr' 'src/compiler/crystal/semantic/flags.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/flags.cr' 'src/compiler/crystal/semantic/hooks.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/hooks.cr' 'src/compiler/crystal/semantic/instance_vars_initializer_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/instance_vars_initializer_visitor.cr' 'src/compiler/crystal/semantic/lib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/lib.cr' 'src/compiler/crystal/semantic/literal_expander.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/literal_expander.cr' 'src/compiler/crystal/semantic/main_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/main_visitor.cr' 'src/compiler/crystal/semantic/match.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/match.cr' 'src/compiler/crystal/semantic/math_interpreter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/math_interpreter.cr' 'src/compiler/crystal/semantic/method_lookup.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/method_lookup.cr' 'src/compiler/crystal/semantic/method_missing.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/method_missing.cr' 'src/compiler/crystal/semantic/new.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/new.cr' 'src/compiler/crystal/semantic/normalizer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/normalizer.cr' 'src/compiler/crystal/semantic/path_lookup.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/path_lookup.cr' 'src/compiler/crystal/semantic/recursive_struct_checker.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/recursive_struct_checker.cr' 'src/compiler/crystal/semantic/restrictions.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/restrictions.cr' 'src/compiler/crystal/semantic/restrictions_augmenter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/restrictions_augmenter.cr' 'src/compiler/crystal/semantic/semantic_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/semantic_visitor.cr' 'src/compiler/crystal/semantic/suggestions.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/suggestions.cr' 'src/compiler/crystal/semantic/to_s.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/to_s.cr' 'src/compiler/crystal/semantic/top_level_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/top_level_visitor.cr' 'src/compiler/crystal/semantic/transformer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/transformer.cr' 'src/compiler/crystal/semantic/type_declaration_processor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_declaration_processor.cr' 'src/compiler/crystal/semantic/type_declaration_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_declaration_visitor.cr' 'src/compiler/crystal/semantic/type_guess_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_guess_visitor.cr' 'src/compiler/crystal/semantic/type_intersect.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_intersect.cr' 'src/compiler/crystal/semantic/type_lookup.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_lookup.cr' 'src/compiler/crystal/semantic/type_merge.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_merge.cr' 'src/compiler/crystal/semantic/type_to_restriction.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/type_to_restriction.cr' 'src/compiler/crystal/semantic/warnings.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/semantic/warnings.cr' 'src/compiler/crystal/syntax.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax.cr' 'src/compiler/crystal/syntax' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax' 'src/compiler/crystal/syntax/ast.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/ast.cr' 'src/compiler/crystal/syntax/exception.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/exception.cr' 'src/compiler/crystal/syntax/lexer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/lexer.cr' 'src/compiler/crystal/syntax/location.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/location.cr' 'src/compiler/crystal/syntax/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/parser.cr' 'src/compiler/crystal/syntax/to_s.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/to_s.cr' 'src/compiler/crystal/syntax/token.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/token.cr' 'src/compiler/crystal/syntax/transformer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/transformer.cr' 'src/compiler/crystal/syntax/virtual_file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/virtual_file.cr' 'src/compiler/crystal/syntax/visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/syntax/visitor.cr' 'src/compiler/crystal/tools' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools' 'src/compiler/crystal/tools/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/context.cr' 'src/compiler/crystal/tools/dependencies.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/dependencies.cr' 'src/compiler/crystal/tools/doc.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc.cr' 'src/compiler/crystal/tools/doc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc' 'src/compiler/crystal/tools/doc/constant.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/constant.cr' 'src/compiler/crystal/tools/doc/generator.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/generator.cr' 'src/compiler/crystal/tools/doc/html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html' 'src/compiler/crystal/tools/doc/html/404.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/404.html' 'src/compiler/crystal/tools/doc/html/_head.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_head.html' 'src/compiler/crystal/tools/doc/html/_list_items.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_list_items.html' 'src/compiler/crystal/tools/doc/html/_macros_inherited.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_macros_inherited.html' 'src/compiler/crystal/tools/doc/html/_method_detail.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_method_detail.html' 'src/compiler/crystal/tools/doc/html/_method_summary.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_method_summary.html' 'src/compiler/crystal/tools/doc/html/_methods_inherited.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_methods_inherited.html' 'src/compiler/crystal/tools/doc/html/_other_types.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_other_types.html' 'src/compiler/crystal/tools/doc/html/_sidebar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/_sidebar.html' 'src/compiler/crystal/tools/doc/html/css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/css' 'src/compiler/crystal/tools/doc/html/css/style.css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/css/style.css' 'src/compiler/crystal/tools/doc/html/js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/js' 'src/compiler/crystal/tools/doc/html/js/_navigator.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/js/_navigator.js' 'src/compiler/crystal/tools/doc/html/js/_search.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/js/_search.js' 'src/compiler/crystal/tools/doc/html/js/_usage-modal.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/js/_usage-modal.js' 'src/compiler/crystal/tools/doc/html/js/_versions.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/js/_versions.js' 'src/compiler/crystal/tools/doc/html/js/doc.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/js/doc.js' 'src/compiler/crystal/tools/doc/html/main.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/main.html' 'src/compiler/crystal/tools/doc/html/sitemap.xml' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/sitemap.xml' 'src/compiler/crystal/tools/doc/html/type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/html/type.html' 'src/compiler/crystal/tools/doc/item.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/item.cr' 'src/compiler/crystal/tools/doc/macro.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/macro.cr' 'src/compiler/crystal/tools/doc/main.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/main.cr' 'src/compiler/crystal/tools/doc/markd_doc_renderer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/markd_doc_renderer.cr' 'src/compiler/crystal/tools/doc/method.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/method.cr' 'src/compiler/crystal/tools/doc/project_info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/project_info.cr' 'src/compiler/crystal/tools/doc/relative_location.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/relative_location.cr' 'src/compiler/crystal/tools/doc/templates.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/templates.cr' 'src/compiler/crystal/tools/doc/to_json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/to_json.cr' 'src/compiler/crystal/tools/doc/type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/doc/type.cr' 'src/compiler/crystal/tools/expand.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/expand.cr' 'src/compiler/crystal/tools/flags.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/flags.cr' 'src/compiler/crystal/tools/formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/formatter.cr' 'src/compiler/crystal/tools/git.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/git.cr' 'src/compiler/crystal/tools/implementations.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/implementations.cr' 'src/compiler/crystal/tools/init.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init.cr' 'src/compiler/crystal/tools/init' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init' 'src/compiler/crystal/tools/init/template' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template' 'src/compiler/crystal/tools/init/template/editorconfig.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/editorconfig.ecr' 'src/compiler/crystal/tools/init/template/example.cr.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/example.cr.ecr' 'src/compiler/crystal/tools/init/template/example_spec.cr.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/example_spec.cr.ecr' 'src/compiler/crystal/tools/init/template/gitignore.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/gitignore.ecr' 'src/compiler/crystal/tools/init/template/license.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/license.ecr' 'src/compiler/crystal/tools/init/template/readme.md.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/readme.md.ecr' 'src/compiler/crystal/tools/init/template/shard.yml.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/shard.yml.ecr' 'src/compiler/crystal/tools/init/template/spec_helper.cr.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/init/template/spec_helper.cr.ecr' 'src/compiler/crystal/tools/playground.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground.cr' 'src/compiler/crystal/tools/playground' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground' 'src/compiler/crystal/tools/playground/agent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/agent.cr' 'src/compiler/crystal/tools/playground/agent_instrumentor_transformer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/agent_instrumentor_transformer.cr' 'src/compiler/crystal/tools/playground/public' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public' 'src/compiler/crystal/tools/playground/public/application.css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/application.css' 'src/compiler/crystal/tools/playground/public/application.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/application.js' 'src/compiler/crystal/tools/playground/public/favicon.ico' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/favicon.ico' 'src/compiler/crystal/tools/playground/public/icon.svg' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/icon.svg' 'src/compiler/crystal/tools/playground/public/session.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/session.js' 'src/compiler/crystal/tools/playground/public/settings.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/settings.js' 'src/compiler/crystal/tools/playground/public/vendor' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor' 'src/compiler/crystal/tools/playground/public/vendor/ansi_up-1.3.0' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/ansi_up-1.3.0' 'src/compiler/crystal/tools/playground/public/vendor/ansi_up-1.3.0/ansi_up.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/ansi_up-1.3.0/ansi_up.js' 'src/compiler/crystal/tools/playground/public/vendor/ansi_up-1.3.0/theme.css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/ansi_up-1.3.0/theme.css' 'src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5' 'src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/css' 'src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/css/materialize.min.css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/css/materialize.min.css' 'src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/js' 'src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/js/materialize.min.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/materialize-v0.97.5/js/materialize.min.js' 'src/compiler/crystal/tools/playground/public/vendor/octicons-19.5.0' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/octicons-19.5.0' 'src/compiler/crystal/tools/playground/public/vendor/octicons-19.5.0/octicons.css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/octicons-19.5.0/octicons.css' 'src/compiler/crystal/tools/playground/public/vendor/octicons-19.5.0/octicons.svg' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/public/vendor/octicons-19.5.0/octicons.svg' 'src/compiler/crystal/tools/playground/server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/server.cr' 'src/compiler/crystal/tools/playground/views' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/views' 'src/compiler/crystal/tools/playground/views/_about.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/views/_about.html' 'src/compiler/crystal/tools/playground/views/_index.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/views/_index.html' 'src/compiler/crystal/tools/playground/views/_settings.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/views/_settings.html' 'src/compiler/crystal/tools/playground/views/_workbook.html.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/views/_workbook.html.ecr' 'src/compiler/crystal/tools/playground/views/layout.html.ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/playground/views/layout.html.ecr' 'src/compiler/crystal/tools/print_hierarchy.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/print_hierarchy.cr' 'src/compiler/crystal/tools/print_types_visitor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/print_types_visitor.cr' 'src/compiler/crystal/tools/table_print.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/table_print.cr' 'src/compiler/crystal/tools/typed_def_processor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/typed_def_processor.cr' 'src/compiler/crystal/tools/unreachable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/tools/unreachable.cr' 'src/compiler/crystal/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/types.cr' 'src/compiler/crystal/util.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/util.cr' 'src/compiler/crystal/warnings.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/crystal/warnings.cr' 'src/compiler/requires.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compiler/requires.cr' 'src/complex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/complex.cr' 'src/compress' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress' 'src/compress/deflate' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/deflate' 'src/compress/deflate/deflate.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/deflate/deflate.cr' 'src/compress/deflate/reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/deflate/reader.cr' 'src/compress/deflate/writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/deflate/writer.cr' 'src/compress/gzip' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/gzip' 'src/compress/gzip/gzip.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/gzip/gzip.cr' 'src/compress/gzip/header.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/gzip/header.cr' 'src/compress/gzip/reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/gzip/reader.cr' 'src/compress/gzip/writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/gzip/writer.cr' 'src/compress/zip' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip' 'src/compress/zip/checksum_reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/checksum_reader.cr' 'src/compress/zip/checksum_writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/checksum_writer.cr' 'src/compress/zip/compression_method.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/compression_method.cr' 'src/compress/zip/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/file.cr' 'src/compress/zip/file_info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/file_info.cr' 'src/compress/zip/reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/reader.cr' 'src/compress/zip/writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/writer.cr' 'src/compress/zip/zip.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zip/zip.cr' 'src/compress/zlib' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zlib' 'src/compress/zlib/reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zlib/reader.cr' 'src/compress/zlib/writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zlib/writer.cr' 'src/compress/zlib/zlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/compress/zlib/zlib.cr' 'src/concurrent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/concurrent.cr' 'src/crypto' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto' 'src/crypto/bcrypt.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/bcrypt.cr' 'src/crypto/bcrypt' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/bcrypt' 'src/crypto/bcrypt/base64.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/bcrypt/base64.cr' 'src/crypto/bcrypt/blowfish.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/bcrypt/blowfish.cr' 'src/crypto/bcrypt/password.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/bcrypt/password.cr' 'src/crypto/blowfish.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/blowfish.cr' 'src/crypto/subtle.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crypto/subtle.cr' 'src/crystal' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal' 'src/crystal/at_exit_handlers.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/at_exit_handlers.cr' 'src/crystal/atomic_semaphore.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/atomic_semaphore.cr' 'src/crystal/compiler_rt.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt.cr' 'src/crystal/compiler_rt' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt' 'src/crystal/compiler_rt/divmod128.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/divmod128.cr' 'src/crystal/compiler_rt/fixint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/fixint.cr' 'src/crystal/compiler_rt/float.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/float.cr' 'src/crystal/compiler_rt/mul.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/mul.cr' 'src/crystal/compiler_rt/multi3.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/multi3.cr' 'src/crystal/compiler_rt/pow.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/pow.cr' 'src/crystal/compiler_rt/shift.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/compiler_rt/shift.cr' 'src/crystal/datum.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/datum.cr' 'src/crystal/digest' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/digest' 'src/crystal/digest/md5.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/digest/md5.cr' 'src/crystal/digest/sha1.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/digest/sha1.cr' 'src/crystal/dwarf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/dwarf.cr' 'src/crystal/dwarf' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/dwarf' 'src/crystal/dwarf/abbrev.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/dwarf/abbrev.cr' 'src/crystal/dwarf/info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/dwarf/info.cr' 'src/crystal/dwarf/line_numbers.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/dwarf/line_numbers.cr' 'src/crystal/dwarf/strings.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/dwarf/strings.cr' 'src/crystal/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/elf.cr' 'src/crystal/fiber_channel.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/fiber_channel.cr' 'src/crystal/hasher.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/hasher.cr' 'src/crystal/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/iconv.cr' 'src/crystal/interpreter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/interpreter.cr' 'src/crystal/lib_iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/lib_iconv.cr' 'src/crystal/mach_o.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/mach_o.cr' 'src/crystal/main.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/main.cr' 'src/crystal/once.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/once.cr' 'src/crystal/pointer_linked_list.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/pointer_linked_list.cr' 'src/crystal/rw_lock.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/rw_lock.cr' 'src/crystal/scheduler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/scheduler.cr' 'src/crystal/small_deque.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/small_deque.cr' 'src/crystal/spin_lock.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/spin_lock.cr' 'src/crystal/syntax_highlighter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/syntax_highlighter.cr' 'src/crystal/syntax_highlighter' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/syntax_highlighter' 'src/crystal/syntax_highlighter/colorize.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/syntax_highlighter/colorize.cr' 'src/crystal/syntax_highlighter/html.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/syntax_highlighter/html.cr' 'src/crystal/system.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system.cr' 'src/crystal/system' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system' 'src/crystal/system/addrinfo.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/addrinfo.cr' 'src/crystal/system/dir.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/dir.cr' 'src/crystal/system/env.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/env.cr' 'src/crystal/system/event_loop.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/event_loop.cr' 'src/crystal/system/event_loop' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/event_loop' 'src/crystal/system/event_loop/file_descriptor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/event_loop/file_descriptor.cr' 'src/crystal/system/event_loop/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/event_loop/socket.cr' 'src/crystal/system/fiber.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/fiber.cr' 'src/crystal/system/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/file.cr' 'src/crystal/system/file_descriptor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/file_descriptor.cr' 'src/crystal/system/file_info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/file_info.cr' 'src/crystal/system/group.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/group.cr' 'src/crystal/system/mime.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/mime.cr' 'src/crystal/system/panic.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/panic.cr' 'src/crystal/system/path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/path.cr' 'src/crystal/system/print_error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/print_error.cr' 'src/crystal/system/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/process.cr' 'src/crystal/system/random.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/random.cr' 'src/crystal/system/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/signal.cr' 'src/crystal/system/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/socket.cr' 'src/crystal/system/thread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/thread.cr' 'src/crystal/system/thread_condition_variable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/thread_condition_variable.cr' 'src/crystal/system/thread_linked_list.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/thread_linked_list.cr' 'src/crystal/system/thread_mutex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/thread_mutex.cr' 'src/crystal/system/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/time.cr' 'src/crystal/system/unix.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix.cr' 'src/crystal/system/unix' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix' 'src/crystal/system/unix/addrinfo.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/addrinfo.cr' 'src/crystal/system/unix/arc4random.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/arc4random.cr' 'src/crystal/system/unix/dir.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/dir.cr' 'src/crystal/system/unix/env.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/env.cr' 'src/crystal/system/unix/event_libevent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/event_libevent.cr' 'src/crystal/system/unix/event_loop_libevent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/event_loop_libevent.cr' 'src/crystal/system/unix/fiber.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/fiber.cr' 'src/crystal/system/unix/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/file.cr' 'src/crystal/system/unix/file_descriptor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/file_descriptor.cr' 'src/crystal/system/unix/file_info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/file_info.cr' 'src/crystal/system/unix/getrandom.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/getrandom.cr' 'src/crystal/system/unix/group.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/group.cr' 'src/crystal/system/unix/hostname.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/hostname.cr' 'src/crystal/system/unix/lib_event2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/lib_event2.cr' 'src/crystal/system/unix/mime.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/mime.cr' 'src/crystal/system/unix/path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/path.cr' 'src/crystal/system/unix/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/process.cr' 'src/crystal/system/unix/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/pthread.cr' 'src/crystal/system/unix/pthread_condition_variable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/pthread_condition_variable.cr' 'src/crystal/system/unix/pthread_mutex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/pthread_mutex.cr' 'src/crystal/system/unix/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/signal.cr' 'src/crystal/system/unix/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/socket.cr' 'src/crystal/system/unix/syscall.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/syscall.cr' 'src/crystal/system/unix/sysconf_cpucount.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/sysconf_cpucount.cr' 'src/crystal/system/unix/sysctl_cpucount.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/sysctl_cpucount.cr' 'src/crystal/system/unix/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/time.cr' 'src/crystal/system/unix/urandom.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/urandom.cr' 'src/crystal/system/unix/user.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/unix/user.cr' 'src/crystal/system/user.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/user.cr' 'src/crystal/system/wasi' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi' 'src/crystal/system/wasi/addrinfo.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/addrinfo.cr' 'src/crystal/system/wasi/cpucount.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/cpucount.cr' 'src/crystal/system/wasi/dir.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/dir.cr' 'src/crystal/system/wasi/event_loop.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/event_loop.cr' 'src/crystal/system/wasi/fiber.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/fiber.cr' 'src/crystal/system/wasi/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/file.cr' 'src/crystal/system/wasi/file_descriptor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/file_descriptor.cr' 'src/crystal/system/wasi/group.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/group.cr' 'src/crystal/system/wasi/hostname.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/hostname.cr' 'src/crystal/system/wasi/lib_wasi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/lib_wasi.cr' 'src/crystal/system/wasi/main.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/main.cr' 'src/crystal/system/wasi/path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/path.cr' 'src/crystal/system/wasi/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/process.cr' 'src/crystal/system/wasi/random.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/random.cr' 'src/crystal/system/wasi/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/signal.cr' 'src/crystal/system/wasi/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/socket.cr' 'src/crystal/system/wasi/thread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/thread.cr' 'src/crystal/system/wasi/thread_condition_variable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/thread_condition_variable.cr' 'src/crystal/system/wasi/thread_mutex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/thread_mutex.cr' 'src/crystal/system/wasi/user.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/user.cr' 'src/crystal/system/wasi/wasi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/wasi/wasi.cr' 'src/crystal/system/win32' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32' 'src/crystal/system/win32/addrinfo.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/addrinfo.cr' 'src/crystal/system/win32/addrinfo_win7.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/addrinfo_win7.cr' 'src/crystal/system/win32/cpucount.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/cpucount.cr' 'src/crystal/system/win32/crypto.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/crypto.cr' 'src/crystal/system/win32/dir.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/dir.cr' 'src/crystal/system/win32/env.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/env.cr' 'src/crystal/system/win32/event_loop_iocp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/event_loop_iocp.cr' 'src/crystal/system/win32/fiber.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/fiber.cr' 'src/crystal/system/win32/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/file.cr' 'src/crystal/system/win32/file_descriptor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/file_descriptor.cr' 'src/crystal/system/win32/file_info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/file_info.cr' 'src/crystal/system/win32/group.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/group.cr' 'src/crystal/system/win32/hostname.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/hostname.cr' 'src/crystal/system/win32/iocp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/iocp.cr' 'src/crystal/system/win32/library_archive.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/library_archive.cr' 'src/crystal/system/win32/mime.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/mime.cr' 'src/crystal/system/win32/path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/path.cr' 'src/crystal/system/win32/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/process.cr' 'src/crystal/system/win32/random.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/random.cr' 'src/crystal/system/win32/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/signal.cr' 'src/crystal/system/win32/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/socket.cr' 'src/crystal/system/win32/thread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/thread.cr' 'src/crystal/system/win32/thread_condition_variable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/thread_condition_variable.cr' 'src/crystal/system/win32/thread_mutex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/thread_mutex.cr' 'src/crystal/system/win32/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/time.cr' 'src/crystal/system/win32/user.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/user.cr' 'src/crystal/system/win32/visual_studio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/visual_studio.cr' 'src/crystal/system/win32/windows_registry.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/windows_registry.cr' 'src/crystal/system/win32/windows_sdk.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/windows_sdk.cr' 'src/crystal/system/win32/wmain.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/wmain.cr' 'src/crystal/system/win32/zone_names.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/win32/zone_names.cr' 'src/crystal/system/windows.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/system/windows.cr' 'src/crystal/thread_local_value.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/thread_local_value.cr' 'src/crystal/tracing.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/crystal/tracing.cr' 'src/csv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv.cr' 'src/csv' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv' 'src/csv/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/builder.cr' 'src/csv/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/error.cr' 'src/csv/lexer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/lexer.cr' 'src/csv/lexer' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/lexer' 'src/csv/lexer/io_based.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/lexer/io_based.cr' 'src/csv/lexer/string_based.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/lexer/string_based.cr' 'src/csv/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/parser.cr' 'src/csv/token.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/csv/token.cr' 'src/deque.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/deque.cr' 'src/digest.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest.cr' 'src/digest' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest' 'src/digest/adler32.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/adler32.cr' 'src/digest/crc32.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/crc32.cr' 'src/digest/digest.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/digest.cr' 'src/digest/io_digest.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/io_digest.cr' 'src/digest/md5.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/md5.cr' 'src/digest/sha1.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/sha1.cr' 'src/digest/sha256.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/sha256.cr' 'src/digest/sha512.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/digest/sha512.cr' 'src/dir.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/dir.cr' 'src/dir' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/dir' 'src/dir/glob.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/dir/glob.cr' 'src/docs_main.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/docs_main.cr' 'src/docs_pseudo_methods.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/docs_pseudo_methods.cr' 'src/ecr.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ecr.cr' 'src/ecr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ecr' 'src/ecr/lexer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ecr/lexer.cr' 'src/ecr/macros.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ecr/macros.cr' 'src/ecr/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ecr/process.cr' 'src/ecr/processor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ecr/processor.cr' 'src/empty.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/empty.cr' 'src/enum.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/enum.cr' 'src/enumerable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/enumerable.cr' 'src/env.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/env.cr' 'src/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/errno.cr' 'src/exception.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception.cr' 'src/exception' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception' 'src/exception/call_stack.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack.cr' 'src/exception/call_stack' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack' 'src/exception/call_stack/dwarf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/dwarf.cr' 'src/exception/call_stack/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/elf.cr' 'src/exception/call_stack/interpreter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/interpreter.cr' 'src/exception/call_stack/libunwind.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/libunwind.cr' 'src/exception/call_stack/mach_o.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/mach_o.cr' 'src/exception/call_stack/null.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/null.cr' 'src/exception/call_stack/stackwalk.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/call_stack/stackwalk.cr' 'src/exception/lib_unwind.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/exception/lib_unwind.cr' 'src/fiber.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber.cr' 'src/fiber' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber' 'src/fiber/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context.cr' 'src/fiber/context' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context' 'src/fiber/context/aarch64.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/aarch64.cr' 'src/fiber/context/arm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/arm.cr' 'src/fiber/context/i386.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/i386.cr' 'src/fiber/context/interpreted.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/interpreted.cr' 'src/fiber/context/wasm32.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/wasm32.cr' 'src/fiber/context/x86_64-microsoft.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/x86_64-microsoft.cr' 'src/fiber/context/x86_64-sysv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/context/x86_64-sysv.cr' 'src/fiber/stack_pool.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/fiber/stack_pool.cr' 'src/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file.cr' 'src/file' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file' 'src/file/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file/error.cr' 'src/file/info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file/info.cr' 'src/file/preader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file/preader.cr' 'src/file/tempfile.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file/tempfile.cr' 'src/file_utils.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/file_utils.cr' 'src/float.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float.cr' 'src/float' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float' 'src/float/printer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer.cr' 'src/float/printer' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer' 'src/float/printer/cached_powers.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/cached_powers.cr' 'src/float/printer/diy_fp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/diy_fp.cr' 'src/float/printer/dragonbox.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/dragonbox.cr' 'src/float/printer/dragonbox_cache.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/dragonbox_cache.cr' 'src/float/printer/grisu3.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/grisu3.cr' 'src/float/printer/hexfloat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/hexfloat.cr' 'src/float/printer/ieee.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/ieee.cr' 'src/float/printer/ryu_printf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/ryu_printf.cr' 'src/float/printer/ryu_printf_table.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/float/printer/ryu_printf_table.cr' 'src/gc.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/gc.cr' 'src/gc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/gc' 'src/gc/boehm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/gc/boehm.cr' 'src/gc/none.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/gc/none.cr' 'src/hash.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/hash.cr' 'src/html.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/html.cr' 'src/html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/html' 'src/html/entities.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/html/entities.cr' 'src/http.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http.cr' 'src/http' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http' 'src/http/client.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/client.cr' 'src/http/client' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/client' 'src/http/client/response.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/client/response.cr' 'src/http/common.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/common.cr' 'src/http/content.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/content.cr' 'src/http/cookie.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/cookie.cr' 'src/http/formdata.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/formdata.cr' 'src/http/formdata' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/formdata' 'src/http/formdata/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/formdata/builder.cr' 'src/http/formdata/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/formdata/parser.cr' 'src/http/formdata/part.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/formdata/part.cr' 'src/http/headers.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/headers.cr' 'src/http/log.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/log.cr' 'src/http/params.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/params.cr' 'src/http/request.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/request.cr' 'src/http/server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server.cr' 'src/http/server' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server' 'src/http/server/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/context.cr' 'src/http/server/handler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handler.cr' 'src/http/server/handlers' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers' 'src/http/server/handlers/compress_handler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers/compress_handler.cr' 'src/http/server/handlers/error_handler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers/error_handler.cr' 'src/http/server/handlers/log_handler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers/log_handler.cr' 'src/http/server/handlers/static_file_handler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers/static_file_handler.cr' 'src/http/server/handlers/static_file_handler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers/static_file_handler.html' 'src/http/server/handlers/websocket_handler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/handlers/websocket_handler.cr' 'src/http/server/request_processor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/request_processor.cr' 'src/http/server/response.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/server/response.cr' 'src/http/status.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/status.cr' 'src/http/web_socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/web_socket.cr' 'src/http/web_socket' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/web_socket' 'src/http/web_socket/close_code.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/web_socket/close_code.cr' 'src/http/web_socket/protocol.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/http/web_socket/protocol.cr' 'src/humanize.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/humanize.cr' 'src/indexable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/indexable.cr' 'src/indexable' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/indexable' 'src/indexable/mutable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/indexable/mutable.cr' 'src/ini.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/ini.cr' 'src/int.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/int.cr' 'src/intrinsics.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/intrinsics.cr' 'src/io.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io.cr' 'src/io' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io' 'src/io/argf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/argf.cr' 'src/io/buffered.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/buffered.cr' 'src/io/byte_format.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/byte_format.cr' 'src/io/console.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/console.cr' 'src/io/delimited.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/delimited.cr' 'src/io/encoding.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/encoding.cr' 'src/io/encoding_stubs.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/encoding_stubs.cr' 'src/io/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/error.cr' 'src/io/evented.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/evented.cr' 'src/io/file_descriptor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/file_descriptor.cr' 'src/io/hexdump.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/hexdump.cr' 'src/io/memory.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/memory.cr' 'src/io/multi_writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/multi_writer.cr' 'src/io/sized.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/sized.cr' 'src/io/stapled.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/io/stapled.cr' 'src/iterable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/iterable.cr' 'src/iterator.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/iterator.cr' 'src/json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json.cr' 'src/json' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json' 'src/json/any.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/any.cr' 'src/json/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/builder.cr' 'src/json/from_json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/from_json.cr' 'src/json/lexer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/lexer.cr' 'src/json/lexer' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/lexer' 'src/json/lexer/io_based.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/lexer/io_based.cr' 'src/json/lexer/string_based.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/lexer/string_based.cr' 'src/json/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/parser.cr' 'src/json/pull_parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/pull_parser.cr' 'src/json/serialization.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/serialization.cr' 'src/json/to_json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/to_json.cr' 'src/json/token.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/json/token.cr' 'src/kernel.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/kernel.cr' 'src/levenshtein.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/levenshtein.cr' 'src/lib_c.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c.cr' 'src/lib_c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c' 'src/lib_c/aarch64-android' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android' 'src/lib_c/aarch64-android/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c' 'src/lib_c/aarch64-android/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/arpa' 'src/lib_c/aarch64-android/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/arpa/inet.cr' 'src/lib_c/aarch64-android/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/dirent.cr' 'src/lib_c/aarch64-android/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/dlfcn.cr' 'src/lib_c/aarch64-android/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/elf.cr' 'src/lib_c/aarch64-android/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/errno.cr' 'src/lib_c/aarch64-android/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/fcntl.cr' 'src/lib_c/aarch64-android/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/grp.cr' 'src/lib_c/aarch64-android/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/iconv.cr' 'src/lib_c/aarch64-android/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/link.cr' 'src/lib_c/aarch64-android/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/netdb.cr' 'src/lib_c/aarch64-android/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/netinet' 'src/lib_c/aarch64-android/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/netinet/in.cr' 'src/lib_c/aarch64-android/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/netinet/tcp.cr' 'src/lib_c/aarch64-android/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/pthread.cr' 'src/lib_c/aarch64-android/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/pwd.cr' 'src/lib_c/aarch64-android/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sched.cr' 'src/lib_c/aarch64-android/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/signal.cr' 'src/lib_c/aarch64-android/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/stdarg.cr' 'src/lib_c/aarch64-android/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/stddef.cr' 'src/lib_c/aarch64-android/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/stdint.cr' 'src/lib_c/aarch64-android/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/stdio.cr' 'src/lib_c/aarch64-android/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/stdlib.cr' 'src/lib_c/aarch64-android/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/string.cr' 'src/lib_c/aarch64-android/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys' 'src/lib_c/aarch64-android/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/file.cr' 'src/lib_c/aarch64-android/c/sys/ioctl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/ioctl.cr' 'src/lib_c/aarch64-android/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/mman.cr' 'src/lib_c/aarch64-android/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/resource.cr' 'src/lib_c/aarch64-android/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/select.cr' 'src/lib_c/aarch64-android/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/socket.cr' 'src/lib_c/aarch64-android/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/stat.cr' 'src/lib_c/aarch64-android/c/sys/syscall.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/syscall.cr' 'src/lib_c/aarch64-android/c/sys/system_properties.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/system_properties.cr' 'src/lib_c/aarch64-android/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/time.cr' 'src/lib_c/aarch64-android/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/types.cr' 'src/lib_c/aarch64-android/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/un.cr' 'src/lib_c/aarch64-android/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/sys/wait.cr' 'src/lib_c/aarch64-android/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/termios.cr' 'src/lib_c/aarch64-android/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/time.cr' 'src/lib_c/aarch64-android/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-android/c/unistd.cr' 'src/lib_c/aarch64-darwin' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin' 'src/lib_c/aarch64-darwin/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c' 'src/lib_c/aarch64-darwin/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/arpa' 'src/lib_c/aarch64-darwin/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/arpa/inet.cr' 'src/lib_c/aarch64-darwin/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/dirent.cr' 'src/lib_c/aarch64-darwin/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/dlfcn.cr' 'src/lib_c/aarch64-darwin/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/errno.cr' 'src/lib_c/aarch64-darwin/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/fcntl.cr' 'src/lib_c/aarch64-darwin/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/grp.cr' 'src/lib_c/aarch64-darwin/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/iconv.cr' 'src/lib_c/aarch64-darwin/c/mach' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/mach' 'src/lib_c/aarch64-darwin/c/mach/mach_time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/mach/mach_time.cr' 'src/lib_c/aarch64-darwin/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/netdb.cr' 'src/lib_c/aarch64-darwin/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/netinet' 'src/lib_c/aarch64-darwin/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/netinet/in.cr' 'src/lib_c/aarch64-darwin/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/netinet/tcp.cr' 'src/lib_c/aarch64-darwin/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/pthread.cr' 'src/lib_c/aarch64-darwin/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/pwd.cr' 'src/lib_c/aarch64-darwin/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sched.cr' 'src/lib_c/aarch64-darwin/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/signal.cr' 'src/lib_c/aarch64-darwin/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/stdarg.cr' 'src/lib_c/aarch64-darwin/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/stddef.cr' 'src/lib_c/aarch64-darwin/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/stdint.cr' 'src/lib_c/aarch64-darwin/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/stdio.cr' 'src/lib_c/aarch64-darwin/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/stdlib.cr' 'src/lib_c/aarch64-darwin/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/string.cr' 'src/lib_c/aarch64-darwin/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys' 'src/lib_c/aarch64-darwin/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/file.cr' 'src/lib_c/aarch64-darwin/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/mman.cr' 'src/lib_c/aarch64-darwin/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/resource.cr' 'src/lib_c/aarch64-darwin/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/select.cr' 'src/lib_c/aarch64-darwin/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/socket.cr' 'src/lib_c/aarch64-darwin/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/stat.cr' 'src/lib_c/aarch64-darwin/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/time.cr' 'src/lib_c/aarch64-darwin/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/types.cr' 'src/lib_c/aarch64-darwin/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/un.cr' 'src/lib_c/aarch64-darwin/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/sys/wait.cr' 'src/lib_c/aarch64-darwin/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/termios.cr' 'src/lib_c/aarch64-darwin/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/time.cr' 'src/lib_c/aarch64-darwin/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-darwin/c/unistd.cr' 'src/lib_c/aarch64-linux-gnu' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu' 'src/lib_c/aarch64-linux-gnu/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c' 'src/lib_c/aarch64-linux-gnu/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/arpa' 'src/lib_c/aarch64-linux-gnu/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/arpa/inet.cr' 'src/lib_c/aarch64-linux-gnu/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/dirent.cr' 'src/lib_c/aarch64-linux-gnu/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/dlfcn.cr' 'src/lib_c/aarch64-linux-gnu/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/elf.cr' 'src/lib_c/aarch64-linux-gnu/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/errno.cr' 'src/lib_c/aarch64-linux-gnu/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/fcntl.cr' 'src/lib_c/aarch64-linux-gnu/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/grp.cr' 'src/lib_c/aarch64-linux-gnu/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/iconv.cr' 'src/lib_c/aarch64-linux-gnu/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/link.cr' 'src/lib_c/aarch64-linux-gnu/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/netdb.cr' 'src/lib_c/aarch64-linux-gnu/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/netinet' 'src/lib_c/aarch64-linux-gnu/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/netinet/in.cr' 'src/lib_c/aarch64-linux-gnu/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/netinet/tcp.cr' 'src/lib_c/aarch64-linux-gnu/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/pthread.cr' 'src/lib_c/aarch64-linux-gnu/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/pwd.cr' 'src/lib_c/aarch64-linux-gnu/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sched.cr' 'src/lib_c/aarch64-linux-gnu/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/signal.cr' 'src/lib_c/aarch64-linux-gnu/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/stdarg.cr' 'src/lib_c/aarch64-linux-gnu/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/stddef.cr' 'src/lib_c/aarch64-linux-gnu/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/stdint.cr' 'src/lib_c/aarch64-linux-gnu/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/stdio.cr' 'src/lib_c/aarch64-linux-gnu/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/stdlib.cr' 'src/lib_c/aarch64-linux-gnu/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/string.cr' 'src/lib_c/aarch64-linux-gnu/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys' 'src/lib_c/aarch64-linux-gnu/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/file.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/mman.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/resource.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/select.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/socket.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/stat.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/time.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/types.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/un.cr' 'src/lib_c/aarch64-linux-gnu/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/sys/wait.cr' 'src/lib_c/aarch64-linux-gnu/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/termios.cr' 'src/lib_c/aarch64-linux-gnu/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/time.cr' 'src/lib_c/aarch64-linux-gnu/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-gnu/c/unistd.cr' 'src/lib_c/aarch64-linux-musl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl' 'src/lib_c/aarch64-linux-musl/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c' 'src/lib_c/aarch64-linux-musl/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/arpa' 'src/lib_c/aarch64-linux-musl/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/arpa/inet.cr' 'src/lib_c/aarch64-linux-musl/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/dirent.cr' 'src/lib_c/aarch64-linux-musl/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/dlfcn.cr' 'src/lib_c/aarch64-linux-musl/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/elf.cr' 'src/lib_c/aarch64-linux-musl/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/errno.cr' 'src/lib_c/aarch64-linux-musl/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/fcntl.cr' 'src/lib_c/aarch64-linux-musl/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/grp.cr' 'src/lib_c/aarch64-linux-musl/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/iconv.cr' 'src/lib_c/aarch64-linux-musl/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/link.cr' 'src/lib_c/aarch64-linux-musl/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/netdb.cr' 'src/lib_c/aarch64-linux-musl/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/netinet' 'src/lib_c/aarch64-linux-musl/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/netinet/in.cr' 'src/lib_c/aarch64-linux-musl/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/netinet/tcp.cr' 'src/lib_c/aarch64-linux-musl/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/pthread.cr' 'src/lib_c/aarch64-linux-musl/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/pwd.cr' 'src/lib_c/aarch64-linux-musl/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sched.cr' 'src/lib_c/aarch64-linux-musl/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/signal.cr' 'src/lib_c/aarch64-linux-musl/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/stdarg.cr' 'src/lib_c/aarch64-linux-musl/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/stddef.cr' 'src/lib_c/aarch64-linux-musl/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/stdint.cr' 'src/lib_c/aarch64-linux-musl/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/stdio.cr' 'src/lib_c/aarch64-linux-musl/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/stdlib.cr' 'src/lib_c/aarch64-linux-musl/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/string.cr' 'src/lib_c/aarch64-linux-musl/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys' 'src/lib_c/aarch64-linux-musl/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/file.cr' 'src/lib_c/aarch64-linux-musl/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/mman.cr' 'src/lib_c/aarch64-linux-musl/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/resource.cr' 'src/lib_c/aarch64-linux-musl/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/select.cr' 'src/lib_c/aarch64-linux-musl/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/socket.cr' 'src/lib_c/aarch64-linux-musl/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/stat.cr' 'src/lib_c/aarch64-linux-musl/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/time.cr' 'src/lib_c/aarch64-linux-musl/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/types.cr' 'src/lib_c/aarch64-linux-musl/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/un.cr' 'src/lib_c/aarch64-linux-musl/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/sys/wait.cr' 'src/lib_c/aarch64-linux-musl/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/termios.cr' 'src/lib_c/aarch64-linux-musl/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/time.cr' 'src/lib_c/aarch64-linux-musl/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-linux-musl/c/unistd.cr' 'src/lib_c/aarch64-windows-msvc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/aarch64-windows-msvc' 'src/lib_c/amd64-unknown-openbsd' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/amd64-unknown-openbsd' 'src/lib_c/arm-linux-gnueabihf' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf' 'src/lib_c/arm-linux-gnueabihf/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c' 'src/lib_c/arm-linux-gnueabihf/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/arpa' 'src/lib_c/arm-linux-gnueabihf/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/arpa/inet.cr' 'src/lib_c/arm-linux-gnueabihf/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/dirent.cr' 'src/lib_c/arm-linux-gnueabihf/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/dlfcn.cr' 'src/lib_c/arm-linux-gnueabihf/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/elf.cr' 'src/lib_c/arm-linux-gnueabihf/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/errno.cr' 'src/lib_c/arm-linux-gnueabihf/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/fcntl.cr' 'src/lib_c/arm-linux-gnueabihf/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/grp.cr' 'src/lib_c/arm-linux-gnueabihf/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/iconv.cr' 'src/lib_c/arm-linux-gnueabihf/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/link.cr' 'src/lib_c/arm-linux-gnueabihf/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/netdb.cr' 'src/lib_c/arm-linux-gnueabihf/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/netinet' 'src/lib_c/arm-linux-gnueabihf/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/netinet/in.cr' 'src/lib_c/arm-linux-gnueabihf/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/netinet/tcp.cr' 'src/lib_c/arm-linux-gnueabihf/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/pthread.cr' 'src/lib_c/arm-linux-gnueabihf/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/pwd.cr' 'src/lib_c/arm-linux-gnueabihf/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sched.cr' 'src/lib_c/arm-linux-gnueabihf/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/signal.cr' 'src/lib_c/arm-linux-gnueabihf/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/stdarg.cr' 'src/lib_c/arm-linux-gnueabihf/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/stddef.cr' 'src/lib_c/arm-linux-gnueabihf/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/stdint.cr' 'src/lib_c/arm-linux-gnueabihf/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/stdio.cr' 'src/lib_c/arm-linux-gnueabihf/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/stdlib.cr' 'src/lib_c/arm-linux-gnueabihf/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/string.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys' 'src/lib_c/arm-linux-gnueabihf/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/file.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/mman.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/resource.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/select.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/socket.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/stat.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/time.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/types.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/un.cr' 'src/lib_c/arm-linux-gnueabihf/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/sys/wait.cr' 'src/lib_c/arm-linux-gnueabihf/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/termios.cr' 'src/lib_c/arm-linux-gnueabihf/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/time.cr' 'src/lib_c/arm-linux-gnueabihf/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/arm-linux-gnueabihf/c/unistd.cr' 'src/lib_c/i386-linux-gnu' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu' 'src/lib_c/i386-linux-gnu/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c' 'src/lib_c/i386-linux-gnu/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/arpa' 'src/lib_c/i386-linux-gnu/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/arpa/inet.cr' 'src/lib_c/i386-linux-gnu/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/dirent.cr' 'src/lib_c/i386-linux-gnu/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/dlfcn.cr' 'src/lib_c/i386-linux-gnu/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/elf.cr' 'src/lib_c/i386-linux-gnu/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/errno.cr' 'src/lib_c/i386-linux-gnu/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/fcntl.cr' 'src/lib_c/i386-linux-gnu/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/grp.cr' 'src/lib_c/i386-linux-gnu/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/iconv.cr' 'src/lib_c/i386-linux-gnu/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/link.cr' 'src/lib_c/i386-linux-gnu/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/netdb.cr' 'src/lib_c/i386-linux-gnu/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/netinet' 'src/lib_c/i386-linux-gnu/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/netinet/in.cr' 'src/lib_c/i386-linux-gnu/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/netinet/tcp.cr' 'src/lib_c/i386-linux-gnu/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/pthread.cr' 'src/lib_c/i386-linux-gnu/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/pwd.cr' 'src/lib_c/i386-linux-gnu/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sched.cr' 'src/lib_c/i386-linux-gnu/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/signal.cr' 'src/lib_c/i386-linux-gnu/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/stdarg.cr' 'src/lib_c/i386-linux-gnu/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/stddef.cr' 'src/lib_c/i386-linux-gnu/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/stdint.cr' 'src/lib_c/i386-linux-gnu/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/stdio.cr' 'src/lib_c/i386-linux-gnu/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/stdlib.cr' 'src/lib_c/i386-linux-gnu/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/string.cr' 'src/lib_c/i386-linux-gnu/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys' 'src/lib_c/i386-linux-gnu/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/file.cr' 'src/lib_c/i386-linux-gnu/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/mman.cr' 'src/lib_c/i386-linux-gnu/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/resource.cr' 'src/lib_c/i386-linux-gnu/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/select.cr' 'src/lib_c/i386-linux-gnu/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/socket.cr' 'src/lib_c/i386-linux-gnu/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/stat.cr' 'src/lib_c/i386-linux-gnu/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/time.cr' 'src/lib_c/i386-linux-gnu/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/types.cr' 'src/lib_c/i386-linux-gnu/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/un.cr' 'src/lib_c/i386-linux-gnu/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/sys/wait.cr' 'src/lib_c/i386-linux-gnu/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/termios.cr' 'src/lib_c/i386-linux-gnu/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/time.cr' 'src/lib_c/i386-linux-gnu/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-gnu/c/unistd.cr' 'src/lib_c/i386-linux-musl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl' 'src/lib_c/i386-linux-musl/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c' 'src/lib_c/i386-linux-musl/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/arpa' 'src/lib_c/i386-linux-musl/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/arpa/inet.cr' 'src/lib_c/i386-linux-musl/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/dirent.cr' 'src/lib_c/i386-linux-musl/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/dlfcn.cr' 'src/lib_c/i386-linux-musl/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/elf.cr' 'src/lib_c/i386-linux-musl/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/errno.cr' 'src/lib_c/i386-linux-musl/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/fcntl.cr' 'src/lib_c/i386-linux-musl/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/grp.cr' 'src/lib_c/i386-linux-musl/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/iconv.cr' 'src/lib_c/i386-linux-musl/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/link.cr' 'src/lib_c/i386-linux-musl/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/netdb.cr' 'src/lib_c/i386-linux-musl/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/netinet' 'src/lib_c/i386-linux-musl/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/netinet/in.cr' 'src/lib_c/i386-linux-musl/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/netinet/tcp.cr' 'src/lib_c/i386-linux-musl/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/pthread.cr' 'src/lib_c/i386-linux-musl/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/pwd.cr' 'src/lib_c/i386-linux-musl/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sched.cr' 'src/lib_c/i386-linux-musl/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/signal.cr' 'src/lib_c/i386-linux-musl/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/stdarg.cr' 'src/lib_c/i386-linux-musl/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/stddef.cr' 'src/lib_c/i386-linux-musl/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/stdint.cr' 'src/lib_c/i386-linux-musl/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/stdio.cr' 'src/lib_c/i386-linux-musl/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/stdlib.cr' 'src/lib_c/i386-linux-musl/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/string.cr' 'src/lib_c/i386-linux-musl/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys' 'src/lib_c/i386-linux-musl/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/file.cr' 'src/lib_c/i386-linux-musl/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/mman.cr' 'src/lib_c/i386-linux-musl/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/resource.cr' 'src/lib_c/i386-linux-musl/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/select.cr' 'src/lib_c/i386-linux-musl/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/socket.cr' 'src/lib_c/i386-linux-musl/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/stat.cr' 'src/lib_c/i386-linux-musl/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/time.cr' 'src/lib_c/i386-linux-musl/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/types.cr' 'src/lib_c/i386-linux-musl/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/un.cr' 'src/lib_c/i386-linux-musl/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/sys/wait.cr' 'src/lib_c/i386-linux-musl/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/termios.cr' 'src/lib_c/i386-linux-musl/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/time.cr' 'src/lib_c/i386-linux-musl/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i386-linux-musl/c/unistd.cr' 'src/lib_c/i686-linux-gnu' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i686-linux-gnu' 'src/lib_c/i686-linux-musl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/i686-linux-musl' 'src/lib_c/wasm32-wasi' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi' 'src/lib_c/wasm32-wasi/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c' 'src/lib_c/wasm32-wasi/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/arpa' 'src/lib_c/wasm32-wasi/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/arpa/inet.cr' 'src/lib_c/wasm32-wasi/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/errno.cr' 'src/lib_c/wasm32-wasi/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/fcntl.cr' 'src/lib_c/wasm32-wasi/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/iconv.cr' 'src/lib_c/wasm32-wasi/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/netdb.cr' 'src/lib_c/wasm32-wasi/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/netinet' 'src/lib_c/wasm32-wasi/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/netinet/in.cr' 'src/lib_c/wasm32-wasi/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/netinet/tcp.cr' 'src/lib_c/wasm32-wasi/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sched.cr' 'src/lib_c/wasm32-wasi/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/stdarg.cr' 'src/lib_c/wasm32-wasi/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/stddef.cr' 'src/lib_c/wasm32-wasi/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/stdint.cr' 'src/lib_c/wasm32-wasi/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/stdio.cr' 'src/lib_c/wasm32-wasi/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/stdlib.cr' 'src/lib_c/wasm32-wasi/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/string.cr' 'src/lib_c/wasm32-wasi/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys' 'src/lib_c/wasm32-wasi/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/file.cr' 'src/lib_c/wasm32-wasi/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/resource.cr' 'src/lib_c/wasm32-wasi/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/select.cr' 'src/lib_c/wasm32-wasi/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/socket.cr' 'src/lib_c/wasm32-wasi/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/stat.cr' 'src/lib_c/wasm32-wasi/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/time.cr' 'src/lib_c/wasm32-wasi/c/sys/times.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/times.cr' 'src/lib_c/wasm32-wasi/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/sys/types.cr' 'src/lib_c/wasm32-wasi/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/termios.cr' 'src/lib_c/wasm32-wasi/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/time.cr' 'src/lib_c/wasm32-wasi/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/wasm32-wasi/c/unistd.cr' 'src/lib_c/x86_64-darwin' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin' 'src/lib_c/x86_64-darwin/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c' 'src/lib_c/x86_64-darwin/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/arpa' 'src/lib_c/x86_64-darwin/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/arpa/inet.cr' 'src/lib_c/x86_64-darwin/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/dirent.cr' 'src/lib_c/x86_64-darwin/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/dlfcn.cr' 'src/lib_c/x86_64-darwin/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/errno.cr' 'src/lib_c/x86_64-darwin/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/fcntl.cr' 'src/lib_c/x86_64-darwin/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/grp.cr' 'src/lib_c/x86_64-darwin/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/iconv.cr' 'src/lib_c/x86_64-darwin/c/mach' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/mach' 'src/lib_c/x86_64-darwin/c/mach/mach_time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/mach/mach_time.cr' 'src/lib_c/x86_64-darwin/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/netdb.cr' 'src/lib_c/x86_64-darwin/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/netinet' 'src/lib_c/x86_64-darwin/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/netinet/in.cr' 'src/lib_c/x86_64-darwin/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/netinet/tcp.cr' 'src/lib_c/x86_64-darwin/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/pthread.cr' 'src/lib_c/x86_64-darwin/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/pwd.cr' 'src/lib_c/x86_64-darwin/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sched.cr' 'src/lib_c/x86_64-darwin/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/signal.cr' 'src/lib_c/x86_64-darwin/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/stdarg.cr' 'src/lib_c/x86_64-darwin/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/stddef.cr' 'src/lib_c/x86_64-darwin/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/stdint.cr' 'src/lib_c/x86_64-darwin/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/stdio.cr' 'src/lib_c/x86_64-darwin/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/stdlib.cr' 'src/lib_c/x86_64-darwin/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/string.cr' 'src/lib_c/x86_64-darwin/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys' 'src/lib_c/x86_64-darwin/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/file.cr' 'src/lib_c/x86_64-darwin/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/mman.cr' 'src/lib_c/x86_64-darwin/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/resource.cr' 'src/lib_c/x86_64-darwin/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/select.cr' 'src/lib_c/x86_64-darwin/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/socket.cr' 'src/lib_c/x86_64-darwin/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/stat.cr' 'src/lib_c/x86_64-darwin/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/time.cr' 'src/lib_c/x86_64-darwin/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/types.cr' 'src/lib_c/x86_64-darwin/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/un.cr' 'src/lib_c/x86_64-darwin/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/sys/wait.cr' 'src/lib_c/x86_64-darwin/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/termios.cr' 'src/lib_c/x86_64-darwin/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/time.cr' 'src/lib_c/x86_64-darwin/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-darwin/c/unistd.cr' 'src/lib_c/x86_64-dragonfly' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly' 'src/lib_c/x86_64-dragonfly/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c' 'src/lib_c/x86_64-dragonfly/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/arpa' 'src/lib_c/x86_64-dragonfly/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/arpa/inet.cr' 'src/lib_c/x86_64-dragonfly/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/dirent.cr' 'src/lib_c/x86_64-dragonfly/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/dlfcn.cr' 'src/lib_c/x86_64-dragonfly/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/elf.cr' 'src/lib_c/x86_64-dragonfly/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/errno.cr' 'src/lib_c/x86_64-dragonfly/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/fcntl.cr' 'src/lib_c/x86_64-dragonfly/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/grp.cr' 'src/lib_c/x86_64-dragonfly/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/iconv.cr' 'src/lib_c/x86_64-dragonfly/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/link.cr' 'src/lib_c/x86_64-dragonfly/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/netdb.cr' 'src/lib_c/x86_64-dragonfly/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/netinet' 'src/lib_c/x86_64-dragonfly/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/netinet/in.cr' 'src/lib_c/x86_64-dragonfly/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/netinet/tcp.cr' 'src/lib_c/x86_64-dragonfly/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/pthread.cr' 'src/lib_c/x86_64-dragonfly/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/pwd.cr' 'src/lib_c/x86_64-dragonfly/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sched.cr' 'src/lib_c/x86_64-dragonfly/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/signal.cr' 'src/lib_c/x86_64-dragonfly/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/stdarg.cr' 'src/lib_c/x86_64-dragonfly/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/stddef.cr' 'src/lib_c/x86_64-dragonfly/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/stdint.cr' 'src/lib_c/x86_64-dragonfly/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/stdio.cr' 'src/lib_c/x86_64-dragonfly/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/stdlib.cr' 'src/lib_c/x86_64-dragonfly/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/string.cr' 'src/lib_c/x86_64-dragonfly/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys' 'src/lib_c/x86_64-dragonfly/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/file.cr' 'src/lib_c/x86_64-dragonfly/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/mman.cr' 'src/lib_c/x86_64-dragonfly/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/resource.cr' 'src/lib_c/x86_64-dragonfly/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/select.cr' 'src/lib_c/x86_64-dragonfly/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/socket.cr' 'src/lib_c/x86_64-dragonfly/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/stat.cr' 'src/lib_c/x86_64-dragonfly/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/time.cr' 'src/lib_c/x86_64-dragonfly/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/types.cr' 'src/lib_c/x86_64-dragonfly/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/un.cr' 'src/lib_c/x86_64-dragonfly/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sys/wait.cr' 'src/lib_c/x86_64-dragonfly/c/sysctl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/sysctl.cr' 'src/lib_c/x86_64-dragonfly/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/termios.cr' 'src/lib_c/x86_64-dragonfly/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/time.cr' 'src/lib_c/x86_64-dragonfly/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-dragonfly/c/unistd.cr' 'src/lib_c/x86_64-freebsd' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd' 'src/lib_c/x86_64-freebsd/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c' 'src/lib_c/x86_64-freebsd/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/arpa' 'src/lib_c/x86_64-freebsd/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/arpa/inet.cr' 'src/lib_c/x86_64-freebsd/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/dirent.cr' 'src/lib_c/x86_64-freebsd/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/dlfcn.cr' 'src/lib_c/x86_64-freebsd/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/elf.cr' 'src/lib_c/x86_64-freebsd/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/errno.cr' 'src/lib_c/x86_64-freebsd/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/fcntl.cr' 'src/lib_c/x86_64-freebsd/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/grp.cr' 'src/lib_c/x86_64-freebsd/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/iconv.cr' 'src/lib_c/x86_64-freebsd/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/link.cr' 'src/lib_c/x86_64-freebsd/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/netdb.cr' 'src/lib_c/x86_64-freebsd/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/netinet' 'src/lib_c/x86_64-freebsd/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/netinet/in.cr' 'src/lib_c/x86_64-freebsd/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/netinet/tcp.cr' 'src/lib_c/x86_64-freebsd/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/pthread.cr' 'src/lib_c/x86_64-freebsd/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/pwd.cr' 'src/lib_c/x86_64-freebsd/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sched.cr' 'src/lib_c/x86_64-freebsd/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/signal.cr' 'src/lib_c/x86_64-freebsd/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/stdarg.cr' 'src/lib_c/x86_64-freebsd/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/stddef.cr' 'src/lib_c/x86_64-freebsd/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/stdint.cr' 'src/lib_c/x86_64-freebsd/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/stdio.cr' 'src/lib_c/x86_64-freebsd/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/stdlib.cr' 'src/lib_c/x86_64-freebsd/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/string.cr' 'src/lib_c/x86_64-freebsd/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys' 'src/lib_c/x86_64-freebsd/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/file.cr' 'src/lib_c/x86_64-freebsd/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/mman.cr' 'src/lib_c/x86_64-freebsd/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/resource.cr' 'src/lib_c/x86_64-freebsd/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/select.cr' 'src/lib_c/x86_64-freebsd/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/socket.cr' 'src/lib_c/x86_64-freebsd/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/stat.cr' 'src/lib_c/x86_64-freebsd/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/time.cr' 'src/lib_c/x86_64-freebsd/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/types.cr' 'src/lib_c/x86_64-freebsd/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/un.cr' 'src/lib_c/x86_64-freebsd/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sys/wait.cr' 'src/lib_c/x86_64-freebsd/c/sysctl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/sysctl.cr' 'src/lib_c/x86_64-freebsd/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/termios.cr' 'src/lib_c/x86_64-freebsd/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/time.cr' 'src/lib_c/x86_64-freebsd/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-freebsd/c/unistd.cr' 'src/lib_c/x86_64-linux-gnu' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu' 'src/lib_c/x86_64-linux-gnu/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c' 'src/lib_c/x86_64-linux-gnu/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/arpa' 'src/lib_c/x86_64-linux-gnu/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/arpa/inet.cr' 'src/lib_c/x86_64-linux-gnu/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/dirent.cr' 'src/lib_c/x86_64-linux-gnu/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/dlfcn.cr' 'src/lib_c/x86_64-linux-gnu/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/elf.cr' 'src/lib_c/x86_64-linux-gnu/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/errno.cr' 'src/lib_c/x86_64-linux-gnu/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/fcntl.cr' 'src/lib_c/x86_64-linux-gnu/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/grp.cr' 'src/lib_c/x86_64-linux-gnu/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/iconv.cr' 'src/lib_c/x86_64-linux-gnu/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/link.cr' 'src/lib_c/x86_64-linux-gnu/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/netdb.cr' 'src/lib_c/x86_64-linux-gnu/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/netinet' 'src/lib_c/x86_64-linux-gnu/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/netinet/in.cr' 'src/lib_c/x86_64-linux-gnu/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/netinet/tcp.cr' 'src/lib_c/x86_64-linux-gnu/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/pthread.cr' 'src/lib_c/x86_64-linux-gnu/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/pwd.cr' 'src/lib_c/x86_64-linux-gnu/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sched.cr' 'src/lib_c/x86_64-linux-gnu/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/signal.cr' 'src/lib_c/x86_64-linux-gnu/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/stdarg.cr' 'src/lib_c/x86_64-linux-gnu/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/stddef.cr' 'src/lib_c/x86_64-linux-gnu/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/stdint.cr' 'src/lib_c/x86_64-linux-gnu/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/stdio.cr' 'src/lib_c/x86_64-linux-gnu/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/stdlib.cr' 'src/lib_c/x86_64-linux-gnu/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/string.cr' 'src/lib_c/x86_64-linux-gnu/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys' 'src/lib_c/x86_64-linux-gnu/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/file.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/mman.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/resource.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/select.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/socket.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/stat.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/time.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/types.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/un.cr' 'src/lib_c/x86_64-linux-gnu/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/sys/wait.cr' 'src/lib_c/x86_64-linux-gnu/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/termios.cr' 'src/lib_c/x86_64-linux-gnu/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/time.cr' 'src/lib_c/x86_64-linux-gnu/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-gnu/c/unistd.cr' 'src/lib_c/x86_64-linux-musl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl' 'src/lib_c/x86_64-linux-musl/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c' 'src/lib_c/x86_64-linux-musl/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/arpa' 'src/lib_c/x86_64-linux-musl/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/arpa/inet.cr' 'src/lib_c/x86_64-linux-musl/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/dirent.cr' 'src/lib_c/x86_64-linux-musl/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/dlfcn.cr' 'src/lib_c/x86_64-linux-musl/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/elf.cr' 'src/lib_c/x86_64-linux-musl/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/errno.cr' 'src/lib_c/x86_64-linux-musl/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/fcntl.cr' 'src/lib_c/x86_64-linux-musl/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/grp.cr' 'src/lib_c/x86_64-linux-musl/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/iconv.cr' 'src/lib_c/x86_64-linux-musl/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/link.cr' 'src/lib_c/x86_64-linux-musl/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/netdb.cr' 'src/lib_c/x86_64-linux-musl/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/netinet' 'src/lib_c/x86_64-linux-musl/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/netinet/in.cr' 'src/lib_c/x86_64-linux-musl/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/netinet/tcp.cr' 'src/lib_c/x86_64-linux-musl/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/pthread.cr' 'src/lib_c/x86_64-linux-musl/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/pwd.cr' 'src/lib_c/x86_64-linux-musl/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sched.cr' 'src/lib_c/x86_64-linux-musl/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/signal.cr' 'src/lib_c/x86_64-linux-musl/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/stdarg.cr' 'src/lib_c/x86_64-linux-musl/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/stddef.cr' 'src/lib_c/x86_64-linux-musl/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/stdint.cr' 'src/lib_c/x86_64-linux-musl/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/stdio.cr' 'src/lib_c/x86_64-linux-musl/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/stdlib.cr' 'src/lib_c/x86_64-linux-musl/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/string.cr' 'src/lib_c/x86_64-linux-musl/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys' 'src/lib_c/x86_64-linux-musl/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/file.cr' 'src/lib_c/x86_64-linux-musl/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/mman.cr' 'src/lib_c/x86_64-linux-musl/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/resource.cr' 'src/lib_c/x86_64-linux-musl/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/select.cr' 'src/lib_c/x86_64-linux-musl/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/socket.cr' 'src/lib_c/x86_64-linux-musl/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/stat.cr' 'src/lib_c/x86_64-linux-musl/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/time.cr' 'src/lib_c/x86_64-linux-musl/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/types.cr' 'src/lib_c/x86_64-linux-musl/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/un.cr' 'src/lib_c/x86_64-linux-musl/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/sys/wait.cr' 'src/lib_c/x86_64-linux-musl/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/termios.cr' 'src/lib_c/x86_64-linux-musl/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/time.cr' 'src/lib_c/x86_64-linux-musl/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-linux-musl/c/unistd.cr' 'src/lib_c/x86_64-macosx-darwin' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-macosx-darwin' 'src/lib_c/x86_64-netbsd' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd' 'src/lib_c/x86_64-netbsd/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c' 'src/lib_c/x86_64-netbsd/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/arpa' 'src/lib_c/x86_64-netbsd/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/arpa/inet.cr' 'src/lib_c/x86_64-netbsd/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/dirent.cr' 'src/lib_c/x86_64-netbsd/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/dlfcn.cr' 'src/lib_c/x86_64-netbsd/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/elf.cr' 'src/lib_c/x86_64-netbsd/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/errno.cr' 'src/lib_c/x86_64-netbsd/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/fcntl.cr' 'src/lib_c/x86_64-netbsd/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/grp.cr' 'src/lib_c/x86_64-netbsd/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/iconv.cr' 'src/lib_c/x86_64-netbsd/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/link.cr' 'src/lib_c/x86_64-netbsd/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/netdb.cr' 'src/lib_c/x86_64-netbsd/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/netinet' 'src/lib_c/x86_64-netbsd/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/netinet/in.cr' 'src/lib_c/x86_64-netbsd/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/netinet/tcp.cr' 'src/lib_c/x86_64-netbsd/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/pthread.cr' 'src/lib_c/x86_64-netbsd/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/pwd.cr' 'src/lib_c/x86_64-netbsd/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sched.cr' 'src/lib_c/x86_64-netbsd/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/signal.cr' 'src/lib_c/x86_64-netbsd/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/stdarg.cr' 'src/lib_c/x86_64-netbsd/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/stddef.cr' 'src/lib_c/x86_64-netbsd/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/stdint.cr' 'src/lib_c/x86_64-netbsd/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/stdio.cr' 'src/lib_c/x86_64-netbsd/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/stdlib.cr' 'src/lib_c/x86_64-netbsd/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/string.cr' 'src/lib_c/x86_64-netbsd/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys' 'src/lib_c/x86_64-netbsd/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/file.cr' 'src/lib_c/x86_64-netbsd/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/mman.cr' 'src/lib_c/x86_64-netbsd/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/resource.cr' 'src/lib_c/x86_64-netbsd/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/select.cr' 'src/lib_c/x86_64-netbsd/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/socket.cr' 'src/lib_c/x86_64-netbsd/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/stat.cr' 'src/lib_c/x86_64-netbsd/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/time.cr' 'src/lib_c/x86_64-netbsd/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/types.cr' 'src/lib_c/x86_64-netbsd/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/un.cr' 'src/lib_c/x86_64-netbsd/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sys/wait.cr' 'src/lib_c/x86_64-netbsd/c/sysctl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/sysctl.cr' 'src/lib_c/x86_64-netbsd/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/termios.cr' 'src/lib_c/x86_64-netbsd/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/time.cr' 'src/lib_c/x86_64-netbsd/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-netbsd/c/unistd.cr' 'src/lib_c/x86_64-openbsd' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd' 'src/lib_c/x86_64-openbsd/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c' 'src/lib_c/x86_64-openbsd/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/arpa' 'src/lib_c/x86_64-openbsd/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/arpa/inet.cr' 'src/lib_c/x86_64-openbsd/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/dirent.cr' 'src/lib_c/x86_64-openbsd/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/dlfcn.cr' 'src/lib_c/x86_64-openbsd/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/elf.cr' 'src/lib_c/x86_64-openbsd/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/errno.cr' 'src/lib_c/x86_64-openbsd/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/fcntl.cr' 'src/lib_c/x86_64-openbsd/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/grp.cr' 'src/lib_c/x86_64-openbsd/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/iconv.cr' 'src/lib_c/x86_64-openbsd/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/link.cr' 'src/lib_c/x86_64-openbsd/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/netdb.cr' 'src/lib_c/x86_64-openbsd/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/netinet' 'src/lib_c/x86_64-openbsd/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/netinet/in.cr' 'src/lib_c/x86_64-openbsd/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/netinet/tcp.cr' 'src/lib_c/x86_64-openbsd/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/pthread.cr' 'src/lib_c/x86_64-openbsd/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/pwd.cr' 'src/lib_c/x86_64-openbsd/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sched.cr' 'src/lib_c/x86_64-openbsd/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/signal.cr' 'src/lib_c/x86_64-openbsd/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/stdarg.cr' 'src/lib_c/x86_64-openbsd/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/stddef.cr' 'src/lib_c/x86_64-openbsd/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/stdint.cr' 'src/lib_c/x86_64-openbsd/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/stdio.cr' 'src/lib_c/x86_64-openbsd/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/stdlib.cr' 'src/lib_c/x86_64-openbsd/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/string.cr' 'src/lib_c/x86_64-openbsd/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys' 'src/lib_c/x86_64-openbsd/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/file.cr' 'src/lib_c/x86_64-openbsd/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/mman.cr' 'src/lib_c/x86_64-openbsd/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/resource.cr' 'src/lib_c/x86_64-openbsd/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/select.cr' 'src/lib_c/x86_64-openbsd/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/socket.cr' 'src/lib_c/x86_64-openbsd/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/stat.cr' 'src/lib_c/x86_64-openbsd/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/time.cr' 'src/lib_c/x86_64-openbsd/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/types.cr' 'src/lib_c/x86_64-openbsd/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/un.cr' 'src/lib_c/x86_64-openbsd/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sys/wait.cr' 'src/lib_c/x86_64-openbsd/c/sysctl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/sysctl.cr' 'src/lib_c/x86_64-openbsd/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/termios.cr' 'src/lib_c/x86_64-openbsd/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/time.cr' 'src/lib_c/x86_64-openbsd/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-openbsd/c/unistd.cr' 'src/lib_c/x86_64-portbld-freebsd' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-portbld-freebsd' 'src/lib_c/x86_64-solaris' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris' 'src/lib_c/x86_64-solaris/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c' 'src/lib_c/x86_64-solaris/c/arpa' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/arpa' 'src/lib_c/x86_64-solaris/c/arpa/inet.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/arpa/inet.cr' 'src/lib_c/x86_64-solaris/c/dirent.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/dirent.cr' 'src/lib_c/x86_64-solaris/c/dlfcn.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/dlfcn.cr' 'src/lib_c/x86_64-solaris/c/elf.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/elf.cr' 'src/lib_c/x86_64-solaris/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/errno.cr' 'src/lib_c/x86_64-solaris/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/fcntl.cr' 'src/lib_c/x86_64-solaris/c/grp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/grp.cr' 'src/lib_c/x86_64-solaris/c/iconv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/iconv.cr' 'src/lib_c/x86_64-solaris/c/link.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/link.cr' 'src/lib_c/x86_64-solaris/c/netdb.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/netdb.cr' 'src/lib_c/x86_64-solaris/c/netinet' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/netinet' 'src/lib_c/x86_64-solaris/c/netinet/in.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/netinet/in.cr' 'src/lib_c/x86_64-solaris/c/netinet/tcp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/netinet/tcp.cr' 'src/lib_c/x86_64-solaris/c/pthread.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/pthread.cr' 'src/lib_c/x86_64-solaris/c/pwd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/pwd.cr' 'src/lib_c/x86_64-solaris/c/sched.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sched.cr' 'src/lib_c/x86_64-solaris/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/signal.cr' 'src/lib_c/x86_64-solaris/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/stdarg.cr' 'src/lib_c/x86_64-solaris/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/stddef.cr' 'src/lib_c/x86_64-solaris/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/stdint.cr' 'src/lib_c/x86_64-solaris/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/stdio.cr' 'src/lib_c/x86_64-solaris/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/stdlib.cr' 'src/lib_c/x86_64-solaris/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/string.cr' 'src/lib_c/x86_64-solaris/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys' 'src/lib_c/x86_64-solaris/c/sys/file.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/file.cr' 'src/lib_c/x86_64-solaris/c/sys/mman.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/mman.cr' 'src/lib_c/x86_64-solaris/c/sys/resource.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/resource.cr' 'src/lib_c/x86_64-solaris/c/sys/select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/select.cr' 'src/lib_c/x86_64-solaris/c/sys/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/socket.cr' 'src/lib_c/x86_64-solaris/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/stat.cr' 'src/lib_c/x86_64-solaris/c/sys/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/time.cr' 'src/lib_c/x86_64-solaris/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/types.cr' 'src/lib_c/x86_64-solaris/c/sys/un.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/un.cr' 'src/lib_c/x86_64-solaris/c/sys/wait.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/sys/wait.cr' 'src/lib_c/x86_64-solaris/c/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/termios.cr' 'src/lib_c/x86_64-solaris/c/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/time.cr' 'src/lib_c/x86_64-solaris/c/unistd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-solaris/c/unistd.cr' 'src/lib_c/x86_64-unknown-freebsd' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-unknown-freebsd' 'src/lib_c/x86_64-windows-msvc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc' 'src/lib_c/x86_64-windows-msvc/c' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c' 'src/lib_c/x86_64-windows-msvc/c/afunix.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/afunix.cr' 'src/lib_c/x86_64-windows-msvc/c/basetsd.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/basetsd.cr' 'src/lib_c/x86_64-windows-msvc/c/combaseapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/combaseapi.cr' 'src/lib_c/x86_64-windows-msvc/c/consoleapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/consoleapi.cr' 'src/lib_c/x86_64-windows-msvc/c/consoleapi2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/consoleapi2.cr' 'src/lib_c/x86_64-windows-msvc/c/corecrt.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/corecrt.cr' 'src/lib_c/x86_64-windows-msvc/c/dbghelp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/dbghelp.cr' 'src/lib_c/x86_64-windows-msvc/c/delayimp.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/delayimp.cr' 'src/lib_c/x86_64-windows-msvc/c/direct.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/direct.cr' 'src/lib_c/x86_64-windows-msvc/c/errhandlingapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/errhandlingapi.cr' 'src/lib_c/x86_64-windows-msvc/c/errno.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/errno.cr' 'src/lib_c/x86_64-windows-msvc/c/fcntl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/fcntl.cr' 'src/lib_c/x86_64-windows-msvc/c/fileapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/fileapi.cr' 'src/lib_c/x86_64-windows-msvc/c/guiddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/guiddef.cr' 'src/lib_c/x86_64-windows-msvc/c/handleapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/handleapi.cr' 'src/lib_c/x86_64-windows-msvc/c/heapapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/heapapi.cr' 'src/lib_c/x86_64-windows-msvc/c/in6addr.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/in6addr.cr' 'src/lib_c/x86_64-windows-msvc/c/inaddr.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/inaddr.cr' 'src/lib_c/x86_64-windows-msvc/c/int_safe.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/int_safe.cr' 'src/lib_c/x86_64-windows-msvc/c/io.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/io.cr' 'src/lib_c/x86_64-windows-msvc/c/ioapiset.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ioapiset.cr' 'src/lib_c/x86_64-windows-msvc/c/jobapi2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/jobapi2.cr' 'src/lib_c/x86_64-windows-msvc/c/knownfolders.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/knownfolders.cr' 'src/lib_c/x86_64-windows-msvc/c/libloaderapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/libloaderapi.cr' 'src/lib_c/x86_64-windows-msvc/c/lm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/lm.cr' 'src/lib_c/x86_64-windows-msvc/c/malloc.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/malloc.cr' 'src/lib_c/x86_64-windows-msvc/c/memoryapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/memoryapi.cr' 'src/lib_c/x86_64-windows-msvc/c/minwinbase.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/minwinbase.cr' 'src/lib_c/x86_64-windows-msvc/c/mswsock.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/mswsock.cr' 'src/lib_c/x86_64-windows-msvc/c/ntifs.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ntifs.cr' 'src/lib_c/x86_64-windows-msvc/c/ntsecapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ntsecapi.cr' 'src/lib_c/x86_64-windows-msvc/c/ntstatus.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ntstatus.cr' 'src/lib_c/x86_64-windows-msvc/c/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/process.cr' 'src/lib_c/x86_64-windows-msvc/c/processenv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/processenv.cr' 'src/lib_c/x86_64-windows-msvc/c/processthreadsapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/processthreadsapi.cr' 'src/lib_c/x86_64-windows-msvc/c/profileapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/profileapi.cr' 'src/lib_c/x86_64-windows-msvc/c/regapix.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/regapix.cr' 'src/lib_c/x86_64-windows-msvc/c/sddl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sddl.cr' 'src/lib_c/x86_64-windows-msvc/c/sdkddkver.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sdkddkver.cr' 'src/lib_c/x86_64-windows-msvc/c/security.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/security.cr' 'src/lib_c/x86_64-windows-msvc/c/shlobj_core.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/shlobj_core.cr' 'src/lib_c/x86_64-windows-msvc/c/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/signal.cr' 'src/lib_c/x86_64-windows-msvc/c/stdarg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/stdarg.cr' 'src/lib_c/x86_64-windows-msvc/c/stddef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/stddef.cr' 'src/lib_c/x86_64-windows-msvc/c/stdint.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/stdint.cr' 'src/lib_c/x86_64-windows-msvc/c/stdio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/stdio.cr' 'src/lib_c/x86_64-windows-msvc/c/stdlib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/stdlib.cr' 'src/lib_c/x86_64-windows-msvc/c/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/string.cr' 'src/lib_c/x86_64-windows-msvc/c/stringapiset.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/stringapiset.cr' 'src/lib_c/x86_64-windows-msvc/c/synchapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/synchapi.cr' 'src/lib_c/x86_64-windows-msvc/c/sys' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sys' 'src/lib_c/x86_64-windows-msvc/c/sys/stat.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sys/stat.cr' 'src/lib_c/x86_64-windows-msvc/c/sys/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sys/types.cr' 'src/lib_c/x86_64-windows-msvc/c/sys/utime.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sys/utime.cr' 'src/lib_c/x86_64-windows-msvc/c/sysinfoapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/sysinfoapi.cr' 'src/lib_c/x86_64-windows-msvc/c/timezoneapi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/timezoneapi.cr' 'src/lib_c/x86_64-windows-msvc/c/tlhelp32.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/tlhelp32.cr' 'src/lib_c/x86_64-windows-msvc/c/userenv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/userenv.cr' 'src/lib_c/x86_64-windows-msvc/c/win_def.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/win_def.cr' 'src/lib_c/x86_64-windows-msvc/c/winbase.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/winbase.cr' 'src/lib_c/x86_64-windows-msvc/c/wincrypt.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/wincrypt.cr' 'src/lib_c/x86_64-windows-msvc/c/windows.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/windows.cr' 'src/lib_c/x86_64-windows-msvc/c/winioctl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/winioctl.cr' 'src/lib_c/x86_64-windows-msvc/c/winnls.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/winnls.cr' 'src/lib_c/x86_64-windows-msvc/c/winnt.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/winnt.cr' 'src/lib_c/x86_64-windows-msvc/c/winreg.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/winreg.cr' 'src/lib_c/x86_64-windows-msvc/c/winsock2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/winsock2.cr' 'src/lib_c/x86_64-windows-msvc/c/ws2def.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ws2def.cr' 'src/lib_c/x86_64-windows-msvc/c/ws2ipdef.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ws2ipdef.cr' 'src/lib_c/x86_64-windows-msvc/c/ws2tcpip.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/ws2tcpip.cr' 'src/lib_c/x86_64-windows-msvc/c/wtypesbase.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_c/x86_64-windows-msvc/c/wtypesbase.cr' 'src/lib_z' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_z' 'src/lib_z/lib_z.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/lib_z/lib_z.cr' 'src/llvm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm.cr' 'src/llvm' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm' 'src/llvm/abi.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi.cr' 'src/llvm/abi' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi' 'src/llvm/abi/aarch64.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/aarch64.cr' 'src/llvm/abi/arm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/arm.cr' 'src/llvm/abi/avr.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/avr.cr' 'src/llvm/abi/wasm32.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/wasm32.cr' 'src/llvm/abi/x86.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/x86.cr' 'src/llvm/abi/x86_64.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/x86_64.cr' 'src/llvm/abi/x86_win64.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/abi/x86_win64.cr' 'src/llvm/basic_block.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/basic_block.cr' 'src/llvm/basic_block_collection.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/basic_block_collection.cr' 'src/llvm/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/builder.cr' 'src/llvm/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/context.cr' 'src/llvm/di_builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/di_builder.cr' 'src/llvm/enums.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/enums.cr' 'src/llvm/enums' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/enums' 'src/llvm/enums/atomic.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/enums/atomic.cr' 'src/llvm/ext' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/ext' 'src/llvm/ext/find-llvm-config' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/ext/find-llvm-config' 'src/llvm/ext/llvm-versions.txt' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/ext/llvm-versions.txt' 'src/llvm/ext/llvm_ext.cc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/ext/llvm_ext.cc' 'src/llvm/function.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/function.cr' 'src/llvm/function_collection.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/function_collection.cr' 'src/llvm/function_pass_manager.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/function_pass_manager.cr' 'src/llvm/generic_value.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/generic_value.cr' 'src/llvm/global_collection.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/global_collection.cr' 'src/llvm/instruction_collection.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/instruction_collection.cr' 'src/llvm/jit_compiler.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/jit_compiler.cr' 'src/llvm/lib_llvm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm.cr' 'src/llvm/lib_llvm' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm' 'src/llvm/lib_llvm/analysis.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/analysis.cr' 'src/llvm/lib_llvm/bit_reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/bit_reader.cr' 'src/llvm/lib_llvm/bit_writer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/bit_writer.cr' 'src/llvm/lib_llvm/core.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/core.cr' 'src/llvm/lib_llvm/debug_info.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/debug_info.cr' 'src/llvm/lib_llvm/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/error.cr' 'src/llvm/lib_llvm/execution_engine.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/execution_engine.cr' 'src/llvm/lib_llvm/initialization.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/initialization.cr' 'src/llvm/lib_llvm/ir_reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/ir_reader.cr' 'src/llvm/lib_llvm/lljit.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/lljit.cr' 'src/llvm/lib_llvm/orc.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/orc.cr' 'src/llvm/lib_llvm/target.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/target.cr' 'src/llvm/lib_llvm/target_machine.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/target_machine.cr' 'src/llvm/lib_llvm/transforms' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/transforms' 'src/llvm/lib_llvm/transforms/pass_builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/transforms/pass_builder.cr' 'src/llvm/lib_llvm/transforms/pass_manager_builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/transforms/pass_manager_builder.cr' 'src/llvm/lib_llvm/types.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm/types.cr' 'src/llvm/lib_llvm_ext.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/lib_llvm_ext.cr' 'src/llvm/memory_buffer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/memory_buffer.cr' 'src/llvm/module.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/module.cr' 'src/llvm/module_pass_manager.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/module_pass_manager.cr' 'src/llvm/operand_bundle_def.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/operand_bundle_def.cr' 'src/llvm/orc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/orc' 'src/llvm/orc/jit_dylib.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/orc/jit_dylib.cr' 'src/llvm/orc/lljit.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/orc/lljit.cr' 'src/llvm/orc/lljit_builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/orc/lljit_builder.cr' 'src/llvm/orc/thread_safe_context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/orc/thread_safe_context.cr' 'src/llvm/orc/thread_safe_module.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/orc/thread_safe_module.cr' 'src/llvm/parameter_collection.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/parameter_collection.cr' 'src/llvm/pass_builder_options.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/pass_builder_options.cr' 'src/llvm/pass_manager_builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/pass_manager_builder.cr' 'src/llvm/pass_registry.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/pass_registry.cr' 'src/llvm/phi_table.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/phi_table.cr' 'src/llvm/target.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/target.cr' 'src/llvm/target_data.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/target_data.cr' 'src/llvm/target_machine.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/target_machine.cr' 'src/llvm/type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/type.cr' 'src/llvm/value.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/value.cr' 'src/llvm/value_methods.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/value_methods.cr' 'src/log.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log.cr' 'src/log' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log' 'src/log/backend.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/backend.cr' 'src/log/broadcast_backend.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/broadcast_backend.cr' 'src/log/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/builder.cr' 'src/log/dispatch.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/dispatch.cr' 'src/log/entry.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/entry.cr' 'src/log/format.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/format.cr' 'src/log/io_backend.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/io_backend.cr' 'src/log/json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/json.cr' 'src/log/log.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/log.cr' 'src/log/main.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/main.cr' 'src/log/memory_backend.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/memory_backend.cr' 'src/log/metadata.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/metadata.cr' 'src/log/setup.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/setup.cr' 'src/log/spec.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/log/spec.cr' 'src/macros.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/macros.cr' 'src/math' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/math' 'src/math/libm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/math/libm.cr' 'src/math/math.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/math/math.cr' 'src/mime.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime.cr' 'src/mime' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime' 'src/mime/media_type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime/media_type.cr' 'src/mime/multipart.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime/multipart.cr' 'src/mime/multipart' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime/multipart' 'src/mime/multipart/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime/multipart/builder.cr' 'src/mime/multipart/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime/multipart/parser.cr' 'src/mime/multipart/state.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mime/multipart/state.cr' 'src/mutex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/mutex.cr' 'src/named_tuple.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/named_tuple.cr' 'src/nil.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/nil.cr' 'src/number.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/number.cr' 'src/oauth.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth.cr' 'src/oauth' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth' 'src/oauth/access_token.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/access_token.cr' 'src/oauth/authorization_header.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/authorization_header.cr' 'src/oauth/consumer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/consumer.cr' 'src/oauth/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/error.cr' 'src/oauth/oauth.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/oauth.cr' 'src/oauth/params.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/params.cr' 'src/oauth/request_token.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/request_token.cr' 'src/oauth/signature.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth/signature.cr' 'src/oauth2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2.cr' 'src/oauth2' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2' 'src/oauth2/access_token' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/access_token' 'src/oauth2/access_token/access_token.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/access_token/access_token.cr' 'src/oauth2/access_token/bearer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/access_token/bearer.cr' 'src/oauth2/access_token/mac.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/access_token/mac.cr' 'src/oauth2/auth_scheme.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/auth_scheme.cr' 'src/oauth2/client.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/client.cr' 'src/oauth2/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/error.cr' 'src/oauth2/oauth2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/oauth2.cr' 'src/oauth2/session.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/oauth2/session.cr' 'src/object.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/object.cr' 'src/openssl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl.cr' 'src/openssl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl' 'src/openssl/algorithm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/algorithm.cr' 'src/openssl/bio.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/bio.cr' 'src/openssl/cipher.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/cipher.cr' 'src/openssl/digest.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/digest.cr' 'src/openssl/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/error.cr' 'src/openssl/hmac.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/hmac.cr' 'src/openssl/lib_crypto.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/lib_crypto.cr' 'src/openssl/lib_ssl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/lib_ssl.cr' 'src/openssl/md5.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/md5.cr' 'src/openssl/pkcs5.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/pkcs5.cr' 'src/openssl/sha1.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/sha1.cr' 'src/openssl/ssl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/ssl' 'src/openssl/ssl/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/ssl/context.cr' 'src/openssl/ssl/defaults.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/ssl/defaults.cr' 'src/openssl/ssl/hostname_validation.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/ssl/hostname_validation.cr' 'src/openssl/ssl/server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/ssl/server.cr' 'src/openssl/ssl/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/ssl/socket.cr' 'src/openssl/x509' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/x509' 'src/openssl/x509/certificate.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/x509/certificate.cr' 'src/openssl/x509/extension.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/x509/extension.cr' 'src/openssl/x509/name.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/x509/name.cr' 'src/openssl/x509/x509.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/openssl/x509/x509.cr' 'src/option_parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/option_parser.cr' 'src/path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/path.cr' 'src/pointer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/pointer.cr' 'src/prelude.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/prelude.cr' 'src/pretty_print.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/pretty_print.cr' 'src/primitives.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/primitives.cr' 'src/proc.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/proc.cr' 'src/process.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/process.cr' 'src/process' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/process' 'src/process/executable_path.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/process/executable_path.cr' 'src/process/shell.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/process/shell.cr' 'src/process/status.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/process/status.cr' 'src/raise.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/raise.cr' 'src/random.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/random.cr' 'src/random' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/random' 'src/random/isaac.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/random/isaac.cr' 'src/random/pcg32.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/random/pcg32.cr' 'src/random/secure.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/random/secure.cr' 'src/range.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/range.cr' 'src/range' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/range' 'src/range/bsearch.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/range/bsearch.cr' 'src/reference.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/reference.cr' 'src/reference_storage.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/reference_storage.cr' 'src/regex.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex.cr' 'src/regex' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex' 'src/regex/engine.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex/engine.cr' 'src/regex/lib_pcre.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex/lib_pcre.cr' 'src/regex/lib_pcre2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex/lib_pcre2.cr' 'src/regex/match_data.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex/match_data.cr' 'src/regex/pcre.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex/pcre.cr' 'src/regex/pcre2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/regex/pcre2.cr' 'src/semantic_version.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/semantic_version.cr' 'src/set.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/set.cr' 'src/signal.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/signal.cr' 'src/slice.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/slice.cr' 'src/slice' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/slice' 'src/slice/sort.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/slice/sort.cr' 'src/socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket.cr' 'src/socket' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket' 'src/socket/address.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/address.cr' 'src/socket/addrinfo.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/addrinfo.cr' 'src/socket/common.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/common.cr' 'src/socket/ip_socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/ip_socket.cr' 'src/socket/server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/server.cr' 'src/socket/tcp_server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/tcp_server.cr' 'src/socket/tcp_socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/tcp_socket.cr' 'src/socket/udp_socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/udp_socket.cr' 'src/socket/unix_server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/unix_server.cr' 'src/socket/unix_socket.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/socket/unix_socket.cr' 'src/spec.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec.cr' 'src/spec' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec' 'src/spec/cli.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/cli.cr' 'src/spec/context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/context.cr' 'src/spec/dsl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/dsl.cr' 'src/spec/example.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/example.cr' 'src/spec/example' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/example' 'src/spec/example/procsy.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/example/procsy.cr' 'src/spec/example_group' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/example_group' 'src/spec/example_group/procsy.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/example_group/procsy.cr' 'src/spec/expectations.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/expectations.cr' 'src/spec/filters.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/filters.cr' 'src/spec/formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/formatter.cr' 'src/spec/helpers' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/helpers' 'src/spec/helpers/iterate.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/helpers/iterate.cr' 'src/spec/helpers/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/helpers/string.cr' 'src/spec/item.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/item.cr' 'src/spec/junit_formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/junit_formatter.cr' 'src/spec/methods.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/methods.cr' 'src/spec/source.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/source.cr' 'src/spec/tap_formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/spec/tap_formatter.cr' 'src/static_array.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/static_array.cr' 'src/steppable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/steppable.cr' 'src/string.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string.cr' 'src/string' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string' 'src/string/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/builder.cr' 'src/string/formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/formatter.cr' 'src/string/grapheme.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/grapheme.cr' 'src/string/grapheme' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/grapheme' 'src/string/grapheme/grapheme.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/grapheme/grapheme.cr' 'src/string/grapheme/properties.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/grapheme/properties.cr' 'src/string/utf16.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string/utf16.cr' 'src/string_pool.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string_pool.cr' 'src/string_scanner.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/string_scanner.cr' 'src/struct.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/struct.cr' 'src/symbol.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/symbol.cr' 'src/syscall.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/syscall.cr' 'src/syscall' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/syscall' 'src/syscall/aarch64-linux.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/syscall/aarch64-linux.cr' 'src/syscall/arm-linux.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/syscall/arm-linux.cr' 'src/syscall/i386-linux.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/syscall/i386-linux.cr' 'src/syscall/x86_64-linux.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/syscall/x86_64-linux.cr' 'src/system.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/system.cr' 'src/system' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/system' 'src/system/group.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/system/group.cr' 'src/system/user.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/system/user.cr' 'src/system_error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/system_error.cr' 'src/termios.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/termios.cr' 'src/time.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time.cr' 'src/time' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time' 'src/time/format.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format.cr' 'src/time/format' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format' 'src/time/format/custom' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/custom' 'src/time/format/custom/http_date.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/custom/http_date.cr' 'src/time/format/custom/iso_8601.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/custom/iso_8601.cr' 'src/time/format/custom/rfc_2822.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/custom/rfc_2822.cr' 'src/time/format/custom/rfc_3339.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/custom/rfc_3339.cr' 'src/time/format/custom/yaml_date.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/custom/yaml_date.cr' 'src/time/format/formatter.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/formatter.cr' 'src/time/format/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/parser.cr' 'src/time/format/pattern.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/format/pattern.cr' 'src/time/location.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/location.cr' 'src/time/location' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/location' 'src/time/location/loader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/location/loader.cr' 'src/time/span.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/time/span.cr' 'src/tuple.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/tuple.cr' 'src/unicode' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/unicode' 'src/unicode/data.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/unicode/data.cr' 'src/unicode/unicode.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/unicode/unicode.cr' 'src/union.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/union.cr' 'src/uri.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri.cr' 'src/uri' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri' 'src/uri/encoding.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/encoding.cr' 'src/uri/json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/json.cr' 'src/uri/params.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/params.cr' 'src/uri/params' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/params' 'src/uri/params/from_www_form.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/params/from_www_form.cr' 'src/uri/params/serializable.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/params/serializable.cr' 'src/uri/params/to_www_form.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/params/to_www_form.cr' 'src/uri/punycode.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/punycode.cr' 'src/uri/uri_parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/uri_parser.cr' 'src/uri/yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uri/yaml.cr' 'src/uuid.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uuid.cr' 'src/uuid' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uuid' 'src/uuid/json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uuid/json.cr' 'src/uuid/yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/uuid/yaml.cr' 'src/va_list.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/va_list.cr' 'src/value.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/value.cr' 'src/wait_group.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/wait_group.cr' 'src/wasi_error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/wasi_error.cr' 'src/weak_ref.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/weak_ref.cr' 'src/winerror.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/winerror.cr' 'src/xml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml.cr' 'src/xml' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml' 'src/xml/attribute_type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/attribute_type.cr' 'src/xml/attributes.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/attributes.cr' 'src/xml/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/builder.cr' 'src/xml/error.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/error.cr' 'src/xml/html_parser_options.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/html_parser_options.cr' 'src/xml/libxml2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/libxml2.cr' 'src/xml/namespace.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/namespace.cr' 'src/xml/node.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/node.cr' 'src/xml/node' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/node' 'src/xml/node/type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/node/type.cr' 'src/xml/node_set.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/node_set.cr' 'src/xml/parser_options.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/parser_options.cr' 'src/xml/reader.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/reader.cr' 'src/xml/reader' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/reader' 'src/xml/reader/type.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/reader/type.cr' 'src/xml/save_options.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/save_options.cr' 'src/xml/xpath_context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/xml/xpath_context.cr' 'src/yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml.cr' 'src/yaml' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml' 'src/yaml/any.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/any.cr' 'src/yaml/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/builder.cr' 'src/yaml/enums.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/enums.cr' 'src/yaml/from_yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/from_yaml.cr' 'src/yaml/lib_yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/lib_yaml.cr' 'src/yaml/nodes.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/nodes.cr' 'src/yaml/nodes' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/nodes' 'src/yaml/nodes/builder.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/nodes/builder.cr' 'src/yaml/nodes/nodes.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/nodes/nodes.cr' 'src/yaml/nodes/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/nodes/parser.cr' 'src/yaml/parse_context.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/parse_context.cr' 'src/yaml/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/parser.cr' 'src/yaml/pull_parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/pull_parser.cr' 'src/yaml/schema' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/schema' 'src/yaml/schema/core.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/schema/core.cr' 'src/yaml/schema/core' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/schema/core' 'src/yaml/schema/core/parser.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/schema/core/parser.cr' 'src/yaml/schema/fail_safe.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/schema/fail_safe.cr' 'src/yaml/serialization.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/serialization.cr' 'src/yaml/to_yaml.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/yaml/to_yaml.cr' rm -rf "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src/llvm/ext/llvm_ext.o" # Don't install llvm_ext.o install --strip-program=true -d -m 0755 "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/man/man1/" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -m 644 man/crystal.1.gz "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/man/man1/crystal.1.gz" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -d -m 0755 "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/licenses/crystal/" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -m 644 LICENSE "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/licenses/crystal/LICENSE" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -d -m 0755 "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/bash-completion/completions/" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -m 644 etc/completion.bash "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/bash-completion/completions/crystal" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -d -m 0755 "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/zsh/site-functions/" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -m 644 etc/completion.zsh "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/zsh/site-functions/_crystal" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -d -m 0755 "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/fish/vendor_completions.d/" install: WARNING: ignoring --strip-program option as -s option was not specified install --strip-program=true -m 644 etc/completion.fish "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/fish/vendor_completions.d/crystal.fish" install: WARNING: ignoring --strip-program option as -s option was not specified make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' # # clean lib dir, but without deleting (needed by extensions loading): # - ext/libcrystal.a # - llvm/ext/{find-llvm-config, llvm_ext.o) # find "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/crystal/src" \ -iname "sigfault.o" -or \ -iname "*.c" -or \ -iname "*.cc" \ | xargs rm make install_docs DATADIR=/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' [33mUsing /usr/bin/llvm-config-19 [version=19.1.7][0m ./bin/crystal docs src/docs_main.cr --project-name=Crystal --project-version=1.14.0 --source-refname= Using compiled compiler at .build/crystal cp -av doc/ docs/ 'doc/' -> 'docs/doc' 'doc/assets' -> 'docs/doc/assets' 'doc/assets/crystal-born-and-raised.svg' -> 'docs/doc/assets/crystal-born-and-raised.svg' /usr/bin/install -d -m 0755 /build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal cp -av docs "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs" 'docs' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs' 'docs/css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/css' 'docs/css/style.css' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/css/style.css' 'docs/js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/js' 'docs/js/doc.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/js/doc.js' 'docs/toplevel.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/toplevel.html' 'docs/ArgumentError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/ArgumentError.html' 'docs/Array.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Array.html' 'docs/Atomic.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Atomic.html' 'docs/Atomic' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Atomic' 'docs/Atomic/Flag.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Atomic/Flag.html' 'docs/Atomic/Ordering.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Atomic/Ordering.html' 'docs/Base64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Base64.html' 'docs/Base64' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Base64' 'docs/Base64/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Base64/Error.html' 'docs/Benchmark.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark.html' 'docs/Benchmark' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark' 'docs/Benchmark/BM.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/BM.html' 'docs/Benchmark/BM' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/BM' 'docs/Benchmark/BM/Job.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/BM/Job.html' 'docs/Benchmark/BM/Tms.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/BM/Tms.html' 'docs/Benchmark/IPS.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/IPS.html' 'docs/Benchmark/IPS' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/IPS' 'docs/Benchmark/IPS/Entry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/IPS/Entry.html' 'docs/Benchmark/IPS/Job.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Benchmark/IPS/Job.html' 'docs/BigDecimal.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/BigDecimal.html' 'docs/BigFloat.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/BigFloat.html' 'docs/BigInt.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/BigInt.html' 'docs/BigRational.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/BigRational.html' 'docs/BitArray.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/BitArray.html' 'docs/Bool.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Bool.html' 'docs/Box.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Box.html' 'docs/Bytes.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Bytes.html' 'docs/Channel.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Channel.html' 'docs/Channel' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Channel' 'docs/Channel/ClosedError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Channel/ClosedError.html' 'docs/Char.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Char.html' 'docs/Char' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Char' 'docs/Char/Reader.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Char/Reader.html' 'docs/Class.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Class.html' 'docs/Colorize.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize.html' 'docs/Colorize' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize' 'docs/Colorize/Color.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/Color.html' 'docs/Colorize/Color256.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/Color256.html' 'docs/Colorize/ColorANSI.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/ColorANSI.html' 'docs/Colorize/ColorRGB.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/ColorRGB.html' 'docs/Colorize/Mode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/Mode.html' 'docs/Colorize/Object.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/Object.html' 'docs/Colorize/ObjectExtensions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Colorize/ObjectExtensions.html' 'docs/Comparable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Comparable.html' 'docs/Complex.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Complex.html' 'docs/Compress.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress.html' 'docs/Compress' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress' 'docs/Compress/Deflate.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Deflate.html' 'docs/Compress/Deflate' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Deflate' 'docs/Compress/Deflate/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Deflate/Error.html' 'docs/Compress/Deflate/Reader.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Deflate/Reader.html' 'docs/Compress/Deflate/Strategy.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Deflate/Strategy.html' 'docs/Compress/Deflate/Writer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Deflate/Writer.html' 'docs/Compress/Gzip.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Gzip.html' 'docs/Compress/Gzip' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Gzip' 'docs/Compress/Gzip/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Gzip/Error.html' 'docs/Compress/Gzip/Header.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Gzip/Header.html' 'docs/Compress/Gzip/Reader.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Gzip/Reader.html' 'docs/Compress/Gzip/Writer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Gzip/Writer.html' 'docs/Compress/Zip.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip.html' 'docs/Compress/Zip' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip' 'docs/Compress/Zip/CompressionMethod.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/CompressionMethod.html' 'docs/Compress/Zip/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Error.html' 'docs/Compress/Zip/File.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/File.html' 'docs/Compress/Zip/File' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/File' 'docs/Compress/Zip/File/Entry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/File/Entry.html' 'docs/Compress/Zip/FileInfo.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/FileInfo.html' 'docs/Compress/Zip/Reader.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Reader.html' 'docs/Compress/Zip/Reader' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Reader' 'docs/Compress/Zip/Reader/Entry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Reader/Entry.html' 'docs/Compress/Zip/Writer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Writer.html' 'docs/Compress/Zip/Writer' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Writer' 'docs/Compress/Zip/Writer/Entry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zip/Writer/Entry.html' 'docs/Compress/Zlib.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zlib.html' 'docs/Compress/Zlib' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zlib' 'docs/Compress/Zlib/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zlib/Error.html' 'docs/Compress/Zlib/Reader.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zlib/Reader.html' 'docs/Compress/Zlib/Writer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Compress/Zlib/Writer.html' 'docs/Crypto.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto.html' 'docs/Crypto' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto' 'docs/Crypto/Bcrypt.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto/Bcrypt.html' 'docs/Crypto/Bcrypt' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto/Bcrypt' 'docs/Crypto/Bcrypt/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto/Bcrypt/Error.html' 'docs/Crypto/Bcrypt/Password.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto/Bcrypt/Password.html' 'docs/Crypto/Blowfish.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto/Blowfish.html' 'docs/Crypto/Subtle.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crypto/Subtle.html' 'docs/Crystal.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal.html' 'docs/Crystal' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal' 'docs/Crystal/EventLoop.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/EventLoop.html' 'docs/Crystal/EventLoop' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/EventLoop' 'docs/Crystal/EventLoop/Event.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/EventLoop/Event.html' 'docs/Crystal/EventLoop/FileDescriptor.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/EventLoop/FileDescriptor.html' 'docs/Crystal/EventLoop/Socket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/EventLoop/Socket.html' 'docs/Crystal/Macros.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros.html' 'docs/Crystal/Macros' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros' 'docs/Crystal/Macros/Alias.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Alias.html' 'docs/Crystal/Macros/AlignOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/AlignOf.html' 'docs/Crystal/Macros/And.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/And.html' 'docs/Crystal/Macros/Annotation.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Annotation.html' 'docs/Crystal/Macros/AnnotationDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/AnnotationDef.html' 'docs/Crystal/Macros/Arg.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Arg.html' 'docs/Crystal/Macros/ArrayLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ArrayLiteral.html' 'docs/Crystal/Macros/Asm.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Asm.html' 'docs/Crystal/Macros/AsmOperand.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/AsmOperand.html' 'docs/Crystal/Macros/Assign.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Assign.html' 'docs/Crystal/Macros/ASTNode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ASTNode.html' 'docs/Crystal/Macros/BinaryOp.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/BinaryOp.html' 'docs/Crystal/Macros/Block.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Block.html' 'docs/Crystal/Macros/BoolLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/BoolLiteral.html' 'docs/Crystal/Macros/Break.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Break.html' 'docs/Crystal/Macros/Call.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Call.html' 'docs/Crystal/Macros/Case.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Case.html' 'docs/Crystal/Macros/Cast.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Cast.html' 'docs/Crystal/Macros/CharLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/CharLiteral.html' 'docs/Crystal/Macros/ClassDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ClassDef.html' 'docs/Crystal/Macros/ClassVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ClassVar.html' 'docs/Crystal/Macros/ControlExpression.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ControlExpression.html' 'docs/Crystal/Macros/CStructOrUnionDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/CStructOrUnionDef.html' 'docs/Crystal/Macros/Def.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Def.html' 'docs/Crystal/Macros/DoubleSplat.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/DoubleSplat.html' 'docs/Crystal/Macros/EnumDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/EnumDef.html' 'docs/Crystal/Macros/ExceptionHandler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ExceptionHandler.html' 'docs/Crystal/Macros/Expressions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Expressions.html' 'docs/Crystal/Macros/Extend.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Extend.html' 'docs/Crystal/Macros/ExternalVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ExternalVar.html' 'docs/Crystal/Macros/FunDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/FunDef.html' 'docs/Crystal/Macros/Generic.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Generic.html' 'docs/Crystal/Macros/Global.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Global.html' 'docs/Crystal/Macros/HashLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/HashLiteral.html' 'docs/Crystal/Macros/If.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/If.html' 'docs/Crystal/Macros/ImplicitObj.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ImplicitObj.html' 'docs/Crystal/Macros/Include.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Include.html' 'docs/Crystal/Macros/InstanceAlignOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/InstanceAlignOf.html' 'docs/Crystal/Macros/InstanceSizeOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/InstanceSizeOf.html' 'docs/Crystal/Macros/InstanceVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/InstanceVar.html' 'docs/Crystal/Macros/IsA.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/IsA.html' 'docs/Crystal/Macros/LibDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/LibDef.html' 'docs/Crystal/Macros/Macro.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Macro.html' 'docs/Crystal/Macros/MacroExpression.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroExpression.html' 'docs/Crystal/Macros/MacroFor.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroFor.html' 'docs/Crystal/Macros/MacroId.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroId.html' 'docs/Crystal/Macros/MacroIf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroIf.html' 'docs/Crystal/Macros/MacroLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroLiteral.html' 'docs/Crystal/Macros/MacroVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroVar.html' 'docs/Crystal/Macros/MacroVerbatim.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MacroVerbatim.html' 'docs/Crystal/Macros/MagicConstant.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MagicConstant.html' 'docs/Crystal/Macros/Metaclass.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Metaclass.html' 'docs/Crystal/Macros/MetaVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MetaVar.html' 'docs/Crystal/Macros/ModuleDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ModuleDef.html' 'docs/Crystal/Macros/MultiAssign.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/MultiAssign.html' 'docs/Crystal/Macros/NamedArgument.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/NamedArgument.html' 'docs/Crystal/Macros/NamedTupleLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/NamedTupleLiteral.html' 'docs/Crystal/Macros/Next.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Next.html' 'docs/Crystal/Macros/NilableCast.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/NilableCast.html' 'docs/Crystal/Macros/NilLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/NilLiteral.html' 'docs/Crystal/Macros/Nop.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Nop.html' 'docs/Crystal/Macros/Not.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Not.html' 'docs/Crystal/Macros/NumberLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/NumberLiteral.html' 'docs/Crystal/Macros/OffsetOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/OffsetOf.html' 'docs/Crystal/Macros/Or.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Or.html' 'docs/Crystal/Macros/Out.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Out.html' 'docs/Crystal/Macros/Path.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Path.html' 'docs/Crystal/Macros/PointerOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/PointerOf.html' 'docs/Crystal/Macros/Primitive.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Primitive.html' 'docs/Crystal/Macros/ProcLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ProcLiteral.html' 'docs/Crystal/Macros/ProcNotation.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ProcNotation.html' 'docs/Crystal/Macros/ProcPointer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ProcPointer.html' 'docs/Crystal/Macros/RangeLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/RangeLiteral.html' 'docs/Crystal/Macros/ReadInstanceVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/ReadInstanceVar.html' 'docs/Crystal/Macros/RegexLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/RegexLiteral.html' 'docs/Crystal/Macros/Require.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Require.html' 'docs/Crystal/Macros/Rescue.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Rescue.html' 'docs/Crystal/Macros/RespondsTo.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/RespondsTo.html' 'docs/Crystal/Macros/Return.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Return.html' 'docs/Crystal/Macros/Select.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Select.html' 'docs/Crystal/Macros/Self.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Self.html' 'docs/Crystal/Macros/SizeOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/SizeOf.html' 'docs/Crystal/Macros/Splat.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Splat.html' 'docs/Crystal/Macros/StringInterpolation.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/StringInterpolation.html' 'docs/Crystal/Macros/StringLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/StringLiteral.html' 'docs/Crystal/Macros/SymbolLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/SymbolLiteral.html' 'docs/Crystal/Macros/TupleLiteral.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/TupleLiteral.html' 'docs/Crystal/Macros/TypeDeclaration.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/TypeDeclaration.html' 'docs/Crystal/Macros/TypeDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/TypeDef.html' 'docs/Crystal/Macros/TypeNode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/TypeNode.html' 'docs/Crystal/Macros/TypeOf.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/TypeOf.html' 'docs/Crystal/Macros/UnaryExpression.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/UnaryExpression.html' 'docs/Crystal/Macros/Underscore.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Underscore.html' 'docs/Crystal/Macros/UninitializedVar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/UninitializedVar.html' 'docs/Crystal/Macros/Union.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Union.html' 'docs/Crystal/Macros/Var.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Var.html' 'docs/Crystal/Macros/VisibilityModifier.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/VisibilityModifier.html' 'docs/Crystal/Macros/When.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/When.html' 'docs/Crystal/Macros/While.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/While.html' 'docs/Crystal/Macros/Yield.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/Macros/Yield.html' 'docs/Crystal/SyntaxHighlighter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/SyntaxHighlighter.html' 'docs/Crystal/SyntaxHighlighter' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/SyntaxHighlighter' 'docs/Crystal/SyntaxHighlighter/Colorize.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/SyntaxHighlighter/Colorize.html' 'docs/Crystal/SyntaxHighlighter/HTML.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/SyntaxHighlighter/HTML.html' 'docs/Crystal/SyntaxHighlighter/TokenType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Crystal/SyntaxHighlighter/TokenType.html' 'docs/CSV.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV.html' 'docs/CSV' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV' 'docs/CSV/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Builder.html' 'docs/CSV/Builder' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Builder' 'docs/CSV/Builder/Quoting.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Builder/Quoting.html' 'docs/CSV/Builder/Row.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Builder/Row.html' 'docs/CSV/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Error.html' 'docs/CSV/Lexer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Lexer.html' 'docs/CSV/MalformedCSVError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/MalformedCSVError.html' 'docs/CSV/Parser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Parser.html' 'docs/CSV/Row.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Row.html' 'docs/CSV/Token.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Token.html' 'docs/CSV/Token' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Token' 'docs/CSV/Token/Kind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/CSV/Token/Kind.html' 'docs/Deprecated.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Deprecated.html' 'docs/Deque.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Deque.html' 'docs/Digest.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest.html' 'docs/Digest' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest' 'docs/Digest/Adler32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/Adler32.html' 'docs/Digest/ClassMethods.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/ClassMethods.html' 'docs/Digest/CRC32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/CRC32.html' 'docs/Digest/FinalizedError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/FinalizedError.html' 'docs/Digest/MD5.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/MD5.html' 'docs/Digest/SHA1.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/SHA1.html' 'docs/Digest/SHA256.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/SHA256.html' 'docs/Digest/SHA512.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Digest/SHA512.html' 'docs/Dir.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Dir.html' 'docs/DivisionByZeroError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/DivisionByZeroError.html' 'docs/ECR.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/ECR.html' 'docs/Enum.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enum.html' 'docs/Enum' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enum' 'docs/Enum/ValueConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enum/ValueConverter.html' 'docs/Enumerable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable.html' 'docs/Enumerable' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable' 'docs/Enumerable/Chunk.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable/Chunk.html' 'docs/Enumerable/Chunk' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable/Chunk' 'docs/Enumerable/Chunk/Alone.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable/Chunk/Alone.html' 'docs/Enumerable/Chunk/Drop.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable/Chunk/Drop.html' 'docs/Enumerable/EmptyError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable/EmptyError.html' 'docs/Enumerable/NotFoundError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Enumerable/NotFoundError.html' 'docs/ENV.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/ENV.html' 'docs/Errno.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Errno.html' 'docs/Exception.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Exception.html' 'docs/Experimental.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Experimental.html' 'docs/Fiber.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Fiber.html' 'docs/File.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File.html' 'docs/File' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File' 'docs/File/AccessDeniedError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/AccessDeniedError.html' 'docs/File/AlreadyExistsError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/AlreadyExistsError.html' 'docs/File/BadExecutableError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/BadExecutableError.html' 'docs/File/BadPatternError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/BadPatternError.html' 'docs/File/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/Error.html' 'docs/File/Flags.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/Flags.html' 'docs/File/Info.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/Info.html' 'docs/File/MatchOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/MatchOptions.html' 'docs/File/NotFoundError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/NotFoundError.html' 'docs/File/Permissions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/Permissions.html' 'docs/File/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/File/Type.html' 'docs/FileUtils.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/FileUtils.html' 'docs/Flags.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Flags.html' 'docs/Float.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Float.html' 'docs/Float' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Float' 'docs/Float/Primitive.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Float/Primitive.html' 'docs/Float32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Float32.html' 'docs/Float64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Float64.html' 'docs/GC.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/GC.html' 'docs/GC' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/GC' 'docs/GC/ProfStats.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/GC/ProfStats.html' 'docs/GC/Stats.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/GC/Stats.html' 'docs/Hash.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Hash.html' 'docs/HTML.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTML.html' 'docs/HTTP.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP.html' 'docs/HTTP' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP' 'docs/HTTP/Client.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Client.html' 'docs/HTTP/Client' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Client' 'docs/HTTP/Client/BodyType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Client/BodyType.html' 'docs/HTTP/Client/Response.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Client/Response.html' 'docs/HTTP/Client/TLSContext.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Client/TLSContext.html' 'docs/HTTP/CompressHandler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/CompressHandler.html' 'docs/HTTP/Cookie.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Cookie.html' 'docs/HTTP/Cookie' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Cookie' 'docs/HTTP/Cookie/SameSite.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Cookie/SameSite.html' 'docs/HTTP/Cookies.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Cookies.html' 'docs/HTTP/ErrorHandler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/ErrorHandler.html' 'docs/HTTP/FormData.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData.html' 'docs/HTTP/FormData' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData' 'docs/HTTP/FormData/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData/Builder.html' 'docs/HTTP/FormData/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData/Error.html' 'docs/HTTP/FormData/FileMetadata.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData/FileMetadata.html' 'docs/HTTP/FormData/Parser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData/Parser.html' 'docs/HTTP/FormData/Part.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/FormData/Part.html' 'docs/HTTP/Handler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Handler.html' 'docs/HTTP/Handler' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Handler' 'docs/HTTP/Handler/HandlerProc.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Handler/HandlerProc.html' 'docs/HTTP/Headers.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Headers.html' 'docs/HTTP/LogHandler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/LogHandler.html' 'docs/HTTP/Params.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Params.html' 'docs/HTTP/Request.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Request.html' 'docs/HTTP/Server.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Server.html' 'docs/HTTP/Server' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Server' 'docs/HTTP/Server/ClientError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Server/ClientError.html' 'docs/HTTP/Server/Context.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Server/Context.html' 'docs/HTTP/Server/RequestProcessor.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Server/RequestProcessor.html' 'docs/HTTP/Server/Response.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Server/Response.html' 'docs/HTTP/StaticFileHandler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/StaticFileHandler.html' 'docs/HTTP/StaticFileHandler' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/StaticFileHandler' 'docs/HTTP/StaticFileHandler/DirectoryListing.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/StaticFileHandler/DirectoryListing.html' 'docs/HTTP/Status.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/Status.html' 'docs/HTTP/WebSocket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/WebSocket.html' 'docs/HTTP/WebSocket' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/WebSocket' 'docs/HTTP/WebSocket/CloseCode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/WebSocket/CloseCode.html' 'docs/HTTP/WebSocketHandler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/HTTP/WebSocketHandler.html' 'docs/Indexable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Indexable.html' 'docs/Indexable' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Indexable' 'docs/Indexable/Mutable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Indexable/Mutable.html' 'docs/IndexError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IndexError.html' 'docs/INI.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/INI.html' 'docs/INI' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/INI' 'docs/INI/ParseException.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/INI/ParseException.html' 'docs/Int.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int.html' 'docs/Int' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int' 'docs/Int/BinaryPrefixFormat.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int/BinaryPrefixFormat.html' 'docs/Int/Primitive.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int/Primitive.html' 'docs/Int/Signed.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int/Signed.html' 'docs/Int/Unsigned.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int/Unsigned.html' 'docs/Int128.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int128.html' 'docs/Int16.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int16.html' 'docs/Int32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int32.html' 'docs/Int64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int64.html' 'docs/Int8.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Int8.html' 'docs/Intrinsics.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Intrinsics.html' 'docs/InvalidBigDecimalException.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/InvalidBigDecimalException.html' 'docs/InvalidByteSequenceError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/InvalidByteSequenceError.html' 'docs/IO.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO.html' 'docs/IO' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO' 'docs/IO/Buffered.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Buffered.html' 'docs/IO/ByteFormat.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/ByteFormat.html' 'docs/IO/ByteFormat' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/ByteFormat' 'docs/IO/ByteFormat/BigEndian.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/ByteFormat/BigEndian.html' 'docs/IO/ByteFormat/LittleEndian.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/ByteFormat/LittleEndian.html' 'docs/IO/ByteFormat/NetworkEndian.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/ByteFormat/NetworkEndian.html' 'docs/IO/ByteFormat/SystemEndian.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/ByteFormat/SystemEndian.html' 'docs/IO/Delimited.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Delimited.html' 'docs/IO/Digest.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Digest.html' 'docs/IO/Digest' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Digest' 'docs/IO/Digest/DigestMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Digest/DigestMode.html' 'docs/IO/EncodingOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/EncodingOptions.html' 'docs/IO/EOFError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/EOFError.html' 'docs/IO/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Error.html' 'docs/IO/FileDescriptor.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/FileDescriptor.html' 'docs/IO/Hexdump.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Hexdump.html' 'docs/IO/Memory.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Memory.html' 'docs/IO/MultiWriter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/MultiWriter.html' 'docs/IO/Seek.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Seek.html' 'docs/IO/Sized.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Sized.html' 'docs/IO/Stapled.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/Stapled.html' 'docs/IO/TimeoutError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IO/TimeoutError.html' 'docs/IPSocket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/IPSocket.html' 'docs/Iterable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Iterable.html' 'docs/Iterator.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Iterator.html' 'docs/Iterator' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Iterator' 'docs/Iterator/IteratorWrapper.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Iterator/IteratorWrapper.html' 'docs/Iterator/Stop.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Iterator/Stop.html' 'docs/JSON.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON.html' 'docs/JSON' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON' 'docs/JSON/Any.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Any.html' 'docs/JSON/Any' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Any' 'docs/JSON/Any/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Any/Type.html' 'docs/JSON/ArrayConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/ArrayConverter.html' 'docs/JSON/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder.html' 'docs/JSON/Builder' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder' 'docs/JSON/Builder/ArrayState.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder/ArrayState.html' 'docs/JSON/Builder/DocumentEndState.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder/DocumentEndState.html' 'docs/JSON/Builder/DocumentStartState.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder/DocumentStartState.html' 'docs/JSON/Builder/ObjectState.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder/ObjectState.html' 'docs/JSON/Builder/StartState.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder/StartState.html' 'docs/JSON/Builder/State.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Builder/State.html' 'docs/JSON/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Error.html' 'docs/JSON/Field.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Field.html' 'docs/JSON/HashValueConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/HashValueConverter.html' 'docs/JSON/Lexer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Lexer.html' 'docs/JSON/ParseException.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/ParseException.html' 'docs/JSON/Parser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Parser.html' 'docs/JSON/PullParser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/PullParser.html' 'docs/JSON/PullParser' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/PullParser' 'docs/JSON/PullParser/Kind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/PullParser/Kind.html' 'docs/JSON/Serializable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Serializable.html' 'docs/JSON/Serializable' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Serializable' 'docs/JSON/Serializable/Options.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Serializable/Options.html' 'docs/JSON/Serializable/Strict.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Serializable/Strict.html' 'docs/JSON/Serializable/Unmapped.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Serializable/Unmapped.html' 'docs/JSON/SerializableError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/SerializableError.html' 'docs/JSON/Token.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Token.html' 'docs/JSON/Token' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Token' 'docs/JSON/Token/Kind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/JSON/Token/Kind.html' 'docs/KeyError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/KeyError.html' 'docs/Levenshtein.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Levenshtein.html' 'docs/Levenshtein' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Levenshtein' 'docs/Levenshtein/Finder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Levenshtein/Finder.html' 'docs/Link.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Link.html' 'docs/LLVM.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM.html' 'docs/LLVM' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM' 'docs/LLVM/ABI.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI.html' 'docs/LLVM/ABI' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI' 'docs/LLVM/ABI/AArch64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/AArch64.html' 'docs/LLVM/ABI/ArgKind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/ArgKind.html' 'docs/LLVM/ABI/ArgType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/ArgType.html' 'docs/LLVM/ABI/ARM.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/ARM.html' 'docs/LLVM/ABI/AVR.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/AVR.html' 'docs/LLVM/ABI/FunctionType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/FunctionType.html' 'docs/LLVM/ABI/Wasm32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/Wasm32.html' 'docs/LLVM/ABI/X86.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/X86.html' 'docs/LLVM/ABI/X86_64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/X86_64.html' 'docs/LLVM/ABI/X86_64' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/X86_64' 'docs/LLVM/ABI/X86_64/RegClass.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/X86_64/RegClass.html' 'docs/LLVM/ABI/X86_Win64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ABI/X86_Win64.html' 'docs/LLVM/AtomicOrdering.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/AtomicOrdering.html' 'docs/LLVM/AtomicRMWBinOp.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/AtomicRMWBinOp.html' 'docs/LLVM/Attribute.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Attribute.html' 'docs/LLVM/AttributeIndex.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/AttributeIndex.html' 'docs/LLVM/BasicBlock.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/BasicBlock.html' 'docs/LLVM/BasicBlockCollection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/BasicBlockCollection.html' 'docs/LLVM/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Builder.html' 'docs/LLVM/CallConvention.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/CallConvention.html' 'docs/LLVM/CodeGenFileType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/CodeGenFileType.html' 'docs/LLVM/CodeGenOptLevel.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/CodeGenOptLevel.html' 'docs/LLVM/CodeModel.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/CodeModel.html' 'docs/LLVM/Context.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Context.html' 'docs/LLVM/DIBuilder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/DIBuilder.html' 'docs/LLVM/DIFlags.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/DIFlags.html' 'docs/LLVM/DLLStorageClass.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/DLLStorageClass.html' 'docs/LLVM/DwarfSourceLanguage.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/DwarfSourceLanguage.html' 'docs/LLVM/DwarfTag.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/DwarfTag.html' 'docs/LLVM/DwarfTypeEncoding.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/DwarfTypeEncoding.html' 'docs/LLVM/Function.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Function.html' 'docs/LLVM/FunctionCollection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/FunctionCollection.html' 'docs/LLVM/FunctionPassManager.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/FunctionPassManager.html' 'docs/LLVM/FunctionPassManager' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/FunctionPassManager' 'docs/LLVM/FunctionPassManager/Runner.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/FunctionPassManager/Runner.html' 'docs/LLVM/GenericValue.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/GenericValue.html' 'docs/LLVM/GlobalCollection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/GlobalCollection.html' 'docs/LLVM/InlineAsmDialect.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/InlineAsmDialect.html' 'docs/LLVM/InstructionCollection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/InstructionCollection.html' 'docs/LLVM/IntPredicate.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/IntPredicate.html' 'docs/LLVM/JITCompiler.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/JITCompiler.html' 'docs/LLVM/Linkage.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Linkage.html' 'docs/LLVM/MemoryBuffer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/MemoryBuffer.html' 'docs/LLVM/Metadata.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Metadata.html' 'docs/LLVM/Metadata' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Metadata' 'docs/LLVM/Metadata/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Metadata/Type.html' 'docs/LLVM/Module.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Module.html' 'docs/LLVM/ModulePassManager.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ModulePassManager.html' 'docs/LLVM/OperandBundleDef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/OperandBundleDef.html' 'docs/LLVM/Orc.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc.html' 'docs/LLVM/Orc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc' 'docs/LLVM/Orc/JITDylib.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc/JITDylib.html' 'docs/LLVM/Orc/LLJIT.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc/LLJIT.html' 'docs/LLVM/Orc/LLJITBuilder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc/LLJITBuilder.html' 'docs/LLVM/Orc/ThreadSafeContext.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc/ThreadSafeContext.html' 'docs/LLVM/Orc/ThreadSafeModule.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Orc/ThreadSafeModule.html' 'docs/LLVM/ParameterCollection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ParameterCollection.html' 'docs/LLVM/PassBuilderOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/PassBuilderOptions.html' 'docs/LLVM/PassManagerBuilder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/PassManagerBuilder.html' 'docs/LLVM/PassRegistry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/PassRegistry.html' 'docs/LLVM/PhiTable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/PhiTable.html' 'docs/LLVM/RealPredicate.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/RealPredicate.html' 'docs/LLVM/RelocMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/RelocMode.html' 'docs/LLVM/Target.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Target.html' 'docs/LLVM/TargetData.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/TargetData.html' 'docs/LLVM/TargetMachine.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/TargetMachine.html' 'docs/LLVM/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Type.html' 'docs/LLVM/Type' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Type' 'docs/LLVM/Type/Kind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Type/Kind.html' 'docs/LLVM/UWTableKind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/UWTableKind.html' 'docs/LLVM/Value.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Value.html' 'docs/LLVM/Value' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Value' 'docs/LLVM/Value/Kind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/Value/Kind.html' 'docs/LLVM/ValueMethods.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/ValueMethods.html' 'docs/LLVM/VerifierFailureAction.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/LLVM/VerifierFailureAction.html' 'docs/Log.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log.html' 'docs/Log' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log' 'docs/Log/AsyncDispatcher.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/AsyncDispatcher.html' 'docs/Log/Backend.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Backend.html' 'docs/Log/BroadcastBackend.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/BroadcastBackend.html' 'docs/Log/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Builder.html' 'docs/Log/Configuration.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Configuration.html' 'docs/Log/Context.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Context.html' 'docs/Log/DirectDispatcher.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/DirectDispatcher.html' 'docs/Log/Dispatcher.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Dispatcher.html' 'docs/Log/Dispatcher' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Dispatcher' 'docs/Log/Dispatcher/Spec.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Dispatcher/Spec.html' 'docs/Log/DispatchMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/DispatchMode.html' 'docs/Log/Emitter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Emitter.html' 'docs/Log/EntriesChecker.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/EntriesChecker.html' 'docs/Log/Entry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Entry.html' 'docs/Log/Formatter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Formatter.html' 'docs/Log/IOBackend.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/IOBackend.html' 'docs/Log/MemoryBackend.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/MemoryBackend.html' 'docs/Log/Metadata.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Metadata.html' 'docs/Log/Metadata' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Metadata' 'docs/Log/Metadata/Entry.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Metadata/Entry.html' 'docs/Log/Metadata/Value.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Metadata/Value.html' 'docs/Log/Metadata/Value' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Metadata/Value' 'docs/Log/Metadata/Value/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Metadata/Value/Type.html' 'docs/Log/Severity.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/Severity.html' 'docs/Log/ShortFormat.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/ShortFormat.html' 'docs/Log/StaticFormatter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/StaticFormatter.html' 'docs/Log/SyncDispatcher.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Log/SyncDispatcher.html' 'docs/Math.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Math.html' 'docs/MIME.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME.html' 'docs/MIME' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME' 'docs/MIME/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/Error.html' 'docs/MIME/MediaType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/MediaType.html' 'docs/MIME/Multipart.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/Multipart.html' 'docs/MIME/Multipart' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/Multipart' 'docs/MIME/Multipart/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/Multipart/Builder.html' 'docs/MIME/Multipart/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/Multipart/Error.html' 'docs/MIME/Multipart/Parser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/MIME/Multipart/Parser.html' 'docs/Mutex.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Mutex.html' 'docs/Mutex' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Mutex' 'docs/Mutex/Protection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Mutex/Protection.html' 'docs/NamedTuple.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/NamedTuple.html' 'docs/Nil.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Nil.html' 'docs/NilAssertionError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/NilAssertionError.html' 'docs/NoReturn.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/NoReturn.html' 'docs/NotImplementedError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/NotImplementedError.html' 'docs/Number.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Number.html' 'docs/Number' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Number' 'docs/Number/Primitive.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Number/Primitive.html' 'docs/Number/RoundingMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Number/RoundingMode.html' 'docs/OAuth.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth.html' 'docs/OAuth' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth' 'docs/OAuth/AccessToken.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth/AccessToken.html' 'docs/OAuth/Consumer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth/Consumer.html' 'docs/OAuth/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth/Error.html' 'docs/OAuth/RequestToken.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth/RequestToken.html' 'docs/OAuth2.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2.html' 'docs/OAuth2' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2' 'docs/OAuth2/AccessToken.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/AccessToken.html' 'docs/OAuth2/AccessToken' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/AccessToken' 'docs/OAuth2/AccessToken/Bearer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/AccessToken/Bearer.html' 'docs/OAuth2/AccessToken/Mac.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/AccessToken/Mac.html' 'docs/OAuth2/AuthScheme.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/AuthScheme.html' 'docs/OAuth2/Client.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/Client.html' 'docs/OAuth2/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/Error.html' 'docs/OAuth2/Session.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OAuth2/Session.html' 'docs/Object.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Object.html' 'docs/OpenSSL.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL.html' 'docs/OpenSSL' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL' 'docs/OpenSSL/Algorithm.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Algorithm.html' 'docs/OpenSSL/Cipher.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Cipher.html' 'docs/OpenSSL/Cipher' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Cipher' 'docs/OpenSSL/Cipher/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Cipher/Error.html' 'docs/OpenSSL/Digest.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Digest.html' 'docs/OpenSSL/Digest' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Digest' 'docs/OpenSSL/Digest/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Digest/Error.html' 'docs/OpenSSL/Digest/UnsupportedError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Digest/UnsupportedError.html' 'docs/OpenSSL/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/Error.html' 'docs/OpenSSL/HMAC.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/HMAC.html' 'docs/OpenSSL/MD5.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/MD5.html' 'docs/OpenSSL/PKCS5.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/PKCS5.html' 'docs/OpenSSL/SHA1.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SHA1.html' 'docs/OpenSSL/SSL.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL.html' 'docs/OpenSSL/SSL' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL' 'docs/OpenSSL/SSL/Context.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Context.html' 'docs/OpenSSL/SSL/Context' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Context' 'docs/OpenSSL/SSL/Context/Client.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Context/Client.html' 'docs/OpenSSL/SSL/Context/Server.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Context/Server.html' 'docs/OpenSSL/SSL/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Error.html' 'docs/OpenSSL/SSL/ErrorType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/ErrorType.html' 'docs/OpenSSL/SSL/Modes.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Modes.html' 'docs/OpenSSL/SSL/Options.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Options.html' 'docs/OpenSSL/SSL/Server.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Server.html' 'docs/OpenSSL/SSL/Socket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Socket.html' 'docs/OpenSSL/SSL/Socket' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Socket' 'docs/OpenSSL/SSL/Socket/Client.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Socket/Client.html' 'docs/OpenSSL/SSL/Socket/Server.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/Socket/Server.html' 'docs/OpenSSL/SSL/VerifyMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/VerifyMode.html' 'docs/OpenSSL/SSL/X509VerifyFlags.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OpenSSL/SSL/X509VerifyFlags.html' 'docs/OptionParser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OptionParser.html' 'docs/OptionParser' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OptionParser' 'docs/OptionParser/Exception.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OptionParser/Exception.html' 'docs/OptionParser/InvalidOption.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OptionParser/InvalidOption.html' 'docs/OptionParser/MissingOption.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OptionParser/MissingOption.html' 'docs/OverflowError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/OverflowError.html' 'docs/Path.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Path.html' 'docs/Path' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Path' 'docs/Path/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Path/Error.html' 'docs/Path/Kind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Path/Kind.html' 'docs/Pointer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Pointer.html' 'docs/Pointer' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Pointer' 'docs/Pointer/Appender.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Pointer/Appender.html' 'docs/PrettyPrint.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/PrettyPrint.html' 'docs/Proc.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Proc.html' 'docs/Process.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process.html' 'docs/Process' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process' 'docs/Process/Env.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/Env.html' 'docs/Process/ExecStdio.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/ExecStdio.html' 'docs/Process/ExitReason.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/ExitReason.html' 'docs/Process/Redirect.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/Redirect.html' 'docs/Process/Status.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/Status.html' 'docs/Process/Stdio.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/Stdio.html' 'docs/Process/Tms.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Process/Tms.html' 'docs/Random.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Random.html' 'docs/Random' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Random' 'docs/Random/ISAAC.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Random/ISAAC.html' 'docs/Random/PCG32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Random/PCG32.html' 'docs/Random/Secure.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Random/Secure.html' 'docs/Range.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Range.html' 'docs/Reference.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Reference.html' 'docs/ReferenceStorage.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/ReferenceStorage.html' 'docs/Regex.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex.html' 'docs/Regex' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex' 'docs/Regex/CompileOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex/CompileOptions.html' 'docs/Regex/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex/Error.html' 'docs/Regex/MatchData.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex/MatchData.html' 'docs/Regex/MatchOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex/MatchOptions.html' 'docs/Regex/Options.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Regex/Options.html' 'docs/RuntimeError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/RuntimeError.html' 'docs/SemanticVersion.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/SemanticVersion.html' 'docs/SemanticVersion' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/SemanticVersion' 'docs/SemanticVersion/Prerelease.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/SemanticVersion/Prerelease.html' 'docs/Set.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Set.html' 'docs/Signal.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Signal.html' 'docs/Slice.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Slice.html' 'docs/Socket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket.html' 'docs/Socket' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket' 'docs/Socket/Address.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Address.html' 'docs/Socket/Addrinfo.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Addrinfo.html' 'docs/Socket/Addrinfo' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Addrinfo' 'docs/Socket/Addrinfo/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Addrinfo/Error.html' 'docs/Socket/BindError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/BindError.html' 'docs/Socket/ConnectError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/ConnectError.html' 'docs/Socket/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Error.html' 'docs/Socket/Family.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Family.html' 'docs/Socket/FamilyT.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/FamilyT.html' 'docs/Socket/IPAddress.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/IPAddress.html' 'docs/Socket/Protocol.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Protocol.html' 'docs/Socket/Server.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Server.html' 'docs/Socket/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/Type.html' 'docs/Socket/UNIXAddress.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Socket/UNIXAddress.html' 'docs/Spec.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec.html' 'docs/Spec' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec' 'docs/Spec/Context.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Context.html' 'docs/Spec/Example.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Example.html' 'docs/Spec/Example' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Example' 'docs/Spec/Example/Procsy.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Example/Procsy.html' 'docs/Spec/ExampleGroup.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/ExampleGroup.html' 'docs/Spec/ExampleGroup' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/ExampleGroup' 'docs/Spec/ExampleGroup/Procsy.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/ExampleGroup/Procsy.html' 'docs/Spec/Expectations.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Expectations.html' 'docs/Spec/Item.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Item.html' 'docs/Spec/Methods.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/Methods.html' 'docs/Spec/ObjectExtensions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/ObjectExtensions.html' 'docs/Spec/SplitFilter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Spec/SplitFilter.html' 'docs/StaticArray.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/StaticArray.html' 'docs/Steppable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Steppable.html' 'docs/Steppable' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Steppable' 'docs/Steppable/StepIterator.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Steppable/StepIterator.html' 'docs/String.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/String.html' 'docs/String' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/String' 'docs/String/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/String/Builder.html' 'docs/String/Grapheme.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/String/Grapheme.html' 'docs/String/RawConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/String/RawConverter.html' 'docs/StringPool.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/StringPool.html' 'docs/StringScanner.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/StringScanner.html' 'docs/Struct.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Struct.html' 'docs/Symbol.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Symbol.html' 'docs/Syscall.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Syscall.html' 'docs/System.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System.html' 'docs/System' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System' 'docs/System/Group.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System/Group.html' 'docs/System/Group' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System/Group' 'docs/System/Group/NotFoundError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System/Group/NotFoundError.html' 'docs/System/User.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System/User.html' 'docs/System/User' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System/User' 'docs/System/User/NotFoundError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/System/User/NotFoundError.html' 'docs/SystemError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/SystemError.html' 'docs/SystemError' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/SystemError' 'docs/SystemError/ClassMethods.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/SystemError/ClassMethods.html' 'docs/TCPServer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/TCPServer.html' 'docs/TCPSocket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/TCPSocket.html' 'docs/Termios.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios.html' 'docs/Termios' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios' 'docs/Termios/AttributeSelection.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/AttributeSelection.html' 'docs/Termios/BaudRate.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/BaudRate.html' 'docs/Termios/ControlMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/ControlMode.html' 'docs/Termios/InputMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/InputMode.html' 'docs/Termios/LineControl.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/LineControl.html' 'docs/Termios/LocalMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/LocalMode.html' 'docs/Termios/OutputMode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Termios/OutputMode.html' 'docs/Time.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time.html' 'docs/Time' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time' 'docs/Time/DayOfWeek.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/DayOfWeek.html' 'docs/Time/EpochConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/EpochConverter.html' 'docs/Time/EpochMillisConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/EpochMillisConverter.html' 'docs/Time/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Error.html' 'docs/Time/FloatingTimeConversionError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/FloatingTimeConversionError.html' 'docs/Time/Format.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format.html' 'docs/Time/Format' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format' 'docs/Time/Format/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/Error.html' 'docs/Time/Format/HTTP_DATE.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/HTTP_DATE.html' 'docs/Time/Format/ISO_8601_DATE.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/ISO_8601_DATE.html' 'docs/Time/Format/ISO_8601_DATE_TIME.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/ISO_8601_DATE_TIME.html' 'docs/Time/Format/ISO_8601_TIME.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/ISO_8601_TIME.html' 'docs/Time/Format/RFC_2822.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/RFC_2822.html' 'docs/Time/Format/RFC_3339.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/RFC_3339.html' 'docs/Time/Format/YAML_DATE.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Format/YAML_DATE.html' 'docs/Time/Location.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Location.html' 'docs/Time/Location' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Location' 'docs/Time/Location/InvalidLocationNameError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Location/InvalidLocationNameError.html' 'docs/Time/Location/InvalidTimezoneOffsetError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Location/InvalidTimezoneOffsetError.html' 'docs/Time/Location/InvalidTZDataError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Location/InvalidTZDataError.html' 'docs/Time/Location/Zone.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Location/Zone.html' 'docs/Time/MonthSpan.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/MonthSpan.html' 'docs/Time/Span.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Time/Span.html' 'docs/Tuple.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Tuple.html' 'docs/TypeCastError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/TypeCastError.html' 'docs/UDPSocket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UDPSocket.html' 'docs/UInt128.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UInt128.html' 'docs/UInt16.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UInt16.html' 'docs/UInt32.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UInt32.html' 'docs/UInt64.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UInt64.html' 'docs/UInt8.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UInt8.html' 'docs/Unicode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Unicode.html' 'docs/Unicode' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Unicode' 'docs/Unicode/CaseOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Unicode/CaseOptions.html' 'docs/Unicode/NormalizationForm.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Unicode/NormalizationForm.html' 'docs/Union.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Union.html' 'docs/UNIXServer.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UNIXServer.html' 'docs/UNIXSocket.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UNIXSocket.html' 'docs/URI.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI.html' 'docs/URI' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI' 'docs/URI/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Error.html' 'docs/URI/Params.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Params.html' 'docs/URI/Params' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Params' 'docs/URI/Params/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Params/Builder.html' 'docs/URI/Params/Field.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Params/Field.html' 'docs/URI/Params/Serializable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Params/Serializable.html' 'docs/URI/Punycode.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/Punycode.html' 'docs/URI/SerializableError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/URI/SerializableError.html' 'docs/UUID.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID.html' 'docs/UUID' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID' 'docs/UUID/Domain.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID/Domain.html' 'docs/UUID/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID/Error.html' 'docs/UUID/MAC.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID/MAC.html' 'docs/UUID/Namespace.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID/Namespace.html' 'docs/UUID/Variant.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID/Variant.html' 'docs/UUID/Version.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/UUID/Version.html' 'docs/VaList.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/VaList.html' 'docs/Value.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Value.html' 'docs/Void.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/Void.html' 'docs/WaitGroup.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/WaitGroup.html' 'docs/WasiError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/WasiError.html' 'docs/WeakRef.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/WeakRef.html' 'docs/WinError.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/WinError.html' 'docs/XML.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML.html' 'docs/XML' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML' 'docs/XML/Attributes.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Attributes.html' 'docs/XML/AttributeType.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/AttributeType.html' 'docs/XML/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Builder.html' 'docs/XML/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Error.html' 'docs/XML/HTMLParserOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/HTMLParserOptions.html' 'docs/XML/Namespace.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Namespace.html' 'docs/XML/Node.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Node.html' 'docs/XML/Node' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Node' 'docs/XML/Node/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Node/Type.html' 'docs/XML/NodeSet.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/NodeSet.html' 'docs/XML/ParserOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/ParserOptions.html' 'docs/XML/Reader.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Reader.html' 'docs/XML/Reader' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Reader' 'docs/XML/Reader/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/Reader/Type.html' 'docs/XML/SaveOptions.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/SaveOptions.html' 'docs/XML/XPathContext.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/XML/XPathContext.html' 'docs/YAML.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML.html' 'docs/YAML' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML' 'docs/YAML/Any.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Any.html' 'docs/YAML/Any' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Any' 'docs/YAML/Any/Type.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Any/Type.html' 'docs/YAML/ArrayConverter.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/ArrayConverter.html' 'docs/YAML/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Builder.html' 'docs/YAML/Error.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Error.html' 'docs/YAML/EventKind.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/EventKind.html' 'docs/YAML/Field.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Field.html' 'docs/YAML/MappingStyle.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/MappingStyle.html' 'docs/YAML/Nodes.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes.html' 'docs/YAML/Nodes' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes' 'docs/YAML/Nodes/Alias.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Alias.html' 'docs/YAML/Nodes/Builder.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Builder.html' 'docs/YAML/Nodes/Document.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Document.html' 'docs/YAML/Nodes/Mapping.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Mapping.html' 'docs/YAML/Nodes/Node.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Node.html' 'docs/YAML/Nodes/Scalar.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Scalar.html' 'docs/YAML/Nodes/Sequence.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Nodes/Sequence.html' 'docs/YAML/ParseContext.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/ParseContext.html' 'docs/YAML/ParseException.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/ParseException.html' 'docs/YAML/PullParser.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/PullParser.html' 'docs/YAML/ScalarStyle.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/ScalarStyle.html' 'docs/YAML/Schema.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Schema.html' 'docs/YAML/Schema' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Schema' 'docs/YAML/Schema/Core.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Schema/Core.html' 'docs/YAML/Schema/FailSafe.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Schema/FailSafe.html' 'docs/YAML/SequenceStyle.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/SequenceStyle.html' 'docs/YAML/Serializable.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Serializable.html' 'docs/YAML/Serializable' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Serializable' 'docs/YAML/Serializable/Options.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Serializable/Options.html' 'docs/YAML/Serializable/Strict.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Serializable/Strict.html' 'docs/YAML/Serializable/Unmapped.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/YAML/Serializable/Unmapped.html' 'docs/index.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/index.html' 'docs/index.json' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/index.json' 'docs/search-index.js' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/search-index.js' 'docs/404.html' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/404.html' 'docs/doc' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/doc' 'docs/doc/assets' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/doc/assets' 'docs/doc/assets/crystal-born-and-raised.svg' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/doc/assets/crystal-born-and-raised.svg' cp -av samples "/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples" 'samples' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples' 'samples/2048.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/2048.cr' 'samples/Makefile' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/Makefile' 'samples/Makefile.win' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/Makefile.win' 'samples/binary-trees.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/binary-trees.cr' 'samples/brainfuck.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/brainfuck.cr' 'samples/channel_primes.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/channel_primes.cr' 'samples/channel_select.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/channel_select.cr' 'samples/compiler' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/compiler' 'samples/compiler/formatter_example.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/compiler/formatter_example.cr' 'samples/compiler/transformer_example.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/compiler/transformer_example.cr' 'samples/compiler/visitor_example.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/compiler/visitor_example.cr' 'samples/conway.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/conway.cr' 'samples/degree_days.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/degree_days.cr' 'samples/egrep.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/egrep.cr' 'samples/fannkuch-redux.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/fannkuch-redux.cr' 'samples/havlak.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/havlak.cr' 'samples/http_server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/http_server.cr' 'samples/impl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/impl.cr' 'samples/llvm' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/llvm' 'samples/llvm/brainfuck.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/llvm/brainfuck.cr' 'samples/mandelbrot.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/mandelbrot.cr' 'samples/mandelbrot2.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/mandelbrot2.cr' 'samples/matmul.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/matmul.cr' 'samples/meteor.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/meteor.cr' 'samples/mt_gc_test.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/mt_gc_test.cr' 'samples/nbodies.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/nbodies.cr' 'samples/neural_net.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/neural_net.cr' 'samples/noise.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/noise.cr' 'samples/pig.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/pig.cr' 'samples/pretty_json.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/pretty_json.cr' 'samples/quine.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/quine.cr' 'samples/red_black_tree.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/red_black_tree.cr' 'samples/sdl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl' 'samples/sdl/fire.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/fire.cr' 'samples/sdl/fire.txt' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/fire.txt' 'samples/sdl/raytracer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/raytracer.cr' 'samples/sdl/sdl' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/sdl' 'samples/sdl/sdl/lib_sdl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/sdl/lib_sdl.cr' 'samples/sdl/sdl/sdl.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/sdl/sdl.cr' 'samples/sdl/sdl/surface.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/sdl/surface.cr' 'samples/sdl/tv.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/tv.cr' 'samples/sdl/tv.txt' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sdl/tv.txt' 'samples/sieve.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sieve.cr' 'samples/spectral-norm.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/spectral-norm.cr' 'samples/sudoku.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/sudoku.cr' 'samples/tcp_client.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/tcp_client.cr' 'samples/tcp_server.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/tcp_server.cr' 'samples/text_raytracer.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/text_raytracer.cr' 'samples/tree.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/tree.cr' 'samples/wordcount.cr' -> '/build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/wordcount.cr' make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' # fix privacy-breach-generic links on html docs sed -i '/<p><a href=/{:a;N;/alt="Crystal - Born and raised at Manas" \/><\/a><\/p>/!ba};//d' \ /build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/docs/index.html # remove vcs file in examples rm -f /build/reproducible-path/crystal-1.14.0+dfsg/debian/tmp/usr/share/doc/crystal/examples/.gitignore make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' dh_install dh_installdocs dh_installchangelogs dh_installman dh_lintian dh_perl dh_link dh_strip_nondeterminism dh_compress dh_fixperms dh_missing dh_dwz -a dh_strip -a dh_makeshlibs -a dh_shlibdeps -a dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 from: /lib64/ld-linux-x86-64.so.2 dpkg-shlibdeps: warning: diversions involved - output may be incorrect diversion by libc6 to: /lib64/ld-linux-x86-64.so.2.usr-is-merged dh_installdeb dh_gencontrol dh_md5sums dh_builddeb dpkg-deb: building package 'crystal' in '../crystal_1.14.0+dfsg-1_amd64.deb'. dpkg-deb: building package 'crystal-doc' in '../crystal-doc_1.14.0+dfsg-1_all.deb'. dpkg-deb: building package 'crystal-dbgsym' in '../crystal-dbgsym_1.14.0+dfsg-1_amd64.deb'. dpkg-deb: building package 'crystal-samples' in '../crystal-samples_1.14.0+dfsg-1_all.deb'. dpkg-genbuildinfo --build=binary -O../crystal_1.14.0+dfsg-1_amd64.buildinfo dpkg-genchanges --build=binary -O../crystal_1.14.0+dfsg-1_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included) dpkg-genchanges: info: including full source code in upload I: copying local configuration I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/B01_cleanup starting I: user script /srv/workspace/pbuilder/2461830/tmp/hooks/B01_cleanup finished I: unmounting dev/ptmx filesystem I: unmounting dev/pts filesystem I: unmounting dev/shm filesystem I: unmounting proc filesystem I: unmounting sys filesystem I: cleaning the build env I: removing directory /srv/workspace/pbuilder/2461830 and its subdirectories I: Current time: Mon Feb 17 01:09:07 +14 2025 I: pbuilder-time-stamp: 1739704147