Fri Jan 12 22:44:34 UTC 2024 I: starting to build crystal/bookworm/amd64 on jenkins on '2024-01-12 22:44' Fri Jan 12 22:44:34 UTC 2024 I: The jenkins build log is/was available at https://jenkins.debian.net/userContent/reproducible/debian/build_service/amd64_18/12801/console.log Fri Jan 12 22:44:34 UTC 2024 I: Downloading source for bookworm/crystal=1.6.0+dfsg-3 --2024-01-12 22:44:34-- http://cdn-fastly.deb.debian.org/debian/pool/main/c/crystal/crystal_1.6.0%2bdfsg-3.dsc Connecting to 78.137.99.97:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 2185 (2.1K) [text/prs.lines.tag] Saving to: ‘crystal_1.6.0+dfsg-3.dsc’ 0K .. 100% 353M=0s 2024-01-12 22:44:34 (353 MB/s) - ‘crystal_1.6.0+dfsg-3.dsc’ saved [2185/2185] Fri Jan 12 22:44:34 UTC 2024 I: crystal_1.6.0+dfsg-3.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Format: 3.0 (quilt) Source: crystal Binary: crystal, crystal-doc, crystal-samples Architecture: amd64 all Version: 1.6.0+dfsg-3 Maintainer: David Suárez Homepage: https://crystal-lang.org/ Standards-Version: 4.6.1 Vcs-Browser: https://salsa.debian.org/deiv/crystal Vcs-Git: https://salsa.debian.org/deiv/crystal.git Build-Depends: debhelper-compat (= 12), git, libbsd-dev, libedit-dev, libevent-dev, libgc-dev (>= 1:7.6.0), libgmp-dev, libpcre3-dev, libssl-dev, libtool, libxml2-dev, libyaml-dev, libz-dev, lld-14, llvm-14-dev, pkg-config, crystal (>= 1.6.0) Package-List: crystal deb devel optional arch=amd64 crystal-doc deb doc optional arch=all crystal-samples deb devel optional arch=all Checksums-Sha1: 80350ecfa5b86aca31dbd823ce5a16ab70a22b47 1966520 crystal_1.6.0+dfsg.orig.tar.xz 3974fc9ef136e2cf1e3a22202e7170fbcc0e311c 6416 crystal_1.6.0+dfsg-3.debian.tar.xz Checksums-Sha256: 907641cc2e0f1855319f3d5971b17793ecbb581bf645218cc817d5dcb23a76c2 1966520 crystal_1.6.0+dfsg.orig.tar.xz be2f5da91653304b4b31c4c83c46b5c8a5d582d9a7ad44db4f033a08c3422893 6416 crystal_1.6.0+dfsg-3.debian.tar.xz Files: 5a4d192a0b40ececac2c9bd4f12a8bc7 1966520 crystal_1.6.0+dfsg.orig.tar.xz a22f4176340f941a6a6e6019443137b3 6416 crystal_1.6.0+dfsg-3.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQJEBAEBCAAuFiEExFAZYDOyRoLv5EydfLboPYYFQjoFAmQCOYIQHGRlaXZAZGVi aWFuLm9yZwAKCRB8tug9hgVCOg7FD/4lCx5Y4asfFvbFEMMPc6bMWuuOPtkRWOr4 7R4sqCyyWNaDULqR0HTN1firlwEPIju9NdqCKvn4JcORGQYs2LFMDZ/MvoVIEj5F +vNW6yqFtWabsx5IFfu5zWcM0h3pES8J752XgCI3T3S6pUGfgVSTSV3ucYpmE8tE bidLhVTa3cd/+qc5+zT4QmwM6yqGToliDe74m7fmuJBVMPCpvZOQ8dbIGWnF36h5 Vm80cdfvxWencTfFxhf8NHKUjPstCco8/1xClFdE62uZkain9EvD7nJjv8cYMmvg +SP7nUUYzbMV3sGE+ng/8Y7WfWITM7xcf7CdgUPCVAv23IpnuWXEpuRWZlUYNB79 V0rzG2Ez/rNrhNqpGRlLvUForUz3I2Q6RhqOlVY0i8Hnx9yR6JnrMisQm811wbsx HlaJkZR9B2EyHU6/OOwhYzh56HtiVm8gB+I74u9Guq2wghZYv9LR7aUHvqbL36OC 7fRVNkrRs40lE+MDgnhnhV7Y5vSu0P8cZ1LmassJAxeyGsY26R4+GyfhyR+3X3P8 GVRpi17BdRDFdYsDibIpRVUsTNw7tFuGlFGC/STnAPfAxxlOnl8VCqZ2WONbmjP3 60vHcrMeTfq5E+2xxZ6zpf212dCQwgjHUbAf4OtpGWtT4uWhgkwKJEOqS0SFZheC rrPh84pjWQ== =Ss+j -----END PGP SIGNATURE----- Fri Jan 12 22:44:34 UTC 2024 I: Checking whether the package is not for us Fri Jan 12 22:44:34 UTC 2024 I: Starting 1st build on remote node ionos5-amd64.debian.net. Fri Jan 12 22:44:34 UTC 2024 I: Preparing to do remote build '1' on ionos5-amd64.debian.net. Sat Jan 13 01:38:20 UTC 2024 I: Deleting $TMPDIR on ionos5-amd64.debian.net. I: pbuilder: network access will be disabled during build I: Current time: Thu Feb 13 17:07:41 -12 2025 I: pbuilder-time-stamp: 1739509661 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/bookworm-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.6.0+dfsg-3.dsc] I: copying [./crystal_1.6.0+dfsg.orig.tar.xz] I: copying [./crystal_1.6.0+dfsg-3.debian.tar.xz] I: Extracting source gpgv: Signature made Fri Mar 3 18:16:34 2023 gpgv: using RSA key C450196033B24682EFE44C9D7CB6E83D8605423A gpgv: issuer "deiv@debian.org" gpgv: Can't check signature: No public key dpkg-source: warning: cannot verify inline signature for ./crystal_1.6.0+dfsg-3.dsc: no acceptable signature found dpkg-source: info: extracting crystal in crystal-1.6.0+dfsg dpkg-source: info: unpacking crystal_1.6.0+dfsg.orig.tar.xz dpkg-source: info: unpacking crystal_1.6.0+dfsg-3.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 fix-sbuild-pkgbuilddir-filtering-in-unix-spec.diff I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/1101259/tmp/hooks/D02_print_environment starting I: set BUILDDIR='/build/reproducible-path' BUILDUSERGECOS='first user,first room,first work-phone,first home-phone,first other' BUILDUSERNAME='pbuilder1' BUILD_ARCH='amd64' DEBIAN_FRONTEND='noninteractive' DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=16 ' DISTRIBUTION='bookworm' HOME='/root' HOST_ARCH='amd64' IFS=' ' INVOCATION_ID='8cd4019899ba43e493224d56c0328839' LANG='C' LANGUAGE='en_US:en' LC_ALL='C' MAIL='/var/mail/root' OPTIND='1' PATH='/usr/sbin:/usr/bin:/sbin:/bin:/usr/games' PBCURRENTCOMMANDLINEOPERATION='build' PBUILDER_OPERATION='build' PBUILDER_PKGDATADIR='/usr/share/pbuilder' PBUILDER_PKGLIBDIR='/usr/lib/pbuilder' PBUILDER_SYSCONFDIR='/etc' PPID='1101259' PS1='# ' PS2='> ' PS4='+ ' PWD='/' SHELL='/bin/bash' SHLVL='2' SUDO_COMMAND='/usr/bin/timeout -k 18.1h 18h /usr/bin/ionice -c 3 /usr/bin/nice /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.Om46OfOz/pbuilderrc_gTM2 --distribution bookworm --hookdir /etc/pbuilder/first-build-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/bookworm-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.Om46OfOz/b1 --logfile b1/build.log crystal_1.6.0+dfsg-3.dsc' SUDO_GID='110' SUDO_UID='105' SUDO_USER='jenkins' TERM='unknown' TZ='/usr/share/zoneinfo/Etc/GMT+12' USER='root' _='/usr/bin/systemd-run' http_proxy='http://85.184.249.68:3128' I: uname -a Linux ionos5-amd64 6.5.0-0.deb12.4-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.10-1~bpo12+1 (2023-11-23) x86_64 GNU/Linux I: ls -l /bin total 5632 -rwxr-xr-x 1 root root 1265648 Apr 23 2023 bash -rwxr-xr-x 3 root root 39224 Sep 19 2022 bunzip2 -rwxr-xr-x 3 root root 39224 Sep 19 2022 bzcat lrwxrwxrwx 1 root root 6 Sep 19 2022 bzcmp -> bzdiff -rwxr-xr-x 1 root root 2225 Sep 19 2022 bzdiff lrwxrwxrwx 1 root root 6 Sep 19 2022 bzegrep -> bzgrep -rwxr-xr-x 1 root root 4893 Nov 27 2021 bzexe lrwxrwxrwx 1 root root 6 Sep 19 2022 bzfgrep -> bzgrep -rwxr-xr-x 1 root root 3775 Sep 19 2022 bzgrep -rwxr-xr-x 3 root root 39224 Sep 19 2022 bzip2 -rwxr-xr-x 1 root root 14568 Sep 19 2022 bzip2recover lrwxrwxrwx 1 root root 6 Sep 19 2022 bzless -> bzmore -rwxr-xr-x 1 root root 1297 Sep 19 2022 bzmore -rwxr-xr-x 1 root root 44016 Sep 20 2022 cat -rwxr-xr-x 1 root root 68656 Sep 20 2022 chgrp -rwxr-xr-x 1 root root 64496 Sep 20 2022 chmod -rwxr-xr-x 1 root root 72752 Sep 20 2022 chown -rwxr-xr-x 1 root root 151152 Sep 20 2022 cp -rwxr-xr-x 1 root root 125640 Jan 5 2023 dash -rwxr-xr-x 1 root root 121904 Sep 20 2022 date -rwxr-xr-x 1 root root 89240 Sep 20 2022 dd -rwxr-xr-x 1 root root 102200 Sep 20 2022 df -rwxr-xr-x 1 root root 151344 Sep 20 2022 dir -rwxr-xr-x 1 root root 88656 Mar 23 2023 dmesg lrwxrwxrwx 1 root root 8 Dec 19 2022 dnsdomainname -> hostname lrwxrwxrwx 1 root root 8 Dec 19 2022 domainname -> hostname -rwxr-xr-x 1 root root 43856 Sep 20 2022 echo -rwxr-xr-x 1 root root 41 Jan 24 2023 egrep -rwxr-xr-x 1 root root 35664 Sep 20 2022 false -rwxr-xr-x 1 root root 41 Jan 24 2023 fgrep -rwxr-xr-x 1 root root 85600 Mar 23 2023 findmnt -rwsr-xr-x 1 root root 35128 Mar 23 2023 fusermount -rwxr-xr-x 1 root root 203152 Jan 24 2023 grep -rwxr-xr-x 2 root root 2346 Apr 10 2022 gunzip -rwxr-xr-x 1 root root 6447 Apr 10 2022 gzexe -rwxr-xr-x 1 root root 98136 Apr 10 2022 gzip -rwxr-xr-x 1 root root 22680 Dec 19 2022 hostname -rwxr-xr-x 1 root root 72824 Sep 20 2022 ln -rwxr-xr-x 1 root root 53024 Mar 23 2023 login -rwxr-xr-x 1 root root 151344 Sep 20 2022 ls -rwxr-xr-x 1 root root 207168 Mar 23 2023 lsblk -rwxr-xr-x 1 root root 97552 Sep 20 2022 mkdir -rwxr-xr-x 1 root root 72912 Sep 20 2022 mknod -rwxr-xr-x 1 root root 43952 Sep 20 2022 mktemp -rwxr-xr-x 1 root root 59712 Mar 23 2023 more -rwsr-xr-x 1 root root 59704 Mar 23 2023 mount -rwxr-xr-x 1 root root 18744 Mar 23 2023 mountpoint -rwxr-xr-x 1 root root 142968 Sep 20 2022 mv lrwxrwxrwx 1 root root 8 Dec 19 2022 nisdomainname -> hostname lrwxrwxrwx 1 root root 14 Apr 3 2023 pidof -> /sbin/killall5 -rwxr-xr-x 1 root root 43952 Sep 20 2022 pwd lrwxrwxrwx 1 root root 4 Apr 23 2023 rbash -> bash -rwxr-xr-x 1 root root 52112 Sep 20 2022 readlink -rwxr-xr-x 1 root root 72752 Sep 20 2022 rm -rwxr-xr-x 1 root root 56240 Sep 20 2022 rmdir -rwxr-xr-x 1 root root 27560 Jul 28 2023 run-parts -rwxr-xr-x 1 root root 126424 Jan 5 2023 sed lrwxrwxrwx 1 root root 4 Jan 5 2023 sh -> dash -rwxr-xr-x 1 root root 43888 Sep 20 2022 sleep -rwxr-xr-x 1 root root 85008 Sep 20 2022 stty -rwsr-xr-x 1 root root 72000 Mar 23 2023 su -rwxr-xr-x 1 root root 39824 Sep 20 2022 sync -rwxr-xr-x 1 root root 531984 Apr 6 2023 tar -rwxr-xr-x 1 root root 14520 Jul 28 2023 tempfile -rwxr-xr-x 1 root root 109616 Sep 20 2022 touch -rwxr-xr-x 1 root root 35664 Sep 20 2022 true -rwxr-xr-x 1 root root 14568 Mar 23 2023 ulockmgr_server -rwsr-xr-x 1 root root 35128 Mar 23 2023 umount -rwxr-xr-x 1 root root 43888 Sep 20 2022 uname -rwxr-xr-x 2 root root 2346 Apr 10 2022 uncompress -rwxr-xr-x 1 root root 151344 Sep 20 2022 vdir -rwxr-xr-x 1 root root 72024 Mar 23 2023 wdctl lrwxrwxrwx 1 root root 8 Dec 19 2022 ypdomainname -> hostname -rwxr-xr-x 1 root root 1984 Apr 10 2022 zcat -rwxr-xr-x 1 root root 1678 Apr 10 2022 zcmp -rwxr-xr-x 1 root root 6460 Apr 10 2022 zdiff -rwxr-xr-x 1 root root 29 Apr 10 2022 zegrep -rwxr-xr-x 1 root root 29 Apr 10 2022 zfgrep -rwxr-xr-x 1 root root 2081 Apr 10 2022 zforce -rwxr-xr-x 1 root root 8103 Apr 10 2022 zgrep -rwxr-xr-x 1 root root 2206 Apr 10 2022 zless -rwxr-xr-x 1 root root 1842 Apr 10 2022 zmore -rwxr-xr-x 1 root root 4577 Apr 10 2022 znew I: user script /srv/workspace/pbuilder/1101259/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 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 (= 12), git, libbsd-dev, libedit-dev, libevent-dev, libgc-dev (>= 1:7.6.0), libgmp-dev, libpcre3-dev, libssl-dev, libtool, libxml2-dev, libyaml-dev, libz-dev, lld-14, llvm-14-dev, pkg-config, 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 ... 18148 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 (= 12); 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 libpcre3-dev; however: Package libpcre3-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-14; however: Package lld-14 is not installed. pbuilder-satisfydepends-dummy depends on llvm-14-dev; however: Package llvm-14-dev is not installed. pbuilder-satisfydepends-dummy depends on pkg-config; however: Package pkg-config 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} libbsd0{a} libclang-cpp14{a} libcurl3-gnutls{a} libcurl3-nss{a} libdebhelper-perl{a} libedit-dev{a} libedit2{a} libelf1{a} liberror-perl{a} libevent-2.1-7{a} libevent-core-2.1-7{a} libevent-dev{a} libevent-extra-2.1-7{a} libevent-openssl-2.1-7{a} libevent-pthreads-2.1-7{a} libexpat1{a} libffi-dev{a} libfile-stripnondeterminism-perl{a} libgc-dev{a} libgc1{a} libgmp-dev{a} libgmpxx4ldbl{a} libicu-dev{a} libicu72{a} libldap-2.5-0{a} libllvm14{a} libmagic-mgc{a} libmagic1{a} libmd-dev{a} libncurses-dev{a} libncurses6{a} libnghttp2-14{a} libnspr4{a} libnss3{a} libpcre16-3{a} libpcre3{a} libpcre3-dev{a} libpcre32-3{a} libpcrecpp0v5{a} libpfm4{a} libpipeline1{a} libpkgconf3{a} libpsl5{a} libpython3-stdlib{a} libpython3.11-minimal{a} libpython3.11-stdlib{a} libreadline8{a} librtmp1{a} libsasl2-2{a} libsasl2-modules-db{a} libssh2-1{a} libssl-dev{a} libsub-override-perl{a} libtool{a} libuchardet0{a} libxml2{a} libxml2-dev{a} libyaml-0-2{a} libyaml-dev{a} libz3-4{a} libz3-dev{a} lld-14{a} llvm-14{a} llvm-14-dev{a} llvm-14-linker-tools{a} llvm-14-runtime{a} llvm-14-tools{a} m4{a} man-db{a} media-types{a} nss-plugin-pem{a} pkg-config{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} python3{a} python3-minimal{a} python3-pkg-resources{a} python3-pygments{a} python3-yaml{a} python3.11{a} python3.11-minimal{a} readline-common{a} sensible-utils{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: binfmt-support ca-certificates curl less libarchive-cpio-perl libgpm2 libldap-common libltdl-dev libmail-sendmail-perl libsasl2-modules lynx openssh-client publicsuffix systemd wget 0 packages upgraded, 106 newly installed, 0 to remove and 0 not upgraded. Need to get 151 MB of archives. After unpacking 797 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian bookworm/main amd64 libpython3.11-minimal amd64 3.11.2-6 [813 kB] Get: 2 http://deb.debian.org/debian bookworm/main amd64 libexpat1 amd64 2.5.0-1 [99.3 kB] Get: 3 http://deb.debian.org/debian bookworm/main amd64 python3.11-minimal amd64 3.11.2-6 [2064 kB] Get: 4 http://deb.debian.org/debian bookworm/main amd64 python3-minimal amd64 3.11.2-1+b1 [26.3 kB] Get: 5 http://deb.debian.org/debian bookworm/main amd64 media-types all 10.0.0 [26.1 kB] Get: 6 http://deb.debian.org/debian bookworm/main amd64 readline-common all 8.2-1.3 [69.0 kB] Get: 7 http://deb.debian.org/debian bookworm/main amd64 libreadline8 amd64 8.2-1.3 [166 kB] Get: 8 http://deb.debian.org/debian bookworm/main amd64 libpython3.11-stdlib amd64 3.11.2-6 [1796 kB] Get: 9 http://deb.debian.org/debian bookworm/main amd64 python3.11 amd64 3.11.2-6 [572 kB] Get: 10 http://deb.debian.org/debian bookworm/main amd64 libpython3-stdlib amd64 3.11.2-1+b1 [9312 B] Get: 11 http://deb.debian.org/debian bookworm/main amd64 python3 amd64 3.11.2-1+b1 [26.3 kB] Get: 12 http://deb.debian.org/debian bookworm/main amd64 sensible-utils all 0.0.17+nmu1 [19.0 kB] Get: 13 http://deb.debian.org/debian bookworm/main amd64 libmagic-mgc amd64 1:5.44-3 [305 kB] Get: 14 http://deb.debian.org/debian bookworm/main amd64 libmagic1 amd64 1:5.44-3 [104 kB] Get: 15 http://deb.debian.org/debian bookworm/main amd64 file amd64 1:5.44-3 [42.5 kB] Get: 16 http://deb.debian.org/debian bookworm/main amd64 gettext-base amd64 0.21-12 [160 kB] Get: 17 http://deb.debian.org/debian bookworm/main amd64 libuchardet0 amd64 0.0.7-1 [67.8 kB] Get: 18 http://deb.debian.org/debian bookworm/main amd64 groff-base amd64 1.22.4-10 [916 kB] Get: 19 http://deb.debian.org/debian bookworm/main amd64 bsdextrautils amd64 2.38.1-5+b1 [86.6 kB] Get: 20 http://deb.debian.org/debian bookworm/main amd64 libpipeline1 amd64 1.5.7-1 [38.5 kB] Get: 21 http://deb.debian.org/debian bookworm/main amd64 man-db amd64 2.11.2-2 [1386 kB] Get: 22 http://deb.debian.org/debian bookworm/main amd64 m4 amd64 1.4.19-3 [287 kB] Get: 23 http://deb.debian.org/debian bookworm/main amd64 autoconf all 2.71-3 [332 kB] Get: 24 http://deb.debian.org/debian bookworm/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 25 http://deb.debian.org/debian bookworm/main amd64 automake all 1:1.16.5-1.3 [823 kB] Get: 26 http://deb.debian.org/debian bookworm/main amd64 autopoint all 0.21-12 [495 kB] Get: 27 http://deb.debian.org/debian bookworm/main amd64 libevent-2.1-7 amd64 2.1.12-stable-8 [180 kB] Get: 28 http://deb.debian.org/debian bookworm/main amd64 libgc1 amd64 1:8.2.2-3 [245 kB] Get: 29 http://deb.debian.org/debian bookworm/main amd64 libbsd0 amd64 0.11.7-2 [117 kB] Get: 30 http://deb.debian.org/debian bookworm/main amd64 libedit2 amd64 3.1-20221030-2 [93.0 kB] Get: 31 http://deb.debian.org/debian bookworm/main amd64 libicu72 amd64 72.1-3 [9376 kB] Get: 32 http://deb.debian.org/debian bookworm/main amd64 libxml2 amd64 2.9.14+dfsg-1.3~deb12u1 [687 kB] Get: 33 http://deb.debian.org/debian bookworm/main amd64 libz3-4 amd64 4.8.12-3.1 [7216 kB] Get: 34 http://deb.debian.org/debian bookworm/main amd64 libllvm14 amd64 1:14.0.6-12 [21.8 MB] Get: 35 http://deb.debian.org/debian bookworm/main amd64 libpcre3 amd64 2:8.39-15 [341 kB] Get: 36 http://deb.debian.org/debian bookworm/main amd64 libgc-dev amd64 1:8.2.2-3 [410 kB] Get: 37 http://deb.debian.org/debian bookworm/main amd64 libpkgconf3 amd64 1.8.1-1 [36.1 kB] Get: 38 http://deb.debian.org/debian bookworm/main amd64 pkgconf-bin amd64 1.8.1-1 [29.5 kB] Get: 39 http://deb.debian.org/debian bookworm/main amd64 pkgconf amd64 1.8.1-1 [25.9 kB] Get: 40 http://deb.debian.org/debian bookworm/main amd64 pkg-config amd64 1.8.1-1 [13.7 kB] Get: 41 http://deb.debian.org/debian bookworm/main amd64 libpcre16-3 amd64 2:8.39-15 [257 kB] Get: 42 http://deb.debian.org/debian bookworm/main amd64 libpcre32-3 amd64 2:8.39-15 [248 kB] Get: 43 http://deb.debian.org/debian bookworm/main amd64 libpcrecpp0v5 amd64 2:8.39-15 [143 kB] Get: 44 http://deb.debian.org/debian bookworm/main amd64 libpcre3-dev amd64 2:8.39-15 [653 kB] Get: 45 http://deb.debian.org/debian bookworm/main amd64 libevent-core-2.1-7 amd64 2.1.12-stable-8 [131 kB] Get: 46 http://deb.debian.org/debian bookworm/main amd64 libevent-extra-2.1-7 amd64 2.1.12-stable-8 [107 kB] Get: 47 http://deb.debian.org/debian bookworm/main amd64 libevent-pthreads-2.1-7 amd64 2.1.12-stable-8 [53.6 kB] Get: 48 http://deb.debian.org/debian bookworm/main amd64 libevent-openssl-2.1-7 amd64 2.1.12-stable-8 [60.6 kB] Get: 49 http://deb.debian.org/debian bookworm/main amd64 libevent-dev amd64 2.1.12-stable-8 [305 kB] Get: 50 http://deb.debian.org/debian bookworm/main amd64 crystal amd64 1.6.0+dfsg-3 [3585 kB] Get: 51 http://deb.debian.org/debian bookworm/main amd64 libdebhelper-perl all 13.11.4 [81.2 kB] Get: 52 http://deb.debian.org/debian bookworm/main amd64 libtool all 2.4.7-5 [517 kB] Get: 53 http://deb.debian.org/debian bookworm/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 54 http://deb.debian.org/debian bookworm/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 55 http://deb.debian.org/debian bookworm/main amd64 libsub-override-perl all 0.09-4 [9304 B] Get: 56 http://deb.debian.org/debian bookworm/main amd64 libfile-stripnondeterminism-perl all 1.13.1-1 [19.4 kB] Get: 57 http://deb.debian.org/debian bookworm/main amd64 dh-strip-nondeterminism all 1.13.1-1 [8620 B] Get: 58 http://deb.debian.org/debian bookworm/main amd64 libelf1 amd64 0.188-2.1 [174 kB] Get: 59 http://deb.debian.org/debian bookworm/main amd64 dwz amd64 0.15-1 [109 kB] Get: 60 http://deb.debian.org/debian bookworm/main amd64 gettext amd64 0.21-12 [1300 kB] Get: 61 http://deb.debian.org/debian bookworm/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 62 http://deb.debian.org/debian bookworm/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 63 http://deb.debian.org/debian bookworm/main amd64 debhelper all 13.11.4 [942 kB] Get: 64 http://deb.debian.org/debian bookworm/main amd64 libbrotli1 amd64 1.0.9-2+b6 [275 kB] Get: 65 http://deb.debian.org/debian bookworm/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg-10 [20.3 kB] Get: 66 http://deb.debian.org/debian bookworm/main amd64 libsasl2-2 amd64 2.1.28+dfsg-10 [59.7 kB] Get: 67 http://deb.debian.org/debian bookworm/main amd64 libldap-2.5-0 amd64 2.5.13+dfsg-5 [183 kB] Get: 68 http://deb.debian.org/debian bookworm/main amd64 libnghttp2-14 amd64 1.52.0-1+deb12u1 [72.4 kB] Get: 69 http://deb.debian.org/debian bookworm/main amd64 libpsl5 amd64 0.21.2-1 [58.7 kB] Get: 70 http://deb.debian.org/debian bookworm/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2+b2 [60.8 kB] Get: 71 http://deb.debian.org/debian bookworm/main amd64 libssh2-1 amd64 1.10.0-3+b1 [179 kB] Get: 72 http://deb.debian.org/debian bookworm/main amd64 libcurl3-gnutls amd64 7.88.1-10+deb12u4 [385 kB] Get: 73 http://deb.debian.org/debian bookworm/main amd64 liberror-perl all 0.17029-2 [29.0 kB] Get: 74 http://deb.debian.org/debian bookworm/main amd64 git-man all 1:2.39.2-1.1 [2049 kB] Get: 75 http://deb.debian.org/debian bookworm/main amd64 git amd64 1:2.39.2-1.1 [7171 kB] Get: 76 http://deb.debian.org/debian bookworm/main amd64 icu-devtools amd64 72.1-3 [206 kB] Get: 77 http://deb.debian.org/debian bookworm/main amd64 libmd-dev amd64 1.0.4-2 [47.0 kB] Get: 78 http://deb.debian.org/debian bookworm/main amd64 libbsd-dev amd64 0.11.7-2 [243 kB] Get: 79 http://deb.debian.org/debian bookworm/main amd64 libclang-cpp14 amd64 1:14.0.6-12 [11.1 MB] Get: 80 http://deb.debian.org/debian bookworm/main amd64 libnspr4 amd64 2:4.35-1 [113 kB] Get: 81 http://deb.debian.org/debian bookworm/main amd64 libnss3 amd64 2:3.87.1-1 [1331 kB] Get: 82 http://deb.debian.org/debian bookworm/main amd64 nss-plugin-pem amd64 1.0.8+1-1 [54.6 kB] Get: 83 http://deb.debian.org/debian bookworm/main amd64 libcurl3-nss amd64 7.88.1-10+deb12u4 [394 kB] Get: 84 http://deb.debian.org/debian bookworm/main amd64 libncurses6 amd64 6.4-4 [103 kB] Get: 85 http://deb.debian.org/debian bookworm/main amd64 libncurses-dev amd64 6.4-4 [349 kB] Get: 86 http://deb.debian.org/debian bookworm/main amd64 libedit-dev amd64 3.1-20221030-2 [113 kB] Get: 87 http://deb.debian.org/debian bookworm/main amd64 libffi-dev amd64 3.4.4-1 [59.4 kB] Get: 88 http://deb.debian.org/debian bookworm/main amd64 libgmpxx4ldbl amd64 2:6.2.1+dfsg1-1.1 [338 kB] Get: 89 http://deb.debian.org/debian bookworm/main amd64 libgmp-dev amd64 2:6.2.1+dfsg1-1.1 [641 kB] Get: 90 http://deb.debian.org/debian bookworm/main amd64 libicu-dev amd64 72.1-3 [10.3 MB] Get: 91 http://deb.debian.org/debian bookworm/main amd64 libpfm4 amd64 4.13.0-1 [294 kB] Get: 92 http://deb.debian.org/debian bookworm/main amd64 libssl-dev amd64 3.0.11-1~deb12u2 [2430 kB] Get: 93 http://deb.debian.org/debian bookworm/main amd64 libxml2-dev amd64 2.9.14+dfsg-1.3~deb12u1 [782 kB] Get: 94 http://deb.debian.org/debian bookworm/main amd64 libyaml-0-2 amd64 0.2.5-1 [53.6 kB] Get: 95 http://deb.debian.org/debian bookworm/main amd64 libyaml-dev amd64 0.2.5-1 [64.5 kB] Get: 96 http://deb.debian.org/debian bookworm/main amd64 libz3-dev amd64 4.8.12-3.1 [90.6 kB] Get: 97 http://deb.debian.org/debian bookworm/main amd64 lld-14 amd64 1:14.0.6-12 [1192 kB] Get: 98 http://deb.debian.org/debian bookworm/main amd64 llvm-14-runtime amd64 1:14.0.6-12 [477 kB] Get: 99 http://deb.debian.org/debian bookworm/main amd64 llvm-14-linker-tools amd64 1:14.0.6-12 [1288 kB] Get: 100 http://deb.debian.org/debian bookworm/main amd64 llvm-14 amd64 1:14.0.6-12 [11.7 MB] Get: 101 http://deb.debian.org/debian bookworm/main amd64 python3-pkg-resources all 66.1.1-1 [296 kB] Get: 102 http://deb.debian.org/debian bookworm/main amd64 python3-pygments all 2.14.0+dfsg-1 [783 kB] Get: 103 http://deb.debian.org/debian bookworm/main amd64 python3-yaml amd64 6.0-3+b2 [119 kB] Get: 104 http://deb.debian.org/debian bookworm/main amd64 llvm-14-tools amd64 1:14.0.6-12 [405 kB] Get: 105 http://deb.debian.org/debian bookworm/main amd64 llvm-14-dev amd64 1:14.0.6-12 [33.9 MB] Get: 106 http://deb.debian.org/debian bookworm/main amd64 zlib1g-dev amd64 1:1.2.13.dfsg-1 [916 kB] Fetched 151 MB in 2s (93.7 MB/s) debconf: delaying package configuration, since apt-utils is not installed Selecting previously unselected package libpython3.11-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 ... 18148 files and directories currently installed.) Preparing to unpack .../libpython3.11-minimal_3.11.2-6_amd64.deb ... Unpacking libpython3.11-minimal:amd64 (3.11.2-6) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.5.0-1_amd64.deb ... Unpacking libexpat1:amd64 (2.5.0-1) ... Selecting previously unselected package python3.11-minimal. Preparing to unpack .../python3.11-minimal_3.11.2-6_amd64.deb ... Unpacking python3.11-minimal (3.11.2-6) ... Setting up libpython3.11-minimal:amd64 (3.11.2-6) ... Setting up libexpat1:amd64 (2.5.0-1) ... Setting up python3.11-minimal (3.11.2-6) ... 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 ... 18464 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.11.2-1+b1_amd64.deb ... Unpacking python3-minimal (3.11.2-1+b1) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_10.0.0_all.deb ... Unpacking media-types (10.0.0) ... Selecting previously unselected package readline-common. Preparing to unpack .../2-readline-common_8.2-1.3_all.deb ... Unpacking readline-common (8.2-1.3) ... Selecting previously unselected package libreadline8:amd64. Preparing to unpack .../3-libreadline8_8.2-1.3_amd64.deb ... Unpacking libreadline8:amd64 (8.2-1.3) ... Selecting previously unselected package libpython3.11-stdlib:amd64. Preparing to unpack .../4-libpython3.11-stdlib_3.11.2-6_amd64.deb ... Unpacking libpython3.11-stdlib:amd64 (3.11.2-6) ... Selecting previously unselected package python3.11. Preparing to unpack .../5-python3.11_3.11.2-6_amd64.deb ... Unpacking python3.11 (3.11.2-6) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../6-libpython3-stdlib_3.11.2-1+b1_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.11.2-1+b1) ... Setting up python3-minimal (3.11.2-1+b1) ... 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 ... 18898 files and directories currently installed.) Preparing to unpack .../00-python3_3.11.2-1+b1_amd64.deb ... Unpacking python3 (3.11.2-1+b1) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../01-sensible-utils_0.0.17+nmu1_all.deb ... Unpacking sensible-utils (0.0.17+nmu1) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../02-libmagic-mgc_1%3a5.44-3_amd64.deb ... Unpacking libmagic-mgc (1:5.44-3) ... Selecting previously unselected package libmagic1:amd64. Preparing to unpack .../03-libmagic1_1%3a5.44-3_amd64.deb ... Unpacking libmagic1:amd64 (1:5.44-3) ... Selecting previously unselected package file. Preparing to unpack .../04-file_1%3a5.44-3_amd64.deb ... Unpacking file (1:5.44-3) ... Selecting previously unselected package gettext-base. Preparing to unpack .../05-gettext-base_0.21-12_amd64.deb ... Unpacking gettext-base (0.21-12) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../06-libuchardet0_0.0.7-1_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.7-1) ... Selecting previously unselected package groff-base. Preparing to unpack .../07-groff-base_1.22.4-10_amd64.deb ... Unpacking groff-base (1.22.4-10) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../08-bsdextrautils_2.38.1-5+b1_amd64.deb ... Unpacking bsdextrautils (2.38.1-5+b1) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../09-libpipeline1_1.5.7-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.7-1) ... Selecting previously unselected package man-db. Preparing to unpack .../10-man-db_2.11.2-2_amd64.deb ... Unpacking man-db (2.11.2-2) ... Selecting previously unselected package m4. Preparing to unpack .../11-m4_1.4.19-3_amd64.deb ... Unpacking m4 (1.4.19-3) ... Selecting previously unselected package autoconf. Preparing to unpack .../12-autoconf_2.71-3_all.deb ... Unpacking autoconf (2.71-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../13-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../14-automake_1%3a1.16.5-1.3_all.deb ... Unpacking automake (1:1.16.5-1.3) ... Selecting previously unselected package autopoint. Preparing to unpack .../15-autopoint_0.21-12_all.deb ... Unpacking autopoint (0.21-12) ... Selecting previously unselected package libevent-2.1-7:amd64. Preparing to unpack .../16-libevent-2.1-7_2.1.12-stable-8_amd64.deb ... Unpacking libevent-2.1-7:amd64 (2.1.12-stable-8) ... Selecting previously unselected package libgc1:amd64. Preparing to unpack .../17-libgc1_1%3a8.2.2-3_amd64.deb ... Unpacking libgc1:amd64 (1:8.2.2-3) ... Selecting previously unselected package libbsd0:amd64. Preparing to unpack .../18-libbsd0_0.11.7-2_amd64.deb ... Unpacking libbsd0:amd64 (0.11.7-2) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../19-libedit2_3.1-20221030-2_amd64.deb ... Unpacking libedit2:amd64 (3.1-20221030-2) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../20-libicu72_72.1-3_amd64.deb ... Unpacking libicu72:amd64 (72.1-3) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../21-libxml2_2.9.14+dfsg-1.3~deb12u1_amd64.deb ... Unpacking libxml2:amd64 (2.9.14+dfsg-1.3~deb12u1) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../22-libz3-4_4.8.12-3.1_amd64.deb ... Unpacking libz3-4:amd64 (4.8.12-3.1) ... Selecting previously unselected package libllvm14:amd64. Preparing to unpack .../23-libllvm14_1%3a14.0.6-12_amd64.deb ... Unpacking libllvm14:amd64 (1:14.0.6-12) ... Selecting previously unselected package libpcre3:amd64. Preparing to unpack .../24-libpcre3_2%3a8.39-15_amd64.deb ... Unpacking libpcre3:amd64 (2:8.39-15) ... Selecting previously unselected package libgc-dev:amd64. Preparing to unpack .../25-libgc-dev_1%3a8.2.2-3_amd64.deb ... Unpacking libgc-dev:amd64 (1:8.2.2-3) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../26-libpkgconf3_1.8.1-1_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-1) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../27-pkgconf-bin_1.8.1-1_amd64.deb ... Unpacking pkgconf-bin (1.8.1-1) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../28-pkgconf_1.8.1-1_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-1) ... Selecting previously unselected package pkg-config:amd64. Preparing to unpack .../29-pkg-config_1.8.1-1_amd64.deb ... Unpacking pkg-config:amd64 (1.8.1-1) ... Selecting previously unselected package libpcre16-3:amd64. Preparing to unpack .../30-libpcre16-3_2%3a8.39-15_amd64.deb ... Unpacking libpcre16-3:amd64 (2:8.39-15) ... Selecting previously unselected package libpcre32-3:amd64. Preparing to unpack .../31-libpcre32-3_2%3a8.39-15_amd64.deb ... Unpacking libpcre32-3:amd64 (2:8.39-15) ... Selecting previously unselected package libpcrecpp0v5:amd64. Preparing to unpack .../32-libpcrecpp0v5_2%3a8.39-15_amd64.deb ... Unpacking libpcrecpp0v5:amd64 (2:8.39-15) ... Selecting previously unselected package libpcre3-dev:amd64. Preparing to unpack .../33-libpcre3-dev_2%3a8.39-15_amd64.deb ... Unpacking libpcre3-dev:amd64 (2:8.39-15) ... Selecting previously unselected package libevent-core-2.1-7:amd64. Preparing to unpack .../34-libevent-core-2.1-7_2.1.12-stable-8_amd64.deb ... Unpacking libevent-core-2.1-7:amd64 (2.1.12-stable-8) ... Selecting previously unselected package libevent-extra-2.1-7:amd64. Preparing to unpack .../35-libevent-extra-2.1-7_2.1.12-stable-8_amd64.deb ... Unpacking libevent-extra-2.1-7:amd64 (2.1.12-stable-8) ... Selecting previously unselected package libevent-pthreads-2.1-7:amd64. Preparing to unpack .../36-libevent-pthreads-2.1-7_2.1.12-stable-8_amd64.deb ... Unpacking libevent-pthreads-2.1-7:amd64 (2.1.12-stable-8) ... Selecting previously unselected package libevent-openssl-2.1-7:amd64. Preparing to unpack .../37-libevent-openssl-2.1-7_2.1.12-stable-8_amd64.deb ... Unpacking libevent-openssl-2.1-7:amd64 (2.1.12-stable-8) ... Selecting previously unselected package libevent-dev. Preparing to unpack .../38-libevent-dev_2.1.12-stable-8_amd64.deb ... Unpacking libevent-dev (2.1.12-stable-8) ... Selecting previously unselected package crystal. Preparing to unpack .../39-crystal_1.6.0+dfsg-3_amd64.deb ... Unpacking crystal (1.6.0+dfsg-3) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../40-libdebhelper-perl_13.11.4_all.deb ... Unpacking libdebhelper-perl (13.11.4) ... Selecting previously unselected package libtool. Preparing to unpack .../41-libtool_2.4.7-5_all.deb ... Unpacking libtool (2.4.7-5) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../42-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../43-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libsub-override-perl. Preparing to unpack .../44-libsub-override-perl_0.09-4_all.deb ... Unpacking libsub-override-perl (0.09-4) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../45-libfile-stripnondeterminism-perl_1.13.1-1_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.13.1-1) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../46-dh-strip-nondeterminism_1.13.1-1_all.deb ... Unpacking dh-strip-nondeterminism (1.13.1-1) ... Selecting previously unselected package libelf1:amd64. Preparing to unpack .../47-libelf1_0.188-2.1_amd64.deb ... Unpacking libelf1:amd64 (0.188-2.1) ... Selecting previously unselected package dwz. Preparing to unpack .../48-dwz_0.15-1_amd64.deb ... Unpacking dwz (0.15-1) ... Selecting previously unselected package gettext. Preparing to unpack .../49-gettext_0.21-12_amd64.deb ... Unpacking gettext (0.21-12) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../50-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 .../51-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../52-debhelper_13.11.4_all.deb ... Unpacking debhelper (13.11.4) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../53-libbrotli1_1.0.9-2+b6_amd64.deb ... Unpacking libbrotli1:amd64 (1.0.9-2+b6) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../54-libsasl2-modules-db_2.1.28+dfsg-10_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg-10) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../55-libsasl2-2_2.1.28+dfsg-10_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg-10) ... Selecting previously unselected package libldap-2.5-0:amd64. Preparing to unpack .../56-libldap-2.5-0_2.5.13+dfsg-5_amd64.deb ... Unpacking libldap-2.5-0:amd64 (2.5.13+dfsg-5) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../57-libnghttp2-14_1.52.0-1+deb12u1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.52.0-1+deb12u1) ... Selecting previously unselected package libpsl5:amd64. Preparing to unpack .../58-libpsl5_0.21.2-1_amd64.deb ... Unpacking libpsl5:amd64 (0.21.2-1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../59-librtmp1_2.4+20151223.gitfa8646d.1-2+b2_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b2) ... Selecting previously unselected package libssh2-1:amd64. Preparing to unpack .../60-libssh2-1_1.10.0-3+b1_amd64.deb ... Unpacking libssh2-1:amd64 (1.10.0-3+b1) ... Selecting previously unselected package libcurl3-gnutls:amd64. Preparing to unpack .../61-libcurl3-gnutls_7.88.1-10+deb12u4_amd64.deb ... Unpacking libcurl3-gnutls:amd64 (7.88.1-10+deb12u4) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../62-liberror-perl_0.17029-2_all.deb ... Unpacking liberror-perl (0.17029-2) ... Selecting previously unselected package git-man. Preparing to unpack .../63-git-man_1%3a2.39.2-1.1_all.deb ... Unpacking git-man (1:2.39.2-1.1) ... Selecting previously unselected package git. Preparing to unpack .../64-git_1%3a2.39.2-1.1_amd64.deb ... Unpacking git (1:2.39.2-1.1) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../65-icu-devtools_72.1-3_amd64.deb ... Unpacking icu-devtools (72.1-3) ... Selecting previously unselected package libmd-dev:amd64. Preparing to unpack .../66-libmd-dev_1.0.4-2_amd64.deb ... Unpacking libmd-dev:amd64 (1.0.4-2) ... Selecting previously unselected package libbsd-dev:amd64. Preparing to unpack .../67-libbsd-dev_0.11.7-2_amd64.deb ... Unpacking libbsd-dev:amd64 (0.11.7-2) ... Selecting previously unselected package libclang-cpp14. Preparing to unpack .../68-libclang-cpp14_1%3a14.0.6-12_amd64.deb ... Unpacking libclang-cpp14 (1:14.0.6-12) ... Selecting previously unselected package libnspr4:amd64. Preparing to unpack .../69-libnspr4_2%3a4.35-1_amd64.deb ... Unpacking libnspr4:amd64 (2:4.35-1) ... Selecting previously unselected package libnss3:amd64. Preparing to unpack .../70-libnss3_2%3a3.87.1-1_amd64.deb ... Unpacking libnss3:amd64 (2:3.87.1-1) ... Selecting previously unselected package nss-plugin-pem:amd64. Preparing to unpack .../71-nss-plugin-pem_1.0.8+1-1_amd64.deb ... Unpacking nss-plugin-pem:amd64 (1.0.8+1-1) ... Selecting previously unselected package libcurl3-nss:amd64. Preparing to unpack .../72-libcurl3-nss_7.88.1-10+deb12u4_amd64.deb ... Unpacking libcurl3-nss:amd64 (7.88.1-10+deb12u4) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../73-libncurses6_6.4-4_amd64.deb ... Unpacking libncurses6:amd64 (6.4-4) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../74-libncurses-dev_6.4-4_amd64.deb ... Unpacking libncurses-dev:amd64 (6.4-4) ... Selecting previously unselected package libedit-dev:amd64. Preparing to unpack .../75-libedit-dev_3.1-20221030-2_amd64.deb ... Unpacking libedit-dev:amd64 (3.1-20221030-2) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../76-libffi-dev_3.4.4-1_amd64.deb ... Unpacking libffi-dev:amd64 (3.4.4-1) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../77-libgmpxx4ldbl_2%3a6.2.1+dfsg1-1.1_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.2.1+dfsg1-1.1) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../78-libgmp-dev_2%3a6.2.1+dfsg1-1.1_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.2.1+dfsg1-1.1) ... Selecting previously unselected package libicu-dev:amd64. Preparing to unpack .../79-libicu-dev_72.1-3_amd64.deb ... Unpacking libicu-dev:amd64 (72.1-3) ... Selecting previously unselected package libpfm4:amd64. Preparing to unpack .../80-libpfm4_4.13.0-1_amd64.deb ... Unpacking libpfm4:amd64 (4.13.0-1) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../81-libssl-dev_3.0.11-1~deb12u2_amd64.deb ... Unpacking libssl-dev:amd64 (3.0.11-1~deb12u2) ... Selecting previously unselected package libxml2-dev:amd64. Preparing to unpack .../82-libxml2-dev_2.9.14+dfsg-1.3~deb12u1_amd64.deb ... Unpacking libxml2-dev:amd64 (2.9.14+dfsg-1.3~deb12u1) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../83-libyaml-0-2_0.2.5-1_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-1) ... Selecting previously unselected package libyaml-dev:amd64. Preparing to unpack .../84-libyaml-dev_0.2.5-1_amd64.deb ... Unpacking libyaml-dev:amd64 (0.2.5-1) ... Selecting previously unselected package libz3-dev:amd64. Preparing to unpack .../85-libz3-dev_4.8.12-3.1_amd64.deb ... Unpacking libz3-dev:amd64 (4.8.12-3.1) ... Selecting previously unselected package lld-14. Preparing to unpack .../86-lld-14_1%3a14.0.6-12_amd64.deb ... Unpacking lld-14 (1:14.0.6-12) ... Selecting previously unselected package llvm-14-runtime. Preparing to unpack .../87-llvm-14-runtime_1%3a14.0.6-12_amd64.deb ... Unpacking llvm-14-runtime (1:14.0.6-12) ... Selecting previously unselected package llvm-14-linker-tools. Preparing to unpack .../88-llvm-14-linker-tools_1%3a14.0.6-12_amd64.deb ... Unpacking llvm-14-linker-tools (1:14.0.6-12) ... Selecting previously unselected package llvm-14. Preparing to unpack .../89-llvm-14_1%3a14.0.6-12_amd64.deb ... Unpacking llvm-14 (1:14.0.6-12) ... Selecting previously unselected package python3-pkg-resources. Preparing to unpack .../90-python3-pkg-resources_66.1.1-1_all.deb ... Unpacking python3-pkg-resources (66.1.1-1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../91-python3-pygments_2.14.0+dfsg-1_all.deb ... Unpacking python3-pygments (2.14.0+dfsg-1) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../92-python3-yaml_6.0-3+b2_amd64.deb ... Unpacking python3-yaml (6.0-3+b2) ... Selecting previously unselected package llvm-14-tools. Preparing to unpack .../93-llvm-14-tools_1%3a14.0.6-12_amd64.deb ... Unpacking llvm-14-tools (1:14.0.6-12) ... Selecting previously unselected package llvm-14-dev. Preparing to unpack .../94-llvm-14-dev_1%3a14.0.6-12_amd64.deb ... Unpacking llvm-14-dev (1:14.0.6-12) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../95-zlib1g-dev_1%3a1.2.13.dfsg-1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.2.13.dfsg-1) ... Setting up media-types (10.0.0) ... Setting up libpipeline1:amd64 (1.5.7-1) ... Setting up libpsl5:amd64 (0.21.2-1) ... Setting up libicu72:amd64 (72.1-3) ... Setting up bsdextrautils (2.38.1-5+b1) ... Setting up libpcre16-3:amd64 (2:8.39-15) ... Setting up libmagic-mgc (1:5.44-3) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-1) ... Setting up libdebhelper-perl (13.11.4) ... Setting up libbrotli1:amd64 (1.0.9-2+b6) ... Setting up libnghttp2-14:amd64 (1.52.0-1+deb12u1) ... Setting up libmagic1:amd64 (1:5.44-3) ... Setting up gettext-base (0.21-12) ... Setting up m4 (1.4.19-3) ... Setting up file (1:5.44-3) ... Setting up libffi-dev:amd64 (3.4.4-1) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg-10) ... Setting up liberror-perl (0.17029-2) ... Setting up libpcre3:amd64 (2:8.39-15) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:amd64 (4.8.12-3.1) ... Setting up libpkgconf3:amd64 (1.8.1-1) ... Setting up libgmpxx4ldbl:amd64 (2:6.2.1+dfsg1-1.1) ... Setting up libpfm4:amd64 (4.13.0-1) ... Setting up libnspr4:amd64 (2:4.35-1) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b2) ... Setting up libncurses6:amd64 (6.4-4) ... Setting up libssl-dev:amd64 (3.0.11-1~deb12u2) ... Setting up libpcre32-3:amd64 (2:8.39-15) ... Setting up libevent-core-2.1-7:amd64 (2.1.12-stable-8) ... Setting up libevent-2.1-7:amd64 (2.1.12-stable-8) ... Setting up autopoint (0.21-12) ... Setting up icu-devtools (72.1-3) ... Setting up pkgconf-bin (1.8.1-1) ... Setting up libgc1:amd64 (1:8.2.2-3) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg-10) ... Setting up autoconf (2.71-3) ... Setting up zlib1g-dev:amd64 (1:1.2.13.dfsg-1) ... Setting up sensible-utils (0.0.17+nmu1) ... Setting up libuchardet0:amd64 (0.0.7-1) ... Setting up libmd-dev:amd64 (1.0.4-2) ... Setting up libsub-override-perl (0.09-4) ... Setting up git-man (1:2.39.2-1.1) ... Setting up libssh2-1:amd64 (1.10.0-3+b1) ... Setting up libgc-dev:amd64 (1:8.2.2-3) ... Setting up libbsd0:amd64 (0.11.7-2) ... Setting up libelf1:amd64 (0.188-2.1) ... Setting up readline-common (8.2-1.3) ... Setting up libicu-dev:amd64 (72.1-3) ... Setting up libxml2:amd64 (2.9.14+dfsg-1.3~deb12u1) ... Setting up libbsd-dev:amd64 (0.11.7-2) ... Setting up libevent-pthreads-2.1-7:amd64 (2.1.12-stable-8) ... Setting up automake (1:1.16.5-1.3) ... update-alternatives: using /usr/bin/automake-1.16 to provide /usr/bin/automake (automake) in auto mode Setting up libpcrecpp0v5:amd64 (2:8.39-15) ... Setting up libfile-stripnondeterminism-perl (1.13.1-1) ... Setting up libz3-dev:amd64 (4.8.12-3.1) ... Setting up libevent-extra-2.1-7:amd64 (2.1.12-stable-8) ... Setting up libncurses-dev:amd64 (6.4-4) ... Setting up gettext (0.21-12) ... Setting up libgmp-dev:amd64 (2:6.2.1+dfsg1-1.1) ... Setting up libyaml-dev:amd64 (0.2.5-1) ... Setting up libtool (2.4.7-5) ... Setting up libpcre3-dev:amd64 (2:8.39-15) ... Setting up libedit2:amd64 (3.1-20221030-2) ... Setting up libreadline8:amd64 (8.2-1.3) ... Setting up libevent-openssl-2.1-7:amd64 (2.1.12-stable-8) ... Setting up libnss3:amd64 (2:3.87.1-1) ... Setting up libldap-2.5-0:amd64 (2.5.13+dfsg-5) ... Setting up pkgconf:amd64 (1.8.1-1) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libxml2-dev:amd64 (2.9.14+dfsg-1.3~deb12u1) ... Setting up libedit-dev:amd64 (3.1-20221030-2) ... Setting up libevent-dev (2.1.12-stable-8) ... Setting up pkg-config:amd64 (1.8.1-1) ... Setting up dh-strip-nondeterminism (1.13.1-1) ... Setting up libllvm14:amd64 (1:14.0.6-12) ... Setting up dwz (0.15-1) ... Setting up groff-base (1.22.4-10) ... Setting up llvm-14-linker-tools (1:14.0.6-12) ... Setting up crystal (1.6.0+dfsg-3) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpython3.11-stdlib:amd64 (3.11.2-6) ... Setting up nss-plugin-pem:amd64 (1.0.8+1-1) ... Setting up libcurl3-gnutls:amd64 (7.88.1-10+deb12u4) ... Setting up man-db (2.11.2-2) ... Not building database; man-db/auto-update is not 'true'. Setting up llvm-14-runtime (1:14.0.6-12) ... Setting up libclang-cpp14 (1:14.0.6-12) ... Setting up git (1:2.39.2-1.1) ... Setting up lld-14 (1:14.0.6-12) ... Setting up libcurl3-nss:amd64 (7.88.1-10+deb12u4) ... Setting up libpython3-stdlib:amd64 (3.11.2-1+b1) ... Setting up llvm-14 (1:14.0.6-12) ... Setting up python3.11 (3.11.2-6) ... Setting up debhelper (13.11.4) ... Setting up python3 (3.11.2-1+b1) ... Setting up python3-pkg-resources (66.1.1-1) ... Setting up python3-yaml (6.0-3+b2) ... Setting up python3-pygments (2.14.0+dfsg-1) ... Setting up llvm-14-tools (1:14.0.6-12) ... Setting up llvm-14-dev (1:14.0.6-12) ... Processing triggers for libc-bin (2.36-9+deb12u3) ... 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: Running cd /build/reproducible-path/crystal-1.6.0+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" HOME="/nonexistent/first-build" dpkg-genchanges -S > ../crystal_1.6.0+dfsg-3_source.changes dpkg-buildpackage: info: source package crystal dpkg-buildpackage: info: source version 1.6.0+dfsg-3 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by David Suárez dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_auto_clean make -j16 clean make[1]: Entering directory '/build/reproducible-path/crystal-1.6.0+dfsg' rm -rf .build rm -rf ./docs rm -rf src/llvm/ext/llvm_ext.o make[1]: Leaving directory '/build/reproducible-path/crystal-1.6.0+dfsg' debian/rules override_dh_clean make[1]: Entering directory '/build/reproducible-path/crystal-1.6.0+dfsg' dh_clean rm -f man/*.gz make[1]: Leaving directory '/build/reproducible-path/crystal-1.6.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.6.0+dfsg' dh_auto_build -- release=1 verbose=1 progress=1 threads=16 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" make -j16 "INSTALL=install --strip-program=true" release=1 verbose=1 progress=1 threads=16 CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib CRYSTAL_CACHE_DIR=/tmp/crystal make[2]: Entering directory '/build/reproducible-path/crystal-1.6.0+dfsg' Using /usr/bin/llvm-config-14 [version= 14.0.6] g++ -c -g -O2 -ffile-prefix-map=/build/reproducible-path/crystal-1.6.0+dfsg=. -fstack-protector-strong -Wformat -Werror=format-security -o src/llvm/ext/llvm_ext.o src/llvm/ext/llvm_ext.cc -I/usr/lib/llvm-14/include -std=c++14 -fno-exceptions -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS CRYSTAL_CONFIG_BUILD_COMMIT="" CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib SOURCE_DATE_EPOCH="1665087238" CRYSTAL_CONFIG_LIBRARY_PATH='$ORIGIN/../lib/crystal' ./bin/crystal build -Dwithout_playground -D strict_multi_assign --release --progress --threads 16 --link-flags="-Wl,-z,relro" -Dwithout_interpreter -o .build/crystal src/compiler/crystal.cr -D without_openssl -D without_zlib [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] [0/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) make[2]: Leaving directory '/build/reproducible-path/crystal-1.6.0+dfsg' make[1]: Leaving directory '/build/reproducible-path/crystal-1.6.0+dfsg' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/crystal-1.6.0+dfsg' make release=1 verbose=1 progress=1 threads=16 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" compiler_spec make[2]: Entering directory '/build/reproducible-path/crystal-1.6.0+dfsg' Using /usr/bin/llvm-config-14 [version= 14.0.6] CRYSTAL_CONFIG_BUILD_COMMIT="" CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib SOURCE_DATE_EPOCH="1665087238" ./bin/crystal build -Dwithout_playground -D strict_multi_assign --release --progress --threads 16 --link-flags="-Wl,-z,relro" -Dwithout_interpreter --exclude-warnings spec/std --exclude-warnings spec/compiler --exclude-warnings spec/primitives -o .build/compiler_spec spec/compiler_spec.cr Using compiled compiler at .build/crystal 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] [0/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) .build/compiler_spec -v Compiler has a valid version has a valid version compiles a file compiles a file runs subcommand in preference to a filename runs subcommand in preference to a filename treats all arguments post-filename as program arguments treats all arguments post-filename as program arguments Crystal::Config .host_target .host_target .linux_runtime_libc .linux_runtime_libc Crystal normalize_path assert assert assert assert assert assert assert assert Code gen: 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 (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) casts to recursive alias casts to recursive alias casts to recursive alias casts to recursive alias doesn't break with alias for link attributes doesn't break with alias for link attributes doesn't crash on cast to as recursive alias (#639) doesn't crash on cast to as recursive alias (#639) lazily solves aliases (#1346) lazily solves aliases (#1346) 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) overloads alias against generic (2) (#3261) overloads alias against generic (2) (#3261) Code gen: and codegens and with bool false and false codegens and with bool false and false codegens and with bool false and true codegens and with bool false and true codegens and with bool true and true codegens and with bool true and true codegens and with bool true and false codegens and with bool true and false codegens and with bool and int 1 codegens and with bool and int 1 codegens and with bool and int 2 codegens and with bool and int 2 codegens and with primitive type other than bool codegens and with primitive type other than bool codegens and with primitive type other than bool with union codegens and with primitive type other than bool with union codegens and with primitive type other than bool codegens and with primitive type other than bool codegens and with nilable as left node 1 codegens and with nilable as left node 1 codegens and with nilable as left node 2 codegens and with nilable as left node 2 codegens and with non-false union as left node codegens and with non-false union as left node 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 union as left node 1 codegens and with bool union as left node 1 codegens and with bool union as left node 2 codegens and with bool union as left node 2 codegens and with bool union as left node 3 codegens and with bool union as left node 3 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 2 codegens and with bool union as left node 2 codegens and with bool union as left node 3 codegens and with bool union as left node 3 codegens and with bool union as left node 4 codegens and with bool union as left node 4 codegens assign in right node, after must be nilable codegens assign in right node, after must be nilable codegens assign in right node, inside if must not be nil codegens assign in right node, inside if must not be nil codegens assign in right node, after if must be nilable codegens assign in right node, after if must be nilable Code gen: array literal spec creates custom non-generic array creates custom non-generic array creates custom generic array creates custom generic array 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 creates custom generic array via alias (2) creates custom generic array via alias (2) creates custom non-generic array in nested module creates custom non-generic array in nested module creates custom non-generic array in module creates custom non-generic array in module creates custom generic array in module (#5684) creates custom generic array in module (#5684) creates custom non-generic array, with splats creates custom non-generic array, with splats creates custom generic array, with splats creates custom generic array, with splats creates typed array creates typed array assignment in array literal works assignment in array literal works assignment in array-like literal works assignment in array-like literal works Code gen: asm codegens without inputs codegens without inputs codegens with two outputs codegens with two outputs codegens with one input codegens with one input codegens with two inputs codegens with two inputs Code gen: automatic cast casts literal integer (Int32 -> Int64) casts literal integer (Int32 -> Int64) casts literal integer (Int64 -> Int32, ok) casts literal integer (Int64 -> Int32, ok) casts literal integer (Int32 -> Float32) casts literal integer (Int32 -> Float32) casts literal integer (Int32 -> Float64) casts literal integer (Int32 -> Float64) casts literal float (Float32 -> Float64) casts literal float (Float32 -> Float64) casts literal float (Float64 -> Float32) casts literal float (Float64 -> Float32) casts symbol literal to enum casts symbol literal to enum casts Int32 to Int64 in ivar assignment casts Int32 to Int64 in ivar assignment casts Symbol to Enum in ivar assignment casts Symbol to Enum in ivar assignment casts Int32 to Int64 in cvar assignment casts Int32 to Int64 in cvar assignment casts Int32 to Int64 in lvar assignment casts Int32 to Int64 in lvar assignment casts Int32 to Int64 in ivar type declaration casts Int32 to Int64 in ivar type declaration casts Symbol to Enum in ivar type declaration casts Symbol to Enum in ivar type declaration casts Int32 to Int64 in cvar type declaration casts Int32 to Int64 in cvar type declaration casts Int32 -> Int64 in arg restriction casts Int32 -> Int64 in arg restriction casts Int32 to Int64 in ivar type declaration in generic casts Int32 to Int64 in ivar type declaration in generic does multidispatch with automatic casting (1) (#8217) does multidispatch with automatic casting (1) (#8217) does multidispatch with automatic casting (2) (#8217) does multidispatch with automatic casting (2) (#8217) does multidispatch with automatic casting (3) does multidispatch with automatic casting (3) doesn't autocast number on union (#8655) doesn't autocast number on union (#8655) casts integer variable to larger type (#9565) casts integer variable to larger type (#9565) Code gen: block generate inline generate inline passes yield arguments passes yield arguments pass arguments to yielder function pass arguments to yielder function pass self to yielder function pass self to yielder function pass self and arguments to yielder function pass self and arguments to yielder function allows access to local variables allows access to local variables can access instance vars from yielder function can access instance vars from yielder function can set instance vars from yielder function can set instance vars from yielder function can use instance methods from yielder function can use instance methods from yielder function can call methods from block when yielder is an instance method can call methods from block when yielder is an instance method nested yields nested yields assigns yield to argument assigns yield to argument can use global constant can use global constant return from yielder function return from yielder function return from block return from block return from yielder function (2) return from yielder function (2) union value of yielder function union value of yielder function allow return from function called from yielder function allow return from function called from yielder function 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 return from block that always returns from function that conditionally yields return from block that always returns from function that conditionally yields call block from dispatch call block from dispatch call block from dispatch and use local vars call block from dispatch and use local vars break without value returns nil break without value returns nil break block with yielder inside while break block with yielder inside while break from block returns from yielder break from block returns from yielder break from block with value break from block with value returns from block with value returns from block with value doesn't codegen after while that always yields and breaks doesn't codegen after while that always yields and breaks break from block with value break from block with value doesn't codegen call if arg yields and always breaks doesn't codegen call if arg yields and always breaks codegens nested return codegens nested return codegens nested break codegens nested break codegens call with block with call with arg that yields codegens call with block with call with arg that yields can break without value from yielder that returns nilable (1) can break without value from yielder that returns nilable (1) can break without value from yielder that returns nilable (2) can break without value from yielder that returns nilable (2) break with value from yielder that returns a nilable break with value from yielder that returns a nilable can use self inside a block called from dispatch can use self inside a block called from dispatch return from block called from dispatch return from block called from dispatch breaks from while in function called from block breaks from while in function called from block allows modifying yielded value (with literal) allows modifying yielded value (with literal) allows modifying yielded value (with variable) allows modifying yielded value (with variable) it yields nil from another call it yields nil from another call allows yield from dispatch call allows yield from dispatch call block with nilable type block with nilable type block with nilable type 2 block with nilable type 2 codegens block with nilable type with return (1) codegens block with nilable type with return (1) codegens block with nilable type with return (2) codegens block with nilable type with return (2) codegens block with union with return codegens block with union with return codegens if with call with block (ssa issue) codegens if with call with block (ssa issue) codegens block with return and yield and no return codegens block with return and yield and no return codegens while/break inside block codegens while/break inside block codegens block with union arg (1) codegens block with union arg (1) codegens block with union arg (2) codegens block with union arg (2) codegens block with virtual type arg codegens block with virtual type arg codegens call with blocks of different type without args codegens call with blocks of different type without args codegens dispatch with block and break (1) codegens dispatch with block and break (1) codegens dispatch with block and break (2) codegens dispatch with block and break (2) codegens block call when argument type changes codegens block call when argument type changes returns void when called with block returns void when called with block executes yield expression if no arg is given for block executes yield expression if no arg is given for block codegens bug with block and arg and var codegens bug with block and arg and var allows using var as block arg with outer var allows using var as block arg with outer var allows initialize with yield (#224) allows initialize with yield (#224) uses block inside array literal (bug) uses block inside array literal (bug) 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 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 bug with yield not_nil! that is never not nil codegens bug with yield not_nil! that is never not nil uses block var with same name as local var uses block var with same name as local var doesn't crash on untyped array to_s doesn't crash on untyped array to_s codegens block which always breaks but never enters (#494) codegens block which always breaks but never enters (#494) codegens block bug with conditional next and unconditional break (1) codegens block bug with conditional next and unconditional break (1) codegens block bug with conditional next and unconditional break (2) codegens block bug with conditional next and unconditional break (2) codegens block bug with conditional next and unconditional break (3) codegens block bug with conditional next and unconditional break (3) codegens block bug with conditional next and unconditional break (4) codegens block bug with conditional next and unconditional break (4) returns from proc literal returns from proc literal does next from captured block does next from captured block codegens captured block with next inside yielded block (#2097) codegens captured block with next inside yielded block (#2097) 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 yields inside yield (#682) yields inside yield (#682) yields splat yields splat yields more exps than block arg, through splat yields more exps than block arg, through splat uses splat in block argument uses splat in block argument uses splat in block argument, many args uses splat in block argument, many args uses block splat argument with union types uses block splat argument with union types auto-unpacks tuple auto-unpacks tuple unpacks tuple but doesn't override local variables unpacks tuple but doesn't override local variables codegens block with multiple underscores (#3054) codegens block with multiple underscores (#3054) breaks in var assignment (#3364) breaks in var assignment (#3364) nexts in var assignment (#3364) nexts in var assignment (#3364) dispatches with captured and non-captured block (#3969) dispatches with captured and non-captured block (#3969) codegens block with repeated underscore and different types (#4711) codegens block with repeated underscore and different types (#4711) doesn't crash on yield exp without a type (#8100) doesn't crash on yield exp without a type (#8100) clears nilable var before inlining block method (#10087) clears nilable var before inlining block method (#10087) (bug) doesn't set needs_value to true on every yield (#12442) (bug) doesn't set needs_value to true on every yield (#12442) Code gen: c enum codegens enum value codegens enum value codegens enum value 2 codegens enum value 2 codegens enum value 3 codegens enum value 3 codegens enum value 4 codegens enum value 4 codegens enum with 1 + 2 codegens enum with 1 + 2 codegens enum with 3 - 2 codegens enum with 3 - 2 codegens enum with 3 * 2 codegens enum with 3 * 2 codegens enum with 10 // 2 codegens enum with 10 // 2 codegens enum with 1 << 3 codegens enum with 1 << 3 codegens enum with 100 >> 3 codegens enum with 100 >> 3 codegens enum with 10 & 3 codegens enum with 10 & 3 codegens enum with 10 | 3 codegens enum with 10 | 3 codegens enum with (1 + 2) * 3 codegens enum with (1 + 2) * 3 codegens enum with 10 % 3 codegens enum with 10 % 3 codegens enum that refers to another enum constant codegens enum that refers to another enum constant codegens enum that refers to another constant codegens enum that refers to another constant Code gen: struct codegens struct property default value codegens struct property default value codegens struct property setter codegens struct property setter codegens struct property setter via pointer codegens struct property setter via pointer codegens struct property setter via pointer codegens struct property setter via pointer codegens set struct value with constant codegens set struct value with constant codegens union inside struct codegens union inside struct codegens struct get inside struct codegens struct get inside struct codegens struct set inside struct codegens struct set inside struct codegens pointer malloc of struct codegens pointer malloc of struct passes struct to method (1) passes struct to method (1) passes struct to method (2) passes struct to method (2) codegens struct access with -> and then . codegens struct access with -> and then . yields struct via -> yields struct via -> codegens assign struct to union codegens assign struct to union codegens passing pointerof(struct) to fun codegens passing pointerof(struct) to fun builds struct setter with fun type (1) builds struct setter with fun type (1) builds struct setter with fun type (2) builds struct setter with fun type (2) allows using named arguments for new allows using named arguments for new does to_s does to_s can access instance var from the outside (#1092) can access instance var from the outside (#1092) automatically converts numeric type in struct field assignment automatically converts numeric type in struct field assignment automatically converts numeric union type in struct field assignment automatically converts numeric union type in struct field assignment automatically converts nil to pointer automatically converts nil to pointer automatically converts by invoking to_unsafe automatically converts by invoking to_unsafe sets instance var to proc sets instance var to proc can access member of uninitialized struct behind type (#8774) can access member of uninitialized struct behind type (#8774) Code gen: c union codegens union property default value codegens union property default value codegens union property default value 2 codegens union property default value 2 codegens union property setter 1 codegens union property setter 1 codegens union property setter 2 codegens union property setter 2 codegens union property setter 1 via pointer codegens union property setter 1 via pointer codegens union property setter 2 via pointer codegens union property setter 2 via pointer codegens struct inside union codegens struct inside union codegens assign c union to union codegens assign c union to union builds union setter with fun type builds union setter with fun type does to_s does to_s automatically converts numeric type in field assignment automatically converts numeric type in field assignment 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 aligns to the member with biggest align requirements aligns to the member with biggest align requirements fills union type to the max size fills union type to the max size reads union instance var reads union instance var moves unions around correctly (#12550) moves unions around correctly (#12550) Code gen: case codegens case with one condition codegens case with one condition codegens case with two conditions codegens case with two conditions codegens case with else codegens case with else codegens case without whens but else codegens case without whens but else codegens case that always returns codegens case that always returns codegens case when cond is a call codegens case when cond is a call codegens case with class codegens case with class codegens value-less case codegens value-less case codegens case when constant bug (#1028) codegens case when constant bug (#1028) does case when with metaclass does case when with metaclass Code gen: cast allows casting object to pointer and back allows casting object to pointer and back casts from int to int casts from int to int casts from union to single type casts from union to single type casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to another union casts from union to another union casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from virtual to single type casts from virtual to single type casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from pointer to pointer casts from pointer to pointer casts to module casts to module casts from nilable to nil casts from nilable to nil casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts to base class making it virtual casts to base class making it virtual casts to bigger union casts to bigger union allows casting nil to Void* allows casting nil to Void* allows casting nilable type to Void* (1) allows casting nilable type to Void* (1) allows casting nilable type to Void* (2) allows casting nilable type to Void* (2) allows casting nilable type to Void* (3) allows casting nilable type to Void* (3) casts (bug) casts (bug) can cast from Void* to virtual type (#3014) can cast from Void* to virtual type (#3014) upcasts from non-generic to generic upcasts from non-generic to generic upcasts type to virtual (#3304) upcasts type to virtual (#3304) upcasts type to virtual (2) (#3304) upcasts type to virtual (2) (#3304) casts with block var that changes type (#3341) casts with block var that changes type (#3341) 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) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) can cast to metaclass (#11121) can cast to metaclass (#11121) Code gen: class codegens call to same instance codegens call to same instance codegens instance var codegens instance var codegens recursive type codegens recursive type codegens method call of instance var codegens method call of instance var codegens new which calls initialize codegens new which calls initialize codegens method from another method without obj and accesses instance vars codegens method from another method without obj and accesses instance vars codegens virtual call that calls another method codegens virtual call that calls another method codegens virtual method of generic class codegens virtual method of generic class changes instance variable in method (ssa bug) changes instance variable in method (ssa bug) calls method on Class class calls method on Class class uses number type var uses number type var calls class method without self calls class method without self calls class method without self (2) calls class method without self (2) assigns type to reference union type assigns type to reference union type does to_s for class does to_s for class allows fixing an instance variable's type allows fixing an instance variable's type codegens initialize with instance var codegens initialize with instance var reads other instance var reads other instance var reads a virtual type instance var reads a virtual type instance var reads a union type instance var (reference union, first type) reads a union type instance var (reference union, first type) reads a union type instance var (reference union, second type) reads a union type instance var (reference union, second type) reads a union type instance var (mixed union, first type) reads a union type instance var (mixed union, first type) reads a union type instance var (mixed union, second type) reads a union type instance var (mixed union, second type) never considers read instance var as closure (#12181) never considers read instance var as closure (#12181) runs with nilable instance var runs with nilable instance var runs with nil instance var when inheriting runs with nil instance var when inheriting codegens bug #168 codegens bug #168 allows initializing var with constant allows initializing var with constant codegens class method codegens class method codegens virtual class method codegens virtual class method allows using self in class scope allows using self in class scope allows using self in class scope allows using self in class scope 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 virtual metaclass type (1) does to_s for virtual metaclass type (1) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (2) does to_s for virtual metaclass type (3) does to_s for virtual metaclass type (3) builds generic class bug builds generic class bug resolves type declaration when accessing instance var (#348) resolves type declaration when accessing instance var (#348) gets class of virtual type gets class of virtual type notifies superclass recursively on inheritance (#576) notifies superclass recursively on inheritance (#576) 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 generic type (#855) works with array in variable initializer in generic type (#855) 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) does to_s on class does to_s on class invokes class method inside instance method (#1119) invokes class method inside instance method (#1119) codegens method of class union including Int (#1476) codegens method of class union including Int (#1476) can use a Main class (#1628) can use a Main class (#1628) codegens singleton (#718) codegens singleton (#718) doesn't crash if not using undefined instance variable in superclass doesn't crash if not using undefined instance variable in superclass codegens virtual metaclass union bug (#2597) codegens virtual metaclass union bug (#2597) doesn't crash on #1216 doesn't crash on #1216 doesn't crash on #1216 with pointerof doesn't crash on #1216 with pointerof doesn't crash on #1216 (reduced) doesn't crash on #1216 (reduced) doesn't crash on abstract class never instantiated (#2840) doesn't crash on abstract class never instantiated (#2840) can assign virtual metaclass to virtual metaclass (#3007) can assign virtual metaclass to virtual metaclass (#3007) transfers initializer from module to generic class transfers initializer from module to generic class transfers initializer from generic module to non-generic class transfers initializer from generic module to non-generic class transfers initializer from generic module to generic class transfers initializer from generic module to generic class doesn't skip false initializers (#3272) doesn't skip false initializers (#3272) doesn't skip zero initializers (#3272) doesn't skip zero initializers (#3272) codegens virtual generic class instance metaclass (#3819) codegens virtual generic class instance metaclass (#3819) codegens class with recursive tuple to class (#4520) codegens class with recursive tuple to class (#4520) runs instance variable initializer at the class level runs instance variable initializer at the class level runs instance variable initializer at the class level, for generic type runs instance variable initializer at the class level, for generic type codegens assignment of generic metaclasses (1) (#10394) codegens assignment of generic metaclasses (1) (#10394) codegens assignment of generic metaclasses (2) (#10394) codegens assignment of generic metaclasses (2) (#10394) codegens assignment of generic metaclasses (3) (#10394) codegens assignment of generic metaclasses (3) (#10394) codegens assignment of generic metaclasses (4) (#10394) codegens assignment of generic metaclasses (4) (#10394) codegens assignment of generic metaclasses, base is non-generic (1) (#10394) codegens assignment of generic metaclasses, base is non-generic (1) (#10394) codegens assignment of generic metaclasses, base is non-generic (2) (#10394) codegens assignment of generic metaclasses, base is non-generic (2) (#10394) Codegen: class var codegens class var codegens class var codegens class var as nil codegens class var as nil codegens class var inside instance method codegens class var inside instance method 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 codegens class var inside module codegens class var inside module accesses class var from proc literal accesses class var from proc literal reads class var before initializing it (hoisting) reads class var before initializing it (hoisting) uses var in class var initializer uses var in class var initializer reads simple class var before another complex one reads simple class var before another complex one initializes class var of union with single type initializes class var of union with single type initializes class var with array literal initializes class var with array literal codegens second class var initializer codegens second class var initializer initializes dependent constant before class var initializes dependent constant before class var declares and initializes declares and initializes doesn't use nilable type for initializer doesn't use nilable type for initializer codegens class var with begin and vars codegens class var with begin and vars codegens class var with type declaration begin and vars codegens class var with type declaration begin and vars codegens class var with nilable reference type codegens class var with nilable reference type initializes class var the moment it reaches it initializes class var the moment it reaches it gets pointerof class var gets pointerof class var gets pointerof class var complex constant gets pointerof class var complex constant doesn't inherit class var value in subclass doesn't inherit class var value in subclass doesn't inherit class var value in module doesn't inherit class var value in module reads class var from virtual type reads class var from virtual type reads class var from virtual type metaclass reads class var from virtual type metaclass writes class var from virtual type writes class var from virtual type declares var as uninitialized and initializes it unsafely declares var as uninitialized and initializes it unsafely doesn't crash with pointerof from another module doesn't crash with pointerof from another module codegens generic class with class var codegens generic class with class var inline initialization of simple class var inline initialization of simple class var catch infinite loop in class var initializer catch infinite loop in class var initializer runs class var side effects (#8862) runs class var side effects (#8862) Code gen: closure codegens simple closure at global scope codegens simple closure at global scope codegens simple closure in function codegens simple closure in function codegens simple closure in function with argument codegens simple closure in function with argument codegens simple closure in block codegens simple closure in block codegens closured nested in block codegens closured nested in block 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 closure with block that declares same var codegens closure with block that declares same var codegens closure with def that has an if codegens closure with def that has an if codegens multiple nested blocks codegens multiple nested blocks codegens closure with nested context without new closured vars codegens closure with nested context without new closured vars codegens closure with nested context without new closured vars codegens closure with nested context without new closured vars 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 unifies types of closured var unifies types of closured var codegens closure with block codegens closure with block codegens closure with self and var codegens closure with self and var codegens closure with implicit self and var codegens closure with implicit self and var codegens closure with instance var and var codegens closure with instance var and var codegens closure with instance var codegens closure with instance var codegens closure with instance var and block codegens closure with instance var and block codegen closure in instance method without self closured codegen closure in instance method without self closured codegens closure inside initialize inside block with self codegens closure inside initialize inside block with self doesn't free closure memory (bug) doesn't free closure memory (bug) codegens nested closure codegens nested closure codegens super nested closure codegens super nested closure codegens nested closure with block (1) codegens nested closure with block (1) codegens nested closure with block (2) codegens nested closure with block (2) codegens nested closure with nested closured variable codegens nested closure with nested closured variable codegens super nested closure with nested closured variable codegens super nested closure with nested closured variable codegens proc literal with struct codegens proc literal with struct codegens closure with struct codegens closure with struct 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 transforms block to proc literal transforms block to proc literal transforms block to proc literal with free var transforms block to proc literal with free var allows passing block as proc literal to new and to initialize allows passing block as proc literal to new and to initialize allows giving less block args when transforming block to proc literal allows giving less block args when transforming block to proc literal allows passing proc literal to def that captures block with & allows passing proc literal to def that captures block with & allows mixing yield and block.call allows mixing yield and block.call closures struct self closures struct self 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 with self doesn't form a closure if invoking class method with self captures block and accesses local variable (#2050) captures block and accesses local variable (#2050) codegens closured self in block (#3388) codegens closured self in block (#3388) doesn't incorrectly consider local as closured (#4948) doesn't incorrectly consider local as closured (#4948) ensures it can raise from the closure check ensures it can raise from the closure check allows passing an external function along allows passing an external function along allows passing an external function along (2) allows passing an external function along (2) Codegen: const define a constant define a constant support nested constant support nested constant support constant inside a def support constant inside a def finds nearest constant first finds nearest constant first allows constants with same name allows constants with same name constants with expression constants with expression finds global constant finds global constant define a constant in lib define a constant in lib invokes block in const invokes block in const declare constants in right order declare constants in right order uses correct types lookup uses correct types lookup codegens variable assignment in const codegens variable assignment in const declaring var declaring var initialize const that might raise an exception initialize const that might raise an exception allows implicit self in constant, called from another class (bug) allows implicit self in constant, called from another class (bug) codegens two consts with same variable name codegens two consts with same variable name works with variable declared inside if works with variable declared inside if 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 is declared later because of virtual dispatch codegens constant that is declared later because of virtual dispatch 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) uses const before declaring it (hoisting) uses const before declaring it (hoisting) uses const before declaring it in another module uses const before declaring it in another module initializes simple const initializes simple const initializes simple const via another const initializes simple const via another const initializes ARGC_UNSAFE initializes ARGC_UNSAFE gets pointerof constant gets pointerof constant gets pointerof complex constant gets pointerof complex constant gets pointerof constant inside class gets pointerof constant inside class inlines simple const inlines simple const inlines enum value inlines enum value inlines const with math inlines const with math inlines const referencing another const inlines const referencing another const inlines bool const inlines bool const inlines char const inlines char const synchronizes initialization of constants synchronizes initialization of constants runs const side effects (#8862) runs const side effects (#8862) supports closured vars inside initializers (#10474) supports closured vars inside initializers (#10474) supports storing function returning nil supports storing function returning nil Code gen: debug codegens abstract struct (#3578) codegens abstract struct (#3578) inlines instance var access through getter in debug mode inlines instance var access through getter in debug mode codegens correct debug info for untyped expression (#4007 and #4008) codegens correct debug info for untyped expression (#4007 and #4008) codegens correct debug info for new with custom allocate (#3945) codegens correct debug info for new with custom allocate (#3945) correctly restores debug location after fun change (#4254) correctly restores debug location after fun change (#4254) has correct debug location after constant initialization in call with block (#4719) has correct debug location after constant initialization in call with block (#4719) has debug info in closure inside if (#5593) has debug info in closure inside if (#5593) doesn't emit incorrect debug info for closured self doesn't emit incorrect debug info for closured self doesn't emit debug info for unused variable declarations (#9882) doesn't emit debug info for unused variable declarations (#9882) stores and restores debug location after jumping to main (#6920) stores and restores debug location after jumping to main (#6920) stores and restores debug location after jumping to main (2) stores and restores debug location after jumping to main (2) stores and restores debug location after jumping to main (3) stores and restores debug location after jumping to main (3) doesn't fail on constant read calls (#11416) doesn't fail on constant read calls (#11416) doesn't fail on splat expansions inside array-like literals doesn't fail on splat expansions inside array-like literals Code gen: def with default value codegens def with one default value codegens def with one default value codegens def new with one default value codegens def new 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 resolves expanded call to current type, not to virtual type resolves expanded call to current type, not to virtual type Code gen: def codegens empty def codegens empty def codegens call without args codegens call without args call functions defined in any order call functions defined in any order codegens call with args codegens call with args call external function 'putchar' call external function 'putchar' uses self uses self uses var after external uses var after external allows to change argument values allows to change argument values runs empty def runs empty def builds infinite recursive function builds infinite recursive function unifies all calls to same def unifies all calls to same def codegens recursive type with union codegens recursive type with union codegens with related types codegens with related types 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 with and without default arguments codegens with and without default arguments 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 dispatch on static method codegens dispatch on static method use target def type as return type use target def type as return type codegens recursive nasty code codegens recursive nasty code looks up matches in super classes and merges them with subclasses looks up matches in super classes and merges them with subclasses codegens def which changes type of arg codegens def which changes type of arg codegens return nil when nilable type (1) codegens return nil when nilable type (1) codegens return nil when nilable type (2) codegens return nil when nilable type (2) codegens dispatch with nilable reference union type codegens dispatch with nilable reference union type codegens dispatch without obj, bug 1 codegens dispatch without obj, bug 1 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 dispatch with single def when discarding unallocated ones (2) codegens dispatch with single def when discarding unallocated ones (2) codegens bug #119 codegens bug #119 puts union before single type in matches preferences puts union before single type in matches preferences dispatches on virtual type implementing generic module (related to bug #165) dispatches on virtual type implementing generic module (related to bug #165) fixes #230: include original owner in mangled def fixes #230: include original owner in mangled def doesn't crash on private def as last expression doesn't crash on private def as last expression uses previous argument in default value (#1062) uses previous argument in default value (#1062) can match N type argument of static array (#1203) can match N type argument of static array (#1203) uses dispatch call type for phi (#3529) uses dispatch call type for phi (#3529) codegens union to union assignment of mutable arg (#3691) codegens union to union assignment of mutable arg (#3691) codegens yield with destructing tuple having unreachable element codegens yield with destructing tuple having unreachable element Codegen: double splat double splats named argument into arguments (1) double splats named argument into arguments (1) double splats named argument into arguments (2) double splats named argument into arguments (2) double splats named argument with positional arguments double splats named argument with positional arguments 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) double splats twice double splats twice matches double splat on method with named args matches double splat on method with named args matches double splat on method with named args and regular args matches double splat on method with named args and regular args matches double splat with regular splat matches double splat with regular splat evaluates double splat argument just once (#2677) evaluates double splat argument just once (#2677) removes literal types in all matches (#6239) removes literal types in all matches (#6239) Code gen: enum codegens enum codegens enum codegens enum without explicit value codegens enum without explicit value codegens enum value codegens enum value creates enum from value creates enum from value codegens enum bitflags (1) codegens enum bitflags (1) codegens enum bitflags (2) codegens enum bitflags (2) codegens enum bitflags (4) codegens enum bitflags (4) codegens enum bitflags None codegens enum bitflags None codegens enum bitflags All codegens enum bitflags All codegens enum None redefined codegens enum None redefined codegens enum All redefined codegens enum All redefined allows class vars in enum allows class vars in enum automatically defines question method for each enum member (false case) automatically defines question method for each enum member (false case) automatically defines question method for each enum member (true case) automatically defines question method for each enum member (true case) automatically defines question method for each enum member (flags, false case) automatically defines question method for each enum member (flags, false case) automatically defines question method for each enum member (flags, true case) automatically defines question method for each enum member (flags, true case) does ~ at compile time for enum member does ~ at compile time for enum member uses enum value before declaration (hoisting) uses enum value before declaration (hoisting) casts All value to base type casts All value to base type can use macro calls inside enum value (#424) can use macro calls inside enum value (#424) can use macro calls inside enum value, macro defined outside enum (#424) can use macro calls inside enum value, macro defined outside enum (#424) can use macro calls inside enum value, with receiver (#424) can use macro calls inside enum value, with receiver (#424) adds a none? method to flags enum adds a none? method to flags enum can redefine Enum.new and use previous_def can redefine Enum.new and use previous_def can define flags enum : UInt64 with more than 32 values (#7268) can define flags enum : UInt64 with more than 32 values (#7268) can define flags enum : UInt128 with 128 values can define flags enum : UInt128 with 128 values can define flags enum : UInt128 with compile-time interpreted values can define flags enum : UInt128 with compile-time interpreted values Code gen: exception codegens rescue specific leaf exception codegens rescue specific leaf exception codegens exception handler with return codegens exception handler with return does ensure after rescue which returns (#171) does ensure after rescue which returns (#171) executes body if nothing raised (1) executes body if nothing raised (1) executes rescue if something is raised conditionally executes rescue if something is raised conditionally executes rescue if something is raised unconditionally executes rescue if something is raised unconditionally can result into union (1) can result into union (1) can result into union (2) can result into union (2) handles nested exceptions handles nested exceptions executes ensure when no exception is raised (1) executes ensure when no exception is raised (1) executes ensure when no exception is raised (2) executes ensure when no exception is raised (2) executes ensure when exception is raised (1) executes ensure when exception is raised (1) executes ensure when exception is raised (2) executes ensure when exception is raised (2) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (1) executes ensure when exception is unhandled (2) executes ensure when exception is unhandled (2) ensure without rescue ensure without rescue 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 yields and returns executes ensure when the main block yields and returns rescues with type rescues with type rescues with types defaults to generic rescue rescues with types defaults to generic rescue handles exception in outer block (1) handles exception in outer block (1) handles exception in outer block (2) handles exception in outer block (2) handles subclass handles subclass handle multiple exception types (1) handle multiple exception types (1) handle multiple exception types (2) handle multiple exception types (2) receives exception object receives exception object executes else if no exception is raised (1) executes else if no exception is raised (1) executes else if no exception is raised (2) executes else if no exception is raised (2) 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 (2) doesn't execute else if exception is raised (2) 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 (2) doesn't execute else if exception is raised conditionally (2) handle exception raised by proc literal handle exception raised by proc literal codegens issue #118 (1) codegens issue #118 (1) codegens issue #118 (2) codegens issue #118 (2) captures exception thrown from proc captures exception thrown from proc uses exception after rescue uses exception after rescue doesn't codegen duplicated ensure if unreachable (#709) doesn't codegen duplicated ensure if unreachable (#709) executes ensure when raising inside rescue executes ensure when raising inside rescue executes ensure of break inside while inside body executes ensure of break inside while inside body 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 block executes ensure of break inside while inside body with block executes ensure of break inside while inside rescue executes ensure of break inside while inside rescue executes ensure of break inside while inside else executes ensure of break inside while inside else executes ensure of next inside while inside body executes ensure of next inside while inside body executes return inside rescue, executing ensure executes return inside rescue, executing ensure 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 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 break inside block executes ensure of break inside block executes ensure of calling method when doing break inside block (#1233) executes ensure of calling method when doing break inside block (#1233) propagates raise status (#2074) propagates raise status (#2074) doesn't crash on #1988 doesn't crash on #1988 runs #2441 runs #2441 can rescue TypeCastError (#2607) can rescue TypeCastError (#2607) can use argument in rescue (#2844) can use argument in rescue (#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 (2) (#2844) can use argument in rescue, with a different type (2) (#2844) runs NoReturn ensure (#3082) runs NoReturn ensure (#3082) catches exception thrown by as inside method (#4030) catches exception thrown by as inside method (#4030) types parenthesized expression (#5511) types parenthesized expression (#5511) codegens return from rescue with value codegens return from rescue with value closures rescue variable (#8141) closures rescue variable (#8141) Code gen: experimental compiles with no argument compiles with no argument compiles with single string argument compiles with single string argument errors if invalid argument type errors if invalid argument type errors if too many arguments errors if too many arguments errors if missing link arguments errors if missing link arguments Codegen: extern struct declares extern struct with no constructor declares extern struct with no constructor declares extern struct with no constructor, assigns var declares extern struct with no constructor, assigns var declares extern union with no constructor declares extern union with no constructor declares extern struct, sets and gets instance var declares extern struct, sets and gets instance var declares extern union, sets and gets instance var declares extern union, sets and gets instance var sets callback on extern struct sets callback on extern struct sets callback on extern union sets callback on extern union codegens extern proc call twice (#4982) codegens extern proc call twice (#4982) 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 (2) codegens proc that takes an extern struct with C ABI (2) 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 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 sret codegens proc that takes and returns an extern struct with sret doesn't crash with proc with extern struct that's a closure doesn't crash with proc with extern struct that's a closure invokes proc with extern struct invokes proc with extern struct invokes proc with extern struct with sret invokes proc with extern struct with sret Code gen: generic class type codegens inherited generic class instance var codegens inherited generic class instance var instantiates generic class with default argument in initialize (#394) instantiates generic class with default argument in initialize (#394) allows initializing instance variable (#665) allows initializing instance variable (#665) allows initializing instance variable in inherited generic type allows initializing instance variable in inherited generic type declares instance var with virtual T (#1675) declares instance var with virtual T (#1675) runs generic instance var initializers in superclass's metaclass context (#4753) runs generic instance var initializers in superclass's metaclass 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 run generic instance var initializers in formal superclass's context (#4753) doesn't run generic instance var initializers in formal superclass's context (#4753) codegens static array size after instantiating codegens static array size after instantiating inherited instance var initialize from generic to concrete (#2128) inherited instance var initialize from generic to concrete (#2128) inherited instance var initialize from generic to generic to concrete (#2128) inherited instance var initialize from generic to generic to concrete (#2128) invokes super in generic class (#2354) invokes super in generic class (#2354) uses big integer as generic type argument (#2353) uses big integer as generic type argument (#2353) doesn't use virtual + in type arguments (#2839) doesn't use virtual + in type arguments (#2839) doesn't use virtual + in type arguments for Tuple (#2839) doesn't use virtual + in type arguments for Tuple (#2839) doesn't use virtual + in type arguments for NamedTuple (#2839) doesn't use virtual + in type arguments for NamedTuple (#2839) codegens virtual generic metaclass macro method call codegens virtual generic metaclass macro method call 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) doesn't consider abstract types for including types (#7200) doesn't consider abstract types for including types (#7200) doesn't consider abstract generic instantiation when restricting type (#5190) doesn't consider abstract generic instantiation when restricting type (#5190) doesn't crash on generic type restriction with initially no subtypes (#8411) doesn't crash on generic type restriction with initially no subtypes (#8411) doesn't crash on generic type restriction with no subtypes (#7583) doesn't crash on generic type restriction with no subtypes (#7583) 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) codegens compile-time interpreted generic int128 codegens compile-time interpreted generic int128 Code gen: hash literal spec creates custom non-generic hash creates custom non-generic hash creates custom generic hash creates custom generic hash creates custom generic hash with type vars creates custom generic hash with type vars creates custom generic hash via alias (1) creates custom generic hash via alias (1) creates custom generic hash via alias (2) creates custom generic hash via alias (2) 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 in module creates custom non-generic hash in module creates custom generic hash in module (#5684) creates custom generic hash in module (#5684) assignment in hash literal works assignment in hash literal works assignment in hash-like literal works assignment in hash-like literal works Code gen: hooks does inherited macro does inherited macro does included macro does included macro does extended macro does extended macro does added method macro does added method macro does inherited macro recursively does inherited macro recursively does inherited macro before class body does inherited macro before class body does finished does finished fixes empty types in hooks (#3946) fixes empty types in hooks (#3946) Code gen: if codegens if without an else with true codegens if without an else with true codegens if without an else with false codegens if without an else with false codegens if with an else with false codegens if with an else with false codegens if with an else with true codegens if with an else with true codegens if inside def without an else with true codegens if inside def without an else with true codegen if inside if codegen if inside if codegens if value from then codegens if value from then codegens if with union codegens if with union codes if with two whiles codes if with two whiles codegens if with int codegens if with int codegens if with nil codegens if with nil codegens if of nilable type in then codegens if of nilable type in then codegens if of nilable type in then 2 codegens if of nilable type in then 2 codegens if of nilable type in else codegens if of nilable type in else codegens if of nilable type in else 3 codegens if of nilable type in else 3 codegens if with return and no else codegens if with return and no else codegens if with return in both branches codegens if with return in both branches codegen if with nested if that returns codegen if with nested if that returns codegen if with union type and then without type codegen if with union type and then without type codegen if with union type and else without type codegen if with union type and else without type codegens if with virtual codegens if with virtual codegens nested if with var (ssa bug) codegens nested if with var (ssa bug) codegens if with nested if that raises codegens if with nested if that raises codegens if with return in else preserves type filter codegens if with return in else preserves type filter codegens bug #1729 codegens bug #1729 codegens if with pointer 0x100000000 pointer codegens if with pointer 0x100000000 pointer doesn't crash with if !var using var in else doesn't crash with if !var using var in else doesn't crash with if !is_a? using var in then doesn't crash with if !is_a? using var in then restricts with || always falsey restricts with || always falsey considers or truthy/falsey right considers or truthy/falsey right codegens #3104 codegens #3104 doesn't generate truthy if branch if doesn't need value (bug) doesn't generate truthy if branch if doesn't need value (bug) doesn't crash no NoReturn var (true left cond) (#1823) doesn't crash no NoReturn var (true left cond) (#1823) doesn't crash no NoReturn var (non-true left cond) (#1823) doesn't crash no NoReturn var (non-true left cond) (#1823) Codegen: is_a? codegens is_a? true for simple type codegens is_a? true for simple type codegens is_a? false for simple type codegens is_a? false for simple type codegens is_a? with union gives true codegens is_a? with union gives true codegens is_a? with union gives false codegens is_a? with union gives false codegens is_a? with union gives false codegens is_a? with union gives false codegens is_a? with union gives true codegens is_a? with union gives true codegens is_a? with nilable gives true codegens is_a? with nilable gives true codegens is_a? with nilable gives false because other type 1 codegens is_a? with nilable gives false because other type 1 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? with nilable gives false because no type codegens is_a? with nilable gives false because no type 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 evaluate method on filtered type evaluate method on filtered type nilable type not-nil evaluate method on filtered type nilable type not-nil evaluate method on filtered type nilable type nil evaluate method on filtered type nilable type nil evaluates method on filtered union type evaluates method on filtered union type evaluates method on filtered union type 2 evaluates method on filtered union type 2 evaluates method on filtered union type 3 evaluates method on filtered union type 3 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? on right side of and codegens is_a? on right side of and codegens is_a? with virtual codegens is_a? with virtual codegens is_a? with virtual and nil codegens is_a? with virtual and nil codegens is_a? with virtual and module codegens is_a? with virtual and module restricts simple type with union restricts simple type with union 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 false codegens is_a? with a Const does comparison and gives false gives false if generic type doesn't match exactly gives false if generic type doesn't match exactly does is_a? with more strict virtual type does is_a? with more strict virtual type codegens is_a? casts union to nilable codegens is_a? casts union to nilable codegens is_a? casts union to nilable in method codegens is_a? casts union to nilable in method codegens is_a? from virtual type to module codegens is_a? from virtual type to module codegens is_a? from nilable reference union type to nil codegens is_a? from nilable reference union type to nil codegens is_a? from nilable reference union type to type codegens is_a? from nilable reference union type to type says false for value.is_a?(Class) says false for value.is_a?(Class) restricts type in else but lazily restricts type in else but lazily works with inherited generic class against an instantiation works with inherited generic class against an instantiation doesn't work with inherited generic class against an instantiation (2) doesn't work with inherited generic class against an instantiation (2) works with inherited generic class against an instantiation (3) works with inherited generic class against an instantiation (3) doesn't type merge (1) (#548) doesn't type merge (1) (#548) doesn't type merge (2) (#548) doesn't type merge (2) (#548) 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) 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) 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? and && (#1121) doesn't skip assignment when used in combination with .is_a? and && (#1121) transforms then if condition is always truthy transforms then if condition is always truthy transforms else if condition is always falsey transforms else if condition is always falsey resets truthy state after visiting nodes (bug) resets truthy state after visiting nodes (bug) does is_a? with generic class metaclass does is_a? with generic class metaclass says false for GenericChild(Base).is_a?(GenericBase(Child)) (#1294) says false for GenericChild(Base).is_a?(GenericBase(Child)) (#1294) does is_a?/responds_to? twice (#1451) does is_a?/responds_to? twice (#1451) does is_a? with && and true condition does is_a? with && and true condition does is_a? for union of module and type does is_a? for union of module and type does is_a? for virtual generic instance type against generic does is_a? for virtual generic instance type against generic does is_a?(generic type) for nested generic inheritance (1) (#9660) does is_a?(generic type) for nested generic inheritance (1) (#9660) does is_a?(generic type) for nested generic inheritance (2) does is_a?(generic type) for nested generic inheritance (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) does is_a?(generic type) for nested generic inheritance, through upcast (2) does is_a?(generic type) for nested generic inheritance, through upcast (2) 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) codegens untyped var (#4009) codegens untyped var (#4009) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) says true for Class.is_a?(Class.class) (#4374) says true for Class.is_a?(Class.class) (#4374) says true for Class.is_a?(Class.class.class) (#4374) says true for Class.is_a?(Class.class.class) (#4374) passes is_a? with generic module type on virtual type (#10302) passes is_a? with generic module type on virtual type (#10302) restricts metaclass against virtual metaclass type restricts metaclass against virtual metaclass type restricts virtual metaclass against virtual metaclass type restricts virtual metaclass against virtual metaclass type 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) 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) restricts union metaclass to metaclass (#12295) restricts union metaclass to metaclass (#12295) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) Code gen: lib codegens lib var set and get codegens lib var set and get call to void function call to void function 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 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) allows setting/getting external variable as function pointer allows setting/getting external variable as function pointer can use enum as fun argument can use enum as fun argument can use enum as fun return can use enum as fun return can use tuple as fun return can use tuple as fun return get fun field from struct (#672) get fun field from struct (#672) get fun field from union (#672) get fun field from union (#672) refers to lib type (#960) refers to lib type (#960) allows invoking out with underscore allows invoking out with underscore passes int as another float type in literal passes int as another float type in literal passes nil to varargs (#1570) passes nil to varargs (#1570) 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 when casting -1 to UInt32 (#3594) doesn't crash when casting -1 to UInt32 (#3594) doesn't crash with nil and varargs (#4414) doesn't crash with nil and varargs (#4414) uses static array in lib extern (#5688) uses static array in lib extern (#5688) Code gen: macro expands macro expands macro expands macro with arguments expands macro with arguments expands macro that invokes another macro expands macro that invokes another macro expands macro defined in class expands macro defined in class expands macro defined in base class expands macro defined in base class expands inline macro expands inline macro expands inline macro for expands inline macro for expands inline macro if (true) expands inline macro if (true) expands inline macro if (false) expands inline macro if (false) finds macro in class finds macro in class expands def macro expands def macro expands def macro with var expands def macro with var expands def macro with @type.instance_vars expands def macro with @type.instance_vars expands def macro with @type.instance_vars with subclass expands def macro with @type.instance_vars with subclass expands def macro with @type.instance_vars with virtual expands def macro with @type.instance_vars with virtual expands def macro with @type.name expands def macro with @type.name expands macro and resolves type correctly expands macro and resolves type correctly expands def macro with @type.name with virtual expands def macro with @type.name with virtual expands def macro with @type.name with virtual (2) expands def macro with @type.name with virtual (2) allows overriding macro definition when redefining base class allows overriding macro definition when redefining base class uses invocation context uses invocation context allows macro with default arguments allows macro with default arguments expands def macro with instance var and method call (bug) expands def macro with instance var and method call (bug) expands @type.name in virtual metaclass (1) expands @type.name in virtual metaclass (1) expands @type.name in virtual metaclass (2) expands @type.name in virtual metaclass (2) doesn't skip abstract classes when defining macro methods doesn't skip abstract classes when defining macro methods doesn't reuse macro nodes (bug) doesn't reuse macro nodes (bug) can use constants can use constants can refer to types can refer to types runs macro with splat runs macro with splat runs macro with arg and splat runs macro with arg and splat expands macro that yields expands macro that yields can refer to abstract (1) can refer to abstract (1) can refer to abstract (2) can refer to abstract (2) can refer to @type can refer to @type can refer to union (1) can refer to union (1) can refer to union (2) can refer to union (2) can iterate union types can iterate union types can access type variables can access type variables can access type variables of a module can access type variables of a module can access type variables that are not types can access type variables that are not types can access type variables of a tuple can access type variables of a tuple can access type variables of a generic type can access type variables of a generic type receives &block receives &block executes with named arguments executes with named arguments gets correct class name when there are classes in the middle gets correct class name when there are classes in the middle transforms hooks (bug) transforms hooks (bug) executes subclasses executes subclasses executes all_subclasses executes all_subclasses gets enum members with @type.constants gets enum members with @type.constants gets enum members as constants gets enum members as constants says that enum has Flags annotation says that enum has Flags annotation says that enum doesn't have Flags annotation says that enum doesn't have Flags annotation gets methods gets methods 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) recalculates method when virtual metaclass type is added recalculates method when virtual metaclass type is added correctly recomputes call (bug) correctly recomputes call (bug) doesn't override local variable when using macro variable doesn't override local variable when using macro variable doesn't override local variable when using macro variable (2) doesn't override local variable when using macro variable (2) uses indexed macro variable uses indexed macro variable uses indexed macro variable with many keys uses indexed macro variable with many keys codegens macro def with splat (#496) codegens macro def with splat (#496) codegens macro def with default arg (similar to #496) codegens macro def with default arg (similar to #496) expands macro with default arg and splat (#784) expands macro with default arg and splat (#784) expands macro with default arg and splat (2) (#784) expands macro with default arg and splat (2) (#784) expands macro with default arg and splat (3) (#784) expands macro with default arg and splat (3) (#784) checks if macro expansion returns (#821) checks if macro expansion returns (#821) passes #826 passes #826 declares constant in macro (#838) declares constant in macro (#838) errors if dynamic constant assignment after macro expansion errors if dynamic constant assignment after macro expansion finds macro from virtual type finds macro from virtual type expands macro with escaped quotes (#895) expands macro with escaped quotes (#895) expands macro def with return (#1040) expands macro def with return (#1040) fixes empty types of macro expansions (#1379) fixes empty types of macro expansions (#1379) expands macro as class method expands macro as class method expands macro as class method and accesses @type expands macro as class method and accesses @type codegens macro with comment (bug) (#1396) codegens macro with comment (bug) (#1396) correctly resolves constant inside block in macro def correctly resolves constant inside block in macro def can access free variables can access free variables types macro expansion bug (#1734) types macro expansion bug (#1734) expands Path with resolve method expands Path with resolve method can use macro inside array literal can use macro inside array literal can use macro inside hash literal can use macro inside hash literal executes with named arguments for positional arg (1) executes with named arguments for positional arg (1) executes with named arguments for positional arg (2) executes with named arguments for positional arg (2) executes with named arguments for positional arg (3) executes with named arguments for positional arg (3) stringifies type without virtual marker stringifies type without virtual marker uses tuple T in method with free vars uses tuple T in method with free vars implicitly marks method as macro def when using @type implicitly marks method as macro def when using @type doesn't replace %s in string (#2178) doesn't replace %s in string (#2178) doesn't replace %q() (#2178) doesn't replace %q() (#2178) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation (#2178) replaces %s inside string inside interpolation, with braces (#2178) replaces %s inside string inside interpolation, with braces (#2178) retains original yield expression (#2923) retains original yield expression (#2923) surrounds {{yield}} with begin/end surrounds {{yield}} with begin/end initializes instance var in macro initializes instance var in macro initializes class var in macro initializes class var in macro expands @def in inline macro expands @def in inline macro expands @def in macro expands @def in macro gets constant gets constant determines if overrides (false) determines if overrides (false) determines if overrides (true) determines if overrides (true) determines if overrides, through another class (true) determines if overrides, through another class (true) determines if overrides, through module (true) determines if overrides, through module (true) determines if overrides, with macro method (false) determines if overrides, with macro method (false) determines if method exists (true) determines if method exists (true) determines if method exists (false) determines if method exists (false) forwards file location forwards file location forwards dir location forwards dir location forwards line number forwards line number keeps line number with no block keeps line number with no block keeps line number with a block keeps line number with a block resolves alias in macro resolves alias in macro gets default value of instance variable gets default value of instance variable 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 inherited type that also includes module gets default value of instance variable of inherited type that also includes module determines if variable has default value determines if variable has default value expands macro with op assign inside assign (#5568) expands macro with op assign inside assign (#5568) devirtualizes @type devirtualizes @type keeps heredoc contents inside macro keeps heredoc contents inside macro keeps heredoc contents with interpolation inside macro keeps heredoc contents with interpolation inside macro access to the program with @top_level access to the program with @top_level responds correctly to has_constant? with @top_level responds correctly to has_constant? with @top_level Code gen: magic constants does __LINE__ does __LINE__ does __FILE__ does __FILE__ does __DIR__ does __DIR__ does __LINE__ with dispatch does __LINE__ with dispatch does __LINE__ when specifying one default arg with __FILE__ does __LINE__ when specifying one default arg with __FILE__ does __LINE__ when specifying one normal default arg does __LINE__ when specifying one normal default arg does __LINE__ when specifying one middle argument does __LINE__ when specifying one middle argument does __LINE__ in macro does __LINE__ in macro does __FILE__ in macro does __FILE__ in macro does __DIR__ in macro does __DIR__ in macro does __END_LINE__ without block does __END_LINE__ without block does __END_LINE__ with block does __END_LINE__ with block does __END_LINE__ in macro without block does __END_LINE__ in macro without block does __END_LINE__ in macro with block does __END_LINE__ in macro with block Code gen: method_missing does method_missing macro without args does method_missing macro without args does method_missing macro with args does method_missing macro with args does method_missing macro with block does method_missing macro with block 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) does method_missing macro with virtual type (2) does method_missing macro with virtual type (2) does method_missing macro with virtual type (3) does method_missing macro with virtual type (3) does method_missing macro with virtual type (4) does method_missing macro with virtual type (4) does method_missing macro with virtual type (5) does method_missing macro with virtual type (5) does method_missing macro with virtual type (6) does method_missing macro with virtual type (6) does method_missing macro with virtual type (7) does method_missing macro with virtual type (7) does method_missing macro with virtual type (8) does method_missing macro with virtual type (8) does method_missing macro with module involved does method_missing macro with module involved does method_missing macro with top level method involved does method_missing macro with top level method involved does method_missing macro with included module does method_missing macro with included module does method_missing with assignment (bug) does method_missing with assignment (bug) does method_missing with assignment (2) (bug) does method_missing with assignment (2) (bug) does method_missing macro without args (with call) does method_missing macro without args (with call) does method_missing macro with args (with call) does method_missing macro with args (with call) forwards forwards does method_missing generating method does method_missing generating method works with named arguments (#3654) works with named arguments (#3654) works with named arguments that aren't legal variable names (#10381) works with named arguments that aren't legal variable names (#10381) finds method_missing with 'with ... yield' finds method_missing with 'with ... yield' Code gen: module codegens pointer of module with method codegens pointer of module with method codegens pointer of module with method with two including types codegens pointer of module with method with two including types 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 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) codegens pointer of module and pass value to method codegens pointer of module and pass value to method codegens pointer of module with block codegens pointer of module with block codegens module with virtual type codegens module with virtual type declares proc with module type declares proc with module type 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 codegens proc of a module that was never included codegens proc of a module that was never included codegens proc of module when generic type includes it codegens proc of module when generic type includes it invokes method on yielded module that has no instances (#1079) invokes method on yielded module that has no instances (#1079) expands modules to its including types (#1916) expands modules to its including types (#1916) expands modules to its including types (2) (#1916) expands modules to its including types (2) (#1916) expands modules to its including types (3) (#1916) expands modules to its including types (3) (#1916) codegens cast to module with class and struct to nilable module codegens cast to module with class and struct to nilable module codegens cast to module that includes bool codegens cast to module that includes bool declares and includes generic module, in macros T is a tuple literal declares and includes generic module, in macros T is a tuple literal can instantiate generic module can instantiate generic module can use generic module as instance variable type can use generic module as instance variable type can use generic module as instance variable type (2) can use generic module as instance variable type (2) 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 generic module that is included in other module (#3323) casts to union of generic module that is included in other module (#3323) codegens dispatch of union with module (#3647) codegens dispatch of union with module (#3647) Code gen: multi assign supports n to n assignment supports n to n assignment 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 strict_multi_assign supports 1 to n assignment supports 1 to n assignment 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 m to n assignment, with splat on left-hand side (1) supports m to n assignment, with splat on left-hand side (1) 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 m to n assignment, with splat on left-hand side (3) supports m 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, splat is empty tuple (2) supports m to n assignment, splat is empty tuple (2) 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, 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 (2) supports 1 to n assignment, with splat on left-hand side (2) 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 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 (2) supports 1 to n assignment, splat is empty (2) supports 1 to n assignment, splat is empty (3) supports 1 to n assignment, splat is empty (3) 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 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 (2) supports 1 to n assignment, raises if out of bounds (2) Code gen: named args calls with named arg calls with named arg calls with named arg and other args calls with named arg and other args calls with named arg as object method calls with named arg as object method calls twice with different types calls twice with different types calls new with named arg calls new with named arg uses named args in dispatch uses named args in dispatch sends one regular argument as named argument sends one regular argument as named argument sends two regular arguments as named arguments sends two regular arguments as named arguments 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 overloads based on required named args, with restrictions overloads based on required named args, with restrictions uses bare splat in new (2) uses bare splat in new (2) Code gen: named tuple codegens tuple index codegens tuple index codegens tuple index another order codegens tuple index another order codegens tuple nilable index (1) codegens tuple nilable index (1) codegens tuple nilable index (2) codegens tuple nilable index (2) codegens tuple nilable index (3) codegens tuple nilable index (3) passes named tuple to def passes named tuple to def gets size at compile time gets size at compile time gets keys at compile time (1) gets keys at compile time (1) gets keys at compile time (2) gets keys at compile time (2) doesn't crash when overload doesn't match doesn't crash when overload doesn't match assigns named tuple to compatible named tuple assigns named tuple to compatible named tuple upcasts named tuple inside compatible named tuple upcasts named tuple inside compatible named tuple assigns named tuple union to compatible named tuple assigns named tuple union to compatible named tuple upcasts named tuple union to compatible named tuple upcasts named tuple union to compatible named tuple assigns named tuple inside union to union with compatible named tuple assigns named tuple inside union to union with 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 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) 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 union of tuple of float with tuple of tuple of float codegens union of tuple of float with tuple of tuple of float provides T as a named tuple literal provides T as a named tuple literal assigns two same-size named tuple types to a same var (#3132) assigns two same-size named tuple types to a same var (#3132) downcasts union inside tuple to value (#3907) downcasts union inside tuple to value (#3907) accesses T and creates instance from it accesses T and creates instance from it does to_s for NamedTuple class does to_s for NamedTuple class doesn't error if NamedTuple includes a non-generic module (#10380) doesn't error if NamedTuple includes a non-generic module (#10380) Code gen: new codegens instance method with allocate codegens instance method with allocate codegens instance method with new and instance var codegens instance method with new and instance var codegens instance method with new codegens instance method with new can create Reference can create Reference inherits initialize inherits initialize inherits initialize for generic type inherits initialize for generic type overloads new and initialize, 1 (#2489) overloads new and initialize, 1 (#2489) overloads new and initialize, 2 (#2489) overloads new and initialize, 2 (#2489) overloads new and initialize, 3 (#2489) overloads new and initialize, 3 (#2489) defines new for module defines new for module finds super in deep hierarchy finds super in deep hierarchy finds new in superclass if no initialize is defined (1) finds new in superclass if no initialize is defined (1) finds new in superclass if no initialize is defined (2) finds new in superclass if no initialize is defined (2) finds new in superclass for Enum finds new in superclass for Enum can create Tuple with Tuple.new can create Tuple with Tuple.new 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 (2) (#731) evaluates initialize default value at the instance scope (2) (#731) evaluates initialize default value at the instance scope (3) (#731) evaluates initialize default value at the instance scope (3) (#731) evaluates initialize default value at the instance scope (4) (#731) evaluates initialize default value at the instance scope (4) (#731) Code gen: next codegens next codegens next codegens next conditionally codegens next conditionally codegens next conditionally with int type (2) codegens next conditionally with int type (2) codegens next with break (1) codegens next with break (1) codegens next with break (2) codegens next with break (2) codegens next with break (3) codegens next with break (3) codegens next with while inside block codegens next with while inside block codegens next without expressions codegens next without expressions Code gen: nilable cast does nilable cast (true) does nilable cast (true) does nilable cast (false) does nilable cast (false) does nilable cast (always true) does nilable cast (always true) does upcast does upcast 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 upcasts type to virtual (#3304) upcasts type to virtual (#3304) upcasts type to virtual (2) (#3304) upcasts type to virtual (2) (#3304) casts with block var that changes type (#3341) casts with block var that changes type (#3341) casts union type to nilable type (#9342) casts union type to nilable type (#9342) Code gen: no return codegens if with NoReturn on then and union on else codegens if with NoReturn on then and union on else codegens Pointer(NoReturn).malloc codegens Pointer(NoReturn).malloc codegens if with no return and variable used afterwards codegens if with no return and variable used afterwards codegen types exception handler as NoReturn if ensure is NoReturn codegen types exception handler as NoReturn if ensure is NoReturn codegens no return variable declaration (#1508) codegens no return variable declaration (#1508) codegens no return instance variable declaration (#1508) codegens no return instance variable declaration (#1508) codegens call with no return because of falsey if (#3661) codegens call with no return because of falsey if (#3661) codegens untyped typeof (#5105) codegens untyped typeof (#5105) Code gen: not codegens not number codegens not number codegens not true codegens not true codegens not false codegens not false codegens not nil codegens not nil codegens not nilable type (true) codegens not nilable type (true) codegens not nilable type (false) codegens not nilable type (false) codegens not pointer (true) codegens not pointer (true) codegens not pointer (false) codegens not pointer (false) doesn't crash doesn't crash codegens not with inlinable value (#6451) codegens not with inlinable value (#6451) Code gen: offsetof returns offset allowing manual access of first struct field returns offset allowing manual access of first struct field 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 allowing manual access of first class field returns offset allowing manual access of first class 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 returns offset allowing manual access of tuple items returns offset allowing manual access of tuple items Code gen: op assign evaluates exps once (#3398) evaluates exps once (#3398) evaluates exps once, [] (#3398) evaluates exps once, [] (#3398) Code gen: or codegens or with bool false and false codegens or with bool false and false codegens or with bool false and true codegens or with bool false and true codegens or with bool true and true codegens or with bool true and true codegens or with bool true and false codegens or with bool true and false codegens or with bool and int 1 codegens or with bool and int 1 codegens or with bool and int 2 codegens or with bool and int 2 codegens or with primitive type other than bool codegens or with primitive type other than bool codegens or with primitive type other than bool with union codegens or with primitive type other than bool with union codegens or with primitive type other than bool codegens or with primitive type other than bool codegens or with nilable as left node 1 codegens or with nilable as left node 1 codegens or with nilable as left node 2 codegens or with nilable 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 nil union as left node 1 codegens or with nil union as left node 1 codegens or with nil union as left node 2 codegens or with nil union as left node 2 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 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 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 4 codegens or with bool union as left node 4 Code gen: pointer get pointer and value of it get pointer and value of it get pointer of instance var get pointer of instance var set pointer value set pointer value get value of pointer to union get value of pointer to union sets value of pointer to union sets value of pointer to union increments pointer increments pointer codegens malloc codegens malloc codegens realloc codegens realloc codegens pointer cast codegens pointer cast codegens pointer cast to Nil (#8015) codegens pointer cast to Nil (#8015) codegens pointer as if condition codegens pointer as if condition codegens null pointer as if condition codegens null pointer as if condition gets pointer of instance variable in virtual type gets pointer of instance variable in virtual type 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 creates pointer by address creates pointer by address calculates pointer diff calculates pointer diff can dereference pointer to func can dereference pointer to func gets pointer of argument that is never assigned to gets pointer of argument that is never assigned to codegens nilable pointer type (1) codegens nilable pointer type (1) codegens nilable pointer type (2) codegens nilable pointer type (2) codegens nilable pointer type dispatch (1) codegens nilable pointer type dispatch (1) codegens nilable pointer type dispatch (2) codegens nilable pointer type dispatch (2) assigns nil and pointer to nilable pointer type assigns nil and pointer to nilable pointer type gets pointer to constant gets pointer to constant passes pointer of pointer to method passes pointer of pointer to method codegens pointer as if condition inside union (1) codegens pointer as if condition inside union (1) codegens pointer as if condition inside union (2) codegens pointer as if condition inside union (2) can use typedef pointer value get and set (#630) can use typedef pointer value get and set (#630) does pointerof class variable does pointerof class variable does pointerof class variable with class does pointerof class variable with class does pointerof read variable does pointerof read variable can assign nil to void pointer can assign nil to void pointer can pass any pointer to something expecting void* in lib call can pass any pointer to something expecting void* in lib call 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 uses correct llvm module for typedef metaclass (#2877) uses correct llvm module for typedef metaclass (#2877) passes arguments correctly for typedef metaclass (#8544) passes arguments correctly for typedef metaclass (#8544) generates correct code for Pointer.malloc(0) (#2905) generates correct code for Pointer.malloc(0) (#2905) compares pointers through typedef compares pointers through typedef takes pointerof lib external var takes pointerof lib external var codegen: previous_def codegens previous def codegens previous def codegens previous def when inside fun and forwards args codegens previous def when inside fun and forwards args codegens previous def when inside fun with self codegens previous def when inside fun with self correctly passes named arguments correctly passes named arguments Code gen: primitives codegens bool codegens bool codegens int codegens int codegens long codegens long codegens int128 codegens int128 codegens uint128 codegens uint128 codegens char codegens char codegens char ord codegens char ord codegens f32 codegens f32 codegens f64 codegens f64 codegens string codegens string 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 2 * 3 codegens 2 * 3 codegens 2 &* 3 codegens 2 &* 3 codegens 8.unsafe_div 3 codegens 8.unsafe_div 3 codegens 8.unsafe_mod 3 codegens 8.unsafe_mod 3 codegens 16.unsafe_shr 2 codegens 16.unsafe_shr 2 codegens 16.unsafe_shl 2 codegens 16.unsafe_shl 2 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 skips bounds checking when to_i produces same type skips bounds checking when to_i produces same type defined method that calls primitive (bug) defined method that calls primitive (bug) codegens __LINE__ codegens __LINE__ codegens crystal_type_id with union type codegens crystal_type_id with union type doesn't treat `(1 == 1) == true` as `1 == 1 == true` (#328) doesn't treat `(1 == 1) == true` as `1 == 1 == true` (#328) passes issue #328 passes issue #328 codegens pointer of int codegens pointer of int sums two numbers out of an [] of Number sums two numbers out of an [] of Number codegens crystal_type_id for class codegens crystal_type_id for class can invoke cast on primitive typedef (#614) can invoke cast on primitive typedef (#614) can invoke binary on primitive typedef (#614) can invoke binary on primitive typedef (#614) allows redefining a primitive method allows redefining a primitive method 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) uses built-in llvm function that returns a tuple uses built-in llvm function that returns a tuple gets crystal class instance type id gets crystal class instance type id va_arg uses llvm's va_arg instruction uses llvm's va_arg instruction works with C code works with C code atomicrmw codegens atomicrmw with enums codegens atomicrmw with enums codegens atomicrmw with enums codegens atomicrmw with enums codegens atomicrmw with symbols codegens atomicrmw with symbols allows @[Primitive] on method that has body allows @[Primitive] on method that has body allows @[Primitive] on fun declarations allows @[Primitive] on fun declarations Codegen: private codegens private def in same file codegens private def in same file codegens overloaded private def in same file codegens overloaded private def in same file 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 class vars of private types with same name (#11620) codegens class vars of private types with same name (#11620) doesn't include filename for private types doesn't include filename for private types Code gen: proc call simple proc literal call simple proc literal call proc literal with arguments call proc literal with arguments call proc literal with return type call proc literal with return type call proc pointer call proc pointer call proc pointer with args call proc pointer with args call proc pointer of instance method call proc pointer of instance method call proc pointer of instance method that raises call proc pointer of instance method that raises codegens proc with another var codegens proc with another var codegens proc that returns a virtual type codegens proc that returns a virtual type 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 makes sure that proc pointer is transformed after type inference makes sure that proc pointer is transformed after type inference binds function pointer to associated call binds function pointer to associated call call simple proc literal with return call simple proc literal with return calls proc pointer with union (passed by value) arg calls proc pointer with union (passed by value) arg allows passing proc type to C automatically allows passing proc type to C automatically allows proc pointer where self is a class allows proc pointer where self is a class codegens proc literal hard type inference (1) codegens proc literal hard type inference (1) automatically casts proc that returns something to proc that returns void automatically casts proc that returns something to proc that returns void allows proc type of enum type allows proc type of enum type allows proc type of enum type with base type allows proc type of enum type with base type codegens nilable proc type (1) codegens nilable proc type (1) codegens nilable proc type (2) codegens nilable proc type (2) codegens nilable proc type dispatch (1) codegens nilable proc type dispatch (1) codegens nilable proc type dispatch (2) codegens nilable proc type dispatch (2) builds proc type from fun builds proc type from fun builds nilable proc type from fun builds nilable proc type from fun assigns nil and proc to nilable proc type assigns nil and proc to nilable proc type allows invoking proc literal with smaller type allows invoking proc literal with smaller type does new on proc type does new on proc type allows invoking a function with a subtype allows invoking a function with a subtype allows invoking a function with a subtype when defined as block spec allows invoking a function with a subtype when defined as block spec allows redefining fun allows redefining fun 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) codegens proc with union type that returns itself codegens proc with union type that returns itself codegens issue with missing byval in proc literal inside struct codegens issue with missing byval in proc literal inside struct codegens proc that references struct (bug) codegens proc that references struct (bug) codegens captured block that returns tuple codegens captured block that returns tuple allows using proc arg name shadowing local variable allows using proc arg name shadowing local variable codegens proc that accepts array of type codegens proc that accepts array of type gets proc to lib fun (#504) gets proc to lib fun (#504) codegens proc to implicit self in constant (#647) codegens proc to implicit self in constant (#647) passes proc as &->expr to method that yields passes proc as &->expr to method that yields 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) uses alias of proc with virtual type (#1347) uses alias of proc with virtual type (#1347) doesn't crash on #2196 doesn't crash on #2196 accesses T in macros as a TupleLiteral accesses T in macros as a TupleLiteral codegens proc in instance var initialize (#3016) codegens proc in instance var initialize (#3016) codegens proc of generic type codegens proc of generic type executes proc pointer on primitive executes proc pointer on primitive can pass Proc(T) to Proc(Nil) in type restriction (#8964) can pass Proc(T) to Proc(Nil) in type restriction (#8964) 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 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) calls function pointer calls function pointer casts from function pointer to proc casts from function pointer to proc takes pointerof function pointer takes pointerof function pointer closures var on ->var.call (#8584) closures var on ->var.call (#8584) 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) 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) 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) Code gen: regex literal spec works in a class variable (#10951) works in a class variable (#10951) Codegen: responds_to? codegens responds_to? true for simple type codegens responds_to? true for simple type codegens responds_to? false for simple type codegens responds_to? false for simple type codegens responds_to? with union gives true codegens responds_to? with union gives true codegens responds_to? with union gives false codegens responds_to? with union gives false codegens responds_to? with nilable gives true codegens responds_to? with nilable gives true codegens responds_to? with nilable gives false because other type 1 codegens responds_to? with nilable gives false because other type 1 codegens responds_to? with nilable gives false because other type 2 codegens responds_to? with nilable gives false because other type 2 codegens responds_to? with generic class (1) codegens responds_to? with generic class (1) codegens responds_to? with generic class (2) codegens responds_to? with generic class (2) works with virtual type works with virtual type works with two virtual types works with two virtual types 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 superclass (1) works with generic virtual superclass (1) works with generic virtual superclass (2) works with generic virtual superclass (2) works with module works with module works with generic virtual module (1) works with generic virtual module (1) works with generic virtual module (2) (#8334) works with generic virtual module (2) (#8334) does for generic instance type metaclass (#4353) does for generic instance type metaclass (#4353) Code gen: return codegens return codegens return codegens return followed by another expression codegens return followed by another expression codegens return inside if codegens return inside if return from function with union type return from function with union type return union return union 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 returns empty from function returns empty from function codegens bug with return if true codegens bug with return if true codegens assign with if with two returns codegens assign with if with two returns doesn't crash when method returns nil and can be inlined doesn't crash when method returns nil and can be inlined returns in var assignment (#3364) returns in var assignment (#3364) 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 Code gen: sizeof gets sizeof int gets sizeof int gets sizeof struct gets sizeof struct gets sizeof class gets sizeof class gets sizeof union gets sizeof union gets instance_sizeof class gets instance_sizeof class gets instance_sizeof a generic type with type vars gets instance_sizeof a generic type with type vars gets sizeof Void gets sizeof Void gets sizeof NoReturn gets sizeof NoReturn gets sizeof Nil (#7644) gets sizeof Nil (#7644) gets sizeof Bool (#8272) gets sizeof Bool (#8272) can use sizeof in type argument (1) can use sizeof in type argument (1) 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 can use instance_sizeof of virtual type can use instance_sizeof of virtual type can use instance_sizeof in type argument can use instance_sizeof in type argument returns correct sizeof for abstract struct (#4319) returns correct sizeof for abstract struct (#4319) doesn't precompute sizeof of abstract struct (#7741) doesn't precompute sizeof of abstract struct (#7741) doesn't precompute sizeof of module (#7741) doesn't precompute sizeof of module (#7741) Codegen: special vars codegens $~ codegens $~ codegens $~ with nilable (1) codegens $~ with nilable (1) codegens $~ with nilable (2) codegens $~ with nilable (2) codegens $? codegens $? codegens $? with nilable (1) codegens $? with nilable (1) codegens $? with nilable (2) codegens $? with nilable (2) codegens $~ two levels codegens $~ two levels works lazily works lazily codegens in block codegens in block codegens in block with nested block codegens in block with nested block codegens after block codegens after block codegens after block 2 codegens after block 2 codegens with default argument codegens with default argument preserves special vars in macro expansion with call with default arguments (#824) preserves special vars in macro expansion with call with default arguments (#824) allows with primitive allows with primitive allows with struct allows with struct preserves special vars if initialized inside block (#2194) preserves special vars if initialized inside block (#2194) Code gen: splat splats splats splats with another arg splats with another arg splats on call splats on call splats without args splats without args splats with default value splats with default value splats with default value (2) splats with default value (2) splats with default value (3) splats with default value (3) splats in initialize splats in initialize does #2407 does #2407 evaluates splat argument just once (#2677) evaluates splat argument just once (#2677) Code gen: ssa codegens a redefined var codegens a redefined var codegens a redefined var inside method codegens a redefined var inside method codegens a redefined var inside method with argument codegens a redefined var inside method with argument 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 codegens a var that is re-assigned in a block codegens a var that is re-assigned in a block (1) codegens a var that is re-assigned in a block (1) 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 declared in a block (1) codegens a var that is declared in a block (1) codegens a var that is declared in a block (2) codegens a var that is declared in a block (2) codegens ssa bug with if/else on var codegens ssa bug with if/else on var codegens ssa bug (1) codegens ssa bug (1) codegens ssa bug (2) codegens ssa bug (2) Code gen: struct creates structs creates structs creates structs with instance var creates structs with instance var assigning a struct makes a copy (1) assigning a struct makes a copy (1) assigning a struct makes a copy (2) assigning a struct makes a copy (2) passes a struct as a parameter makes a copy passes a struct as a parameter makes a copy passes a generic struct as a parameter makes a copy passes a generic struct as a parameter makes a copy returns struct as a copy returns struct as a copy creates struct in def creates struct in def declares const struct declares const struct uses struct in if uses struct in if uses nilable struct uses nilable struct returns self returns self returns self with block returns self with block does phi of struct does phi of struct allows assigning to struct argument (bug) allows assigning to struct argument (bug) codegens struct assigned to underscore (#1842) codegens struct assigned to underscore (#1842) codegens virtual struct codegens virtual struct codegens virtual struct with pointer codegens virtual struct with pointer codegens virtual struct metaclass (#2551) (1) codegens virtual struct metaclass (#2551) (1) codegens virtual struct metaclass (#2551) (2) codegens virtual struct metaclass (#2551) (2) codegens virtual struct metaclass (#2551) (3) codegens virtual struct metaclass (#2551) (3) codegens virtual struct metaclass (#2551) (4) codegens virtual struct metaclass (#2551) (4) mutates a virtual struct mutates a virtual struct codegens virtual structs union (1) codegens virtual structs union (1) codegens virtual structs union (2) codegens virtual structs union (2) 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) Codegen: super codegens super without arguments codegens super without arguments codegens super without arguments but parent has arguments codegens super without arguments but parent has arguments codegens super without arguments and instance variable codegens super without arguments and instance variable codegens super that calls subclass method codegens super that calls subclass method codegens super that calls subclass method 2 codegens super that calls subclass method 2 codegens super that calls subclass method 3 codegens super that calls subclass method 3 codegens super that calls subclass method 4 codegens super that calls subclass method 4 codegens super that calls subclass method 5 codegens super that calls subclass method 5 codegens super that calls subclass method 6 codegens super that calls subclass method 6 codegens super inside closure codegens super inside closure codegens super inside closure forwarding args codegens super inside closure forwarding args build super on generic class (bug) build super on generic class (bug) calls super in module method (#556) calls super in module method (#556) calls super in generic module method calls super in generic module method does super in virtual type including module does super in virtual type including module doesn't invoke super twice in inherited generic types (#942) doesn't invoke super twice in inherited generic types (#942) calls super in metaclass (#1522) calls super in metaclass (#1522) calls super with dispatch (#2318) calls super with dispatch (#2318) calls super from virtual metaclass type (#2841) calls super from virtual metaclass type (#2841) calls super on an object (#10004) calls super on an object (#10004) Crystal::Codegen::Target parses incomplete triples parses incomplete triples normalizes triples normalizes triples parses freebsd version parses freebsd version Codegen: thread local works with class variables works with class variables works with class variable in main thread works with class variable in main thread compiles with class variable referenced from initializer compiles with class variable referenced from initializer Code gen: tuple codegens tuple [0] codegens tuple [0] codegens tuple [1] codegens tuple [1] codegens tuple [1] (2) codegens tuple [1] (2) codegens tuple [0]? codegens tuple [0]? codegens tuple [1]? codegens tuple [1]? codegens tuple [2]? codegens tuple [2]? codegens tuple metaclass [0] codegens tuple metaclass [0] codegens tuple metaclass [1] codegens tuple metaclass [1] codegens tuple metaclass [2]? codegens tuple metaclass [2]? codegens tuple [0..0] codegens tuple [0..0] codegens tuple [0..1] codegens tuple [0..1] codegens tuple [0..2] codegens tuple [0..2] codegens tuple [1..1] codegens tuple [1..1] codegens tuple [1..0] codegens tuple [1..0] codegens tuple [2..2] codegens tuple [2..2] codegens tuple [0..0]? codegens tuple [0..0]? codegens tuple [0..1]? codegens tuple [0..1]? codegens tuple [0..2]? codegens tuple [0..2]? codegens tuple [1..1]? codegens tuple [1..1]? codegens tuple [1..0]? codegens tuple [1..0]? codegens tuple [2..2]? codegens tuple [2..2]? codegens tuple [3..2]? codegens tuple [3..2]? codegens tuple [-3..2]? codegens tuple [-3..2]? codegens tuple metaclass [0..0] codegens tuple metaclass [0..0] codegens tuple metaclass [0..1] codegens tuple metaclass [0..1] codegens tuple metaclass [1..0] codegens tuple metaclass [1..0] codegens tuple metaclass [3..2]? codegens tuple metaclass [3..2]? codegens splats inside tuples codegens splats inside tuples passed tuple to def passed tuple to def accesses T and creates instance from it accesses T and creates instance from it allows malloc pointer of tuple allows malloc pointer of tuple codegens tuple union (bug because union size was computed incorrectly) codegens tuple union (bug because union size was computed incorrectly) codegens tuple class codegens tuple class gets size at compile time gets size at compile time allows tuple covariance allows tuple covariance merges two tuple types of same size (1) merges two tuple types of same size (1) merges two tuple types of same size (2) merges two tuple types of same size (2) assigns tuple to compatible tuple assigns tuple to compatible tuple upcasts tuple inside compatible tuple upcasts tuple inside compatible tuple assigns tuple union to compatible tuple assigns tuple union to compatible tuple upcasts tuple union to compatible tuple upcasts tuple union to compatible tuple assigns tuple inside union to union with compatible tuple assigns tuple inside union to union with compatible tuple upcasts tuple inside union to union with compatible tuple upcasts tuple inside union to union with compatible tuple codegens union of tuple of float with tuple of tuple of float codegens union of tuple of float with tuple of tuple of float provides T as a tuple literal provides T as a tuple literal passes empty tuple and empty named tuple to a method (#2852) passes empty tuple and empty named tuple to a method (#2852) assigns two same-size tuple types to a same var (#3132) assigns two same-size tuple types to a same var (#3132) downcasts union to mixed tuple type downcasts union to mixed tuple type downcasts union to mixed union with mixed tuple types downcasts union to mixed union with mixed tuple types downcasts union inside tuple to value (#3907) downcasts union inside tuple to value (#3907) Code gen: type declaration codegens initialize instance var codegens initialize instance var codegens initialize instance var of superclass codegens initialize instance var of superclass codegens initialize instance var with var declaration codegens initialize instance var with var declaration declares and initializes declares and initializes declares and initializes var declares and initializes var Code gen: uninitialized codegens declare var and read it codegens declare var and read it codegens declare var and changes it codegens declare var and changes it codegens declare instance var codegens declare instance var codegens declare instance var with static array type codegens declare instance var with static array type doesn't break on inherited declared var (#390) doesn't break on inherited declared var (#390) 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 value (#3641) codegens value (#3641) Code gen: union type codegens union type when obj is union and no args codegens union type when obj is union and no args codegens union type when obj is union and arg is union codegens union type when obj is union and arg is union codegens union type when obj is not union but arg is codegens union type when obj is not union but arg is codegens union type when obj union but arg is not codegens union type when obj union but arg is not codegens union type when no obj codegens union type when no obj codegens union type when no obj and restrictions codegens union type when no obj and restrictions 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 if with same nested union codegens if with same nested union assigns union to union assigns union to union assigns union to larger union assigns union to larger union 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 2 assigns union to larger union when source is nilable 2 dispatch call to object method on nilable dispatch call to object method on nilable sorts restrictions when there are unions sorts restrictions when there are unions codegens union to_s codegens union to_s provides T as a tuple literal provides T as a tuple literal Codegen: until codegens until codegens until Code gen: var codegens var codegens var codegens ivar assignment when not-nil type filter applies codegens ivar assignment when not-nil type filter applies codegens bug with instance vars and ssa codegens bug with instance vars and ssa codegens bug with var, while, if, break and ssa codegens bug with var, while, if, break and ssa 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 assignment that can never be reached codegens assignment that can never be reached works with typeof with assignment (#828) works with typeof with assignment (#828) assigns to underscore assigns to underscore Code gen: virtual type call base method call base method call overwritten method call overwritten method call base overwritten method call base overwritten method dispatch call with virtual type argument dispatch call with virtual type argument can belong to union can belong to union lookup instance variables in parent types lookup instance variables in parent types assign instance variable in virtual type assign instance variable in virtual type codegens non-virtual call that calls virtual call to another virtual call codegens non-virtual call that calls virtual call to another virtual call casts virtual type to base virtual type casts virtual type to base 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 nilable type codegens call to Object#to_s from nilable type codegens virtual call with explicit self codegens virtual call with explicit self codegens virtual call with explicit self and nilable type codegens virtual call with explicit self and nilable type initializes ivars to nil even if object never instantiated initializes ivars to nil even if object never instantiated doesn't lookup in Value+ when virtual type is Object+ doesn't lookup in Value+ when virtual type is Object+ correctly dispatch call with block when the obj is a virtual type correctly dispatch call with block when the obj is a virtual type dispatch call with nilable virtual arg dispatch call with nilable virtual arg calls class method 1 calls class method 1 calls class method 2 calls class method 2 calls class method 3 calls class method 3 dispatches on virtual metaclass (1) dispatches on virtual metaclass (1) dispatches on virtual metaclass (2) dispatches on virtual metaclass (2) dispatches on virtual metaclass (3) dispatches on virtual metaclass (3) codegens new for simple type, then for virtual codegens new for simple type, then for virtual codegens new twice for virtual codegens new twice for virtual codegens allocate for virtual type with custom new codegens allocate for virtual type with custom new returns type with virtual type def type returns type with virtual type def type casts virtual type to union casts virtual type to union casts union to virtual casts union to virtual codegens virtual method of abstract metaclass codegens virtual method of abstract metaclass codegens new for virtual class with one type codegens new for virtual class with one type codegens new for virtual class with two types codegens new for virtual class with two types codegens new for new on virtual abstract class (#3835) codegens new for new on virtual abstract class (#3835) casts metaclass union type to virtual metaclass type (#6298) casts metaclass union type to virtual metaclass type (#6298) Code gen: void codegens void assignment codegens void assignment codegens void assignment in case codegens void assignment in case codegens void assignment in case with local variable codegens void assignment in case with local variable codegens unreachable code codegens unreachable code codegens no return assignment codegens no return assignment allows passing void as argument to method allows passing void as argument to method returns void from nil functions, doesn't crash when passing value returns void from nil functions, doesn't crash when passing value Codegen: while codegens def with while codegens def with while codegens while with false codegens while with false codegens while with non-false condition codegens while with non-false condition break without value break without value conditional break without value conditional break without value break with value break with value conditional break with value conditional break with value break with value, condition fails break with value, condition fails endless break with value endless break with value endless conditional break with value endless conditional break with value codegens endless while codegens endless while codegens while with declared var 1 codegens while with declared var 1 codegens while with declared var 2 codegens while with declared var 2 codegens while with declared var 3 codegens while with declared var 3 skip block with next skip block with next doesn't crash on a = NoReturn doesn't crash on a = NoReturn doesn't crash on #2767 doesn't crash on #2767 doesn't crash on #2767 (2) doesn't crash on #2767 (2) doesn't crash on #2767 (3) doesn't crash on #2767 (3) doesn't crash on #2767 (4) doesn't crash on #2767 (4) doesn't crash on while true begin break rescue (#7786) doesn't crash on while true begin break rescue (#7786) Semantic: yield with scope uses scope in global method uses scope in global method uses scope in instance method uses scope in instance method it uses self for instance method it uses self for instance method it invokes global method inside block of yield scope it invokes global method inside block of yield scope generate right code when yielding struct as scope generate right code when yielding struct as scope doesn't explode if specifying &block but never using it (#181) doesn't explode if specifying &block but never using it (#181) uses instance variable of enclosing scope uses instance variable of enclosing scope uses method of enclosing scope uses method of enclosing scope uses method of with object uses method of with object yields with dispatch (#2171) (1) yields with dispatch (#2171) (1) yields virtual type (#2171) (2) yields virtual type (#2171) (2) Code gen: C ABI passes struct less than 64 bits (for real) passes struct less than 64 bits (for real) passes struct between 64 and 128 bits (for real) passes struct between 64 and 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct bigger than 128 bits (for real) passes struct after many other args (for real) passes struct after many other args (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) returns struct less than 64 bits (for real) returns struct less than 64 bits (for real) returns struct between 64 and 128 bits (for real) returns struct between 64 and 128 bits (for real) returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret accepts large struct in a callback (for real) accepts large struct in a callback (for real) promotes variadic args (float to double) promotes variadic args (float to double) 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 (i16 to i32) (#9742) promotes variadic args (i16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) promotes variadic args (u16 to i32) (#9742) Code gen: C ABI x86_64 passes struct less than 64 bits as { i64 } passes 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 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) passes struct bigger than128 bits with byval passes struct bigger than128 bits with byval returns struct less than 64 bits as { i64 } returns struct less than 64 bits as { i64 } returns struct between 64 and 128 bits as { i64, i64 } returns struct between 64 and 128 bits as { i64, i64 } returns struct bigger than 128 bits with sret returns struct bigger than 128 bits with sret types to_s of does for type contained in generic class does for type contained in generic class does for type contained in generic module does for type contained in generic module non-instantiated array non-instantiated array array of simple types array of simple types union of simple types union of simple types named tuple named tuple nilable reference type nilable reference type nilable value type nilable value type nilable type with more than two elements, Nil at the end nilable type with more than two elements, Nil at the end union types should not have extra parens in arrays in arrays in pointers in pointers in tuples in tuples should have parens as return type as return type as arg type as arg type Crystal::ZeroOneOrMany(T) initialize and size creates without a value creates without a value creates with a value creates with a value as Indexable when there's no value when there's no value when there's a single value when there's a single value when there's two values when there's two values #each when there's no value when there's no value when there's a single value when there's a single value when there's two values when there's two values #push element when there's no value when there's no value when there's a single value when there's a single value when there's two values when there's two values #+ elements when there's no value and elements is empty when there's no value and elements is empty when there's no value and elements has a single value when there's no value and elements has a single value when there's no value and elements has more than one value when there's no value and elements has more than one value when there's a single value when there's a single value when there's two values when there's two values #reject when there's no value when there's no value when there's a single value and it matches when there's a single value and it matches when there's a single value and it doesn't match when there's a single value and it doesn't match when there are three values and none matches when there are three values and none matches when there are three values and two match when there are three values and two match when there are three values and all match when there are three values and all match context includes args includes args consider different instances of def consider different instances of def includes assignments includes assignments includes block args includes block args includes top level vars includes top level vars includes last call includes last call does not includes temp variables does not includes temp variables does includes regex special variables does includes regex special variables does includes self on classes does includes self on classes 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 handle union types can handle union types can display text output can display text output can display json output can display json output can get context of empty def can get context of empty def can get context of empty yielded block can get context of empty yielded block can get context of yielded block can get context of yielded block can get context of nested yielded block can get context of nested yielded block can get context inside a module can get context inside a module can get context inside class methods can get context inside class methods can get context inside initialize can get context inside initialize can get context in generic class can get context in generic class 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? use type filters from if var use type filters from if var can get context in file private method can get context in file private method can get context in file private module can get context in file private module can't get context from uncalled method can't get context from uncalled method Crystal::Doc::Generator .anchor_link generates the correct anchor link generates the correct anchor link expand expands macro expression {{ ... }} expands macro expression {{ ... }} expands macro expression {{ ... }} with cursor inside it expands macro expression {{ ... }} with cursor inside it expands macro expression {{ ... }} with cursor end of it expands macro expression {{ ... }} with cursor end of it expands macro expression {% ... %} expands macro expression {% ... %} expands macro expression {% ... %} with cursor at end of it expands macro expression {% ... %} with cursor at end of it expands macro control {% if %} expands macro control {% if %} expands macro control {% if %} with cursor inside it expands macro control {% if %} with cursor inside it expands macro control {% if %} with cursor at end of it expands macro control {% if %} with cursor at end of it expands macro control {% if %} with indent expands macro control {% if %} with indent expands macro control {% for %} expands macro control {% for %} expands macro control {% for %} with cursor inside it expands macro control {% for %} with cursor inside it 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 indent expands macro control {% for %} with indent expands simple macro expands simple macro expands simple macro with cursor inside it expands simple macro with cursor inside it expands simple macro with cursor at end of it expands simple macro with cursor at end of it expands complex macro expands complex macro expands macros with 2 level expands macros with 2 level expands macros with 3 level expands macros with 3 level expands macro of module expands macro of module expands macro of module with cursor at module name expands macro of module with cursor at module name expands macro of module with cursor at dot expands macro of module with cursor at dot expands macro of module inside module expands macro of module inside module expands macro expression inside module expands macro expression inside module expands macro expression inside private module expands macro expression inside private module expands macro expression inside def of private module expands macro expression inside def of private module expands macro expression inside class expands macro expression inside class expands macro expression inside private class expands macro expression inside private class expands macro expression inside def of private class expands macro expression inside def of private class expands macro expression inside struct expands macro expression inside struct expands macro expression inside private struct expands macro expression inside private struct expands macro expression inside def of private struct expands macro expression inside def of private struct expands macro expression inside enum expands macro expression inside enum expands macro expression inside private enum expands macro expression inside private enum expands macro expression inside def of private enum expands macro expression inside def of private enum expands macro expression inside lib expands macro expression inside lib expands macro expression inside private lib expands macro expression inside private lib expands macro expression inside C struct expands macro expression inside C struct expands macro expression inside C struct of private lib expands macro expression inside C struct of private lib expands macro expression inside C union expands macro expression inside C union expands macro expression inside C union of private lib expands macro expression inside C union of private lib expands macro expression inside def expands macro expression inside def expands macro expression inside def of module expands macro expression inside def of module expands macro expression inside def of nested module expands macro expression inside def of nested module expands macro expression inside private def expands macro expression inside private def expands macro expression inside def of private module expands macro expression inside def of private module 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 doesn't expand macro expression doesn't expand macro expression doesn't expand macro expression with cursor out of end doesn't expand macro expression with cursor out of end doesn't expand macro expression doesn't expand macro expression doesn't expand normal call doesn't expand normal call expands macro with doc expands macro with doc Crystal::Command::FormatCommand formats stdin formats stdin formats stdin (formatted) formats stdin (formatted) formats stdin (syntax error) formats stdin (syntax error) formats stdin (invalid byte sequence error) formats stdin (invalid byte sequence error) formats stdin (bug) formats stdin (bug) formats stdin (bug + show-backtrace) formats stdin (bug + show-backtrace) formats files formats files formats files (dir) formats files (dir) formats files (error) formats files (error) formats files (bug) formats files (bug) formats files (bug + show-stacktrace) formats files (bug + show-stacktrace) checks files format checks files format checks files format (ok) checks files format (ok) checks files format (excludes) checks files format (excludes) checks files format (excludes + includes) checks files format (excludes + includes) Crystal::TextHierarchyPrinter works works Crystal::JSONHierarchyPrinter works works implementations find top level method calls find top level method calls find implementors of different classes find implementors of different classes find implementors of classes that are only used find implementors of classes that are only used find method calls inside while find method calls inside while find method calls inside while cond find method calls inside while cond find method calls inside if find method calls inside if find method calls inside trailing if find method calls inside trailing if find method calls inside rescue find method calls inside rescue find implementation from macro expansions find implementation from macro expansions find full trace for macro expansions find full trace for macro expansions can display text output can display text output can display json output can display json output find implementation in class methods find implementation in class methods find implementation in generic class find implementation in generic class find implementation in generic class methods find implementation in generic class methods find implementation inside a module class find implementation inside a module class find implementation inside contained class' class method find implementation inside contained class' class method find implementation inside contained file private method find implementation inside contained file private method find implementation inside contained file private class' class method find implementation inside contained file private class' class method find class implementation find class implementation find open class implementation find open class implementation find struct implementation find struct implementation find module implementation find module implementation find enum implementation find enum implementation find enum value implementation find enum value implementation find alias implementation find alias implementation find class defined by macro find class defined by macro find class inside method find class inside method find const implementation find const implementation Crystal::Init::InitProject correctly uses git config correctly uses git config has proper contents has proper contents Init invocation produces valid yaml file produces valid yaml 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 errors if files will be overwritten by a generated file errors if files will be overwritten by a generated file 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 doesn't error when asked to skip existing files doesn't error when asked to skip existing files .parse_args DIR DIR DIR with path DIR with path DIR (relative to home) DIR (relative to home) DIR (absolute) DIR (absolute) DIR = . DIR = . NAME DIR NAME DIR .validate_name empty empty length length uppercase uppercase digits digits dashes dashes underscores underscores invalid character invalid character View#module_name namespace is divided by hyphen namespace is divided by hyphen 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 Crystal::TablePrint single cell single cell single row with separator single row with separator multiple rows with separator multiple rows with separator rows with horizontal separators rows with horizontal separators aligns columns borders aligns columns borders aligns cell content aligns cell content colspan a cell that fits the available size colspan a cell that fits the available size Crystal::Doc::MarkdDocRenderer expand_code_links finds sibling methods finds sibling methods finds sibling methods finds sibling methods doesn't find substrings for methods doesn't find substrings for methods doesn't find sibling methods of wrong type doesn't find sibling methods of wrong type doesn't find sibling methods with fake receiver doesn't find sibling methods with fake receiver finds sibling methods with self receiver finds sibling methods with self receiver doesn't find parents' methods doesn't find parents' methods doesn't find parents' methods doesn't find parents' methods doesn't match with different separator doesn't match with different separator finds method with args finds method with args finds method with zero args finds method with zero args doesn't find method with wrong number of args doesn't find method with wrong number of args doesn't find method with wrong number of args doesn't find method with wrong number of args finds method with unspecified args finds method with unspecified args finds method with args even with empty brackets finds method with args even with empty brackets finds method with question mark finds method with question mark finds method with exclamation mark finds method with exclamation mark finds operator method finds operator method finds operator method with unspecified args finds operator method with unspecified args finds methods of a type finds methods of a type finds method of an absolute type finds method of an absolute type doesn't find wrong kind of sibling methods doesn't find wrong kind of sibling methods doesn't find wrong kind of methods doesn't find wrong kind of methods finds multiple methods with brackets finds multiple methods with brackets finds types from base finds types from base finds types from nested finds types from nested finds constant finds constant finds nested type finds nested type finds absolute type finds absolute type doesn't find wrong absolute type doesn't find wrong absolute type doesn't find type not at word boundary doesn't find type not at word boundary finds multiple kinds of things finds multiple kinds of things does not break when referencing lib type (#9928) does not break when referencing lib type (#9928) renders code blocks renders "```crystal\nHello\nWorld\n```" renders "```crystal\nHello\nWorld\n```" renders "```cr\nHello\nWorld\n```" renders "```cr\nHello\nWorld\n```" renders "```\nHello\nWorld\n```" renders "```\nHello\nWorld\n```" renders code spans renders "`