I: pbuilder: network access will be disabled during build I: Current time: Fri Mar 14 06:54:09 +14 2025 I: pbuilder-time-stamp: 1741884849 I: Building the build Environment I: extracting base tarball [/var/cache/pbuilder/unstable-reproducible-base.tgz] I: copying local configuration W: --override-config is not set; not updating apt.conf Read the manpage for details. I: mounting /proc filesystem I: mounting /sys filesystem I: creating /{dev,run}/shm I: mounting /dev/pts filesystem I: redirecting /dev/ptmx to /dev/pts/ptmx I: policy-rc.d already exists I: Copying source file I: copying [crystal_1.14.0+dfsg-1.dsc] I: copying [./crystal_1.14.0+dfsg.orig.tar.xz] I: copying [./crystal_1.14.0+dfsg-1.debian.tar.xz] I: Extracting source dpkg-source: warning: cannot verify inline signature for ./crystal_1.14.0+dfsg-1.dsc: unsupported subcommand dpkg-source: info: extracting crystal in crystal-1.14.0+dfsg dpkg-source: info: unpacking crystal_1.14.0+dfsg.orig.tar.xz dpkg-source: info: unpacking crystal_1.14.0+dfsg-1.debian.tar.xz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: applying disable-udp-multicast-specs.diff dpkg-source: info: applying remove-check-in-random-failing-test.diff dpkg-source: info: applying update-packaged-javascript-links.patch I: Not using root during the build. I: Installing the build-deps I: user script /srv/workspace/pbuilder/290116/tmp/hooks/D01_modify_environment starting debug: Running on ionos1-amd64. I: Changing host+domainname to test build reproducibility I: Adding a custom variable just for the fun of it... I: Changing /bin/sh to bash '/bin/sh' -> '/bin/bash' lrwxrwxrwx 1 root root 9 Mar 13 16:54 /bin/sh -> /bin/bash I: Setting pbuilder2's login shell to /bin/bash I: Setting pbuilder2's GECOS to second user,second room,second work-phone,second home-phone,second other I: user script /srv/workspace/pbuilder/290116/tmp/hooks/D01_modify_environment finished I: user script /srv/workspace/pbuilder/290116/tmp/hooks/D02_print_environment starting I: set BASH=/bin/sh BASHOPTS=checkwinsize:cmdhist:complete_fullquote:extquote:force_fignore:globasciiranges:globskipdots:hostcomplete:interactive_comments:patsub_replacement:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=() BASH_ARGV=() BASH_CMDS=() BASH_LINENO=([0]="12" [1]="0") BASH_LOADABLES_PATH=/usr/local/lib/bash:/usr/lib/bash:/opt/local/lib/bash:/usr/pkg/lib/bash:/opt/pkg/lib/bash:. BASH_SOURCE=([0]="/tmp/hooks/D02_print_environment" [1]="/tmp/hooks/D02_print_environment") BASH_VERSINFO=([0]="5" [1]="2" [2]="37" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='5.2.37(1)-release' BUILDDIR=/build/reproducible-path BUILDUSERGECOS='second user,second room,second work-phone,second home-phone,second other' BUILDUSERNAME=pbuilder2 BUILD_ARCH=amd64 DEBIAN_FRONTEND=noninteractive DEB_BUILD_OPTIONS='buildinfo=+all reproducible=+all parallel=20 ' DIRSTACK=() DISTRIBUTION=unstable EUID=0 FUNCNAME=([0]="Echo" [1]="main") GROUPS=() HOME=/root HOSTNAME=i-capture-the-hostname HOSTTYPE=x86_64 HOST_ARCH=amd64 IFS=' ' INVOCATION_ID=82b6d86906ac40608be8530da0c2ce66 LANG=C LANGUAGE=et_EE:et LC_ALL=C MACHTYPE=x86_64-pc-linux-gnu MAIL=/var/mail/root OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path PBCURRENTCOMMANDLINEOPERATION=build PBUILDER_OPERATION=build PBUILDER_PKGDATADIR=/usr/share/pbuilder PBUILDER_PKGLIBDIR=/usr/lib/pbuilder PBUILDER_SYSCONFDIR=/etc PIPESTATUS=([0]="0") POSIXLY_CORRECT=y PPID=290116 PS4='+ ' PWD=/ SHELL=/bin/bash SHELLOPTS=braceexpand:errexit:hashall:interactive-comments:posix SHLVL=3 SUDO_COMMAND='/usr/bin/timeout -k 24.1h 24h /usr/bin/ionice -c 3 /usr/bin/nice -n 11 /usr/bin/unshare --uts -- /usr/sbin/pbuilder --build --configfile /srv/reproducible-results/rbuild-debian/r-b-build.ZtByPLAt/pbuilderrc_3Uu4 --distribution unstable --hookdir /etc/pbuilder/rebuild-hooks --debbuildopts -b --basetgz /var/cache/pbuilder/unstable-reproducible-base.tgz --buildresult /srv/reproducible-results/rbuild-debian/r-b-build.ZtByPLAt/b2 --logfile b2/build.log crystal_1.14.0+dfsg-1.dsc' SUDO_GID=110 SUDO_UID=105 SUDO_USER=jenkins TERM=unknown TZ=/usr/share/zoneinfo/Etc/GMT-14 UID=0 USER=root _='I: set' http_proxy=http://46.16.76.132:3128 I: uname -a Linux i-capture-the-hostname 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07) x86_64 GNU/Linux I: ls -l /bin lrwxrwxrwx 1 root root 7 Mar 4 11:20 /bin -> usr/bin I: user script /srv/workspace/pbuilder/290116/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 (= 13), git, libbsd-dev, libedit-dev, libevent-dev, libgc-dev (>= 1:7.6.0), libgmp-dev, libpcre2-dev, libssl-dev, libtool, libxml2-dev, libyaml-dev, libz-dev, lld-19, llvm-19-dev, pkgconf, crystal (>= 1.6.0) dpkg-deb: building package 'pbuilder-satisfydepends-dummy' in '/tmp/satisfydepends-aptitude/pbuilder-satisfydepends-dummy.deb'. Selecting previously unselected package pbuilder-satisfydepends-dummy. (Reading database ... 19783 files and directories currently installed.) Preparing to unpack .../pbuilder-satisfydepends-dummy.deb ... Unpacking pbuilder-satisfydepends-dummy (0.invalid.0) ... dpkg: pbuilder-satisfydepends-dummy: dependency problems, but configuring anyway as you requested: pbuilder-satisfydepends-dummy depends on debhelper-compat (= 13); however: Package debhelper-compat is not installed. pbuilder-satisfydepends-dummy depends on git; however: Package git is not installed. pbuilder-satisfydepends-dummy depends on libbsd-dev; however: Package libbsd-dev is not installed. pbuilder-satisfydepends-dummy depends on libedit-dev; however: Package libedit-dev is not installed. pbuilder-satisfydepends-dummy depends on libevent-dev; however: Package libevent-dev is not installed. pbuilder-satisfydepends-dummy depends on libgc-dev (>= 1:7.6.0); however: Package libgc-dev is not installed. pbuilder-satisfydepends-dummy depends on libgmp-dev; however: Package libgmp-dev is not installed. pbuilder-satisfydepends-dummy depends on libpcre2-dev; however: Package libpcre2-dev is not installed. pbuilder-satisfydepends-dummy depends on libssl-dev; however: Package libssl-dev is not installed. pbuilder-satisfydepends-dummy depends on libtool; however: Package libtool is not installed. pbuilder-satisfydepends-dummy depends on libxml2-dev; however: Package libxml2-dev is not installed. pbuilder-satisfydepends-dummy depends on libyaml-dev; however: Package libyaml-dev is not installed. pbuilder-satisfydepends-dummy depends on libz-dev; however: Package libz-dev is not installed. pbuilder-satisfydepends-dummy depends on lld-19; however: Package lld-19 is not installed. pbuilder-satisfydepends-dummy depends on llvm-19-dev; however: Package llvm-19-dev is not installed. pbuilder-satisfydepends-dummy depends on pkgconf; however: Package pkgconf is not installed. pbuilder-satisfydepends-dummy depends on crystal (>= 1.6.0); however: Package crystal is not installed. Setting up pbuilder-satisfydepends-dummy (0.invalid.0) ... Reading package lists... Building dependency tree... Reading state information... Initializing package states... Writing extended state information... Building tag database... pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) pbuilder-satisfydepends-dummy is already installed at the requested version (0.invalid.0) The following NEW packages will be installed: autoconf{a} automake{a} autopoint{a} autotools-dev{a} bsdextrautils{a} crystal{a} debhelper{a} dh-autoreconf{a} dh-strip-nondeterminism{a} dwz{a} file{a} gettext{a} gettext-base{a} git{a} git-man{a} groff-base{a} icu-devtools{a} intltool-debian{a} libarchive-zip-perl{a} libbrotli1{a} libbsd-dev{a} libclang-cpp19{a} libcom-err2{a} libcurl3t64-gnutls{a} libcurl4t64{a} libdebhelper-perl{a} libedit-dev{a} libedit2{a} libelf1t64{a} liberror-perl{a} libevent-2.1-7t64{a} libevent-core-2.1-7t64{a} libevent-dev{a} libevent-extra-2.1-7t64{a} libevent-openssl-2.1-7t64{a} libevent-pthreads-2.1-7t64{a} libexpat1{a} libffi-dev{a} libffi8{a} libfile-stripnondeterminism-perl{a} libgc-dev{a} libgc1{a} libgmp-dev{a} libgmpxx4ldbl{a} libgnutls30t64{a} libgssapi-krb5-2{a} libicu-dev{a} libicu72{a} libidn2-0{a} libjs-codemirror{a} libjs-jquery{a} libk5crypto3{a} libkeyutils1{a} libkrb5-3{a} libkrb5support0{a} libldap2{a} libllvm19{a} libmagic-mgc{a} libmagic1t64{a} libmd-dev{a} libncurses-dev{a} libncurses6{a} libnghttp2-14{a} libnghttp3-9{a} libngtcp2-16{a} libngtcp2-crypto-gnutls8{a} libp11-kit0{a} libpcre2-16-0{a} libpcre2-32-0{a} libpcre2-dev{a} libpcre2-posix3{a} libpfm4{a} libpipeline1{a} libpkgconf3{a} libpsl5t64{a} libpython3-stdlib{a} libpython3.13-minimal{a} libpython3.13-stdlib{a} libreadline8t64{a} librtmp1{a} libsasl2-2{a} libsasl2-modules-db{a} libssh2-1t64{a} libssl-dev{a} libtasn1-6{a} libtool{a} libuchardet0{a} libunistring5{a} libxml2{a} libxml2-dev{a} libyaml-0-2{a} libyaml-dev{a} libz3-4{a} libz3-dev{a} lld-19{a} llvm-19{a} llvm-19-dev{a} llvm-19-linker-tools{a} llvm-19-runtime{a} llvm-19-tools{a} m4{a} man-db{a} media-types{a} netbase{a} pkgconf{a} pkgconf-bin{a} po-debconf{a} python3{a} python3-minimal{a} python3-pygments{a} python3-yaml{a} python3.13{a} python3.13-minimal{a} readline-common{a} sensible-utils{a} tzdata{a} zlib1g-dev{a} The following packages are RECOMMENDED but will NOT be installed: binfmt-support ca-certificates curl javascript-common krb5-locales less libarchive-cpio-perl libgpm2 libldap-common libltdl-dev libmail-sendmail-perl libsasl2-modules lynx openssh-client publicsuffix systemd wget 0 packages upgraded, 117 newly installed, 0 to remove and 0 not upgraded. Need to get 181 MB of archives. After unpacking 968 MB will be used. Writing extended state information... Get: 1 http://deb.debian.org/debian unstable/main amd64 libpython3.13-minimal amd64 3.13.2-1 [859 kB] Get: 2 http://deb.debian.org/debian unstable/main amd64 libexpat1 amd64 2.6.4-1 [106 kB] Get: 3 http://deb.debian.org/debian unstable/main amd64 python3.13-minimal amd64 3.13.2-1 [2205 kB] Get: 4 http://deb.debian.org/debian unstable/main amd64 python3-minimal amd64 3.13.2-2 [27.1 kB] Get: 5 http://deb.debian.org/debian unstable/main amd64 media-types all 13.0.0 [29.3 kB] Get: 6 http://deb.debian.org/debian unstable/main amd64 netbase all 6.4 [12.8 kB] Get: 7 http://deb.debian.org/debian unstable/main amd64 tzdata all 2025a-2 [259 kB] Get: 8 http://deb.debian.org/debian unstable/main amd64 libffi8 amd64 3.4.7-1 [23.9 kB] Get: 9 http://deb.debian.org/debian unstable/main amd64 readline-common all 8.2-6 [69.4 kB] Get: 10 http://deb.debian.org/debian unstable/main amd64 libreadline8t64 amd64 8.2-6 [169 kB] Get: 11 http://deb.debian.org/debian unstable/main amd64 libpython3.13-stdlib amd64 3.13.2-1 [1979 kB] Get: 12 http://deb.debian.org/debian unstable/main amd64 python3.13 amd64 3.13.2-1 [745 kB] Get: 13 http://deb.debian.org/debian unstable/main amd64 libpython3-stdlib amd64 3.13.2-2 [10.1 kB] Get: 14 http://deb.debian.org/debian unstable/main amd64 python3 amd64 3.13.2-2 [28.1 kB] Get: 15 http://deb.debian.org/debian unstable/main amd64 sensible-utils all 0.0.24 [24.8 kB] Get: 16 http://deb.debian.org/debian unstable/main amd64 libmagic-mgc amd64 1:5.45-3+b1 [314 kB] Get: 17 http://deb.debian.org/debian unstable/main amd64 libmagic1t64 amd64 1:5.45-3+b1 [108 kB] Get: 18 http://deb.debian.org/debian unstable/main amd64 file amd64 1:5.45-3+b1 [43.3 kB] Get: 19 http://deb.debian.org/debian unstable/main amd64 gettext-base amd64 0.23.1-1 [243 kB] Get: 20 http://deb.debian.org/debian unstable/main amd64 libuchardet0 amd64 0.0.8-1+b2 [68.9 kB] Get: 21 http://deb.debian.org/debian unstable/main amd64 groff-base amd64 1.23.0-7 [1185 kB] Get: 22 http://deb.debian.org/debian unstable/main amd64 bsdextrautils amd64 2.40.4-5 [92.4 kB] Get: 23 http://deb.debian.org/debian unstable/main amd64 libpipeline1 amd64 1.5.8-1 [42.0 kB] Get: 24 http://deb.debian.org/debian unstable/main amd64 man-db amd64 2.13.0-1 [1420 kB] Get: 25 http://deb.debian.org/debian unstable/main amd64 m4 amd64 1.4.19-7 [294 kB] Get: 26 http://deb.debian.org/debian unstable/main amd64 autoconf all 2.72-3 [493 kB] Get: 27 http://deb.debian.org/debian unstable/main amd64 autotools-dev all 20220109.1 [51.6 kB] Get: 28 http://deb.debian.org/debian unstable/main amd64 automake all 1:1.17-3 [862 kB] Get: 29 http://deb.debian.org/debian unstable/main amd64 autopoint all 0.23.1-1 [770 kB] Get: 30 http://deb.debian.org/debian unstable/main amd64 libevent-2.1-7t64 amd64 2.1.12-stable-10+b1 [182 kB] Get: 31 http://deb.debian.org/debian unstable/main amd64 libgc1 amd64 1:8.2.8-1 [247 kB] Get: 32 http://deb.debian.org/debian unstable/main amd64 libedit2 amd64 3.1-20250104-1 [93.8 kB] Get: 33 http://deb.debian.org/debian unstable/main amd64 libicu72 amd64 72.1-6 [9421 kB] Get: 34 http://deb.debian.org/debian unstable/main amd64 libxml2 amd64 2.12.7+dfsg+really2.9.14-0.2+b2 [699 kB] Get: 35 http://deb.debian.org/debian unstable/main amd64 libz3-4 amd64 4.13.3-1 [8560 kB] Get: 36 http://deb.debian.org/debian unstable/main amd64 libllvm19 amd64 1:19.1.7-1+b1 [26.0 MB] Get: 37 http://deb.debian.org/debian unstable/main amd64 libgc-dev amd64 1:8.2.8-1 [416 kB] Get: 38 http://deb.debian.org/debian unstable/main amd64 libpkgconf3 amd64 1.8.1-4 [36.4 kB] Get: 39 http://deb.debian.org/debian unstable/main amd64 pkgconf-bin amd64 1.8.1-4 [30.2 kB] Get: 40 http://deb.debian.org/debian unstable/main amd64 pkgconf amd64 1.8.1-4 [26.2 kB] Get: 41 http://deb.debian.org/debian unstable/main amd64 libpcre2-16-0 amd64 10.45-1 [281 kB] Get: 42 http://deb.debian.org/debian unstable/main amd64 libpcre2-32-0 amd64 10.45-1 [268 kB] Get: 43 http://deb.debian.org/debian unstable/main amd64 libpcre2-posix3 amd64 10.45-1 [63.5 kB] Get: 44 http://deb.debian.org/debian unstable/main amd64 libpcre2-dev amd64 10.45-1 [853 kB] Get: 45 http://deb.debian.org/debian unstable/main amd64 libevent-core-2.1-7t64 amd64 2.1.12-stable-10+b1 [132 kB] Get: 46 http://deb.debian.org/debian unstable/main amd64 libevent-extra-2.1-7t64 amd64 2.1.12-stable-10+b1 [108 kB] Get: 47 http://deb.debian.org/debian unstable/main amd64 libevent-pthreads-2.1-7t64 amd64 2.1.12-stable-10+b1 [54.3 kB] Get: 48 http://deb.debian.org/debian unstable/main amd64 libevent-openssl-2.1-7t64 amd64 2.1.12-stable-10+b1 [61.1 kB] Get: 49 http://deb.debian.org/debian unstable/main amd64 libevent-dev amd64 2.1.12-stable-10+b1 [305 kB] Get: 50 http://deb.debian.org/debian unstable/main amd64 libjs-codemirror all 5.65.0+~cs5.83.9-3 [774 kB] Get: 51 http://deb.debian.org/debian unstable/main amd64 libjs-jquery all 3.6.1+dfsg+~3.5.14-1 [326 kB] Get: 52 http://deb.debian.org/debian unstable/main amd64 crystal amd64 1.14.0+dfsg-1 [4375 kB] Get: 53 http://deb.debian.org/debian unstable/main amd64 libdebhelper-perl all 13.24.1 [90.9 kB] Get: 54 http://deb.debian.org/debian unstable/main amd64 libtool all 2.5.4-4 [539 kB] Get: 55 http://deb.debian.org/debian unstable/main amd64 dh-autoreconf all 20 [17.1 kB] Get: 56 http://deb.debian.org/debian unstable/main amd64 libarchive-zip-perl all 1.68-1 [104 kB] Get: 57 http://deb.debian.org/debian unstable/main amd64 libfile-stripnondeterminism-perl all 1.14.1-2 [19.7 kB] Get: 58 http://deb.debian.org/debian unstable/main amd64 dh-strip-nondeterminism all 1.14.1-2 [8620 B] Get: 59 http://deb.debian.org/debian unstable/main amd64 libelf1t64 amd64 0.192-4 [189 kB] Get: 60 http://deb.debian.org/debian unstable/main amd64 dwz amd64 0.15-1+b1 [110 kB] Get: 61 http://deb.debian.org/debian unstable/main amd64 libunistring5 amd64 1.3-1 [476 kB] Get: 62 http://deb.debian.org/debian unstable/main amd64 gettext amd64 0.23.1-1 [1680 kB] Get: 63 http://deb.debian.org/debian unstable/main amd64 intltool-debian all 0.35.0+20060710.6 [22.9 kB] Get: 64 http://deb.debian.org/debian unstable/main amd64 po-debconf all 1.0.21+nmu1 [248 kB] Get: 65 http://deb.debian.org/debian unstable/main amd64 debhelper all 13.24.1 [920 kB] Get: 66 http://deb.debian.org/debian unstable/main amd64 libbrotli1 amd64 1.1.0-2+b7 [307 kB] Get: 67 http://deb.debian.org/debian unstable/main amd64 libidn2-0 amd64 2.3.8-1 [109 kB] Get: 68 http://deb.debian.org/debian unstable/main amd64 libp11-kit0 amd64 0.25.5-3 [425 kB] Get: 69 http://deb.debian.org/debian unstable/main amd64 libtasn1-6 amd64 4.20.0-2 [49.9 kB] Get: 70 http://deb.debian.org/debian unstable/main amd64 libgnutls30t64 amd64 3.8.9-2 [1464 kB] Get: 71 http://deb.debian.org/debian unstable/main amd64 libkrb5support0 amd64 1.21.3-5 [33.0 kB] Get: 72 http://deb.debian.org/debian unstable/main amd64 libcom-err2 amd64 1.47.2-1 [24.0 kB] Get: 73 http://deb.debian.org/debian unstable/main amd64 libk5crypto3 amd64 1.21.3-5 [81.5 kB] Get: 74 http://deb.debian.org/debian unstable/main amd64 libkeyutils1 amd64 1.6.3-4 [9092 B] Get: 75 http://deb.debian.org/debian unstable/main amd64 libkrb5-3 amd64 1.21.3-5 [326 kB] Get: 76 http://deb.debian.org/debian unstable/main amd64 libgssapi-krb5-2 amd64 1.21.3-5 [138 kB] Get: 77 http://deb.debian.org/debian unstable/main amd64 libsasl2-modules-db amd64 2.1.28+dfsg1-9 [19.8 kB] Get: 78 http://deb.debian.org/debian unstable/main amd64 libsasl2-2 amd64 2.1.28+dfsg1-9 [57.5 kB] Get: 79 http://deb.debian.org/debian unstable/main amd64 libldap2 amd64 2.6.9+dfsg-2 [194 kB] Get: 80 http://deb.debian.org/debian unstable/main amd64 libnghttp2-14 amd64 1.64.0-1 [75.5 kB] Get: 81 http://deb.debian.org/debian unstable/main amd64 libnghttp3-9 amd64 1.8.0-1 [67.7 kB] Get: 82 http://deb.debian.org/debian unstable/main amd64 libngtcp2-16 amd64 1.11.0-1 [131 kB] Get: 83 http://deb.debian.org/debian unstable/main amd64 libngtcp2-crypto-gnutls8 amd64 1.11.0-1 [29.3 kB] Get: 84 http://deb.debian.org/debian unstable/main amd64 libpsl5t64 amd64 0.21.2-1.1+b1 [57.2 kB] Get: 85 http://deb.debian.org/debian unstable/main amd64 librtmp1 amd64 2.4+20151223.gitfa8646d.1-2+b5 [58.8 kB] Get: 86 http://deb.debian.org/debian unstable/main amd64 libssh2-1t64 amd64 1.11.1-1 [245 kB] Get: 87 http://deb.debian.org/debian unstable/main amd64 libcurl3t64-gnutls amd64 8.12.1-3 [365 kB] Get: 88 http://deb.debian.org/debian unstable/main amd64 liberror-perl all 0.17030-1 [26.9 kB] Get: 89 http://deb.debian.org/debian unstable/main amd64 git-man all 1:2.47.2-0.1 [2205 kB] Get: 90 http://deb.debian.org/debian unstable/main amd64 git amd64 1:2.47.2-0.1 [8788 kB] Get: 91 http://deb.debian.org/debian unstable/main amd64 icu-devtools amd64 72.1-6 [210 kB] Get: 92 http://deb.debian.org/debian unstable/main amd64 libmd-dev amd64 1.1.0-2+b1 [55.3 kB] Get: 93 http://deb.debian.org/debian unstable/main amd64 libbsd-dev amd64 0.12.2-2 [258 kB] Get: 94 http://deb.debian.org/debian unstable/main amd64 libclang-cpp19 amd64 1:19.1.7-1+b1 [13.2 MB] Get: 95 http://deb.debian.org/debian unstable/main amd64 libcurl4t64 amd64 8.12.1-3 [369 kB] Get: 96 http://deb.debian.org/debian unstable/main amd64 libncurses6 amd64 6.5+20250216-2 [105 kB] Get: 97 http://deb.debian.org/debian unstable/main amd64 libncurses-dev amd64 6.5+20250216-2 [353 kB] Get: 98 http://deb.debian.org/debian unstable/main amd64 libedit-dev amd64 3.1-20250104-1 [115 kB] Get: 99 http://deb.debian.org/debian unstable/main amd64 libffi-dev amd64 3.4.7-1 [60.8 kB] Get: 100 http://deb.debian.org/debian unstable/main amd64 libgmpxx4ldbl amd64 2:6.3.0+dfsg-3 [329 kB] Get: 101 http://deb.debian.org/debian unstable/main amd64 libgmp-dev amd64 2:6.3.0+dfsg-3 [642 kB] Get: 102 http://deb.debian.org/debian unstable/main amd64 libicu-dev amd64 72.1-6 [10.4 MB] Get: 103 http://deb.debian.org/debian unstable/main amd64 libpfm4 amd64 4.13.0+git83-g91970fe-1 [368 kB] Get: 104 http://deb.debian.org/debian unstable/main amd64 libssl-dev amd64 3.4.1-1 [2787 kB] Get: 105 http://deb.debian.org/debian unstable/main amd64 libxml2-dev amd64 2.12.7+dfsg+really2.9.14-0.2+b2 [794 kB] Get: 106 http://deb.debian.org/debian unstable/main amd64 libyaml-0-2 amd64 0.2.5-2 [52.5 kB] Get: 107 http://deb.debian.org/debian unstable/main amd64 libyaml-dev amd64 0.2.5-2 [63.4 kB] Get: 108 http://deb.debian.org/debian unstable/main amd64 libz3-dev amd64 4.13.3-1 [107 kB] Get: 109 http://deb.debian.org/debian unstable/main amd64 lld-19 amd64 1:19.1.7-1+b1 [1375 kB] Get: 110 http://deb.debian.org/debian unstable/main amd64 llvm-19-runtime amd64 1:19.1.7-1+b1 [551 kB] Get: 111 http://deb.debian.org/debian unstable/main amd64 llvm-19-linker-tools amd64 1:19.1.7-1+b1 [1261 kB] Get: 112 http://deb.debian.org/debian unstable/main amd64 llvm-19 amd64 1:19.1.7-1+b1 [16.4 MB] Get: 113 http://deb.debian.org/debian unstable/main amd64 python3-pygments all 2.18.0+dfsg-2 [836 kB] Get: 114 http://deb.debian.org/debian unstable/main amd64 python3-yaml amd64 6.0.2-1+b2 [136 kB] Get: 115 http://deb.debian.org/debian unstable/main amd64 llvm-19-tools amd64 1:19.1.7-1+b1 [511 kB] Get: 116 http://deb.debian.org/debian unstable/main amd64 llvm-19-dev amd64 1:19.1.7-1+b1 [43.2 MB] Get: 117 http://deb.debian.org/debian unstable/main amd64 zlib1g-dev amd64 1:1.3.dfsg+really1.3.1-1+b1 [920 kB] Fetched 181 MB in 5s (40.2 MB/s) Preconfiguring packages ... Selecting previously unselected package libpython3.13-minimal:amd64. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 19783 files and directories currently installed.) Preparing to unpack .../libpython3.13-minimal_3.13.2-1_amd64.deb ... Unpacking libpython3.13-minimal:amd64 (3.13.2-1) ... Selecting previously unselected package libexpat1:amd64. Preparing to unpack .../libexpat1_2.6.4-1_amd64.deb ... Unpacking libexpat1:amd64 (2.6.4-1) ... Selecting previously unselected package python3.13-minimal. Preparing to unpack .../python3.13-minimal_3.13.2-1_amd64.deb ... Unpacking python3.13-minimal (3.13.2-1) ... Setting up libpython3.13-minimal:amd64 (3.13.2-1) ... Setting up libexpat1:amd64 (2.6.4-1) ... Setting up python3.13-minimal (3.13.2-1) ... Selecting previously unselected package python3-minimal. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 20117 files and directories currently installed.) Preparing to unpack .../0-python3-minimal_3.13.2-2_amd64.deb ... Unpacking python3-minimal (3.13.2-2) ... Selecting previously unselected package media-types. Preparing to unpack .../1-media-types_13.0.0_all.deb ... Unpacking media-types (13.0.0) ... Selecting previously unselected package netbase. Preparing to unpack .../2-netbase_6.4_all.deb ... Unpacking netbase (6.4) ... Selecting previously unselected package tzdata. Preparing to unpack .../3-tzdata_2025a-2_all.deb ... Unpacking tzdata (2025a-2) ... Selecting previously unselected package libffi8:amd64. Preparing to unpack .../4-libffi8_3.4.7-1_amd64.deb ... Unpacking libffi8:amd64 (3.4.7-1) ... Selecting previously unselected package readline-common. Preparing to unpack .../5-readline-common_8.2-6_all.deb ... Unpacking readline-common (8.2-6) ... Selecting previously unselected package libreadline8t64:amd64. Preparing to unpack .../6-libreadline8t64_8.2-6_amd64.deb ... Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8 to /lib/x86_64-linux-gnu/libhistory.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libhistory.so.8.2 to /lib/x86_64-linux-gnu/libhistory.so.8.2.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8 to /lib/x86_64-linux-gnu/libreadline.so.8.usr-is-merged by libreadline8t64' Adding 'diversion of /lib/x86_64-linux-gnu/libreadline.so.8.2 to /lib/x86_64-linux-gnu/libreadline.so.8.2.usr-is-merged by libreadline8t64' Unpacking libreadline8t64:amd64 (8.2-6) ... Selecting previously unselected package libpython3.13-stdlib:amd64. Preparing to unpack .../7-libpython3.13-stdlib_3.13.2-1_amd64.deb ... Unpacking libpython3.13-stdlib:amd64 (3.13.2-1) ... Selecting previously unselected package python3.13. Preparing to unpack .../8-python3.13_3.13.2-1_amd64.deb ... Unpacking python3.13 (3.13.2-1) ... Selecting previously unselected package libpython3-stdlib:amd64. Preparing to unpack .../9-libpython3-stdlib_3.13.2-2_amd64.deb ... Unpacking libpython3-stdlib:amd64 (3.13.2-2) ... Setting up python3-minimal (3.13.2-2) ... Selecting previously unselected package python3. (Reading database ... (Reading database ... 5% (Reading database ... 10% (Reading database ... 15% (Reading database ... 20% (Reading database ... 25% (Reading database ... 30% (Reading database ... 35% (Reading database ... 40% (Reading database ... 45% (Reading database ... 50% (Reading database ... 55% (Reading database ... 60% (Reading database ... 65% (Reading database ... 70% (Reading database ... 75% (Reading database ... 80% (Reading database ... 85% (Reading database ... 90% (Reading database ... 95% (Reading database ... 100% (Reading database ... 21127 files and directories currently installed.) Preparing to unpack .../000-python3_3.13.2-2_amd64.deb ... Unpacking python3 (3.13.2-2) ... Selecting previously unselected package sensible-utils. Preparing to unpack .../001-sensible-utils_0.0.24_all.deb ... Unpacking sensible-utils (0.0.24) ... Selecting previously unselected package libmagic-mgc. Preparing to unpack .../002-libmagic-mgc_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic-mgc (1:5.45-3+b1) ... Selecting previously unselected package libmagic1t64:amd64. Preparing to unpack .../003-libmagic1t64_1%3a5.45-3+b1_amd64.deb ... Unpacking libmagic1t64:amd64 (1:5.45-3+b1) ... Selecting previously unselected package file. Preparing to unpack .../004-file_1%3a5.45-3+b1_amd64.deb ... Unpacking file (1:5.45-3+b1) ... Selecting previously unselected package gettext-base. Preparing to unpack .../005-gettext-base_0.23.1-1_amd64.deb ... Unpacking gettext-base (0.23.1-1) ... Selecting previously unselected package libuchardet0:amd64. Preparing to unpack .../006-libuchardet0_0.0.8-1+b2_amd64.deb ... Unpacking libuchardet0:amd64 (0.0.8-1+b2) ... Selecting previously unselected package groff-base. Preparing to unpack .../007-groff-base_1.23.0-7_amd64.deb ... Unpacking groff-base (1.23.0-7) ... Selecting previously unselected package bsdextrautils. Preparing to unpack .../008-bsdextrautils_2.40.4-5_amd64.deb ... Unpacking bsdextrautils (2.40.4-5) ... Selecting previously unselected package libpipeline1:amd64. Preparing to unpack .../009-libpipeline1_1.5.8-1_amd64.deb ... Unpacking libpipeline1:amd64 (1.5.8-1) ... Selecting previously unselected package man-db. Preparing to unpack .../010-man-db_2.13.0-1_amd64.deb ... Unpacking man-db (2.13.0-1) ... Selecting previously unselected package m4. Preparing to unpack .../011-m4_1.4.19-7_amd64.deb ... Unpacking m4 (1.4.19-7) ... Selecting previously unselected package autoconf. Preparing to unpack .../012-autoconf_2.72-3_all.deb ... Unpacking autoconf (2.72-3) ... Selecting previously unselected package autotools-dev. Preparing to unpack .../013-autotools-dev_20220109.1_all.deb ... Unpacking autotools-dev (20220109.1) ... Selecting previously unselected package automake. Preparing to unpack .../014-automake_1%3a1.17-3_all.deb ... Unpacking automake (1:1.17-3) ... Selecting previously unselected package autopoint. Preparing to unpack .../015-autopoint_0.23.1-1_all.deb ... Unpacking autopoint (0.23.1-1) ... Selecting previously unselected package libevent-2.1-7t64:amd64. Preparing to unpack .../016-libevent-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libgc1:amd64. Preparing to unpack .../017-libgc1_1%3a8.2.8-1_amd64.deb ... Unpacking libgc1:amd64 (1:8.2.8-1) ... Selecting previously unselected package libedit2:amd64. Preparing to unpack .../018-libedit2_3.1-20250104-1_amd64.deb ... Unpacking libedit2:amd64 (3.1-20250104-1) ... Selecting previously unselected package libicu72:amd64. Preparing to unpack .../019-libicu72_72.1-6_amd64.deb ... Unpacking libicu72:amd64 (72.1-6) ... Selecting previously unselected package libxml2:amd64. Preparing to unpack .../020-libxml2_2.12.7+dfsg+really2.9.14-0.2+b2_amd64.deb ... Unpacking libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b2) ... Selecting previously unselected package libz3-4:amd64. Preparing to unpack .../021-libz3-4_4.13.3-1_amd64.deb ... Unpacking libz3-4:amd64 (4.13.3-1) ... Selecting previously unselected package libllvm19:amd64. Preparing to unpack .../022-libllvm19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libllvm19:amd64 (1:19.1.7-1+b1) ... Selecting previously unselected package libgc-dev:amd64. Preparing to unpack .../023-libgc-dev_1%3a8.2.8-1_amd64.deb ... Unpacking libgc-dev:amd64 (1:8.2.8-1) ... Selecting previously unselected package libpkgconf3:amd64. Preparing to unpack .../024-libpkgconf3_1.8.1-4_amd64.deb ... Unpacking libpkgconf3:amd64 (1.8.1-4) ... Selecting previously unselected package pkgconf-bin. Preparing to unpack .../025-pkgconf-bin_1.8.1-4_amd64.deb ... Unpacking pkgconf-bin (1.8.1-4) ... Selecting previously unselected package pkgconf:amd64. Preparing to unpack .../026-pkgconf_1.8.1-4_amd64.deb ... Unpacking pkgconf:amd64 (1.8.1-4) ... Selecting previously unselected package libpcre2-16-0:amd64. Preparing to unpack .../027-libpcre2-16-0_10.45-1_amd64.deb ... Unpacking libpcre2-16-0:amd64 (10.45-1) ... Selecting previously unselected package libpcre2-32-0:amd64. Preparing to unpack .../028-libpcre2-32-0_10.45-1_amd64.deb ... Unpacking libpcre2-32-0:amd64 (10.45-1) ... Selecting previously unselected package libpcre2-posix3:amd64. Preparing to unpack .../029-libpcre2-posix3_10.45-1_amd64.deb ... Unpacking libpcre2-posix3:amd64 (10.45-1) ... Selecting previously unselected package libpcre2-dev:amd64. Preparing to unpack .../030-libpcre2-dev_10.45-1_amd64.deb ... Unpacking libpcre2-dev:amd64 (10.45-1) ... Selecting previously unselected package libevent-core-2.1-7t64:amd64. Preparing to unpack .../031-libevent-core-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-core-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-extra-2.1-7t64:amd64. Preparing to unpack .../032-libevent-extra-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-extra-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-pthreads-2.1-7t64:amd64. Preparing to unpack .../033-libevent-pthreads-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-pthreads-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-openssl-2.1-7t64:amd64. Preparing to unpack .../034-libevent-openssl-2.1-7t64_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-openssl-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Selecting previously unselected package libevent-dev. Preparing to unpack .../035-libevent-dev_2.1.12-stable-10+b1_amd64.deb ... Unpacking libevent-dev (2.1.12-stable-10+b1) ... Selecting previously unselected package libjs-codemirror. Preparing to unpack .../036-libjs-codemirror_5.65.0+~cs5.83.9-3_all.deb ... Unpacking libjs-codemirror (5.65.0+~cs5.83.9-3) ... Selecting previously unselected package libjs-jquery. Preparing to unpack .../037-libjs-jquery_3.6.1+dfsg+~3.5.14-1_all.deb ... Unpacking libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Selecting previously unselected package crystal. Preparing to unpack .../038-crystal_1.14.0+dfsg-1_amd64.deb ... Unpacking crystal (1.14.0+dfsg-1) ... Selecting previously unselected package libdebhelper-perl. Preparing to unpack .../039-libdebhelper-perl_13.24.1_all.deb ... Unpacking libdebhelper-perl (13.24.1) ... Selecting previously unselected package libtool. Preparing to unpack .../040-libtool_2.5.4-4_all.deb ... Unpacking libtool (2.5.4-4) ... Selecting previously unselected package dh-autoreconf. Preparing to unpack .../041-dh-autoreconf_20_all.deb ... Unpacking dh-autoreconf (20) ... Selecting previously unselected package libarchive-zip-perl. Preparing to unpack .../042-libarchive-zip-perl_1.68-1_all.deb ... Unpacking libarchive-zip-perl (1.68-1) ... Selecting previously unselected package libfile-stripnondeterminism-perl. Preparing to unpack .../043-libfile-stripnondeterminism-perl_1.14.1-2_all.deb ... Unpacking libfile-stripnondeterminism-perl (1.14.1-2) ... Selecting previously unselected package dh-strip-nondeterminism. Preparing to unpack .../044-dh-strip-nondeterminism_1.14.1-2_all.deb ... Unpacking dh-strip-nondeterminism (1.14.1-2) ... Selecting previously unselected package libelf1t64:amd64. Preparing to unpack .../045-libelf1t64_0.192-4_amd64.deb ... Unpacking libelf1t64:amd64 (0.192-4) ... Selecting previously unselected package dwz. Preparing to unpack .../046-dwz_0.15-1+b1_amd64.deb ... Unpacking dwz (0.15-1+b1) ... Selecting previously unselected package libunistring5:amd64. Preparing to unpack .../047-libunistring5_1.3-1_amd64.deb ... Unpacking libunistring5:amd64 (1.3-1) ... Selecting previously unselected package gettext. Preparing to unpack .../048-gettext_0.23.1-1_amd64.deb ... Unpacking gettext (0.23.1-1) ... Selecting previously unselected package intltool-debian. Preparing to unpack .../049-intltool-debian_0.35.0+20060710.6_all.deb ... Unpacking intltool-debian (0.35.0+20060710.6) ... Selecting previously unselected package po-debconf. Preparing to unpack .../050-po-debconf_1.0.21+nmu1_all.deb ... Unpacking po-debconf (1.0.21+nmu1) ... Selecting previously unselected package debhelper. Preparing to unpack .../051-debhelper_13.24.1_all.deb ... Unpacking debhelper (13.24.1) ... Selecting previously unselected package libbrotli1:amd64. Preparing to unpack .../052-libbrotli1_1.1.0-2+b7_amd64.deb ... Unpacking libbrotli1:amd64 (1.1.0-2+b7) ... Selecting previously unselected package libidn2-0:amd64. Preparing to unpack .../053-libidn2-0_2.3.8-1_amd64.deb ... Unpacking libidn2-0:amd64 (2.3.8-1) ... Selecting previously unselected package libp11-kit0:amd64. Preparing to unpack .../054-libp11-kit0_0.25.5-3_amd64.deb ... Unpacking libp11-kit0:amd64 (0.25.5-3) ... Selecting previously unselected package libtasn1-6:amd64. Preparing to unpack .../055-libtasn1-6_4.20.0-2_amd64.deb ... Unpacking libtasn1-6:amd64 (4.20.0-2) ... Selecting previously unselected package libgnutls30t64:amd64. Preparing to unpack .../056-libgnutls30t64_3.8.9-2_amd64.deb ... Unpacking libgnutls30t64:amd64 (3.8.9-2) ... Selecting previously unselected package libkrb5support0:amd64. Preparing to unpack .../057-libkrb5support0_1.21.3-5_amd64.deb ... Unpacking libkrb5support0:amd64 (1.21.3-5) ... Selecting previously unselected package libcom-err2:amd64. Preparing to unpack .../058-libcom-err2_1.47.2-1_amd64.deb ... Unpacking libcom-err2:amd64 (1.47.2-1) ... Selecting previously unselected package libk5crypto3:amd64. Preparing to unpack .../059-libk5crypto3_1.21.3-5_amd64.deb ... Unpacking libk5crypto3:amd64 (1.21.3-5) ... Selecting previously unselected package libkeyutils1:amd64. Preparing to unpack .../060-libkeyutils1_1.6.3-4_amd64.deb ... Unpacking libkeyutils1:amd64 (1.6.3-4) ... Selecting previously unselected package libkrb5-3:amd64. Preparing to unpack .../061-libkrb5-3_1.21.3-5_amd64.deb ... Unpacking libkrb5-3:amd64 (1.21.3-5) ... Selecting previously unselected package libgssapi-krb5-2:amd64. Preparing to unpack .../062-libgssapi-krb5-2_1.21.3-5_amd64.deb ... Unpacking libgssapi-krb5-2:amd64 (1.21.3-5) ... Selecting previously unselected package libsasl2-modules-db:amd64. Preparing to unpack .../063-libsasl2-modules-db_2.1.28+dfsg1-9_amd64.deb ... Unpacking libsasl2-modules-db:amd64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libsasl2-2:amd64. Preparing to unpack .../064-libsasl2-2_2.1.28+dfsg1-9_amd64.deb ... Unpacking libsasl2-2:amd64 (2.1.28+dfsg1-9) ... Selecting previously unselected package libldap2:amd64. Preparing to unpack .../065-libldap2_2.6.9+dfsg-2_amd64.deb ... Unpacking libldap2:amd64 (2.6.9+dfsg-2) ... Selecting previously unselected package libnghttp2-14:amd64. Preparing to unpack .../066-libnghttp2-14_1.64.0-1_amd64.deb ... Unpacking libnghttp2-14:amd64 (1.64.0-1) ... Selecting previously unselected package libnghttp3-9:amd64. Preparing to unpack .../067-libnghttp3-9_1.8.0-1_amd64.deb ... Unpacking libnghttp3-9:amd64 (1.8.0-1) ... Selecting previously unselected package libngtcp2-16:amd64. Preparing to unpack .../068-libngtcp2-16_1.11.0-1_amd64.deb ... Unpacking libngtcp2-16:amd64 (1.11.0-1) ... Selecting previously unselected package libngtcp2-crypto-gnutls8:amd64. Preparing to unpack .../069-libngtcp2-crypto-gnutls8_1.11.0-1_amd64.deb ... Unpacking libngtcp2-crypto-gnutls8:amd64 (1.11.0-1) ... Selecting previously unselected package libpsl5t64:amd64. Preparing to unpack .../070-libpsl5t64_0.21.2-1.1+b1_amd64.deb ... Unpacking libpsl5t64:amd64 (0.21.2-1.1+b1) ... Selecting previously unselected package librtmp1:amd64. Preparing to unpack .../071-librtmp1_2.4+20151223.gitfa8646d.1-2+b5_amd64.deb ... Unpacking librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Selecting previously unselected package libssh2-1t64:amd64. Preparing to unpack .../072-libssh2-1t64_1.11.1-1_amd64.deb ... Unpacking libssh2-1t64:amd64 (1.11.1-1) ... Selecting previously unselected package libcurl3t64-gnutls:amd64. Preparing to unpack .../073-libcurl3t64-gnutls_8.12.1-3_amd64.deb ... Unpacking libcurl3t64-gnutls:amd64 (8.12.1-3) ... Selecting previously unselected package liberror-perl. Preparing to unpack .../074-liberror-perl_0.17030-1_all.deb ... Unpacking liberror-perl (0.17030-1) ... Selecting previously unselected package git-man. Preparing to unpack .../075-git-man_1%3a2.47.2-0.1_all.deb ... Unpacking git-man (1:2.47.2-0.1) ... Selecting previously unselected package git. Preparing to unpack .../076-git_1%3a2.47.2-0.1_amd64.deb ... Unpacking git (1:2.47.2-0.1) ... Selecting previously unselected package icu-devtools. Preparing to unpack .../077-icu-devtools_72.1-6_amd64.deb ... Unpacking icu-devtools (72.1-6) ... Selecting previously unselected package libmd-dev:amd64. Preparing to unpack .../078-libmd-dev_1.1.0-2+b1_amd64.deb ... Unpacking libmd-dev:amd64 (1.1.0-2+b1) ... Selecting previously unselected package libbsd-dev:amd64. Preparing to unpack .../079-libbsd-dev_0.12.2-2_amd64.deb ... Unpacking libbsd-dev:amd64 (0.12.2-2) ... Selecting previously unselected package libclang-cpp19. Preparing to unpack .../080-libclang-cpp19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking libclang-cpp19 (1:19.1.7-1+b1) ... Selecting previously unselected package libcurl4t64:amd64. Preparing to unpack .../081-libcurl4t64_8.12.1-3_amd64.deb ... Unpacking libcurl4t64:amd64 (8.12.1-3) ... Selecting previously unselected package libncurses6:amd64. Preparing to unpack .../082-libncurses6_6.5+20250216-2_amd64.deb ... Unpacking libncurses6:amd64 (6.5+20250216-2) ... Selecting previously unselected package libncurses-dev:amd64. Preparing to unpack .../083-libncurses-dev_6.5+20250216-2_amd64.deb ... Unpacking libncurses-dev:amd64 (6.5+20250216-2) ... Selecting previously unselected package libedit-dev:amd64. Preparing to unpack .../084-libedit-dev_3.1-20250104-1_amd64.deb ... Unpacking libedit-dev:amd64 (3.1-20250104-1) ... Selecting previously unselected package libffi-dev:amd64. Preparing to unpack .../085-libffi-dev_3.4.7-1_amd64.deb ... Unpacking libffi-dev:amd64 (3.4.7-1) ... Selecting previously unselected package libgmpxx4ldbl:amd64. Preparing to unpack .../086-libgmpxx4ldbl_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libgmp-dev:amd64. Preparing to unpack .../087-libgmp-dev_2%3a6.3.0+dfsg-3_amd64.deb ... Unpacking libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Selecting previously unselected package libicu-dev:amd64. Preparing to unpack .../088-libicu-dev_72.1-6_amd64.deb ... Unpacking libicu-dev:amd64 (72.1-6) ... Selecting previously unselected package libpfm4:amd64. Preparing to unpack .../089-libpfm4_4.13.0+git83-g91970fe-1_amd64.deb ... Unpacking libpfm4:amd64 (4.13.0+git83-g91970fe-1) ... Selecting previously unselected package libssl-dev:amd64. Preparing to unpack .../090-libssl-dev_3.4.1-1_amd64.deb ... Unpacking libssl-dev:amd64 (3.4.1-1) ... Selecting previously unselected package libxml2-dev:amd64. Preparing to unpack .../091-libxml2-dev_2.12.7+dfsg+really2.9.14-0.2+b2_amd64.deb ... Unpacking libxml2-dev:amd64 (2.12.7+dfsg+really2.9.14-0.2+b2) ... Selecting previously unselected package libyaml-0-2:amd64. Preparing to unpack .../092-libyaml-0-2_0.2.5-2_amd64.deb ... Unpacking libyaml-0-2:amd64 (0.2.5-2) ... Selecting previously unselected package libyaml-dev:amd64. Preparing to unpack .../093-libyaml-dev_0.2.5-2_amd64.deb ... Unpacking libyaml-dev:amd64 (0.2.5-2) ... Selecting previously unselected package libz3-dev:amd64. Preparing to unpack .../094-libz3-dev_4.13.3-1_amd64.deb ... Unpacking libz3-dev:amd64 (4.13.3-1) ... Selecting previously unselected package lld-19. Preparing to unpack .../095-lld-19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking lld-19 (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19-runtime. Preparing to unpack .../096-llvm-19-runtime_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-runtime (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19-linker-tools. Preparing to unpack .../097-llvm-19-linker-tools_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-linker-tools (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19. Preparing to unpack .../098-llvm-19_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19 (1:19.1.7-1+b1) ... Selecting previously unselected package python3-pygments. Preparing to unpack .../099-python3-pygments_2.18.0+dfsg-2_all.deb ... Unpacking python3-pygments (2.18.0+dfsg-2) ... Selecting previously unselected package python3-yaml. Preparing to unpack .../100-python3-yaml_6.0.2-1+b2_amd64.deb ... Unpacking python3-yaml (6.0.2-1+b2) ... Selecting previously unselected package llvm-19-tools. Preparing to unpack .../101-llvm-19-tools_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-tools (1:19.1.7-1+b1) ... Selecting previously unselected package llvm-19-dev. Preparing to unpack .../102-llvm-19-dev_1%3a19.1.7-1+b1_amd64.deb ... Unpacking llvm-19-dev (1:19.1.7-1+b1) ... Selecting previously unselected package zlib1g-dev:amd64. Preparing to unpack .../103-zlib1g-dev_1%3a1.3.dfsg+really1.3.1-1+b1_amd64.deb ... Unpacking zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up media-types (13.0.0) ... Setting up libpipeline1:amd64 (1.5.8-1) ... Setting up libkeyutils1:amd64 (1.6.3-4) ... Setting up libicu72:amd64 (72.1-6) ... Setting up bsdextrautils (2.40.4-5) ... Setting up libmagic-mgc (1:5.45-3+b1) ... Setting up libarchive-zip-perl (1.68-1) ... Setting up libyaml-0-2:amd64 (0.2.5-2) ... Setting up libdebhelper-perl (13.24.1) ... Setting up libbrotli1:amd64 (1.1.0-2+b7) ... Setting up libedit2:amd64 (3.1-20250104-1) ... Setting up libmagic1t64:amd64 (1:5.45-3+b1) ... Setting up libnghttp2-14:amd64 (1.64.0-1) ... Setting up gettext-base (0.23.1-1) ... Setting up m4 (1.4.19-7) ... Setting up libevent-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libcom-err2:amd64 (1.47.2-1) ... Setting up file (1:5.45-3+b1) ... Setting up libpcre2-16-0:amd64 (10.45-1) ... Setting up libelf1t64:amd64 (0.192-4) ... Setting up libkrb5support0:amd64 (1.21.3-5) ... Setting up libsasl2-modules-db:amd64 (2.1.28+dfsg1-9) ... Setting up tzdata (2025a-2) ... Current default time zone: 'Etc/UTC' Local time is now: Thu Mar 13 16:55:02 UTC 2025. Universal Time is now: Thu Mar 13 16:55:02 UTC 2025. Run 'dpkg-reconfigure tzdata' if you wish to change it. Setting up liberror-perl (0.17030-1) ... Setting up autotools-dev (20220109.1) ... Setting up libz3-4:amd64 (4.13.3-1) ... Setting up libpcre2-32-0:amd64 (10.45-1) ... Setting up libpkgconf3:amd64 (1.8.1-4) ... Setting up libgmpxx4ldbl:amd64 (2:6.3.0+dfsg-3) ... Setting up libpfm4:amd64 (4.13.0+git83-g91970fe-1) ... Setting up libncurses6:amd64 (6.5+20250216-2) ... Setting up libunistring5:amd64 (1.3-1) ... Setting up libjs-codemirror (5.65.0+~cs5.83.9-3) ... Setting up libssl-dev:amd64 (3.4.1-1) ... Setting up autopoint (0.23.1-1) ... Setting up icu-devtools (72.1-6) ... Setting up pkgconf-bin (1.8.1-4) ... Setting up libk5crypto3:amd64 (1.21.3-5) ... Setting up libgc1:amd64 (1:8.2.8-1) ... Setting up libsasl2-2:amd64 (2.1.28+dfsg1-9) ... Setting up autoconf (2.72-3) ... Setting up libnghttp3-9:amd64 (1.8.0-1) ... Setting up zlib1g-dev:amd64 (1:1.3.dfsg+really1.3.1-1+b1) ... Setting up libffi8:amd64 (3.4.7-1) ... Setting up libpcre2-posix3:amd64 (10.45-1) ... Setting up dwz (0.15-1+b1) ... Setting up sensible-utils (0.0.24) ... Setting up libuchardet0:amd64 (0.0.8-1+b2) ... Setting up libmd-dev:amd64 (1.1.0-2+b1) ... Setting up libtasn1-6:amd64 (4.20.0-2) ... Setting up git-man (1:2.47.2-0.1) ... Setting up netbase (6.4) ... Setting up libngtcp2-16:amd64 (1.11.0-1) ... Setting up libkrb5-3:amd64 (1.21.3-5) ... Setting up libevent-core-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libssh2-1t64:amd64 (1.11.1-1) ... Setting up libjs-jquery (3.6.1+dfsg+~3.5.14-1) ... Setting up libgc-dev:amd64 (1:8.2.8-1) ... Setting up readline-common (8.2-6) ... Setting up libicu-dev:amd64 (72.1-6) ... Setting up libxml2:amd64 (2.12.7+dfsg+really2.9.14-0.2+b2) ... Setting up libbsd-dev:amd64 (0.12.2-2) ... Setting up libldap2:amd64 (2.6.9+dfsg-2) ... Setting up automake (1:1.17-3) ... update-alternatives: using /usr/bin/automake-1.17 to provide /usr/bin/automake (automake) in auto mode Setting up libfile-stripnondeterminism-perl (1.14.1-2) ... Setting up libllvm19:amd64 (1:19.1.7-1+b1) ... Setting up libz3-dev:amd64 (4.13.3-1) ... Setting up libncurses-dev:amd64 (6.5+20250216-2) ... Setting up gettext (0.23.1-1) ... Setting up libgmp-dev:amd64 (2:6.3.0+dfsg-3) ... Setting up libpcre2-dev:amd64 (10.45-1) ... Setting up libyaml-dev:amd64 (0.2.5-2) ... Setting up libtool (2.5.4-4) ... Setting up libevent-pthreads-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libevent-openssl-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libidn2-0:amd64 (2.3.8-1) ... Setting up libffi-dev:amd64 (3.4.7-1) ... Setting up pkgconf:amd64 (1.8.1-4) ... Setting up intltool-debian (0.35.0+20060710.6) ... Setting up dh-autoreconf (20) ... Setting up libxml2-dev:amd64 (2.12.7+dfsg+really2.9.14-0.2+b2) ... Setting up libp11-kit0:amd64 (0.25.5-3) ... Setting up libedit-dev:amd64 (3.1-20250104-1) ... Setting up libgssapi-krb5-2:amd64 (1.21.3-5) ... Setting up libevent-extra-2.1-7t64:amd64 (2.1.12-stable-10+b1) ... Setting up libreadline8t64:amd64 (8.2-6) ... Setting up dh-strip-nondeterminism (1.14.1-2) ... Setting up groff-base (1.23.0-7) ... Setting up llvm-19-linker-tools (1:19.1.7-1+b1) ... Setting up llvm-19-runtime (1:19.1.7-1+b1) ... Setting up lld-19 (1:19.1.7-1+b1) ... Setting up libpython3.13-stdlib:amd64 (3.13.2-1) ... Setting up libpython3-stdlib:amd64 (3.13.2-2) ... Setting up libclang-cpp19 (1:19.1.7-1+b1) ... Setting up libgnutls30t64:amd64 (3.8.9-2) ... Setting up python3.13 (3.13.2-1) ... Setting up po-debconf (1.0.21+nmu1) ... Setting up libpsl5t64:amd64 (0.21.2-1.1+b1) ... Setting up python3 (3.13.2-2) ... Setting up man-db (2.13.0-1) ... Not building database; man-db/auto-update is not 'true'. Setting up python3-pygments (2.18.0+dfsg-2) ... Setting up librtmp1:amd64 (2.4+20151223.gitfa8646d.1-2+b5) ... Setting up libevent-dev (2.1.12-stable-10+b1) ... Setting up libngtcp2-crypto-gnutls8:amd64 (1.11.0-1) ... Setting up crystal (1.14.0+dfsg-1) ... Setting up libcurl4t64:amd64 (8.12.1-3) ... Setting up libcurl3t64-gnutls:amd64 (8.12.1-3) ... Setting up python3-yaml (6.0.2-1+b2) ... Setting up debhelper (13.24.1) ... Setting up git (1:2.47.2-0.1) ... Setting up llvm-19 (1:19.1.7-1+b1) ... Setting up llvm-19-tools (1:19.1.7-1+b1) ... Setting up llvm-19-dev (1:19.1.7-1+b1) ... Processing triggers for libc-bin (2.41-4) ... Reading package lists... Building dependency tree... Reading state information... Reading extended state information... Initializing package states... Writing extended state information... Building tag database... -> Finished parsing the build-deps I: Building the package I: user script /srv/workspace/pbuilder/290116/tmp/hooks/A99_set_merged_usr starting Not re-configuring usrmerge for unstable I: user script /srv/workspace/pbuilder/290116/tmp/hooks/A99_set_merged_usr finished hostname: Name or service not known I: Running cd /build/reproducible-path/crystal-1.14.0+dfsg/ && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-buildpackage -us -uc -b && env PATH="/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/i/capture/the/path" HOME="/nonexistent/second-build" dpkg-genchanges -S > ../crystal_1.14.0+dfsg-1_source.changes dpkg-buildpackage: info: source package crystal dpkg-buildpackage: info: source version 1.14.0+dfsg-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by David Suárez dpkg-source --before-build . dpkg-buildpackage: info: host architecture amd64 debian/rules clean dh clean dh_auto_clean make -j20 clean make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' rm -rf .build rm -rf ./docs rm -rf src/llvm/ext/llvm_ext.o rm -rf man/*.gz make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' debian/rules override_dh_clean make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' dh_clean rm -f man/*.gz make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' debian/rules binary dh binary dh_update_autotools_config dh_autoreconf dh_auto_configure debian/rules override_dh_auto_build make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' dh_auto_build -- release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" interpreter=1 make -j20 "INSTALL=install --strip-program=true" release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib CRYSTAL_CACHE_DIR=/tmp/crystal interpreter=1 make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' Using /usr/bin/llvm-config-19 [version=19.1.7] CRYSTAL_CONFIG_BUILD_COMMIT="" CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib SOURCE_DATE_EPOCH="1734712509" CRYSTAL_CONFIG_LIBRARY_PATH='$ORIGIN/../lib/crystal' ./bin/crystal build -D strict_multi_assign -D preview_overload_order --release --progress --threads 20 --link-flags="-Wl,-z,relro" -o .build/crystal src/compiler/crystal.cr -D without_openssl -D without_zlib -D use_pcre2 [1/13] Parse [1/13] Parse [2/13] Semantic (top level) [2/13] Semantic (top level) [3/13] Semantic (new) [3/13] Semantic (new) [4/13] Semantic (type declarations) [4/13] Semantic (type declarations) [5/13] Semantic (abstract def check) [5/13] Semantic (abstract def check) [6/13] Semantic (restrictions augmenter) [6/13] Semantic (restrictions augmenter) [7/13] Semantic (ivars initializers) [7/13] Semantic (ivars initializers) [8/13] Semantic (cvars initializers) [8/13] Semantic (cvars initializers) [9/13] Semantic (main) [9/13] Semantic (main) [10/13] Semantic (cleanup) [10/13] Semantic (cleanup) [11/13] Semantic (recursive struct check) [11/13] Semantic (recursive struct check) [12/13] Codegen (crystal) [12/13] Codegen (crystal) [13/13] Codegen (bc+obj) [13/13] [0/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) make[2]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' make[1]: Leaving directory '/build/reproducible-path/crystal-1.14.0+dfsg' debian/rules override_dh_auto_test make[1]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' make release=1 verbose=1 progress=1 threads=20 CRYSTAL_CONFIG_PATH="lib:/usr/lib/crystal/lib" CRYSTAL_CACHE_DIR="/tmp/crystal" interpreter=1 compiler_spec make[2]: Entering directory '/build/reproducible-path/crystal-1.14.0+dfsg' Using /usr/bin/llvm-config-19 [version=19.1.7] CRYSTAL_CONFIG_BUILD_COMMIT="" CRYSTAL_CONFIG_PATH=lib:/usr/lib/crystal/lib SOURCE_DATE_EPOCH="1734712509" ./bin/crystal build -D strict_multi_assign -D preview_overload_order --release --progress --threads 20 --link-flags="-Wl,-z,relro" --exclude-warnings spec/std --exclude-warnings spec/compiler --exclude-warnings spec/primitives -o .build/compiler_spec spec/compiler_spec.cr --release Using compiled compiler at .build/crystal In lib/markd/src/markd/renderers/html_renderer.cr:238:7 238 | {% if Crystal::VERSION < "1.2.0" %} ^ Warning: expanding macro There was a problem expanding macro 'macro_140553792944880' Called macro defined in lib/markd/src/markd/renderers/html_renderer.cr:238:7 238 | {% if Crystal::VERSION < "1.2.0" %} Which expanded to: 1 | > 2 | title = URI.encode(node.first_child.text) 3 | @output_io << %() 4 | Warning: Deprecated URI.encode. Use `.encode_path` instead. A total of 1 warnings were found. [1/13] Parse [1/13] Parse [2/13] Semantic (top level) [2/13] Semantic (top level) [3/13] Semantic (new) [3/13] Semantic (new) [4/13] Semantic (type declarations) [4/13] Semantic (type declarations) [5/13] Semantic (abstract def check) [5/13] Semantic (abstract def check) [6/13] Semantic (restrictions augmenter) [6/13] Semantic (restrictions augmenter) [7/13] Semantic (ivars initializers) [7/13] Semantic (ivars initializers) [8/13] Semantic (cvars initializers) [8/13] Semantic (cvars initializers) [9/13] Semantic (main) [9/13] Semantic (main) [10/13] Semantic (cleanup) [10/13] Semantic (cleanup) [11/13] Semantic (recursive struct check) [11/13] Semantic (recursive struct check) [12/13] Codegen (crystal) [12/13] Codegen (crystal) [13/13] Codegen (bc+obj) [13/13] [0/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [13/13] [1/1] Codegen (bc+obj) [14/13] Codegen (linking) [14/13] Codegen (linking) .build/compiler_spec -v --order=random Randomized with seed: 58504 Semantic: c enum allows using an enum as a type in a fun allows using an enum as a type in a fun types enum value types enum value types enum value with base type types enum value with base type allows using an enum as a type in a struct allows using an enum as a type in a struct errors if enum value is different from default (Int32) (#194) errors if enum value is different from default (Int32) (#194) errors if enum base type is not an integer errors if enum base type is not an integer Crystal::Command::FlagsVisitor different flags different flags unique flags unique flags only macro only macro Semantic: require file not found relative require relative require relative wildcard relative wildcard require require wildcard wildcard Crystal::Doc::Generator #collect_constants returns empty array when constants are private returns empty array when constants are private #formatted_summary should generate the first line should generate the first line should generate the first sentence should generate the first sentence with a Deprecated annotation, and docs should generate both the docs and Deprecated tag should generate both the docs and Deprecated tag with a Experimental annotation, and no docs should generate just the Experimental tag should generate just the Experimental tag with a Experimental annotation, and docs should generate both the docs and Experimental tag should generate both the docs and Experimental tag with a Deprecated annotation, and no docs should generate just the Deprecated tag should generate just the Deprecated tag with no annotation, and no docs should generate nothing should generate nothing should exclude whitespace before the summary line should exclude whitespace before the summary line #formatted_doc with a Deprecated annotation, and no docs should generate just the Deprecated tag should generate just the Deprecated tag with a Experimental annotation, and no docs should generate just the Experimental tag should generate just the Experimental tag with a Experimental annotation, and docs should generate both the docs and Experimental tag should generate both the docs and Experimental tag with a Deprecated annotation, and docs should generate both the docs and Deprecated tag should generate both the docs and Deprecated tag should generate the full document should generate the full document should generate the full document should generate the full document with no annotation, and no docs should generate nothing should generate nothing generates sitemap generates sitemap #must_include_toplevel? returns false if program has macro which is defined in other place returns false if program has macro which is defined in other place returns true if program has constant returns true if program has constant returns false if program has method which is defined in other place returns false if program has method which is defined in other place returns true if program has macro returns true if program has macro returns true if program has method returns true if program has method returns false if program has nothing returns false if program has nothing returns false if program has constant which is defined in other place returns false if program has constant which is defined in other place crystal repo inserts pseudo methods inserts pseudo methods Lexer lexes "^=" lexes "^=" lexes "break!" lexes "break!" says syntax error on "2e+_2" says syntax error on "2e+_2" lexes "0x80000001" lexes "0x80000001" says syntax error on "4F32" says syntax error on "4F32" lexes "union" lexes "union" says syntax error on "'\\uD800'" says syntax error on "'\\uD800'" lexes "!~" lexes "!~" lexes "out" lexes "out" lexes "|" lexes "|" lexes "1_000" lexes "1_000" lexes "1_u16" lexes "1_u16" says syntax error on "0o40000000000i32" says syntax error on "0o40000000000i32" lexes "118446744073709551616_u128" lexes "118446744073709551616_u128" says syntax error on "0o73_f64" says syntax error on "0o73_f64" says syntax error on "'\\" says syntax error on "'\\" lexes "1u32" lexes "1u32" lexes "%=" lexes "%=" lexes heredoc start lexes heredoc start lexes ":\"foo\"" lexes ":\"foo\"" lexes ":foo=" lexes ":foo=" lexes "-1.0f32" lexes "-1.0f32" says syntax error on "18446744073709551616" says syntax error on "18446744073709551616" lexes ":>>" lexes ":>>" lexes "1i8" lexes "1i8" lexes "alias" lexes "alias" lexes "[]?" lexes "[]?" lexes "while?" lexes "while?" lexes "begin" lexes "begin" lexes "class!" lexes "class!" lexes "-0.5" lexes "-0.5" lexes "@foo" lexes "@foo" says syntax error on "4i22" says syntax error on "4i22" lexes "1_i8" lexes "1_i8" says syntax error on "-0e_12" says syntax error on "-0e_12" says syntax error on "-129_i8" says syntax error on "-129_i8" lexes "do" lexes "do" lexes "?" lexes "?" lexes "0b1111111111111111111111111111111" lexes "0b1111111111111111111111111111111" says syntax error on "256_u8" says syntax error on "256_u8" says syntax error on "-1_u8" says syntax error on "-1_u8" lexes "1i32" lexes "1i32" lexes "==" lexes "==" lexes "-0x8000000000000000_i64" lexes "-0x8000000000000000_i64" lexes "18446744073709551616_u128" lexes "18446744073709551616_u128" lexes "1_234.567_890_f32" lexes "1_234.567_890_f32" lexes "-1234" lexes "-1234" lexes "-0o123" lexes "-0o123" lexes "!=" lexes "!=" lexes "begin?" lexes "begin?" lexes ">>=" lexes ">>=" lexes "2147483648" lexes "2147483648" lexes "://" lexes "://" lexes "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_u128" lexes "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF_u128" lexes __LINE__ lexes __LINE__ lexes "+=" lexes "+=" lexes ":&**" lexes ":&**" lexes ":" lexes ":" lexes 'a' lexes 'a' lexes "case" lexes "case" says syntax error on "-1_u16" says syntax error on "-1_u16" says syntax error on "0b1000000000000000000000000000000000000000000000000000000000000000i64" says syntax error on "0b1000000000000000000000000000000000000000000000000000000000000000i64" lexes "end!" lexes "end!" says syntax error on "0b11_f32" says syntax error on "0b11_f32" lexes symbol followed by == lexes symbol followed by == says syntax error on "0123" says syntax error on "0123" lexes "1i64hello" lexes "1i64hello" says syntax error on "1__1" says syntax error on "1__1" lexes ":&-" lexes ":&-" lexes "9223372036854775808" lexes "9223372036854775808" lexes "::" lexes "::" says syntax error on "0F32" says syntax error on "0F32" lexes "0b0_1" lexes "0b0_1" lexes "1e+23_f32" lexes "1e+23_f32" lexes "}" lexes "}" says syntax error on "4f22" says syntax error on "4f22" lexes "return?" lexes "return?" lexes __FILE__ lexes __FILE__ lexes "\n" lexes "\n" lexes " " lexes " " lexes "with_underscores" lexes "with_underscores" lexes "next?" lexes "next?" lexes char with unicode codepoint lexes char with unicode codepoint lexes "(" lexes "(" lexes "\t" lexes "\t" says syntax error on "2e+@foo" says syntax error on "2e+@foo" lexes "false" lexes "false" lexes "-" lexes "-" says syntax error on "/foo" says syntax error on "/foo" lexes "class?" lexes "class?" says syntax error on "2e+f32" says syntax error on "2e+f32" lexes "yield" lexes "yield" lexes ":/" lexes ":/" lexes "else!" lexes "else!" lexes "else" lexes "else" says syntax error on "$0?" says syntax error on "$0?" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000_u64" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000_u64" lexes "def?" lexes "def?" lexes "[]" lexes "[]" lexes "/" lexes "/" lexes "1u8" lexes "1u8" lexes "//" lexes "//" invalid byte sequence invalid byte sequence lexes "||=" lexes "||=" says syntax error on "\"\\x1z\"" says syntax error on "\"\\x1z\"" lexes "bar!" lexes "bar!" lexes "if" lexes "if" lexes "<<" lexes "<<" says syntax error on "-1_u64" says syntax error on "-1_u64" lexes "while!" lexes "while!" says syntax error on "0xfffffffffffffffff_u64" says syntax error on "0xfffffffffffffffff_u64" lexes "1.2e+23" lexes "1.2e+23" says syntax error on "128_i8" says syntax error on "128_i8" says syntax error on "4u22" says syntax error on "4u22" lexes "0o17777777777" lexes "0o17777777777" lexes char with unicode codepoint and curly with six hex digits lexes char with unicode codepoint and curly with six hex digits lexes "100_000" lexes "100_000" lexes "$10?" lexes "$10?" lexes "+1.0" lexes "+1.0" says syntax error on "4i3" says syntax error on "4i3" says syntax error on "0x8000000000000000i64" says syntax error on "0x8000000000000000i64" lexes "..." lexes "..." lexes "true" lexes "true" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000" lexes comment and token lexes comment and token lexes "if?" lexes "if?" lexes ":&+" lexes ":&+" lexes ">=" lexes ">=" says syntax error on "0o7777777777777777777777777777777777777777777777777" says syntax error on "0o7777777777777777777777777777777777777777777777777" lexes ":&" lexes ":&" lexes "elsif!" lexes "elsif!" lexes "0x8000000000000000" lexes "0x8000000000000000" lexes ":<" lexes ":<" lexes ":[]?" lexes ":[]?" lexes "if!" lexes "if!" lexes "=>" lexes "=>" lexes "private" lexes "private" lexes regex after \n lexes regex after \n lexes ":|" lexes ":|" lexes "+1.0f32" lexes "+1.0f32" says syntax error on "0xFF_i8" says syntax error on "0xFF_i8" lexes "0x100000000" lexes "0x100000000" says syntax error on "-0_u64" says syntax error on "-0_u64" lexes "|" lexes "|" lexes "verbatim" lexes "verbatim" lexes "{%" lexes "{%" lexes "!@foo" lexes "!@foo" lexes "0b11111111_11111111_11111111_11111111_11111111_11111111_11111111_11111111" lexes "0b11111111_11111111_11111111_11111111_11111111_11111111_11111111_11111111" lexes "as?" lexes "as?" lexes ":=~" lexes ":=~" lexes space after char lexes space after char lexes "nil" lexes "nil" lexes "yield?" lexes "yield?" lexes "0i32" lexes "0i32" lexes "1.0f32" lexes "1.0f32" lexes "with" lexes "with" lexes "$1?" lexes "$1?" lexes ":foo" lexes ":foo" lexes '\v' lexes '\v' lexes "1e-23" lexes "1e-23" lexes ">>" lexes ">>" lexes "1_u8" lexes "1_u8" says syntax error on "118446744073709551616_u64" says syntax error on "118446744073709551616_u64" lexes "\110" lexes "\110" lexes ":<<" lexes ":<<" lexes "1.0" lexes "1.0" lexes "{" lexes "{" lexes ":+" lexes ":+" lexes "abstract" lexes "abstract" lexes "0o1000000000000000000000" lexes "0o1000000000000000000000" lexes "0o001777777777777777777777" lexes "0o001777777777777777777777" says syntax error on "0x1afafafafafafafafafafafu64" says syntax error on "0x1afafafafafafafafafafafu64" lexes "0x1_i64" lexes "0x1_i64" lexes "**=" lexes "**=" lexes "&*" lexes "&*" lexes not instance var lexes not instance var lexes "0o123" lexes "0o123" lexes "&&=" lexes "&&=" lexes "macro" lexes "macro" lexes "!" lexes "!" lexes "def" lexes "def" lexes "\n\n\n" lexes "\n\n\n" lexes "+0o123" lexes "+0o123" says syntax error on "0o1000000000000000000000i64" says syntax error on "0o1000000000000000000000i64" says syntax error on "0x1afafafafafafafafafafafi32" says syntax error on "0x1afafafafafafafafafafafi32" says syntax error on "2e+e" says syntax error on "2e+e" lexes "-1_i128" lexes "-1_i128" lexes "-=" lexes "-=" says syntax error on "-2147483649_i32" says syntax error on "-2147483649_i32" lexes "\4" lexes "\4" says syntax error on ":+1" says syntax error on ":+1" lexes "while" lexes "while" says syntax error on "18446744073709551616_i32" says syntax error on "18446744073709551616_i32" lexes "1E40" lexes "1E40" says syntax error on "4u33" says syntax error on "4u33" lexes "module" lexes "module" lexes ":かたな" lexes ":かたな" lexes "extend" lexes "extend" lexes "rescue" lexes "rescue" lexes comment at the end lexes comment at the end lexes "self" lexes "self" lexes "0xffff_ffff_ffff_ffff" lexes "0xffff_ffff_ffff_ffff" lexes "-1_i64" lexes "-1_i64" lexes ":<=>" lexes ":<=>" lexes ":>=" lexes ":>=" lexes "0f32" lexes "0f32" lexes "0x3fffffffffffffff" lexes "0x3fffffffffffffff" lexes "-0b1010" lexes "-0b1010" lexes ":==" lexes ":==" says syntax error on "2e+-2" says syntax error on "2e+-2" says syntax error on "-32769_i16" says syntax error on "-32769_i16" lexes "nil?" lexes "nil?" lexes "2147483648.foo" lexes "2147483648.foo" lexes ":[]=" lexes ":[]=" lexes "asm" lexes "asm" lexes ":===" lexes ":===" says syntax error on "340282366920938463463374607431768211456" says syntax error on "340282366920938463463374607431768211456" lexes "next!" lexes "next!" lexes "." lexes "." says syntax error on "-0x80000000000000000000000000000000" says syntax error on "-0x80000000000000000000000000000000" says syntax error on "0b10000000_i8" says syntax error on "0b10000000_i8" lexes "is_a?" lexes "is_a?" lexes "=" lexes "=" lexes "-9223372036854775809_i128" lexes "-9223372036854775809_i128" lexes "&-@foo" lexes "&-@foo" lexes "0b1010" lexes "0b1010" lexes "-1" lexes "-1" lexes "1i128" lexes "1i128" says syntax error on "0x10000_0000_0000_0000_u64" says syntax error on "0x10000_0000_0000_0000_u64" lexes "+" lexes "+" lexes "," lexes "," says syntax error on "-0u64" says syntax error on "-0u64" lexes ":^" lexes ":^" lexes "0o17777777777_i32" lexes "0o17777777777_i32" says syntax error on "0_12" says syntax error on "0_12" lexes "$FOO" lexes "$FOO" lexes "yield!" lexes "yield!" lexes "&+" lexes "&+" lexes "then" lexes "then" lexes "0b100000000000000000000000000000000" lexes "0b100000000000000000000000000000000" lexes "until" lexes "until" lexes ".." lexes ".." lexes "-0.0f32" lexes "-0.0f32" lexes ">" lexes ">" says syntax error on "0o12345671234567_12345671234567_i8" says syntax error on "0o12345671234567_12345671234567_i8" says syntax error on ".42" says syntax error on ".42" lexes "enum" lexes "enum" lexes "1.0f32hello" lexes "1.0f32hello" says syntax error on "\"hi\\" says syntax error on "\"hi\\" lexes "1u128" lexes "1u128" lexes "typeof" lexes "typeof" lexes "pointerof" lexes "pointerof" lexes symbol with quote lexes symbol with quote lexes "1_i64" lexes "1_i64" lexes ":!=" lexes ":!=" lexes "type" lexes "type" lexes "[" lexes "[" lexes "0b1_i64" lexes "0b1_i64" lexes "0b1000000000000000000000000000000000000000000000000000000000000000" lexes "0b1000000000000000000000000000000000000000000000000000000000000000" says syntax error on "-1_u128" says syntax error on "-1_u128" says syntax error on "4i12" says syntax error on "4i12" lexes "ensure" lexes "ensure" lexes "0o177777_77777777_77777777" lexes "0o177777_77777777_77777777" lexes ":!" lexes ":!" lexes ")" lexes ")" says syntax error on "4u12" says syntax error on "4u12" lexes "-1.0" lexes "-1.0" lexes "\10" lexes "\10" lexes "0xFFFFFFFF" lexes "0xFFFFFFFF" says syntax error on "0o200000_00000000_00000000_u64" says syntax error on "0o200000_00000000_00000000_u64" lexes "&+@foo" lexes "&+@foo" lexes '\a' lexes '\a' lexes "unless!" lexes "unless!" lexes "0xffffffff" lexes "0xffffffff" lexes "with_1" lexes "with_1" lexes "0xabcdef" lexes "0xabcdef" lexes "0i8" lexes "0i8" lexes "-0x80000000000000000000000000000000_i128" lexes "-0x80000000000000000000000000000000_i128" lexes "1_u64" lexes "1_u64" lexes '\r' lexes '\r' lexes "&-=" lexes "&-=" says syntax error on "$01" says syntax error on "$01" says syntax error on "9223372036854775808_i64" says syntax error on "9223372036854775808_i64" says syntax error on "-.42" says syntax error on "-.42" lexes regex after \r\n lexes regex after \r\n lexes "->" lexes "->" says syntax error on "65536_u16" says syntax error on "65536_u16" lexes "0x00ffffffffffffffff" lexes "0x00ffffffffffffffff" lexes "break?" lexes "break?" lexes "^" lexes "^" says syntax error on "-1_u32" says syntax error on "-1_u32" says syntax error on "-0o7777777777777777777777777777777777777777777777777" says syntax error on "-0o7777777777777777777777777777777777777777777777777" lexes "0e40" lexes "0e40" says syntax error on "'\\uDFFF'" says syntax error on "'\\uDFFF'" lexes "ident" lexes "ident" says syntax error on "-11111111111111111111" says syntax error on "-11111111111111111111" lexes ":foo!" lexes ":foo!" lexes "as" lexes "as" lexes "0o123_i64" lexes "0o123_i64" lexes '\n' lexes '\n' lexes "14146167139683460000" lexes "14146167139683460000" lexes "1f32" lexes "1f32" says syntax error on ":\"foo" says syntax error on ":\"foo" lexes "in" lexes "in" lexes "*=" lexes "*=" lexes "false?" lexes "false?" says syntax error on "\r1" says syntax error on "\r1" lexes "something" lexes "something" says syntax error on "18446744073709551616_u64" says syntax error on "18446744073709551616_u64" lexes space after keyword lexes space after keyword lexes "%" lexes "%" lexes "end?" lexes "end?" lexes "$23?" lexes "$23?" says syntax error on "2147483648_i32" says syntax error on "2147483648_i32" lexes "_" lexes "_" says syntax error on "0o1234567123456712345671234567u64" says syntax error on "0o1234567123456712345671234567u64" doesn't raise if slash r with slash n doesn't raise if slash r with slash n lexes "@@foo" lexes "@@foo" lexes "-0" lexes "-0" lexes "-0xFFFFFFFF" lexes "-0xFFFFFFFF" lexes "1e23" lexes "1e23" lexes "foo?" lexes "foo?" lexes ":~" lexes ":~" lexes "for" lexes "for" says syntax error on "-170141183460469231731687303715884105729" says syntax error on "-170141183460469231731687303715884105729" lexes "340282366920938463463374607431768211455_u128" lexes "340282366920938463463374607431768211455_u128" lexes "1.foo" lexes "1.foo" lexes "class" lexes "class" lexes "0o700000000000000000000" lexes "0o700000000000000000000" says syntax error on "01_i64" says syntax error on "01_i64" lexes "responds_to?" lexes "responds_to?" lexes "1_i32" lexes "1_i32" lexes "&-" lexes "&-" says syntax error on "4F64" says syntax error on "4F64" lexes "9223372036854775807" lexes "9223372036854775807" says syntax error on "0x10000_0000_0000_0000" says syntax error on "0x10000_0000_0000_0000" lexes "1" lexes "1" says syntax error on "\"\\400\"" says syntax error on "\"\\400\"" lexes "Foo" lexes "Foo" says syntax error on "'\\u{D800}'" says syntax error on "'\\u{D800}'" lexes "0o37777777777" lexes "0o37777777777" lexes "fooBar" lexes "fooBar" lexes "2_e2" lexes "2_e2" says syntax error on "2ef32" says syntax error on "2ef32" lexes "&*=" lexes "&*=" lexes "-0x80000001" lexes "-0x80000001" says syntax error on "0b_10" says syntax error on "0b_10" says syntax error on "2e" says syntax error on "2e" lexes "unless" lexes "unless" lexes "0x7fffffff_i32" lexes "0x7fffffff_i32" lexes "false!" lexes "false!" says syntax error on "-0x80000000000000000000000000000001" says syntax error on "-0x80000000000000000000000000000001" lexes "1_234.567_890" lexes "1_234.567_890" lexes ":>" lexes ":>" lexes "$~" lexes "$~" lexes "0b111111111111111111111111111111111111111111111111111111111111111" lexes "0b111111111111111111111111111111111111111111111111111111111111111" lexes "\8" lexes "\8" lexes "lib" lexes "lib" lexes symbol with backslash (#2187) lexes symbol with backslash (#2187) says syntax error on "0b🔮" says syntax error on "0b🔮" lexes "&+=" lexes "&+=" lexes "1.0f64" lexes "1.0f64" lexes "*" lexes "*" says syntax error on "'\\u{110000}'" says syntax error on "'\\u{110000}'" lexes "0🔮" lexes "0🔮" lexes "sizeof" lexes "sizeof" lexes "0x3🔮" lexes "0x3🔮" lexes "&**" lexes "&**" lexes "<<=" lexes "<<=" lexes ":&*" lexes ":&*" lexes "0_i32" lexes "0_i32" lexes char with unicode codepoint and curly with zeros lexes char with unicode codepoint and curly with zeros lexes "instance_sizeof" lexes "instance_sizeof" lexes "1_u128" lexes "1_u128" lexes "1i16" lexes "1i16" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" lexes "offsetof" lexes "offsetof" lexes "<=>" lexes "<=>" lexes "~" lexes "~" lexes "1i64" lexes "1i64" lexes "break" lexes "break" lexes "2e01" lexes "2e01" lexes "true!" lexes "true!" says syntax error on "4i65" says syntax error on "4i65" lexes "1u16" lexes "1u16" lexes "of" lexes "of" lexes "<" lexes "<" lexes "0.5" lexes "0.5" lexes ":-" lexes ":-" lexes "{{" lexes "{{" says syntax error on "4.0_u32" says syntax error on "4.0_u32" lexes "$_foo" lexes "$_foo" says syntax error on "0b100000000000000000000000000000000i32" says syntax error on "0b100000000000000000000000000000000i32" lexes "1hello" lexes "1hello" lexes "&&" lexes "&&" lexes "do?" lexes "do?" lexes "\xFF" lexes "\xFF" lexes __DIR__ lexes __DIR__ lexes "+1234" lexes "+1234" lexes ":foo?" lexes ":foo?" says syntax error on "2e8i8" says syntax error on "2e8i8" lexes "begin!" lexes "begin!" lexes "1_i16" lexes "1_i16" lexes ";" lexes ";" lexes "next" lexes "next" lexes "===" lexes "===" lexes "1e+23" lexes "1e+23" lexes "/=" lexes "/=" lexes "@[" lexes "@[" says syntax error on "4f33" says syntax error on "4f33" lexes "1_i64" lexes "1_i64" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000u64" says syntax error on "0b100000000000000000000000000000000000000000000000000000000000000000u64" lexes "||" lexes "||" lexes "-@foo" lexes "-@foo" lexes "0b001111111111111111111111111111111111111111111111111111111111111111" lexes "0b001111111111111111111111111111111111111111111111111111111111111111" lexes "%}" lexes "%}" says syntax error on "00" says syntax error on "00" lexes "elsif?" lexes "elsif?" lexes '\b' lexes '\b' lexes "-9223372036854775808" lexes "-9223372036854775808" lexes "1.0f32" lexes "1.0f32" says syntax error on "4u3" says syntax error on "4u3" says syntax error on "4u65" says syntax error on "4u65" says syntax error on "'" says syntax error on "'" doesn't raise if many slash r with slash n doesn't raise if many slash r with slash n lexes "1i64" lexes "1i64" lexes "annotation" lexes "annotation" lexes ":<=" lexes ":<=" lexes "❨╯°□°❩╯︵┻━┻" lexes "❨╯°□°❩╯︵┻━┻" lexes "\x12" lexes "\x12" says syntax error on "'\\u{DFFF}'" says syntax error on "'\\u{DFFF}'" lexes "+1_i64" lexes "+1_i64" says syntax error on "-9999999999999999999" says syntax error on "-9999999999999999999" lexes "**" lexes "**" lexes "&=" lexes "&=" lexes "0x7fffffffffffffff" lexes "0x7fffffffffffffff" lexes "+0xFFFF" lexes "+0xFFFF" lexes "when" lexes "when" lexes "+1" lexes "+1" lexes "0x10000_0000_0000_0000_i128" lexes "0x10000_0000_0000_0000_i128" lexes "&" lexes "&" lexes "1_i128" lexes "1_i128" lexes "require" lexes "require" says syntax error on "9999999999999999999_i32" says syntax error on "9999999999999999999_i32" lexes "+0.5" lexes "+0.5" says syntax error on "/\\" says syntax error on "/\\" lexes "=~" lexes "=~" lexes "1e23f64" lexes "1e23f64" lexes "9223372036854775808_i128" lexes "9223372036854775808_i128" lexes "170141183460469231731687303715884105728_u128" lexes "170141183460469231731687303715884105728_u128" lexes "0o777777777777777777777" lexes "0o777777777777777777777" lexes ":[]" lexes ":[]" lexes '\t' lexes '\t' lexes "//=" lexes "//=" lexes "0x7fffffff" lexes "0x7fffffff" says syntax error on "0o200000_00000000_00000000" says syntax error on "0o200000_00000000_00000000" lexes symbol followed by != lexes symbol followed by != lexes '\'' lexes '\'' lexes "$foo" lexes "$foo" lexes "]" lexes "]" lexes "0b11111111111111111111111111111111" lexes "0b11111111111111111111111111111111" lexes "+1_i128" lexes "+1_i128" lexes "1.0hello" lexes "1.0hello" lexes "1i128hello" lexes "1i128hello" lexes "0xFFFF" lexes "0xFFFF" says syntax error on "0x100000000i32" says syntax error on "0x100000000i32" lexes "0o1000000000000000000000" lexes "0o1000000000000000000000" lexes "+0b1010" lexes "+0b1010" lexes '\f' lexes '\f' lexes "1u64" lexes "1u64" lexes "18446744073709551615" lexes "18446744073709551615" lexes "+@foo" lexes "+@foo" lexes "super" lexes "super" says syntax error on "-99999999999999999999" says syntax error on "-99999999999999999999" says syntax error on "0o200_i8" says syntax error on "0o200_i8" lexes symbol followed by === lexes symbol followed by === says syntax error on "-999999999999999999999999999999999999999" says syntax error on "-999999999999999999999999999999999999999" lexes "select" lexes "select" lexes ":**" lexes ":**" lexes "1234" lexes "1234" lexes "12341234🔮" lexes "12341234🔮" lexes '\\' lexes '\\' lexes ":%" lexes ":%" lexes "protected" lexes "protected" lexes "$1" lexes "$1" lexes "$?" lexes "$?" lexes "-0xFFFF" lexes "-0xFFFF" lexes "+0" lexes "+0" lexes dot and ident lexes dot and ident lexes char with unicode codepoint and curly lexes char with unicode codepoint and curly says syntax error on "0x1afafafafafafafafafafaf" says syntax error on "0x1afafafafafafafafafafaf" lexes ":*" lexes ":*" says syntax error on "-3_" says syntax error on "-3_" lexes != after identifier (#4815) lexes != after identifier (#4815) says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000" says syntax error on "0b100000000_00000000_00000000_00000000_00000000_00000000_00000000_00000000" lexes "return" lexes "return" says syntax error on "4i33" says syntax error on "4i33" says syntax error on "'\\u{}'" says syntax error on "'\\u{}'" lexes '\0' lexes '\0' lexes "170141183460469231731687303715884105727_i128" lexes "170141183460469231731687303715884105727_i128" lexes "" lexes "" lexes "return!" lexes "return!" says syntax error on "1_.1" says syntax error on "1_.1" lexes "1f64" lexes "1f64" lexes "0xFFFF_u64" lexes "0xFFFF_u64" lexes "uninitialized" lexes "uninitialized" says syntax error on "4f65" says syntax error on "4f65" lexes "true?" lexes "true?" lexes "$10" lexes "$10" lexes "fun" lexes "fun" says syntax error on "2e+" says syntax error on "2e+" lexes float then zero (bug) lexes float then zero (bug) says syntax error on "4294967296_u32" says syntax error on "4294967296_u32" lexes utf-8 multibyte char lexes utf-8 multibyte char lexes "struct" lexes "struct" lexes "unless?" lexes "unless?" lexes "else?" lexes "else?" lexes "|=" lexes "|=" lexes "\1" lexes "\1" lexes "0" lexes "0" lexes "0b1111111111111111111111111111111_i32" lexes "0b1111111111111111111111111111111_i32" lexes utf-8 char lexes utf-8 char lexes "<=" lexes "<=" lexes "0o40000000000" lexes "0o40000000000" says syntax error on "\"\\xz\"" says syntax error on "\"\\xz\"" says syntax error on "118446744073709551616" says syntax error on "118446744073709551616" lexes "nil!" lexes "nil!" says syntax error on "'\\uFEDZ'" says syntax error on "'\\uFEDZ'" lexes "elsif" lexes "elsif" lexes "1.2e+23_f64" lexes "1.2e+23_f64" lexes "do!" lexes "do!" lexes "end" lexes "end" lexes "1.2e+23_f32" lexes "1.2e+23_f32" says syntax error on "0o1234567123456712345671234567" says syntax error on "0o1234567123456712345671234567" lexes "$foo123" lexes "$foo123" lexes "0_f32" lexes "0_f32" lexes "0xffffffffffffffff" lexes "0xffffffffffffffff" says syntax error on "32768_i16" says syntax error on "32768_i16" lexes "1_u32" lexes "1_u32" lexes "10000000000000000000_u64" lexes "10000000000000000000_u64" lexes "[]=" lexes "[]=" says syntax error on "-9223372036854775809" says syntax error on "-9223372036854775809" lexes "-2147483649" lexes "-2147483649" says syntax error on "10e_10" says syntax error on "10e_10" lexes "include" lexes "include" lexes '\0' lexes '\0' says syntax error on "'\\1'" says syntax error on "'\\1'" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" says syntax error on "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" lexes "def!" lexes "def!" says syntax error on "-9223372036854775809_i64" says syntax error on "-9223372036854775809_i64" lexes ":!~" lexes ":!~" Code gen: next codegens next codegens next codegens next without expressions codegens next without expressions codegens next conditionally with int type (2) codegens next conditionally with int type (2) codegens next with while inside block codegens next with while inside block codegens next conditionally codegens next conditionally codegens next with break (1) codegens next with break (1) codegens next with break (3) codegens next with break (3) codegens next with break (2) codegens next with break (2) Code gen: uninitialized codegens declare instance var codegens declare instance var doesn't break on inherited declared var (#390) doesn't break on inherited declared var (#390) codegens declare var and changes it codegens declare var and changes it works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works inside while/begin/rescue (bug inside #759) works with uninitialized NoReturn (#3314) works with uninitialized NoReturn (#3314) codegens value (#3641) codegens value (#3641) codegens declare instance var with static array type codegens declare instance var with static array type codegens declare var and read it codegens declare var and read it Semantic: splat uses splat restriction after non-splat arguments (#5037) uses splat restriction after non-splat arguments (#5037) errors if splatting non-tuple type in call arguments errors if splatting non-tuple type in call arguments works if matches splat with type restriction works if matches splat with type restriction overloads with type restriction and splat (2) overloads with type restriction and splat (2) matches with type var splat inside explicit Union, when one splat fails entirely matches with type var splat inside explicit Union, when one splat fails entirely gives correct error when forwarding splat (2) gives correct error when forwarding splat (2) matches with type var splat inside explicit Union, when non-splat vars fail matches with type var splat inside explicit Union, when non-splat vars fail matches with type var and splat of itself inside explicit Union matches with type var and splat of itself inside explicit Union doesn't crash on non-match (#2521) doesn't crash on non-match (#2521) splats splats method with splat and optional named argument matches zero args call (#2746) method with splat and optional named argument matches zero args call (#2746) matches with splat matches with splat matches with type var splat inside explicit Union (2) matches with type var splat inside explicit Union (2) errors if doesn't match splat with type restriction errors if doesn't match splat with type restriction errors with too many non-splat type arguments errors with too many non-splat type arguments gives correct error when forwarding splat gives correct error when forwarding splat Crystal::Splat with splat with splat without splat without splat accesses T when empty, via module accesses T when empty, via module matches type splat with splat in generic type (1) matches type splat with splat in generic type (1) splats arg and splat against splat (1) (#1042) splats arg and splat against splat (1) (#1042) forwards tuple in return statement forwards tuple in return statement uses bare * uses bare * matches with type var and splat of itself inside explicit Union (2) matches with type var and splat of itself inside explicit Union (2) matches type splat with splat in generic type (2) matches type splat with splat in generic type (2) errors if doesn't match splat with type restriction because of zero arguments errors if doesn't match splat with type restriction because of zero arguments uses splat restriction, matches empty uses splat restriction, matches empty matches with type var and splat of itself inside explicit Union (3) matches with type var and splat of itself inside explicit Union (3) overloads with type restriction and splat (5) overloads with type restriction and splat (5) forwards tuple with an extra argument forwards tuple with an extra argument doesn't match free var type splats inside explicit Union doesn't match free var type splats inside explicit Union overloads with splat against method with two arguments (#986) (2) overloads with splat against method with two arguments (#986) (2) matches with type var splat inside explicit Union matches with type var splat inside explicit Union overloads with type restriction and splat (7) overloads with type restriction and splat (7) overloads with splat against method with two arguments (#986) (1) overloads with splat against method with two arguments (#986) (1) can splat after type filter left it as a tuple (#442) can splat after type filter left it as a tuple (#442) errors with too few non-splat type arguments (2) errors with too few non-splat type arguments (2) errors if using two splat indices on restriction errors if using two splat indices on restriction overloads with type restriction and splat (1) overloads with type restriction and splat (1) errors with too few non-splat type arguments (1) errors with too few non-splat type arguments (1) matches instantiated generic with splat in generic type matches instantiated generic with splat in generic type matches partially instantiated generic with splat in generic type matches partially instantiated generic with splat in generic type splats arg and splat against splat (2) (#1042) splats arg and splat against splat (2) (#1042) overloads with type restriction and splat (3) overloads with type restriction and splat (3) calls super with implicit splat arg (#1001) calls super with implicit splat arg (#1001) matches with type var splat inside explicit Union, when all splat elements match matches with type var splat inside explicit Union, when all splat elements match allows default value after splat index allows default value after splat index doesn't shift a call's location doesn't shift a call's location redefines method with splat (bug #248) redefines method with splat (bug #248) uses splat restriction with concrete type uses splat restriction with concrete type uses bare *, doesn't let more args uses bare *, doesn't let more args says no overload matches on type restrictions past the splat arg says no overload matches on type restrictions past the splat arg overloads with type restriction and splat (4) overloads with type restriction and splat (4) method with default arguments and splat matches call with one arg (#2766) method with default arguments and splat matches call with one arg (#2766) doesn't match splat in generic type with unsplatted tuple (#10164) doesn't match splat in generic type with unsplatted tuple (#10164) says missing argument because positional args don't match past splat says missing argument because positional args don't match past splat overloads with type restriction and splat (6) overloads with type restriction and splat (6) uses splat restriction uses splat restriction errors if splatting non-tuple type in return values errors if splatting non-tuple type in return values errors if splatting union errors if splatting union errors on zero args with named arg and splat errors on zero args with named arg and splat matches with tuple splat inside explicit Union matches with tuple splat inside explicit Union Crystal::Repl::Interpreter responds_to? doesn't crash if def body ends up with no type (#12219) doesn't crash if def body ends up with no type (#12219) does responds_to? does responds_to? Semantic: while doesn't fail on new variables inside typeof condition doesn't fail on new variables inside typeof condition doesn't restrict type after while if there's a break (#4242) doesn't restrict type after while if there's a break (#4242) types while with assignment and && types while with assignment and && finds all while cond assign targets in expressions (4) finds all while cond assign targets in expressions (4) types while with assignment types while with assignment doesn't use type at end of endless while if variable is reassigned (3) doesn't use type at end of endless while if variable is reassigned (3) marks variable as nil if breaking before assigning to it in an endless loop marks variable as nil if breaking before assigning to it in an endless loop types while with assignment and call types while with assignment and call rebinds condition variable after while body (#6158) rebinds condition variable after while body (#6158) types while with && (#1425) types while with && (#1425) finds all while cond assign targets in expressions (3) finds all while cond assign targets in expressions (3) uses type at end of endless while if variable is reassigned, but not before first break (2) uses type at end of endless while if variable is reassigned, but not before first break (2) finds all while cond assign targets in expressions (6) finds all while cond assign targets in expressions (6) doesn't fail on Expressions condition (1) doesn't fail on Expressions condition (1) types variable as nilable if raise before assign types variable as nilable if raise before assign types while ((true)) as NoReturn types while ((true)) as NoReturn reports break cannot be used outside a while reports break cannot be used outside a while finds all while cond assign targets in expressions (2) finds all while cond assign targets in expressions (2) marks variable as nil if breaking before assigning to it in an endless loop (2) marks variable as nil if breaking before assigning to it in an endless loop (2) uses type at end of endless while if variable is reassigned, but not before first break uses type at end of endless while if variable is reassigned, but not before first break restricts type after `while` with `not` and `and` (#4242) restricts type after `while` with `not` and `and` (#4242) restricts type after while (#4242) restricts type after while (#4242) doesn't fail on Expressions condition (2) doesn't fail on Expressions condition (2) restricts type after while with not (#4242) restricts type after while with not (#4242) types endless while with break without value types endless while with break without value uses var type inside while if endless loop uses var type inside while if endless loop doesn't use type at end of endless while if variable is reassigned (2) doesn't use type at end of endless while if variable is reassigned (2) types endless while with multiple breaks with value types endless while with multiple breaks with value types while types while types endless while with break with value types endless while with break with value types while (true) as NoReturn types while (true) as NoReturn finds all while cond assign targets in expressions (5) finds all while cond assign targets in expressions (5) uses var type inside while if endless loop (2) uses var type inside while if endless loop (2) reports next cannot be used outside a while reports next cannot be used outside a while doesn't use type at end of endless while if variable is reassigned doesn't use type at end of endless while if variable is reassigned types while with break with value types while with break with value types while true as NoReturn types while true as NoReturn finds all while cond assign targets in expressions (#10350) finds all while cond assign targets in expressions (#10350) doesn't type var as nilable after break inside rescue doesn't type var as nilable after break inside rescue doesn't modify var's type before while doesn't modify var's type before while types while with multiple breaks with value types while with multiple breaks with value finds while cond assign target in Not (#10345) finds while cond assign target in Not (#10345) types while with break without value types while with break without value doesn't fail on nested conditionals inside typeof condition doesn't fail on nested conditionals inside typeof condition Semantic: c union errors if using void in union field type errors if using void in union field type types union getter types union getter types union getter via pointer types union getter via pointer errors if using void via typedef in union field type errors if using void via typedef in union field type types union setter types union setter types union setter via pointer types union setter via pointer types c union types c union types Union#new types Union#new errors on empty c union (#633) errors on empty c union (#633) errors if setting closure errors if setting closure MacroExpander expands macro with symbol substitution expands macro with symbol substitution expands macro with argument-less call substitution expands macro with argument-less call substitution expands macro with and (1) expands macro with and (1) expands macro with tuple expands macro with tuple expands macro with or (1) expands macro with or (1) for expands macro with for over range literal expands macro with for over range literal expands macro with for over array literal with index expands macro with for over array literal with index expands macro with for over range literal, evaluating elements (exclusive) expands macro with for over range literal, evaluating elements (exclusive) expands macro with for over embedded array literal expands macro with for over embedded array literal expands macro with for over hash literal with index expands macro with for over hash literal with index expands macro with for over hash literal expands macro with for over hash literal expands macro with for over range literal, evaluating elements expands macro with for over range literal, evaluating elements expands macro with for over array literal expands macro with for over array literal expands macro with for over tuple literal expands macro with for over tuple literal expands macro with symbol expands macro with symbol can't use `yield` outside a macro can't use `yield` outside a macro expands macro with string substitution expands macro with string substitution expands macro with integer expands macro with integer expands macro with range expands macro with range expands macro with and (2) expands macro with and (2) does regular if does regular if expands simple macro expands simple macro expands macro with var substitution expands macro with var substitution expands macro with string interpolation expands macro with string interpolation expands macro with char expands macro with char expands macro with or (2) expands macro with or (2) does not expand when macro expression is {% ... %} does not expand when macro expression is {% ... %} if expands macro with if with nop expands macro with if with nop expands macro with if when falsey expands macro with if when falsey expands macro with if when truthy expands macro with if when truthy expands macro with if else when falsey expands macro with if else when falsey expands macro with if with not expands macro with if with not expands macro with nil expands macro with nil expands macro with hash expands macro with hash expands macro with string expands macro with string does regular unless does regular unless expands macro with array expands macro with array outputs invisible location pragmas outputs invisible location pragmas expands macro with boolean expands macro with boolean Semantic: return can use type var as return type with an included generic module can use type var as return type with an included generic module can use type var as return type with an inherited generic class can use type var as return type with an inherited generic class errors if non-type free var cannot be inferred errors if non-type free var cannot be inferred can use non-type free var in return type (2) (#6543) can use non-type free var in return type (2) (#6543) can use free var in return type (#2492) can use free var in return type (#2492) can use non-type free var in return type (#6543) can use non-type free var in return type (#6543) flattens splats inside multiple return values flattens splats inside multiple return values allows returning NoReturn instead of the wanted type allows returning NoReturn instead of the wanted type errors on return in top level errors on return in top level infers return type infers return type allows nilable return type to match subclasses (#1735) allows nilable return type to match subclasses (#1735) infers return type with many returns (2) infers return type with many returns (2) types return if true types return if true infers return type with many returns (1) infers return type with many returns (1) forms a tuple from multiple return values forms a tuple from multiple return values can use type var as return type (#1226) can use type var as return type (#1226) doesn't confuse return type from base class doesn't confuse return type from base class types bug (#1823) types bug (#1823) Normalize: op assign normalizes var &+= normalizes var &+= normalizes var -= normalizes var -= normalizes var[0] += normalizes var[0] += normalizes exp[value] ||= normalizes exp[value] ||= normalizes var ||= normalizes var ||= normalizes var += normalizes var += normalizes exp.value ||= normalizes exp.value ||= normalizes @var[0] += normalizes @var[0] += normalizes exp.value &&= normalizes exp.value &&= normalizes exp[value] += normalizes exp[value] += normalizes var &*= normalizes var &*= normalizes exp[value] &&= normalizes exp[value] &&= normalizes var &-= normalizes var &-= normalizes exp[0] += normalizes exp[0] += normalizes var *= normalizes var *= normalizes @var.value += normalizes @var.value += normalizes @@var.value += normalizes @@var.value += normalizes var.value += normalizes var.value += normalizes @@var[0] += normalizes @@var[0] += normalizes var &&= normalizes var &&= normalizes exp.value += normalizes exp.value += Code gen: hooks does added method macro does added method macro fixes empty types in hooks (#3946) fixes empty types in hooks (#3946) does inherited macro recursively does inherited macro recursively does extended macro does extended macro does inherited macro does inherited macro does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does inherited macro before class body does finished does finished does included macro does included macro context does includes regex special variables does includes regex special variables can get context in contained class' class method can get context in contained class' class method can get context in file private method can get context in file private method can get context inside initialize can get context inside initialize can get context inside class methods can get context inside class methods includes last call includes last call can get context of yielded block can get context of yielded block can get context in generic class can get context in generic class use type filters from is_a? use type filters from is_a? can get context in file private module can get context in file private module can get context of nested yielded block can get context of nested yielded block includes assignments includes assignments does includes self on classes does includes self on classes can get context inside a module can get context inside a module can handle union types can handle union types can't get context from uncalled method can't get context from uncalled method includes block args includes block args can display json output can display json output does includes args, instance vars, local variables and expressions on instance methods does includes args, instance vars, local variables and expressions on instance methods includes top level vars includes top level vars does not includes temp variables does not includes temp variables can display text output can display text output includes args includes args can get context of empty def can get context of empty def use type filters from if var use type filters from if var consider different instances of def consider different instances of def can get context of empty yielded block can get context of empty yielded block Crystal::Formatter formats "foo()" formats "foo()" formats " {{ 1 + 2 }}" formats " {{ 1 + 2 }}" formats "alias A = (B) -> C" formats "alias A = (B) -> C" formats "asm(\"nop\" : \"a\"(0), \"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "asm(\"nop\" : \"a\"(0), \"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "foo . is_a? Bar" formats "foo . is_a? Bar" formats "::Foo:: Bar" formats "::Foo:: Bar" formats "foo &.@bar" formats "foo &.@bar" formats "{ {1, 2, 3} }" formats "{ {1, 2, 3} }" formats "if 1 &&\n (2 || 3)\n 1\nelse\n 2\nend" formats "if 1 &&\n (2 || 3)\n 1\nelse\n 2\nend" formats "def foo : A | B(C)\n nil\nend" formats "def foo : A | B(C)\n nil\nend" formats "b &.[c].d" formats "b &.[c].d" formats "@[Foo]" formats "@[Foo]" formats "{ {foo: 2} }" formats "{ {foo: 2} }" formats "def foo\n 1\n #\n\n\nrescue\nend" formats "def foo\n 1\n #\n\n\nrescue\nend" formats "[1,\n2,\n3]" formats "[1,\n2,\n3]" formats "1" formats "1" formats "yield 1 , \n2" formats "yield 1 , \n2" formats "&- 1" formats "&- 1" formats "foo &.[]?( 1, 2 )" formats "foo &.[]?( 1, 2 )" formats "def foo ( @select) \n end" formats "def foo ( @select) \n end" formats "{% verbatim do %}{{1}} + {{2}}{% end %}" formats "{% verbatim do %}{{1}} + {{2}}{% end %}" formats "foo &.bar( 1 , 2 )" formats "foo &.bar( 1 , 2 )" formats "foo.bar = \n1" formats "foo.bar = \n1" formats "-> : Int32[1] {}" formats "-> : Int32[1] {}" formats "def foo(\n @[MyAnn] bar\n); end" formats "def foo(\n @[MyAnn] bar\n); end" formats "instance_sizeof( Int32 )" formats "instance_sizeof( Int32 )" formats "foo(\n 1,\n) do\n 2\nend" formats "foo(\n 1,\n) do\n 2\nend" formats "begin\n1\nrescue ex\n3\nend" formats "begin\n1\nrescue ex\n3\nend" formats "->foo!" formats "->foo!" formats "# Hello\n#\n# ```crystal\n# 1\n# ```\n# Bye" formats "# Hello\n#\n# ```crystal\n# 1\n# ```\n# Bye" formats "foo 1 , 2" formats "foo 1 , 2" formats " {% if 1 %} {% if 2 %} 2 {% end %} {% end %}" formats " {% if 1 %} {% if 2 %} 2 {% end %} {% end %}" formats "<<-HTML\n \#{\"foo\"}\n \#{\"bar\"}\n HTML" formats "<<-HTML\n \#{\"foo\"}\n \#{\"bar\"}\n HTML" formats "def foo ( x : self ) \n end" formats "def foo ( x : self ) \n end" formats "1 if 2\n# foo\n3" formats "1 if 2\n# foo\n3" formats "asm(\"nop\" : \"a\"(0) )" formats "asm(\"nop\" : \"a\"(0) )" formats "->foo=" formats "->foo=" formats "break 1" formats "break 1" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\n # comment\nend" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\n # comment\nend" formats "case 1\nelse\n 2\nend" formats "case 1\nelse\n 2\nend" formats "$~ = 1" formats "$~ = 1" formats "foo(\n 1, 2,\n&block)" formats "foo(\n 1, 2,\n&block)" formats "x = uninitialized Int32" formats "x = uninitialized Int32" formats "return 1\n# end" formats "return 1\n# end" formats ":<<" formats ":<<" formats "a = 1\ncase\nwhen 2\nelse\n a /= 3\nend" formats "a = 1\ncase\nwhen 2\nelse\n a /= 3\nend" formats "a = foo(baz1 do\nend)" formats "a = foo(baz1 do\nend)" formats "if a\n2\n3\nend" formats "if a\n2\n3\nend" formats "foo({\nbar: 1,\n})" formats "foo({\nbar: 1,\n})" formats "{ {1, 2, 3} => 4 }" formats "{ {1, 2, 3} => 4 }" formats "def foo(@x)\n\nrescue\nend" formats "def foo(@x)\n\nrescue\nend" formats "case 1\nwhen 1 then 1\nwhen 123 then 2\nwhen 1..123 then 3\nelse 4\nend" formats "case 1\nwhen 1 then 1\nwhen 123 then 2\nwhen 1..123 then 3\nelse 4\nend" formats "def foo(a, **b, # comment\n &block)\nend" formats "def foo(a, **b, # comment\n &block)\nend" formats "# ```\n# macro foo\n# 1\n# end\n# ```\n" formats "# ```\n# macro foo\n# 1\n# end\n# ```\n" formats "lib Foo\nstruct Foo\nend\nend" formats "lib Foo\nstruct Foo\nend\nend" formats "a = 1\n;\nb = 2" formats "a = 1\n;\nb = 2" formats "1/2" formats "1/2" formats "# Hello\n#\n# ```\n# puts 1+2 # bye\n# 1+2 # hello\n#\n# 1+2\n# ```\n\n# ```\n# puts 1+2\n\n# ```\n# puts 1+2\n\n# Hola\n#\n# 1+2\n# foo do\n# 3+4\n# end\n\n# Hey\n#\n# 1+2\n# foo do\n# 3+4\n# end\n#\n# ```\n# 1+2\n# ```\n#\n# 1+2\n#\n# Bye\n" formats "# Hello\n#\n# ```\n# puts 1+2 # bye\n# 1+2 # hello\n#\n# 1+2\n# ```\n\n# ```\n# puts 1+2\n\n# ```\n# puts 1+2\n\n# Hola\n#\n# 1+2\n# foo do\n# 3+4\n# end\n\n# Hey\n#\n# 1+2\n# foo do\n# 3+4\n# end\n#\n# ```\n# 1+2\n# ```\n#\n# 1+2\n#\n# Bye\n" formats "asm(\"a\" : : :: \"volatile\")" formats "asm(\"a\" : : :: \"volatile\")" formats "a = foo(bar(baz3 do\nend))" formats "a = foo(bar(baz3 do\nend))" formats "def foo : A(B)\n nil\nend" formats "def foo : A(B)\n nil\nend" formats "x\n# foo\n\n# bar" formats "x\n# foo\n\n# bar" formats "a = 1 + # foo\n2" formats "a = 1 + # foo\n2" formats "[1, 2,\n 3, 4]\n" formats "[1, 2,\n 3, 4]\n" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1), \"c\"(2) )" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1), \"c\"(2) )" formats "\"hel\\nlo\"" formats "\"hel\\nlo\"" formats "lib Foo\n fun foo =\n bar(Int32,\n Int32) : Int32\nend" formats "lib Foo\n fun foo =\n bar(Int32,\n Int32) : Int32\nend" formats "foo(\n 1,\n a: 1,\n b: 2,\n)" formats "foo(\n 1,\n a: 1,\n b: 2,\n)" formats "1.===(2) { 3 }" formats "1.===(2) { 3 }" formats "" formats "" formats "{ A: 1 }\n" formats "{ A: 1 }\n" formats "def foo(\n a,\n &block\n)\nend" formats "def foo(\n a,\n &block\n)\nend" formats "->() do x end" formats "->() do x end" formats "foo(\n 1, # hola\n2, # chau\n )" formats "foo(\n 1, # hola\n2, # chau\n )" formats "1234 # foo\n1 # bar" formats "1234 # foo\n1 # bar" formats "bar = foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n })" formats "bar = foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n })" formats "class Foo # foo\nend" formats "class Foo # foo\nend" formats "foo(1, &.bar)" formats "foo(1, &.bar)" formats "if 1\n node.is_a?(T)\nend" formats "if 1\n node.is_a?(T)\nend" formats " {% for x in y %} 2 {% end %}" formats " {% for x in y %} 2 {% end %}" formats "@x[ 1 ] &&= 2" formats "@x[ 1 ] &&= 2" formats "foo.as Int32*" formats "foo.as Int32*" formats "lib Foo\nfun foo(x : Int32, y : Float64) : Int32\nend" formats "lib Foo\nfun foo(x : Int32, y : Float64) : Int32\nend" formats "foo(1 ||\n # foo\n 2)" formats "foo(1 ||\n # foo\n 2)" formats "1 \\\nensure 2" formats "1 \\\nensure 2" formats "[\n 1, 2, # foo\n 3,\n]" formats "[\n 1, 2, # foo\n 3,\n]" formats "bla.select(&.all?{ |x| x } )" formats "bla.select(&.all?{ |x| x } )" formats "1 == / /" formats "1 == / /" formats "enum E\n A # hello\n B # hello; C # hello\nend" formats "enum E\n A # hello\n B # hello; C # hello\nend" formats "Foo:: Bar" formats "Foo:: Bar" formats "if 1;\n2; end" formats "if 1;\n2; end" formats "(a).b { }\nc" formats "(a).b { }\nc" formats "if # some comment\n 2 # another\n 3 # final \n end # end " formats "if # some comment\n 2 # another\n 3 # final \n end # end " formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] @[MyAnn] baz,\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] @[MyAnn] baz,\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\#{foo}\\v\\f\\e\"" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\#{foo}\\v\\f\\e\"" formats "asm(\n\"nop\"\n)" formats "asm(\n\"nop\"\n)" formats "foo[x: 1, &.bar]" formats "foo[x: 1, &.bar]" formats "case 1\nwhen 2\n#comment\nend" formats "case 1\nwhen 2\n#comment\nend" formats "foo &.is_a?(T).bar" formats "foo &.is_a?(T).bar" formats "a = \"\n\"\n1 # 1\n12 # 2\n" formats "a = \"\n\"\n1 # 1\n12 # 2\n" formats "foo &.bar" formats "foo &.bar" formats "1 &+ 2" formats "1 &+ 2" formats ":&" formats ":&" formats "if 1\nif 2\n3 # foo\nend\nend" formats "if 1\nif 2\n3 # foo\nend\nend" formats "def foo=(x)\nend" formats "def foo=(x)\nend" formats "foo . bar()" formats "foo . bar()" formats "foo &.bar.is_a?(Baz)" formats "foo &.bar.is_a?(Baz)" formats "<<-FOO\nfoo\n1\nFOO" formats "<<-FOO\nfoo\n1\nFOO" formats "is_a? Foo" formats "is_a? Foo" formats "begin\n1 ? 2 : 3\nend" formats "begin\n1 ? 2 : 3\nend" formats "\n # hello\n\n1" formats "\n # hello\n\n1" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n}" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n}" formats " Array( {x: Int32, y: String } )" formats " Array( {x: Int32, y: String } )" formats "@[ Foo ]\ndef foo\nend" formats "@[ Foo ]\ndef foo\nend" formats "lib Foo\nfun foo( ... ) : Int32\nend" formats "lib Foo\nfun foo( ... ) : Int32\nend" formats "next( 1 )" formats "next( 1 )" formats "{% foo <<-X\nbar\nX\n%}" formats "{% foo <<-X\nbar\nX\n%}" formats "if a\n2\nelse\n3\nend" formats "if a\n2\nelse\n3\nend" formats "&+ 1" formats "&+ 1" formats "def foo ( @@select) \n end" formats "def foo ( @@select) \n end" formats "1.!= do\nend" formats "1.!= do\nend" formats "macro foo\n {% for x in y %} 2 {% end %}\nend" formats "macro foo\n {% for x in y %} 2 {% end %}\nend" formats "case 1 \n when .foo? \n 3 \n end" formats "case 1 \n when .foo? \n 3 \n end" formats "foo(out x)" formats "foo(out x)" formats "asm(\"a\" :::: \"volatile\"\n)" formats "asm(\"a\" :::: \"volatile\"\n)" formats "{% verbatim do %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "{% verbatim do %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "alias Foo= Bar" formats "alias Foo= Bar" formats "begin\n array[\n 0, # Zero\n ]\nend" formats "begin\n array[\n 0, # Zero\n ]\nend" formats "{ 1 => 2 , 3 => 4 }" formats "{ 1 => 2 , 3 => 4 }" formats "macro foo\n {% for x in y %}\\ 2 {% end %}\\\nend" formats "macro foo\n {% for x in y %}\\ 2 {% end %}\\\nend" formats "a &.!" formats "a &.!" formats "a = # foo\n bar(1)" formats "a = # foo\n bar(1)" formats "\n# hello\n1" formats "\n# hello\n1" formats "x : {A, B, }" formats "x : {A, B, }" formats "foo(\n# x\n1,\n\n# y\nz: 2,\n\n# a\nb: 3)" formats "foo(\n# x\n1,\n\n# y\nz: 2,\n\n# a\nb: 3)" formats "Union(Int32, String)?" formats "Union(Int32, String)?" formats "foo do;\n1; end" formats "foo do;\n1; end" formats "def foo ( x : Int32 = 1 ) \n end" formats "def foo ( x : Int32 = 1 ) \n end" formats "asm(\"nop\" :: )" formats "asm(\"nop\" :: )" formats "lib Foo\nstruct Foo\nx , y , z : Int32\nend\nend" formats "lib Foo\nstruct Foo\nx , y , z : Int32\nend\nend" formats "a(&.b.c.as C)" formats "a(&.b.c.as C)" formats "next( *1 , *2 )" formats "next( *1 , *2 )" formats "->: Int32 do\nx\nend" formats "->: Int32 do\nx\nend" formats "enum Baz\nA = 1\nFOO = 2\n\nEX = 3\nend" formats "enum Baz\nA = 1\nFOO = 2\n\nEX = 3\nend" formats " <<-HTML\n foo\n HTML" formats " <<-HTML\n foo\n HTML" formats "def foo ( &@block) \n end" formats "def foo ( &@block) \n end" formats "0u64" formats "0u64" formats "@[ Foo(foo: 1) ]\ndef foo\nend" formats "@[ Foo(foo: 1) ]\ndef foo\nend" formats "foo(\n# x\n1,\n\n# y\nz: 2\n)" formats "foo(\n# x\n1,\n\n# y\nz: 2\n)" formats "SomeLib.UppercasedFunCall" formats "SomeLib.UppercasedFunCall" formats " .. 2" formats " .. 2" formats "responds_to? :foo" formats "responds_to? :foo" formats " {{\n1 + 2 }}" formats " {{\n1 + 2 }}" formats "1 if nil?\na.b + c" formats "1 if nil?\na.b + c" formats "page= <<-HTML\n foo\nHTML" formats "page= <<-HTML\n foo\nHTML" formats "def foo(x)\n {% if true %}\n x = x + 2\n {% end %}\nend" formats "def foo(x)\n {% if true %}\n x = x + 2\n {% end %}\nend" formats "a = case 1\n when 1, # 1\n 2, # 2\n 3 # 3\n 1\n end" formats "a = case 1\n when 1, # 1\n 2, # 2\n 3 # 3\n 1\n end" formats "1 .. 2" formats "1 .. 2" formats "1.== { 3 }" formats "1.== { 3 }" formats "case\n# hello\nwhen 1\n 2\nend" formats "case\n# hello\nwhen 1\n 2\nend" formats "Foo( x: Int32 )" formats "Foo( x: Int32 )" formats "foo.as ( Int32* )" formats "foo.as ( Int32* )" formats "-> :: foo?" formats "-> :: foo?" formats "a &.b.c.as(C)" formats "a &.b.c.as(C)" formats "class Foo\nend\nclass Bar\nend" formats "class Foo\nend\nclass Bar\nend" formats "[\n1,\n\n2]" formats "[\n1,\n\n2]" formats "return {1, 2}, 3" formats "return {1, 2}, 3" formats "x 1, \\\n 2" formats "x 1, \\\n 2" formats "begin\n / /\nend" formats "begin\n / /\nend" formats "foo 1, do\n2\nend" formats "foo 1, do\n2\nend" formats "foo[1, &.bar] = 1" formats "foo[1, &.bar] = 1" formats "foo &.bar.responds_to?(:baz)" formats "foo &.bar.responds_to?(:baz)" formats "def foo\n@x : Int32\nend" formats "def foo\n@x : Int32\nend" formats "@[Foo::Bar]" formats "@[Foo::Bar]" formats "a = 1\nb, c = 2, 3\n{% begin %}\n a |= 1\n b |= 2\n c |= 3\n{% end %}" formats "a = 1\nb, c = 2, 3\n{% begin %}\n a |= 1\n b |= 2\n c |= 3\n{% end %}" formats "foo[ 1 , 2 ] =3" formats "foo[ 1 , 2 ] =3" formats "macro foo\n {% unless 1 %} 2 {% end %}\nend" formats "macro foo\n {% unless 1 %} 2 {% end %}\nend" formats "<<-HTML\n \#{1}x\n HTML" formats "<<-HTML\n \#{1}x\n HTML" formats "1 > 2" formats "1 > 2" formats "def foo(x) : Int32 # bar\n # baz\nend" formats "def foo(x) : Int32 # bar\n # baz\nend" formats "break { 1 , 2 }" formats "break { 1 , 2 }" formats "case 0\nwhen 0 then 1; 2\n# Comments\nend" formats "case 0\nwhen 0 then 1; 2\n# Comments\nend" formats "def +(x)\nend" formats "def +(x)\nend" formats "if 1\n1\n\n# foo\nend" formats "if 1\n1\n\n# foo\nend" formats "foo (1)" formats "foo (1)" formats "begin\n1\nrescue Int32 \n3\nend" formats "begin\n1\nrescue Int32 \n3\nend" formats "case 1\nwhen 1 then\n2\nwhen 3\n4\nend" formats "case 1\nwhen 1 then\n2\nwhen 3\n4\nend" formats "module M\n @[MyAnn(\n 1\n\n )]\nend" formats "module M\n @[MyAnn(\n 1\n\n )]\nend" formats "foo &.as?(T).bar" formats "foo &.as?(T).bar" formats "while 1\n# nothing\nend" formats "while 1\n# nothing\nend" formats "@[Foo]\ndef foo\nend" formats "@[Foo]\ndef foo\nend" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats " <<-HTML\n \#{1}\n HTML" formats " <<-HTML\n \#{1}\n HTML" formats "<<-FOO\nbarfoobar\nFOO" formats "<<-FOO\nbarfoobar\nFOO" formats "::Tuple()" formats "::Tuple()" formats "{\n a: 1,\n foo: bar,\n}" formats "{\n a: 1,\n foo: bar,\n}" formats "foo(1 &- 2)" formats "foo(1 &- 2)" formats "@@a" formats "@@a" formats "foo(\n 1, 2, &block)" formats "foo(\n 1, 2, &block)" formats "foo(1, / /)" formats "foo(1, / /)" formats "[\n # foo\n 1,\n\n # bar\n 2,\n]" formats "[\n # foo\n 1,\n\n # bar\n 2,\n]" formats " case 1\n when 2\n 3\n else #:newline, :eof\n 1 if 2\n return 3\n end\n" formats " case 1\n when 2\n 3\n else #:newline, :eof\n 1 if 2\n return 3\n end\n" formats "\"\#{ # foo\n foo = 1\n}\"" formats "\"\#{ # foo\n foo = 1\n}\"" formats "asm(\"nop\" :: \"r\"(0))" formats "asm(\"nop\" :: \"r\"(0))" formats "foo : (String -> String?) | (String)" formats "foo : (String -> String?) | (String)" formats "def foo(x) forall T # bar\n # baz\nend" formats "def foo(x) forall T # bar\n # baz\nend" formats "foo\n .bar\n .baz(\n 1\n )" formats "foo\n .bar\n .baz(\n 1\n )" formats "->Foo.foo=" formats "->Foo.foo=" gives proper line number in syntax error inside macro gives proper line number in syntax error inside macro formats "case 1 \n in Int32 \n 3 \n end" formats "case 1 \n in Int32 \n 3 \n end" formats "foo{|x|\n x}" formats "foo{|x|\n x}" formats "module Foo\n1\n\n# foo\nend" formats "module Foo\n1\n\n# foo\nend" formats "-> : Int32 {}" formats "-> : Int32 {}" formats "{%\n if 1\n 2\n end\n%}" formats "{%\n if 1\n 2\n end\n%}" formats "begin\n1\n2\n3\nend" formats "begin\n1\n2\n3\nend" formats "if a\n # hello\n 2\nend" formats "if a\n # hello\n 2\nend" formats "{/ / => / /, / / => / /}" formats "{/ / => / /, / / => / /}" formats "{% if true %}\n # x\n # y\n{% end %}" formats "{% if true %}\n # x\n # y\n{% end %}" formats "foo { |x, *y| }" formats "foo { |x, *y| }" formats "foo.% bar" formats "foo.% bar" formats "break { {1, 2}, {3, 4} }, 5" formats "break { {1, 2}, {3, 4} }, 5" formats "@[::Foo::Bar]" formats "@[::Foo::Bar]" formats "x : Int32 = 1" formats "x : Int32 = 1" formats "10 / a" formats "10 / a" formats "1.<= do\nend" formats "1.<= do\nend" formats "-> :: Foo . foo!" formats "-> :: Foo . foo!" formats "foo { | a, ( _ , c ) | a + c }" formats "foo { | a, ( _ , c ) | a + c }" formats "next {1, 2}, 3" formats "next {1, 2}, 3" formats "macro foo( x = 1, y = 2, &block)\nend" formats "macro foo( x = 1, y = 2, &block)\nend" formats "# Here is the doc of a method, and contains an example:\n#\n# ```\n# result = foo\n#\n# puts result\n# ```\ndef foo\n # ...\nend\n" formats "# Here is the doc of a method, and contains an example:\n#\n# ```\n# result = foo\n#\n# puts result\n# ```\ndef foo\n # ...\nend\n" formats "def foo(x) # bar\n # baz\nend" formats "def foo(x) # bar\n # baz\nend" formats "def foo\n {% for x in y %}\n foo + bar\n {% end %}\nend" formats "def foo\n {% for x in y %}\n foo + bar\n {% end %}\nend" formats "->\n:\nInt32\n{\n}" formats "->\n:\nInt32\n{\n}" formats "foo . bar( x , y )" formats "foo . bar( x , y )" formats "{\n 1 => 2,\n 10 => 30,\n 30 => 40,\n \"foobar\" => 50,\n \"coco\" => 60,\n}" formats "{\n 1 => 2,\n 10 => 30,\n 30 => 40,\n \"foobar\" => 50,\n \"coco\" => 60,\n}" formats "if 1 # foo\n2\nend" formats "if 1 # foo\n2\nend" formats "Foo::Bar?" formats "Foo::Bar?" formats "->@foo.foo" formats "->@foo.foo" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "case 1\nend" formats "case 1\nend" formats "def foo\n ((((((((((((((((0_u64\n ) | ptr[0]) << 8\n ) | ptr[1]) << 8\n ) | ptr[2]) << 8\n ) | ptr[3]) << 8\n ) | ptr[4]) << 8\n ) | ptr[5]) << 8\n ) | ptr[6]) << 8\n ) | ptr[7])\nend" formats "def foo\n ((((((((((((((((0_u64\n ) | ptr[0]) << 8\n ) | ptr[1]) << 8\n ) | ptr[2]) << 8\n ) | ptr[3]) << 8\n ) | ptr[4]) << 8\n ) | ptr[5]) << 8\n ) | ptr[6]) << 8\n ) | ptr[7])\nend" formats "1.===() { 3 }" formats "1.===() { 3 }" formats "1 # foo\n2 # bar" formats "1 # foo\n2 # bar" formats "begin\n1\nrescue ex : Int32 \n3\nend" formats "begin\n1\nrescue ex : Int32 \n3\nend" formats "<<-HTML\n hello \n world \n HTML" formats "<<-HTML\n hello \n world \n HTML" formats "\n# hello\n\n1" formats "\n# hello\n\n1" formats "foo &.is_a?(T)" formats "foo &.is_a?(T)" formats "def foo(a : T, b : U) forall T, U #\n #\nend" formats "def foo(a : T, b : U) forall T, U #\n #\nend" formats "foo &.bar.nil?" formats "foo &.bar.nil?" formats "foo ((1) ? 2 : 3)" formats "foo ((1) ? 2 : 3)" formats "foo : Foo*****" formats "foo : Foo*****" formats "macro foo\n %foo{x,y}\nend" formats "macro foo\n %foo{x,y}\nend" formats "yield 1 , 2" formats "yield 1 , 2" formats "a = if 1\n2\nelsif 3\n4\nend" formats "a = if 1\n2\nelsif 3\n4\nend" formats "foo = {1, {2,\n 3},\n 4}" formats "foo = {1, {2,\n 3},\n 4}" formats "0x1234_u32" formats "0x1234_u32" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1), \"c\"(2) )" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1), \"c\"(2) )" formats "x.is_a? T\n3\n" formats "x.is_a? T\n3\n" formats "[\n 1, 2, # foo\n 3, 4,\n]" formats "[\n 1, 2, # foo\n 3, 4,\n]" formats "a = \nif 1\n2\nend" formats "a = \nif 1\n2\nend" formats "[ # foo\n 1,\n]" formats "[ # foo\n 1,\n]" formats "Set{ # foo\n 1,\n}" formats "Set{ # foo\n 1,\n}" formats "# Hello\n#\n# ```cr\n# 1\n# ```\n# Bye" formats "# Hello\n#\n# ```cr\n# 1\n# ```\n# Bye" formats "lib Bar\n enum Foo\n A = 1\n end\nend" formats "lib Bar\n enum Foo\n A = 1\n end\nend" formats "@x ||= 1" formats "@x ||= 1" formats "def foo(\n &block\n)\nend" formats "def foo(\n &block\n)\nend" formats "foo &.bar.as(T)" formats "foo &.bar.as(T)" formats "macro foo\n {% for value, i in values %}\\\n {% if true %}\\\n {% end %}\\\n {{ 1 }}/\n {% end %}\\\nend\n\n{\n 1 => 2,\n 1234 => 5,\n}\n" formats "macro foo\n {% for value, i in values %}\\\n {% if true %}\\\n {% end %}\\\n {{ 1 }}/\n {% end %}\\\nend\n\n{\n 1 => 2,\n 1234 => 5,\n}\n" formats "if 1 &&\n2 &&\n3\n4\nend" formats "if 1 &&\n2 &&\n3\n4\nend" formats "def foo (\nx ,\n y ) \n end" formats "def foo (\nx ,\n y ) \n end" formats "case 1\nwhen a; 2\nelse; b\nend" formats "case 1\nwhen a; 2\nelse; b\nend" formats "next *1 , *2" formats "next *1 , *2" formats "if 1\n foo(\n bar,\n # comment\n )\nend" formats "if 1\n foo(\n bar,\n # comment\n )\nend" formats "def foo( x , * y )\nend" formats "def foo( x , * y )\nend" formats "1 ; 2" formats "1 ; 2" formats "foo do\n {{ foo <<-X\n bar\n X\n }}\nend" formats "foo do\n {{ foo <<-X\n bar\n X\n }}\nend" formats "lib Foo\nfun foo\nend" formats "lib Foo\nfun foo\nend" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] baz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] baz\n); end" formats "def foo ( x = 1 ) \n end" formats "def foo ( x = 1 ) \n end" formats "alias A = ((B(C | D) | E) | F)" formats "alias A = ((B(C | D) | E) | F)" formats "foo &.>=(2)" formats "foo &.>=(2)" formats "foo[&.bar]" formats "foo[&.bar]" formats "{ %w() }" formats "{ %w() }" formats "/ /" formats "/ /" formats "long_variable_name = [1, 2, 3,\n 4, 5, 6]" formats "long_variable_name = [1, 2, 3,\n 4, 5, 6]" formats "foo(1,\n2,\n)" formats "foo(1,\n2,\n)" formats "struct Foo\n # bar\n # baz\n1\nend" formats "struct Foo\n # bar\n # baz\n1\nend" formats "foo.bar # comment\n .baz" formats "foo.bar # comment\n .baz" formats "foo . bar" formats "foo . bar" formats "foo([\n 1, 2,\n 3, 4,\n])" formats "foo([\n 1, 2,\n 3, 4,\n])" formats "/\#{1}/imx" formats "/\#{1}/imx" formats "foo : (A) | D" formats "foo : (A) | D" formats "join io, &.inspect" formats "join io, &.inspect" formats "\n\n1" formats "\n\n1" formats "1.as Int32" formats "1.as Int32" formats "if a\n2\n3\nelse\n4\n5\nend" formats "if a\n2\n3\nelse\n4\n5\nend" formats "foo(\n 1,\n # 2,\n # 3,\n)" formats "foo(\n 1,\n # 2,\n # 3,\n)" formats "a=1" formats "a=1" formats "foo.bar. as? Int32" formats "foo.bar. as? Int32" formats "def foo(x)\n {% if true %}\n \\{% if true %}\n x = 1\n \\{% else %}\n x = 2\n \\{% end %}\n \\{% for x in y %}\n x = 1\n \\{% end %}\n \\{{x}}\n \\{% x %}\n {% end %}\nend" formats "def foo(x)\n {% if true %}\n \\{% if true %}\n x = 1\n \\{% else %}\n x = 2\n \\{% end %}\n \\{% for x in y %}\n x = 1\n \\{% end %}\n \\{{x}}\n \\{% x %}\n {% end %}\nend" formats "NamedTuple(\n a: Int32,)" formats "NamedTuple(\n a: Int32,)" formats "A = 1\nFOO = 2\n\nEX = 3" formats "A = 1\nFOO = 2\n\nEX = 3" formats "Hash{\n foo => <<-EOF\n foo\n EOF\n}" formats "Hash{\n foo => <<-EOF\n foo\n EOF\n}" formats "if 1\n# nothing\nend" formats "if 1\n# nothing\nend" formats "macro bar\n 1\nend\n\ncase 1\nwhen 2 then 3\nwhen 45 then 6\nend" formats "macro bar\n 1\nend\n\ncase 1\nwhen 2 then 3\nwhen 45 then 6\nend" formats "-> :: foo=" formats "-> :: foo=" formats "->{}" formats "->{}" formats "if 1\n {{1 + 2}}\nend" formats "if 1\n {{1 + 2}}\nend" formats "yield *1 , *2" formats "yield *1 , *2" formats "select # some comment\nwhen bar\n break\nend" formats "select # some comment\nwhen bar\n break\nend" formats "bar = foo(->do\n 1 + 2\nend)" formats "bar = foo(->do\n 1 + 2\nend)" formats "{} of A => B\n{} of Foo => Bar" formats "{} of A => B\n{} of Foo => Bar" formats "yield *1 ,2" formats "yield *1 ,2" formats "-> :: Foo . foo" formats "-> :: Foo . foo" formats "foo(\n # foo\n1,\n\n # bar\n2, \n)" formats "foo(\n # foo\n1,\n\n # bar\n2, \n)" formats "x : Int32" formats "x : Int32" formats "def foo(x : A(B), y)\nend" formats "def foo(x : A(B), y)\nend" formats "module Readline\n @@completion_proc : (String -> Array(String)?) | (String -> Array(String)) | Nil\nend" formats "module Readline\n @@completion_proc : (String -> Array(String)?) | (String -> Array(String)) | Nil\nend" formats "next 1 , 2" formats "next 1 , 2" formats "Foo( )" formats "Foo( )" formats " 1" formats " 1" formats "def func # comment\n (1 + 2) / 3\nend" formats "def func # comment\n (1 + 2) / 3\nend" formats "lib Foo\n fun foo =\n bar(Int32) : Int32\nend" formats "lib Foo\n fun foo =\n bar(Int32) : Int32\nend" formats "enum Foo : Int32\nA = 1\ndef foo\n1\nend\nend" formats "enum Foo : Int32\nA = 1\ndef foo\n1\nend\nend" formats "return" formats "return" formats "x.try &.[]= 123, 456" formats "x.try &.[]= 123, 456" formats "lib Foo\nfun foo() : Int32\nend" formats "lib Foo\nfun foo() : Int32\nend" formats "foo \"bar\": 1, \"baz qux\": 2" formats "foo \"bar\": 1, \"baz qux\": 2" formats "_ = 1" formats "_ = 1" formats "[\n a(),\n]" formats "[\n a(),\n]" formats "def foo(@[AnnOne] @[AnnTwo] &block : Int32 -> ); end" formats "def foo(@[AnnOne] @[AnnTwo] &block : Int32 -> ); end" formats "foo = 1\n->foo.bar(Int32*)" formats "foo = 1\n->foo.bar(Int32*)" formats "/foo \#{ bar }/" formats "/foo \#{ bar }/" formats "case\nend" formats "case\nend" formats "1 \\\nif 2" formats "1 \\\nif 2" formats "macro foo\n{% verbatim do %}1 + 2{% end %}\nend" formats "macro foo\n{% verbatim do %}1 + 2{% end %}\nend" formats "case 1\nwhen 2\n 3\n # foo\nelse\n 4\n # bar\nend" formats "case 1\nwhen 2\n 3\n # foo\nelse\n 4\n # bar\nend" formats "1 ... 2" formats "1 ... 2" formats "begin\n ()\nend" formats "begin\n ()\nend" formats "x.try &.[] 123" formats "x.try &.[] 123" formats "def foo(x : (self)?)\nend" formats "def foo(x : (self)?)\nend" formats "break *1 ,2" formats "break *1 ,2" formats "class Foo\n@x : Int32\nend" formats "class Foo\n@x : Int32\nend" formats "foo : self?" formats "foo : self?" formats "{% for a in %w() %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "{% for a in %w() %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "foo bar, \\\nbaz" formats "foo bar, \\\nbaz" formats "alias Foo::Bar =Baz" formats "alias Foo::Bar =Baz" formats "1 #=>2" formats "1 #=>2" formats "foo.bar(&.% baz)" formats "foo.bar(&.% baz)" formats "enum Foo\n A; B; C\nend\n" formats "enum Foo\n A; B; C\nend\n" formats "1 * 2" formats "1 * 2" formats "x = {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}" formats "x = {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}" formats "self.as(Int32)" formats "self.as(Int32)" formats "-> :: foo" formats "-> :: foo" formats "#### ###" formats "#### ###" formats "[\n] of \n Foo " formats "[\n] of \n Foo " formats "def foo(x, **z, &block)\nend" formats "def foo(x, **z, &block)\nend" formats "foo(baz(x, y) do\n 1 + 2\nend)" formats "foo(baz(x, y) do\n 1 + 2\nend)" formats "lib Foo\n fun bar = Bar\nend" formats "lib Foo\n fun bar = Bar\nend" formats ":>>" formats ":>>" formats "foo(a: //, b: //)" formats "foo(a: //, b: //)" formats "class Foo\n macro foo\n 1\n end\nend" formats "class Foo\n macro foo\n 1\n end\nend" formats "-> : Int32* {}" formats "-> : Int32* {}" formats "ary.size = (1).to_i" formats "ary.size = (1).to_i" formats "class Foo; 1; end" formats "class Foo; 1; end" formats "foo.bar += \n1" formats "foo.bar += \n1" formats "def foo(\n **a\n # comment\n)\n 1\nend" formats "def foo(\n **a\n # comment\n)\n 1\nend" formats "x = <<-EOF\n 1\nEOF" formats "x = <<-EOF\n 1\nEOF" formats "typeof( 1, 2, 3 )" formats "typeof( 1, 2, 3 )" formats "'\\u{0123}'" formats "'\\u{0123}'" formats "def `(x)\n 1\nend" formats "def `(x)\n 1\nend" formats "as? Foo" formats "as? Foo" formats "1 \\\nrescue 2" formats "1 \\\nrescue 2" formats "unless a\n # hello\n 2\nend" formats "unless a\n # hello\n 2\nend" formats "if 1\n foo(\n bar\n # comment\n )\nend" formats "if 1\n foo(\n bar\n # comment\n )\nend" formats "@[Foo(\n foo: 1,\n)]\ndef foo\nend" formats "@[Foo(\n foo: 1,\n)]\ndef foo\nend" formats "foo do\n # bar\nend" formats "foo do\n # bar\nend" formats "break { {1, 2}, {3, 4} }" formats "break { {1, 2}, {3, 4} }" formats "foo(\n a: 1,\n b: 2,\n )\n" formats "foo(\n a: 1,\n b: 2,\n )\n" formats "alias X = (A, B) ->\nbar : C" formats "alias X = (A, B) ->\nbar : C" formats "foo.foo1(\n bar\n .bar1\n .bar2)" formats "foo.foo1(\n bar\n .bar1\n .bar2)" formats "return {1, 2}, {3, 4}" formats "return {1, 2}, {3, 4}" formats "def foo ( x : Int32 ) \n end" formats "def foo ( x : Int32 ) \n end" formats "a = 1 if 1 == 2 ||\n 3 == 4\n" formats "a = 1 if 1 == 2 ||\n 3 == 4\n" formats "return 1 , 2" formats "return 1 , 2" formats "1\n.as(Int32)" formats "1\n.as(Int32)" formats ":foo" formats ":foo" formats "lib Foo\nfun foo(x : Int32, ... ) : Int32\nend" formats "lib Foo\nfun foo(x : Int32, ... ) : Int32\nend" formats " <<-EOF\n 1\n EOF" formats " <<-EOF\n 1\n EOF" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1) )" formats "asm(\"nop\" : \"a\"(0) : \"b\"(1) )" formats "lib Foo\nfun foo : Int32\nend" formats "lib Foo\nfun foo : Int32\nend" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] baz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n @[MyAnn] baz\n); end" formats "\" \" * 2" formats "\" \" * 2" formats "def /(x)\n 1\nend" formats "def /(x)\n 1\nend" formats "%i{one( two( three)}" formats "%i{one( two( three)}" formats "def foo(x : ( A | B )) : ( A | B )\nend" formats "def foo(x : ( A | B )) : ( A | B )\nend" formats "macro foo\n {% if 1 %} 2 {% else %} 3 {% end %}\nend" formats "macro foo\n {% if 1 %} 2 {% else %} 3 {% end %}\nend" formats "def foo ( @x, @y) \n end" formats "def foo ( @x, @y) \n end" formats "loop do\n 1\nrescue\n 2\nend" formats "loop do\n 1\nrescue\n 2\nend" formats "foo : (F(A)) | D" formats "foo : (F(A)) | D" formats "__LINE__" formats "__LINE__" formats "foo(bar([\n 1,\n]))" formats "foo(bar([\n 1,\n]))" formats "def //(x)\n 1\nend" formats "def //(x)\n 1\nend" formats "macro foo\n {{1 + 2}}\nend" formats "macro foo\n {{1 + 2}}\nend" formats "def foo\n 1\n # Comment\n\n\nend" formats "def foo\n 1\n # Comment\n\n\nend" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "asm(\"a\" ::: \"a\"\n : \"volatile\",\n \"intel\")" formats "asm(\"a\" ::: \"a\"\n : \"volatile\",\n \"intel\")" formats "def foo()\n1\nend" formats "def foo()\n1\nend" formats "def foo\n 1\n #\nrescue\nend" formats "def foo\n 1\n #\nrescue\nend" formats "foo.bar(&.%(baz))" formats "foo.bar(&.%(baz))" formats "foo[&.bar]?" formats "foo[&.bar]?" formats "a&-1" formats "a&-1" formats "case 1\nwhen a; 2\nelse; ; b\nend" formats "case 1\nwhen a; 2\nelse; ; b\nend" formats "1 ? 2 : 3" formats "1 ? 2 : 3" formats "lib Foo\nunion Foo\nend\nend" formats "lib Foo\nunion Foo\nend\nend" formats ":*" formats ":*" formats "foo([\n 1,\n 2,\n 3,\n])" formats "foo([\n 1,\n 2,\n 3,\n])" formats "def foo\n 1\n 2\nrescue IO\n 1\nend" formats "def foo\n 1\n 2\nrescue IO\n 1\nend" formats "__DIR__" formats "__DIR__" formats "case 1 \n when 2 \n 3 \n else 4 \n end" formats "case 1 \n when 2 \n 3 \n else 4 \n end" formats "while true\n1\n\n# foo\nend" formats "while true\n1\n\n# foo\nend" formats "def foo(a : T) forall T \n #\nend" formats "def foo(a : T) forall T \n #\nend" formats "String???" formats "String???" formats "foo(\n 1,\n 2\n) do\n 1\nend" formats "foo(\n 1,\n 2\n) do\n 1\nend" formats "foo x: 1" formats "foo x: 1" formats "break {1, 2}, {3, 4}" formats "break {1, 2}, {3, 4}" formats "def foo(\n **a\n)\n 1\nend" formats "def foo(\n **a\n)\n 1\nend" formats "page= <<-HTML\n \#{1}foo\nHTML" formats "page= <<-HTML\n \#{1}foo\nHTML" formats "a = case 1\nwhen 2\n3\nelse\n4\nend" formats "a = case 1\nwhen 2\n3\nelse\n4\nend" formats "1 # foo" formats "1 # foo" formats "def foo ( x , y ,\n) \n end" formats "def foo ( x , y ,\n) \n end" formats "def foo(x @@y)\nend" formats "def foo(x @@y)\nend" formats "break( 1 )" formats "break( 1 )" formats "\"\\a\\c\#{foo}\\b\\d\"" formats "\"\\a\\c\#{foo}\\b\\d\"" formats "if 1\nbegin\n2\nensure\n3\nend\nend" formats "if 1\nbegin\n2\nensure\n3\nend\nend" formats "begin\n 1 \\\n + 2\n 3\nend" formats "begin\n 1 \\\n + 2\n 3\nend" formats "return { {1, 2}, {3, 4} }, 5" formats "return { {1, 2}, {3, 4} }, 5" formats "if 1\n2 # foo\nend" formats "if 1\n2 # foo\nend" formats "x : Int32 |\nString" formats "x : Int32 |\nString" formats "{%\n unless true\n 1\n else\n 2\n end\n%}" formats "{%\n unless true\n 1\n else\n 2\n end\n%}" formats "<<-HTML\n foo\n \#{\"foo\"}\n HTML" formats "<<-HTML\n foo\n \#{\"foo\"}\n HTML" formats "(())" formats "(())" formats "long_variable_name = [\n {\n :foo => 1,\n },\n {\n :bar => 2,\n },\n]" formats "long_variable_name = [\n {\n :foo => 1,\n },\n {\n :bar => 2,\n },\n]" formats "x : { {A, B}, {C, D} }" formats "x : { {A, B}, {C, D} }" formats "foo.[] =1" formats "foo.[] =1" formats "{\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "{\n query => <<-HEREDOC,\n foo\n HEREDOC\n}" formats "p = Foo[\n 1, 2, 3,\n 4, 5, 6\n]\n" formats "p = Foo[\n 1, 2, 3,\n 4, 5, 6\n]\n" formats "bar = foo(->{\n 1 + 2\n})" formats "bar = foo(->{\n 1 + 2\n})" formats "1 + \\\n2 + \\\n3" formats "1 + \\\n2 + \\\n3" formats "def foo\n # Comment\n\n\nend" formats "def foo\n # Comment\n\n\nend" formats "def run\n\nrescue\n 2\n 3\nend" formats "def run\n\nrescue\n 2\n 3\nend" formats "a = 1;;; b = 2" formats "a = 1;;; b = 2" formats "->(x : Int32) { }" formats "->(x : Int32) { }" formats "x: Int32" formats "x: Int32" formats "Foo( A , 1 )" formats "Foo( A , 1 )" formats "foo 1, a: 1,\nb: 2,\nc: 3,\n&block" formats "foo 1, a: 1,\nb: 2,\nc: 3,\n&block" formats "case 1 \n when 2 , 3 \n 4 \n end" formats "case 1 \n when 2 , 3 \n 4 \n end" formats "'\\n'" formats "'\\n'" formats "case 1 \n when 2 ,\n 3 \n 4 \n end" formats "case 1 \n when 2 ,\n 3 \n 4 \n end" formats "if 1\n2\nelsif\n3\n4\nelsif 5\n6\nend" formats "if 1\n2\nelsif\n3\n4\nelsif 5\n6\nend" formats "lib Foo\n $foo : Int32 \nend" formats "lib Foo\n $foo : Int32 \nend" formats " _ , *_ ,\na.foo ,a.bar = 1 , 2,3" formats " _ , *_ ,\na.foo ,a.bar = 1 , 2,3" formats "asm(\n# foo\n\"nop\"\n# bar\n)" formats "asm(\n# foo\n\"nop\"\n# bar\n)" formats "def a\n b(\n 1, # x\n # y\n a: 1, # x\n # y\n b: 2 # z\n )\nend" formats "def a\n b(\n 1, # x\n # y\n a: 1, # x\n # y\n b: 2 # z\n )\nend" formats "getter foo : Int32 # comment\n\ndef foo\nend" formats "getter foo : Int32 # comment\n\ndef foo\nend" formats "begin\n begin\n\n end\nend" formats "begin\n begin\n\n end\nend" formats "def foo ( x : Foo.class ) \n end" formats "def foo ( x : Foo.class ) \n end" formats "case 1 \n when 2 then \n 3 \n end" formats "case 1 \n when 2 then \n 3 \n end" formats "a = begin\n 1\nend\n\na =\nbegin\n 1\nend\n\na = if 1\n 2\nend\n\nb = 1\nb ||= begin\n 2\nend\n\nb ||= if 1\n 2\nend\n\nb += if 1\n 2\nend\n\nb +=\nif 1\n 2\nend\n\na, b = begin\n 1\nend\n\na, b =\nbegin\n 1\nend\n\nc[x] = begin\n 2\nend\n\nc[x] =\nbegin\n 2\nend\n\nc[x] = if 1\n 2\nend\n\nc[x] ||= begin 1\n 2\nend\n\nc[x] ||= if 1\n 2\nend\n\nc[x] += if 1\n 2\nend\n\nc[x] += begin 1\n 2\nend\n\nc[x] +=\nbegin\n 1\n 2\nend\n\nfoo.bar = begin\nend\n\nfoo.bar =\nbegin\nend\n\nfoo.bar = if\n 2\nend\n\nfoo.bar += begin\n 2\nend\n\nfoo.bar += if\n 2\nend\n\n" formats "a = begin\n 1\nend\n\na =\nbegin\n 1\nend\n\na = if 1\n 2\nend\n\nb = 1\nb ||= begin\n 2\nend\n\nb ||= if 1\n 2\nend\n\nb += if 1\n 2\nend\n\nb +=\nif 1\n 2\nend\n\na, b = begin\n 1\nend\n\na, b =\nbegin\n 1\nend\n\nc[x] = begin\n 2\nend\n\nc[x] =\nbegin\n 2\nend\n\nc[x] = if 1\n 2\nend\n\nc[x] ||= begin 1\n 2\nend\n\nc[x] ||= if 1\n 2\nend\n\nc[x] += if 1\n 2\nend\n\nc[x] += begin 1\n 2\nend\n\nc[x] +=\nbegin\n 1\n 2\nend\n\nfoo.bar = begin\nend\n\nfoo.bar =\nbegin\nend\n\nfoo.bar = if\n 2\nend\n\nfoo.bar += begin\n 2\nend\n\nfoo.bar += if\n 2\nend\n\n" formats "x : A?" formats "x : A?" formats "a &.a.!" formats "a &.a.!" formats "1 \\\n+ 2" formats "1 \\\n+ 2" formats "1 + # foo\n2" formats "1 + # foo\n2" formats "case 1\nwhen 2 # a\n # b\nend" formats "case 1\nwhen 2 # a\n # b\nend" formats "foo &.==(2)" formats "foo &.==(2)" formats "a &.b[c]?" formats "a &.b[c]?" formats "<<-FOO\nbarfoo\nFOO" formats "<<-FOO\nbarfoo\nFOO" formats "X(typeof(begin\n e.is_a?(Y)\nend))" formats "X(typeof(begin\n e.is_a?(Y)\nend))" formats "1\n..2" formats "1\n..2" formats "def foo( x , & block : Int32->Float64)\nend" formats "def foo( x , & block : Int32->Float64)\nend" formats "{ 1 => 2 ,\n 3 => 4 }" formats "{ 1 => 2 ,\n 3 => 4 }" formats "foo { | ( a, *b , c ) | a }" formats "foo { | ( a, *b , c ) | a }" formats "instance_alignof( Int32 )" formats "instance_alignof( Int32 )" formats "case 1 \n when 2 ; 3 \n end" formats "case 1 \n when 2 ; 3 \n end" formats "foo.as?(T).bar" formats "foo.as?(T).bar" formats "foo {;;1}" formats "foo {;;1}" formats "->@@foo.foo" formats "->@@foo.foo" adds `&` to yielding methods that don't have a block parameter (#8764) formats "def foo(\nx)\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo\n yield\nend" formats "def foo\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo(x,\ny)\n yield\nend" formats "def foo(x,\ny)\n yield\nend" formats "def foo()\n yield\nend" formats "def foo()\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "macro f\n yield\n {{ yield }}\nend" formats "macro f\n yield\n {{ yield }}\nend" formats "def foo(x ,)\n yield\nend" formats "def foo(x ,)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "lib Foo\n fun foo(Int32) : Int32\nend" formats "lib Foo\n fun foo(Int32) : Int32\nend" formats " <<-HTML\n hello \n world \n HTML" formats " <<-HTML\n hello \n world \n HTML" formats "def foo\n1\n2\n# foo\nend" formats "def foo\n1\n2\n# foo\nend" formats "asm(\"a\" : \"b\"(c) : \"d\"(e) :: \"volatile\")" formats "asm(\"a\" : \"b\"(c) : \"d\"(e) :: \"volatile\")" formats "if 1\n {% if 2 %} {% end %}\nend" formats "if 1\n {% if 2 %} {% end %}\nend" formats "foo = 1\n->foo.[]=(Int32)" formats "foo = 1\n->foo.[]=(Int32)" formats "1 ;\n 2" formats "1 ;\n 2" formats "alias Foo::Bar = Baz" formats "alias Foo::Bar = Baz" formats "->@foo.foo?" formats "->@foo.foo?" formats "foo &.[]" formats "foo &.[]" formats "1.=== do\nend" formats "1.=== do\nend" formats "{\n1 => 2 ,\n 3 => 4 }" formats "{\n1 => 2 ,\n 3 => 4 }" formats "next { {1, 2}, {3, 4} }" formats "next { {1, 2}, {3, 4} }" formats "1 #foo \n2 #bar" formats "1 #foo \n2 #bar" formats "def foo(&: Int32)\nend" formats "def foo(&: Int32)\nend" formats "#!shebang\n1 + 2" formats "#!shebang\n1 + 2" formats "$0" formats "$0" formats "foo(\n <<-HERE,\n hello\n HERE\n # foo\n foo: 1,\n)" formats "foo(\n <<-HERE,\n hello\n HERE\n # foo\n foo: 1,\n)" formats "1.<= { 3 }" formats "1.<= { 3 }" formats "foo[a, b: 2]" formats "foo[a, b: 2]" formats "case foo\nwhen 1\n # A\nelse\n# B\nend\n" formats "case foo\nwhen 1\n # A\nelse\n# B\nend\n" formats "Foo( Bar( ) )" formats "Foo( Bar( ) )" formats "class Foo \n\n 1 \n\nend" formats "class Foo \n\n 1 \n\nend" formats "NamedTuple(\n a: Int32,\n)" formats "NamedTuple(\n a: Int32,\n)" formats "foo(\n1,\n 2 \n)" formats "foo(\n1,\n 2 \n)" formats "foo { | a, ( b , c, ), | a + b + c }" formats "foo { | a, ( b , c, ), | a + b + c }" formats "macro [](x)\nend" formats "macro [](x)\nend" formats "fun foo(x : Int32) : Int32\n 1\nend" formats "fun foo(x : Int32) : Int32\n 1\nend" formats "1 +\n # foo\n 2" formats "1 +\n # foo\n 2" formats "{ } of A => B" formats "{ } of A => B" formats "foo{|x| x}" formats "foo{|x| x}" formats "->Foo.foo?" formats "->Foo.foo?" formats "1.== do\nend" formats "1.== do\nend" formats "{% if 1 %}\n 2\n{% end %}\ndef foo\nend" formats "{% if 1 %}\n 2\n{% end %}\ndef foo\nend" formats "def foo(x : (A | B)) \n end" formats "def foo(x : (A | B)) \n end" formats "Foo" formats "Foo" formats "coco.lala\nfoo\n .bar" formats "coco.lala\nfoo\n .bar" formats "asm(\"a\" ::: \"f\"\n)" formats "asm(\"a\" ::: \"f\"\n)" formats "macro foo=(x)\nend" formats "macro foo=(x)\nend" formats "alias A = ({A, (B)})" formats "alias A = ({A, (B)})" formats "def foo ( x ) : Int32 \n end" formats "def foo ( x ) : Int32 \n end" formats "call(foo <<-X\nbar\nX\n)" formats "call(foo <<-X\nbar\nX\n)" formats "1\n\n\n2" formats "1\n\n\n2" formats "NamedTuple(a: Int32,)" formats "NamedTuple(a: Int32,)" formats "break( 1 , 2 )" formats "break( 1 , 2 )" formats "def foo(a,\n **b)\nend" formats "def foo(a,\n **b)\nend" formats "foo &.[]( 1, 2 )" formats "foo &.[]( 1, 2 )" formats "lib Foo::Bar\nend" formats "lib Foo::Bar\nend" formats "->foo?" formats "->foo?" formats "def foo(\n foo,\n\n @[MyAnn]\n &block\n); end" formats "def foo(\n foo,\n\n @[MyAnn]\n &block\n); end" formats "foo[]" formats "foo[]" formats "foo = 1\n->foo.foo?" formats "foo = 1\n->foo.foo?" formats "foo[&.bar] = 1" formats "foo[&.bar] = 1" formats "->{ x }" formats "->{ x }" formats "begin\n1\nrescue\n3\nensure\n2\nend" formats "begin\n1\nrescue\n3\nensure\n2\nend" formats "foo.bar(1) # comment\n .baz" formats "foo.bar(1) # comment\n .baz" formats "if 1\n {% for x in y %} {% end %}\nend" formats "if 1\n {% for x in y %} {% end %}\nend" formats "macro foo\n {{ 1 + 2 }}\\\nend" formats "macro foo\n {{ 1 + 2 }}\\\nend" formats "if 1;\n2;\nelse;\n3;\nend" formats "if 1;\n2;\nelse;\n3;\nend" formats "...\n2" formats "...\n2" formats "\"\" + <<-END\n bar\n END" formats "\"\" + <<-END\n bar\n END" formats "class Foo\n NamedTuple(\n a: Int32,\n )\nend" formats "class Foo\n NamedTuple(\n a: Int32,\n )\nend" formats "def foo\n 1 #\nrescue\nend" formats "def foo\n 1 #\nrescue\nend" formats "class Foo\ndef foo (\nx ,\n y ) \n end\nend" formats "class Foo\ndef foo (\nx ,\n y ) \n end\nend" formats "foo(\"bar\": 1, \"baz qux\": 2)" formats "foo(\"bar\": 1, \"baz qux\": 2)" formats "{ {1}.foo, 2 }" formats "{ {1}.foo, 2 }" formats "/foo/imx" formats "/foo/imx" formats "return 1, {2, 3}" formats "return 1, {2, 3}" formats "foo\n \nbar" formats "foo\n \nbar" formats "foo : Pointer(Foo)*" formats "foo : Pointer(Foo)*" formats "1.[]=(2) { 3 }" formats "1.[]=(2) { 3 }" formats "def foo(x : self ?) \n end" formats "def foo(x : self ?) \n end" formats "if 1\n2\nelsif\n3\n4\nelse\n6\nend" formats "if 1\n2\nelsif\n3\n4\nelse\n6\nend" formats "macro foo\n {% 1 + 2 %}\nend" formats "macro foo\n {% 1 + 2 %}\nend" formats "def foo( x , & block : Int32 ->)\nend" formats "def foo( x , & block : Int32 ->)\nend" formats "a &.b.as C" formats "a &.b.as C" formats "select \n when foo \n 2 \n when bar \n 3 \n end" formats "select \n when foo \n 2 \n when bar \n 3 \n end" formats "{{ foo <<-X\nbar\nX\n}}" formats "{{ foo <<-X\nbar\nX\n}}" formats "def foo # bar\n # baz\nend" formats "def foo # bar\n # baz\nend" formats "case 1 # foo\nwhen 2\nend" formats "case 1 # foo\nwhen 2\nend" formats "0i64" formats "0i64" formats "private FOO = 2\nprivate A = 1" formats "private FOO = 2\nprivate A = 1" formats "{% if true %}\n # x\n #\n{% end %}\n\n# ```\n# x\n# ```" formats "{% if true %}\n # x\n #\n{% end %}\n\n# ```\n# x\n# ```" formats "def foo(\n foo,\n @[MyAnn]\n &block\n); end" formats "def foo(\n foo,\n @[MyAnn]\n &block\n); end" formats "def foo ( x ,\n y ) \n end" formats "def foo ( x ,\n y ) \n end" formats "1 // 2" formats "1 // 2" formats "enum Foo; A = 1; end" formats "enum Foo; A = 1; end" formats "foo.bar += 2" formats "foo.bar += 2" formats "\"hel\nlo\"" formats "\"hel\nlo\"" formats "foo a , *b" formats "foo a , *b" formats "lib LibFoo\n struct Bar\n {% begin %}\n x : Int32\n {% end %}\n end\nend" formats "lib LibFoo\n struct Bar\n {% begin %}\n x : Int32\n {% end %}\n end\nend" formats "foo bar:baz, qux:other" formats "foo bar:baz, qux:other" formats "a(&.b.c.as(C))" formats "a(&.b.c.as(C))" formats "def foo(a, # comment\n *b)\nend" formats "def foo(a, # comment\n *b)\nend" formats " [ 1 , 2 , 3 ] " formats " [ 1 , 2 , 3 ] " formats "macro foo(x, *, z)\nend" formats "macro foo(x, *, z)\nend" formats "asm(\"nop\"\n: \"a\"(0) )" formats "asm(\"nop\"\n: \"a\"(0) )" formats "<<-HTML\n \#{__FILE__}\n HTML" formats "<<-HTML\n \#{__FILE__}\n HTML" formats "foo([\n 1,\n bar do\n end,\n [\n 2,\n ],\n])" formats "foo([\n 1,\n bar do\n end,\n [\n 2,\n ],\n])" formats "foo = 1\n->foo.foo" formats "foo = 1\n->foo.foo" formats "enum Foo\n A = 10\n FOO = 123\n BARBAZ = 1234\nend\n" formats "enum Foo\n A = 10\n FOO = 123\n BARBAZ = 1234\nend\n" formats "if 1\nfoo do | x , y | \n x \n end\nend" formats "if 1\nfoo do | x , y | \n x \n end\nend" formats "x = a do\n 1 ||\n 2\nend" formats "x = a do\n 1 ||\n 2\nend" formats "1 #=> 2" formats "1 #=> 2" formats "->do\nend" formats "->do\nend" formats "foo \\\n foo: 1,\n bar: 2" formats "foo \\\n foo: 1,\n bar: 2" formats "1_234" formats "1_234" formats "def foo(\"bar baz\" qux)\nend" formats "def foo(\"bar baz\" qux)\nend" formats "@x[ 1 ] += 2" formats "@x[ 1 ] += 2" formats "if 1\n [\n 1,\n ].none?\nend" formats "if 1\n [\n 1,\n ].none?\nend" formats "next 1" formats "next 1" formats "+ 1" formats "+ 1" formats "1 ?\n 2 : \n 3" formats "1 ?\n 2 : \n 3" formats "foo((1..3))" formats "foo((1..3))" formats "foo = 1\n->foo.foo=" formats "foo = 1\n->foo.foo=" formats "foo.bar\n .baz(\n 1\n )" formats "foo.bar\n .baz(\n 1\n )" formats "$1.bar" formats "$1.bar" formats " ( 1; 2; 3 ) " formats " ( 1; 2; 3 ) " formats "1 if 2" formats "1 if 2" formats "{ {{FOO}}, nil}" formats "{ {{FOO}}, nil}" formats "\"\#{\"foo\"}\"" formats "\"\#{\"foo\"}\"" formats "# ```text\n# 1 + 2\n# ```\n#\n# ```\n# 3 + 4\n# ```" formats "# ```text\n# 1 + 2\n# ```\n#\n# ```\n# 3 + 4\n# ```" formats "{1 => 2, 3 => 4}\n{5234234 => 234098234, 7 => 8}" formats "{1 => 2, 3 => 4}\n{5234234 => 234098234, 7 => 8}" formats "if 1\n2\nend\nif 3\nend" formats "if 1\n2\nend\nif 3\nend" formats "\"foo \#{bar}\" \\\n \"baz\"" formats "\"foo \#{bar}\" \\\n \"baz\"" formats "begin\n select\n when foo\n # foo\n # bar\n else\n # foo\n # bar\n end\nend" formats "begin\n select\n when foo\n # foo\n # bar\n else\n # foo\n # bar\n end\nend" formats "case 1 \n when 2 ; 3 \n when 4 ; 5\nend" formats "case 1 \n when 2 ; 3 \n when 4 ; 5\nend" formats "A = 10\nFOO = 123\nBARBAZ = 1234\n" formats "A = 10\nFOO = 123\nBARBAZ = 1234\n" formats "break 1 , 2" formats "break 1 , 2" formats "foo = 1\n->foo.foo!" formats "foo = 1\n->foo.foo!" formats "begin\n begin\n a\n # b\n end\nend" formats "begin\n begin\n a\n # b\n end\nend" formats "def x(@y = ->(z) {})\nend" formats "def x(@y = ->(z) {})\nend" formats "x : (A -> B)" formats "x : (A -> B)" formats "foo : A(B)\nbar : C" formats "foo : A(B)\nbar : C" formats "asm(\"nop\" : \"a\"(0),\n\"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "asm(\"nop\" : \"a\"(0),\n\"b\"(1)\n: \"c\"(2), \"d\"(3) )" formats "foo(<<-X,\na\nX\n 1)" formats "foo(<<-X,\na\nX\n 1)" formats "::NamedTuple(T)" formats "::NamedTuple(T)" formats "def foo(@[MyAnn] & : String -> Nil); end" formats "def foo(@[MyAnn] & : String -> Nil); end" formats "foo a , b , x: 1" formats "foo a , b , x: 1" formats "foo.bar / 2\n" formats "foo.bar / 2\n" formats "case / /\nwhen /x/, / /\n / /\nend" formats "case / /\nwhen /x/, / /\n / /\nend" formats "if 1\n2 && 3\nend" formats "if 1\n2 && 3\nend" formats "lib Foo\nfun foo(x : Int32,\ny : Float64) : Int32\nend" formats "lib Foo\nfun foo(x : Int32,\ny : Float64) : Int32\nend" formats "long_variable_name = [\n {\n :foo => 1,\n }, {\n :bar => 2,\n },\n]" formats "long_variable_name = [\n {\n :foo => 1,\n }, {\n :bar => 2,\n },\n]" formats "1+2*3" formats "1+2*3" formats "->( x : Int32 , y ) { x }" formats "->( x : Int32 , y ) { x }" formats "foo \\\nbar" formats "foo \\\nbar" formats "\"\#{foo = 1\n}\"" formats "\"\#{foo = 1\n}\"" formats "def foo ( bar @@select) \n end" formats "def foo ( bar @@select) \n end" formats "if 1\n ->{ 1 }\nend" formats "if 1\n ->{ 1 }\nend" formats "->( x )\n:\nInt32 { }" formats "->( x )\n:\nInt32 { }" formats "<<-HTML\n hello \n HTML" formats "<<-HTML\n hello \n HTML" formats "if 1\nelse\n# nothing\nend" formats "if 1\nelse\n# nothing\nend" formats "next { {1, 2}, {3, 4} }, 5" formats "next { {1, 2}, {3, 4} }, 5" formats "if a\nelse\n2\nend" formats "if a\nelse\n2\nend" formats "lib Foo\n fun foo = \"bar\"(Int32) : Int32\nend" formats "lib Foo\n fun foo = \"bar\"(Int32) : Int32\nend" formats "alias A = (B)" formats "alias A = (B)" formats "a, b = \nif 1\n2\nend" formats "a, b = \nif 1\n2\nend" formats "foo &.responds_to?(:foo).bar" formats "foo &.responds_to?(:foo).bar" formats "lib Foo\n fun foo =\n bar : Void\nend" formats "lib Foo\n fun foo =\n bar : Void\nend" formats "-> :: Foo . foo=" formats "-> :: Foo . foo=" formats "loop do\n 1\n loop do\n 2\n rescue\n 3\n end\n 4\nend" formats "loop do\n 1\n loop do\n 2\n rescue\n 3\n end\n 4\nend" formats "foo({% verbatim do %}{{1}} + {{2}}{% end %})" formats "foo({% verbatim do %}{{1}} + {{2}}{% end %})" formats "def foo: Int32\nend" formats "def foo: Int32\nend" formats "def foo( & \n )\nend" formats "def foo( & \n )\nend" formats "foo 1,\n2" formats "foo 1,\n2" formats "{\n 1 => 2, 3 => 4,\n 567 => 8910,\n}" formats "{\n 1 => 2, 3 => 4,\n 567 => 8910,\n}" formats "def foo( & block )\nend" formats "def foo( & block )\nend" formats "1 || 2" formats "1 || 2" formats "if 1\n ((1) + 2)\nend" formats "if 1\n ((1) + 2)\nend" formats "[] of Foo" formats "[] of Foo" formats "foo( )" formats "foo( )" formats " {{\n1 + 2\n }}" formats " {{\n1 + 2\n }}" formats "Tuple()" formats "Tuple()" formats "def foo \n end" formats "def foo \n end" formats "if a\n2\nend" formats "if a\n2\nend" formats "bar do\n call(foo <<-X\n bar\n X\n )\nend" formats "bar do\n call(foo <<-X\n bar\n X\n )\nend" formats "[\n1, # a\n2, # b\n 3 # c\n]" formats "[\n1, # a\n2, # b\n 3 # c\n]" formats "+ a + d" formats "+ a + d" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" )" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" )" formats "foo(self // 1)" formats "foo(self // 1)" formats "with foo yield bar" formats "with foo yield bar" formats "{ # foo\n 1,\n}" formats "{ # foo\n 1,\n}" formats "foo(1, ) { }" formats "foo(1, ) { }" formats "foo 1, # comment\n # bar\n do\n end" formats "foo 1, # comment\n # bar\n do\n end" formats "foo(baz1 do\nend)" formats "foo(baz1 do\nend)" formats "foo &.bar" formats "foo &.bar" formats "def foo(x : X) forall X , Y; end" formats "def foo(x : X) forall X , Y; end" formats "if a\nif b\nelse\n4\nend\nend" formats "if a\nif b\nelse\n4\nend\nend" formats "x : {A, B}" formats "x : {A, B}" formats "def foo(\n a,\n b\n)\nend" formats "def foo(\n a,\n b\n)\nend" formats "# foo\na = 1 # bar" formats "# foo\na = 1 # bar" formats "if 1\n foo(\n 1,\n 2 # lala\n )\nend\n" formats "if 1\n foo(\n 1,\n 2 # lala\n )\nend\n" formats "def foo\n 1 #\nrescue\nend" formats "def foo\n 1 #\nrescue\nend" formats "<<-FOO\nfoo\nFOO" formats "<<-FOO\nfoo\nFOO" formats "foo = 1\n->foo.[](Int32)" formats "foo = 1\n->foo.[](Int32)" formats "foo(1, # foo\n &.bar)" formats "foo(1, # foo\n &.bar)" formats "lib Foo\nfun foo () : Int32\nend" formats "lib Foo\nfun foo () : Int32\nend" formats "@x &&= 1" formats "@x &&= 1" formats "# ```text\n# 1 + 2\n# ```" formats "# ```text\n# 1 + 2\n# ```" formats "class X; annotation FooAnnotation ; end ; end" formats "class X; annotation FooAnnotation ; end ; end" formats "{\n \"foo\": 1,\n \"babraz\": 2,\n}" formats "{\n \"foo\": 1,\n \"babraz\": 2,\n}" formats "foo.[]" formats "foo.[]" formats "1.<=() { 3 }" formats "1.<=() { 3 }" formats "a = begin\n1\n2\nend" formats "a = begin\n1\n2\nend" formats " <<-HTML\n \#{1} \#{2}\n HTML" formats " <<-HTML\n \#{1} \#{2}\n HTML" formats "macro foo\n {% if 1 %} 2 {% elsif 3 %} 4 {% else %} 5 {% end %}\nend" formats "macro foo\n {% if 1 %} 2 {% elsif 3 %} 4 {% else %} 5 {% end %}\nend" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n bar => <<-BAR,\n bar\n BAR\n}" formats "Hash{\n foo => <<-EOF,\n foo\n EOF\n bar => <<-BAR,\n bar\n BAR\n}" formats "foo &.[a] = 1" formats "foo &.[a] = 1" formats "a.b &.[c]\n1" formats "a.b &.[c]\n1" formats "begin; 1; end" formats "begin; 1; end" formats "foo" formats "foo" formats "def foo(a, **b : Int32)\nend" formats "def foo(a, **b : Int32)\nend" formats "macro foo\n def bar \n end \n end" formats "macro foo\n def bar \n end \n end" formats "foo(\n [\n 1,\n 2,\n ],\n [\n 3,\n 4,\n ]\n)" formats "foo(\n [\n 1,\n 2,\n ],\n [\n 3,\n 4,\n ]\n)" formats "module Moo \n\n 1 \n\nend" formats "module Moo \n\n 1 \n\nend" formats "begin\n 1\n # Comment\n\n\nend" formats "begin\n 1\n # Comment\n\n\nend" formats "true" formats "true" formats "class Foo\n # ```\n # 1\n # ```\nend\n" formats "class Foo\n # ```\n # 1\n # ```\nend\n" formats "unless a\n2\nelse\n3\nend" formats "unless a\n2\nelse\n3\nend" formats "yield 1" formats "yield 1" formats "@[Foo(\n 1,\n)]" formats "@[Foo(\n 1,\n)]" formats "foo(\n <<-HERE,\n hello\n HERE\n 1,\n)" formats "foo(\n <<-HERE,\n hello\n HERE\n 1,\n)" formats "foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "def foo\n\n1\n\nend" formats "def foo\n\n1\n\nend" formats "->{}" formats "->{}" formats "begin\n # Comment\n\n\nend" formats "begin\n # Comment\n\n\nend" formats "def foo(\n **a\n\n # comment\n)\n 1\nend" formats "def foo(\n **a\n\n # comment\n)\n 1\nend" formats "1 ensure 2" formats "1 ensure 2" formats "%(hello)" formats "%(hello)" formats "macro foo(\n a,\n **b,\n)\nend" formats "macro foo(\n a,\n **b,\n)\nend" formats "foo do\n {% foo <<-X\n bar\n X\n %}\nend" formats "foo do\n {% foo <<-X\n bar\n X\n %}\nend" formats "NamedTuple()" formats "NamedTuple()" formats "foo.bar(&.baz)" formats "foo.bar(&.baz)" formats "def bar\n foo(<<-X,\n a\n X\n 1)\nend" formats "def bar\n foo(<<-X,\n a\n X\n 1)\nend" formats "lib Foo\n fun Bar\nend" formats "lib Foo\n fun Bar\nend" formats "foo \\\n 1,\n 2\n\nbar \\\n foo: 1,\n bar: 2" formats "foo \\\n 1,\n 2\n\nbar \\\n foo: 1,\n bar: 2" formats "\"\\a\\c\\b\\d\"" formats "\"\\a\\c\\b\\d\"" formats "def foo ( @@x) \n end" formats "def foo ( @@x) \n end" formats "x, y = <<-FOO, <<-BAR\n hello\n FOO\n world\n BAR" formats "x, y = <<-FOO, <<-BAR\n hello\n FOO\n world\n BAR" formats ":-" formats ":-" formats "if 1 # foo\nend" formats "if 1 # foo\nend" formats "->(){}" formats "->(){}" formats "enum Foo : Int32\nA = 1\nend" formats "enum Foo : Int32\nA = 1\nend" formats "case\nend" formats "case\nend" formats "- 1" formats "- 1" formats "Foo( x: Int32 , y: Float64 )" formats "Foo( x: Int32 , y: Float64 )" formats "->Foo.foo!" formats "->Foo.foo!" formats "def foo\n@x = uninitialized Int32\nend" formats "def foo\n@x = uninitialized Int32\nend" formats "\"1\#{\"4\#{\"\#{\"2\"}\"}3\"}3\#{__DIR__}4\#{5}6\"" formats "\"1\#{\"4\#{\"\#{\"2\"}\"}3\"}3\#{__DIR__}4\#{5}6\"" formats "asm(\"nop\")" formats "asm(\"nop\")" formats "[\n a() # b\n]" formats "[\n a() # b\n]" formats "[\n [\n 1,\n ], [\n 2,\n ], [\n 3,\n ],\n]" formats "[\n [\n 1,\n ], [\n 2,\n ], [\n 3,\n ],\n]" formats "macro foo\n {{\n1 + 2 }}\nend" formats "macro foo\n {{\n1 + 2 }}\nend" formats "(size - 1).downto(0) do |i|\n yield @buffer[i]\nend" formats "(size - 1).downto(0) do |i|\n yield @buffer[i]\nend" formats "Foo:: Bar" formats "Foo:: Bar" formats "foo(\"b\#{1}\" \\\n\"baz\")" formats "foo(\"b\#{1}\" \\\n\"baz\")" formats "1 + \n2" formats "1 + \n2" formats "def foo(a : T) forall T\n #\n\n\nend" formats "def foo(a : T) forall T\n #\n\n\nend" formats "{x => self // 1}" formats "{x => self // 1}" formats "break 1, {2, 3}" formats "break 1, {2, 3}" formats "->Foo.foo" formats "->Foo.foo" formats "select \n when foo \n 2 \n else \n 3 \n end" formats "select \n when foo \n 2 \n else \n 3 \n end" formats "a &.b.c.as C" formats "a &.b.c.as C" formats "case 1 \n when 2 \n 3 \n when 4 \n 5 \n end" formats "case 1 \n when 2 \n 3 \n when 4 \n 5 \n end" formats "case 1\nwhen \"foo\" ; 3\nwhen \"lalalala\"; 4\nelse 5\nend" formats "case 1\nwhen \"foo\" ; 3\nwhen \"lalalala\"; 4\nelse 5\nend" formats "a = b = 1\na, b =\n b, a" formats "a = b = 1\na, b =\n b, a" formats "case\nelse\n 1\nend" formats "case\nelse\n 1\nend" formats "lib Foo\nstruct Foo\nx : Int32\ny : Float64\nend\nend" formats "lib Foo\nstruct Foo\nx : Int32\ny : Float64\nend\nend" formats "# foo\ndef foo\nend\n# bar\ndef bar\nend" formats "# foo\ndef foo\nend\n# bar\ndef bar\nend" formats "foo(a: 1 // 2)" formats "foo(a: 1 // 2)" formats "{1 => foo <<-X\nbar\nX\n}" formats "{1 => foo <<-X\nbar\nX\n}" formats "def a\n b(\n a: 1, # x\n # y\n b: 2\n )\nend" formats "def a\n b(\n a: 1, # x\n # y\n b: 2\n )\nend" formats "a = foo &.bar do\n 1 + 2\nend" formats "a = foo &.bar do\n 1 + 2\nend" formats "macro foo\n if 1\n 1 + 2\n end\nend" formats "macro foo\n if 1\n 1 + 2\n end\nend" formats "[\n <<-EOF,\n foo\n EOF\n]" formats "[\n <<-EOF,\n foo\n EOF\n]" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n\n @[MyAnn]\n\n biz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n\n @[MyAnn]\n\n biz\n); end" formats "run(\"a\", 1)" formats "run(\"a\", 1)" formats "break 1 , *2" formats "break 1 , *2" formats "1\nyield\n2" formats "1\nyield\n2" formats "foo &.[]?" formats "foo &.[]?" formats "if 1\n[ 1 , 2 , 3 ]\nend" formats "if 1\n[ 1 , 2 , 3 ]\nend" formats "abstract def foo \n 1" formats "abstract def foo \n 1" formats "! 1" formats "! 1" formats "def foo\n1\nrescue\n2\nend" formats "def foo\n1\nrescue\n2\nend" formats "%(\n1\n)\n\n{\n 1 => 2,\n 234 => 5,\n}" formats "%(\n1\n)\n\n{\n 1 => 2,\n 234 => 5,\n}" formats "[\n <<-EOF,\n foo\n EOF\n <<-BAR,\n bar\n BAR\n]" formats "[\n <<-EOF,\n foo\n EOF\n <<-BAR,\n bar\n BAR\n]" formats "@foo : Int32 # comment\n\ndef foo\nend" formats "@foo : Int32 # comment\n\ndef foo\nend" formats "long_variable_name = [{\n :foo => 1,\n}, {\n :bar => 2,\n}]" formats "long_variable_name = [{\n :foo => 1,\n}, {\n :bar => 2,\n}]" formats "a = 1\ndef bar\nend" formats "a = 1\ndef bar\nend" formats "foo({\n 1 => 2,\n 3 => {\n 4 => 5,\n },\n})" formats "foo({\n 1 => 2,\n 3 => {\n 4 => 5,\n },\n})" formats "foo &.as(T).bar" formats "foo &.as(T).bar" formats "macro flags\n {% if 1 %}\\\n {% end %}\\\nend" formats "macro flags\n {% if 1 %}\\\n {% end %}\\\nend" formats "foo do\n {1 => foo <<-X\n bar\n X\n }\nend" formats "foo do\n {1 => foo <<-X\n bar\n X\n }\nend" formats "if / /\nend" formats "if / /\nend" formats "return { 1 , 2 }" formats "return { 1 , 2 }" formats "foo(&.@bar)" formats "foo(&.@bar)" formats "1 &&\n2 &&\n3" formats "1 &&\n2 &&\n3" formats "def foo\n case x\n # z\n when 1\n end\nend" formats "def foo\n case x\n # z\n when 1\n end\nend" formats "def a\n {\n 1, # x\n # y\n }\nend" formats "def a\n {\n 1, # x\n # y\n }\nend" formats " {% begin %} 2 {% end %}" formats " {% begin %} 2 {% end %}" formats "alias A = ( A | B )" formats "alias A = ( A | B )" formats "->foo" formats "->foo" formats "def foo\nend\n\ndef bar\nend\n\n# foo" formats "def foo\nend\n\ndef bar\nend\n\n# foo" formats "break *1" formats "break *1" formats "case 1\nelse # foo\n # bar\nend" formats "case 1\nelse # foo\n # bar\nend" formats "def foo(@[MyAnn] &); end" formats "def foo(@[MyAnn] &); end" formats "module Foo\n# nothing\nend" formats "module Foo\n# nothing\nend" formats "Set { 1 , 2 }" formats "Set { 1 , 2 }" formats "select\n# when foo\nwhen bar\n break\nend" formats "select\n# when foo\nwhen bar\n break\nend" formats "-> : Array(Int32) {}" formats "-> : Array(Int32) {}" formats "module Foo\n 1 # bar\nend\n\nmodule Foo\n 1\n # bar\nend\n\nmodule Foo\n 1\n\n # bar\nend\n\nmodule Foo\n 1\n 2\n # bar\nend\n\nmodule Foo\n 1\n 2\n\n # bar\nend\n\nif 1\n 1\n # bar\nend\n\nif 1\n 1\n\n # bar\nend\n\n1\n2\n# foo\n\n1\n2\n\n# foo\n" formats "module Foo\n 1 # bar\nend\n\nmodule Foo\n 1\n # bar\nend\n\nmodule Foo\n 1\n\n # bar\nend\n\nmodule Foo\n 1\n 2\n # bar\nend\n\nmodule Foo\n 1\n 2\n\n # bar\nend\n\nif 1\n 1\n # bar\nend\n\nif 1\n 1\n\n # bar\nend\n\n1\n2\n# foo\n\n1\n2\n\n# foo\n" formats " * a = 1 " formats " * a = 1 " formats "1\n..\n2" formats "1\n..\n2" formats "unless a\nelse\n2\nend" formats "unless a\nelse\n2\nend" formats "if 0\n1 &&\n2 &&\n3\nend" formats "if 0\n1 &&\n2 &&\n3\nend" formats "yield( 1 )" formats "yield( 1 )" formats "-> { }" formats "-> { }" formats "->@@foo.foo?" formats "->@@foo.foo?" formats "def foo( x , & block : Int32 )\nend" formats "def foo( x , & block : Int32 )\nend" formats "abstract class Foo\nend" formats "abstract class Foo\nend" formats "def foo ( x ) \n end" formats "def foo ( x ) \n end" formats "if a\n2\nelse\nend" formats "if a\n2\nelse\nend" formats "class Bar\nprotected def foo(x)\na=b(c)\nend\nend" formats "class Bar\nprotected def foo(x)\na=b(c)\nend\nend" formats "foo(a: //)" formats "foo(a: //)" formats "-> : {Int32} { String }" formats "-> : {Int32} { String }" formats "foo &.[](1, 2)" formats "foo &.[](1, 2)" formats "class Foo\n macro foo\n 1 + 2 \n end\n end" formats "class Foo\n macro foo\n 1 + 2 \n end\n end" formats "foo[1, &.bar]" formats "foo[1, &.bar]" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "foo = 1\n->foo.bar=(Int32)" formats "foo = 1\n->foo.bar=(Int32)" formats "begin\n 0[1] rescue 2 end" formats "begin\n 0[1] rescue 2 end" formats "foo {;1}" formats "foo {;1}" formats "lib Foo\nstruct Foo\nx : Int32\nend\nend" formats "lib Foo\nstruct Foo\nx : Int32\nend\nend" formats "def foo(**z, &block)\nend" formats "def foo(**z, &block)\nend" formats "pointerof( @a )" formats "pointerof( @a )" formats "def foo(@[MyAnn] &block); end" formats "def foo(@[MyAnn] &block); end" formats "[] of (Array(T))" formats "[] of (Array(T))" formats "if 1\nelse\n2 # foo\nend" formats "if 1\nelse\n2 # foo\nend" Unicode bi-directional control characters formats "%i(\u202C)" formats "%i(\u202C)" formats "<<-EOS\n\u202E\#{1}\nEOS" formats "<<-EOS\n\u202E\#{1}\nEOS" formats "%Q(\u2068)" formats "%Q(\u2068)" formats "%r(\u202E\#{1})" formats "%r(\u202E\#{1})" formats "%(\u2067)" formats "%(\u2067)" formats "%Q(\u202C\#{1})" formats "%Q(\u202C\#{1})" formats "/\u2068/" formats "/\u2068/" formats "\"\u2066\"" formats "\"\u2066\"" formats "\"\\c\u202B\#{1}\"" formats "\"\\c\u202B\#{1}\"" formats "%i(\u2066)" formats "%i(\u2066)" formats "%r(\u202B\#{1})" formats "%r(\u202B\#{1})" formats "\"\u202C\"" formats "\"\u202C\"" formats "%w(\u202B)" formats "%w(\u202B)" formats "{\"\u202C\": 1}" formats "{\"\u202C\": 1}" formats "NamedTuple(\"\u202D\": Int32)" formats "NamedTuple(\"\u202D\": Int32)" formats "%i(\u202E)" formats "%i(\u202E)" formats "%q(\u2067)" formats "%q(\u2067)" formats "%r(\u2067)" formats "%r(\u2067)" formats "%w(\u202E)" formats "%w(\u202E)" formats "<<-EOS\n\u2066\#{1}\nEOS" formats "<<-EOS\n\u2066\#{1}\nEOS" formats "foo(\"\u202B\": 1)" formats "foo(\"\u202B\": 1)" formats "<<-'EOS'\n\u202A\nEOS" formats "<<-'EOS'\n\u202A\nEOS" formats "\"\\c\u202D\"" formats "\"\\c\u202D\"" formats "<<-EOS\n\u202A\nEOS" formats "<<-EOS\n\u202A\nEOS" formats "\"\\c\u202B\"" formats "\"\\c\u202B\"" formats "%r(\u2066\#{1})" formats "%r(\u2066\#{1})" formats "\"\\c\u202C\"" formats "\"\\c\u202C\"" formats "<<-EOS\n\u202A\#{1}\nEOS" formats "<<-EOS\n\u202A\#{1}\nEOS" formats "%i(\u202B)" formats "%i(\u202B)" formats "\"\u202A\#{1}\"" formats "\"\u202A\#{1}\"" formats "NamedTuple(\"\u202C\": Int32)" formats "NamedTuple(\"\u202C\": Int32)" formats "\"\u202A\"" formats "\"\u202A\"" formats "NamedTuple(\"\u2067\": Int32)" formats "NamedTuple(\"\u2067\": Int32)" formats "<<-EOS\n\u202C\nEOS" formats "<<-EOS\n\u202C\nEOS" formats "%Q(\u202B)" formats "%Q(\u202B)" formats "<<-'EOS'\n\u2069\nEOS" formats "<<-'EOS'\n\u2069\nEOS" formats "<<-'EOS'\n\u202D\nEOS" formats "<<-'EOS'\n\u202D\nEOS" formats "\"\u2069\"" formats "\"\u2069\"" formats "def foo(\"\u202D\" x)\nend" formats "def foo(\"\u202D\" x)\nend" formats "%Q(\u2067\#{1})" formats "%Q(\u2067\#{1})" formats "/\u2067\#{1}/" formats "/\u2067\#{1}/" formats "%Q(\u2067)" formats "%Q(\u2067)" formats "/\u202A/" formats "/\u202A/" formats "{\"\u202D\": 1}" formats "{\"\u202D\": 1}" formats "foo(\"\u202E\": 1)" formats "foo(\"\u202E\": 1)" formats "%Q(\u202C)" formats "%Q(\u202C)" formats "%r(\u2068)" formats "%r(\u2068)" formats "\"\u2067\#{1}\"" formats "\"\u2067\#{1}\"" formats "\"\\c\u202A\#{1}\"" formats "\"\\c\u202A\#{1}\"" formats "\"\u202E\#{1}\"" formats "\"\u202E\#{1}\"" formats "/\u202B/" formats "/\u202B/" formats "%q(\u202C)" formats "%q(\u202C)" formats "%Q(\u202B\#{1})" formats "%Q(\u202B\#{1})" formats "%r(\u2068\#{1})" formats "%r(\u2068\#{1})" formats "NamedTuple(\"\u2066\": Int32)" formats "NamedTuple(\"\u2066\": Int32)" formats "{\"\u202B\": 1}" formats "{\"\u202B\": 1}" formats "%Q(\u2066)" formats "%Q(\u2066)" formats "%r(\u202D\#{1})" formats "%r(\u202D\#{1})" formats "<<-'EOS'\n\u2066\nEOS" formats "<<-'EOS'\n\u2066\nEOS" formats "def foo(\"\u2067\" x)\nend" formats "def foo(\"\u2067\" x)\nend" formats "%r(\u202C)" formats "%r(\u202C)" formats "<<-EOS\n\u2067\#{1}\nEOS" formats "<<-EOS\n\u2067\#{1}\nEOS" formats "%r(\u2067\#{1})" formats "%r(\u2067\#{1})" formats "<<-EOS\n\u202D\#{1}\nEOS" formats "<<-EOS\n\u202D\#{1}\nEOS" formats "%q(\u2066)" formats "%q(\u2066)" formats "def foo(\"\u2069\" x)\nend" formats "def foo(\"\u2069\" x)\nend" formats "\"\u2068\"" formats "\"\u2068\"" formats "\"\\c\u2067\"" formats "\"\\c\u2067\"" formats "%(\u202C)" formats "%(\u202C)" formats "NamedTuple(\"\u2069\": Int32)" formats "NamedTuple(\"\u2069\": Int32)" formats "%Q(\u202D)" formats "%Q(\u202D)" formats "\"\u202D\"" formats "\"\u202D\"" formats "%r(\u2069)" formats "%r(\u2069)" formats "<<-EOS\n\u2068\#{1}\nEOS" formats "<<-EOS\n\u2068\#{1}\nEOS" formats "<<-'EOS'\n\u202E\nEOS" formats "<<-'EOS'\n\u202E\nEOS" formats "{\"\u2069\": 1}" formats "{\"\u2069\": 1}" formats "%w(\u202A)" formats "%w(\u202A)" formats "/\u2066\#{1}/" formats "/\u2066\#{1}/" formats "%Q(\u202A\#{1})" formats "%Q(\u202A\#{1})" formats "%r(\u202C\#{1})" formats "%r(\u202C\#{1})" formats "%w(\u2067)" formats "%w(\u2067)" formats "\"\u2067\"" formats "\"\u2067\"" formats "%(\u202B)" formats "%(\u202B)" formats "foo(\"\u202A\": 1)" formats "foo(\"\u202A\": 1)" formats "%i(\u2067)" formats "%i(\u2067)" formats "<<-EOS\n\u2066\nEOS" formats "<<-EOS\n\u2066\nEOS" formats "%(\u202D)" formats "%(\u202D)" formats "%q(\u202E)" formats "%q(\u202E)" formats "%w(\u2068)" formats "%w(\u2068)" formats "\"\u202E\"" formats "\"\u202E\"" formats "%r(\u2069\#{1})" formats "%r(\u2069\#{1})" formats "/\u202B\#{1}/" formats "/\u202B\#{1}/" formats "\"\\c\u202E\"" formats "\"\\c\u202E\"" formats "<<-EOS\n\u2068\nEOS" formats "<<-EOS\n\u2068\nEOS" formats "def foo(\"\u202B\" x)\nend" formats "def foo(\"\u202B\" x)\nend" formats "foo(\"\u2068\": 1)" formats "foo(\"\u2068\": 1)" formats "%Q(\u202A)" formats "%Q(\u202A)" formats "\"\\c\u2068\"" formats "\"\\c\u2068\"" formats "\"\\c\u202A\"" formats "\"\\c\u202A\"" formats "{\"\u202E\": 1}" formats "{\"\u202E\": 1}" formats "foo(\"\u2069\": 1)" formats "foo(\"\u2069\": 1)" formats "%r(\u202A)" formats "%r(\u202A)" formats "\"\\c\u2067\#{1}\"" formats "\"\\c\u2067\#{1}\"" formats "/\u2066/" formats "/\u2066/" formats "\"\u202B\"" formats "\"\u202B\"" formats "/\u2069/" formats "/\u2069/" formats "<<-EOS\n\u2069\#{1}\nEOS" formats "<<-EOS\n\u2069\#{1}\nEOS" formats "%(\u202E)" formats "%(\u202E)" formats "/\u2067/" formats "/\u2067/" formats "def foo(\"\u2066\" x)\nend" formats "def foo(\"\u2066\" x)\nend" formats "\"\u202B\#{1}\"" formats "\"\u202B\#{1}\"" formats "%q(\u202B)" formats "%q(\u202B)" formats "def foo(\"\u202E\" x)\nend" formats "def foo(\"\u202E\" x)\nend" formats "/\u202A\#{1}/" formats "/\u202A\#{1}/" formats "\"\u202D\#{1}\"" formats "\"\u202D\#{1}\"" formats "%(\u2069)" formats "%(\u2069)" formats "%(\u202A)" formats "%(\u202A)" formats "%q(\u2069)" formats "%q(\u2069)" formats "<<-'EOS'\n\u2067\nEOS" formats "<<-'EOS'\n\u2067\nEOS" formats "%Q(\u202E)" formats "%Q(\u202E)" formats "\"\\c\u2069\"" formats "\"\\c\u2069\"" formats "<<-'EOS'\n\u202B\nEOS" formats "<<-'EOS'\n\u202B\nEOS" formats "%Q(\u2068\#{1})" formats "%Q(\u2068\#{1})" formats "%r(\u2066)" formats "%r(\u2066)" formats "%Q(\u2066\#{1})" formats "%Q(\u2066\#{1})" formats "/\u2068\#{1}/" formats "/\u2068\#{1}/" formats "foo(\"\u202D\": 1)" formats "foo(\"\u202D\": 1)" formats "<<-EOS\n\u202B\nEOS" formats "<<-EOS\n\u202B\nEOS" formats "\"\\c\u2069\#{1}\"" formats "\"\\c\u2069\#{1}\"" formats "foo(\"\u202C\": 1)" formats "foo(\"\u202C\": 1)" formats "%w(\u2066)" formats "%w(\u2066)" formats "\"\\c\u202E\#{1}\"" formats "\"\\c\u202E\#{1}\"" formats "%(\u2066)" formats "%(\u2066)" formats "%q(\u202A)" formats "%q(\u202A)" formats "<<-EOS\n\u202D\nEOS" formats "<<-EOS\n\u202D\nEOS" formats "/\u202C/" formats "/\u202C/" formats "/\u202D\#{1}/" formats "/\u202D\#{1}/" formats "def foo(\"\u202C\" x)\nend" formats "def foo(\"\u202C\" x)\nend" formats "{\"\u2067\": 1}" formats "{\"\u2067\": 1}" formats "%Q(\u2069)" formats "%Q(\u2069)" formats "/\u202E/" formats "/\u202E/" formats "\"\u202C\#{1}\"" formats "\"\u202C\#{1}\"" formats "%i(\u2069)" formats "%i(\u2069)" formats "%q(\u202D)" formats "%q(\u202D)" formats "%(\u2068)" formats "%(\u2068)" formats "\"\\c\u202C\#{1}\"" formats "\"\\c\u202C\#{1}\"" formats "%w(\u2069)" formats "%w(\u2069)" formats "\"\u2068\#{1}\"" formats "\"\u2068\#{1}\"" formats "def foo(\"\u2068\" x)\nend" formats "def foo(\"\u2068\" x)\nend" formats "/\u202C\#{1}/" formats "/\u202C\#{1}/" formats "%w(\u202D)" formats "%w(\u202D)" formats "\"\u2069\#{1}\"" formats "\"\u2069\#{1}\"" formats "\"\\c\u202D\#{1}\"" formats "\"\\c\u202D\#{1}\"" formats "{\"\u2066\": 1}" formats "{\"\u2066\": 1}" formats "%i(\u202A)" formats "%i(\u202A)" formats "\"\\c\u2066\"" formats "\"\\c\u2066\"" formats "\"\\c\u2066\#{1}\"" formats "\"\\c\u2066\#{1}\"" formats "def foo(\"\u202A\" x)\nend" formats "def foo(\"\u202A\" x)\nend" formats "%Q(\u2069\#{1})" formats "%Q(\u2069\#{1})" formats "foo(\"\u2067\": 1)" formats "foo(\"\u2067\": 1)" formats "%Q(\u202E\#{1})" formats "%Q(\u202E\#{1})" formats "%w(\u202C)" formats "%w(\u202C)" formats "/\u202D/" formats "/\u202D/" formats "{\"\u202A\": 1}" formats "{\"\u202A\": 1}" formats "NamedTuple(\"\u202B\": Int32)" formats "NamedTuple(\"\u202B\": Int32)" formats "%r(\u202D)" formats "%r(\u202D)" formats "/\u202E\#{1}/" formats "/\u202E\#{1}/" formats "NamedTuple(\"\u202A\": Int32)" formats "NamedTuple(\"\u202A\": Int32)" formats "<<-EOS\n\u2067\nEOS" formats "<<-EOS\n\u2067\nEOS" formats "<<-EOS\n\u2069\nEOS" formats "<<-EOS\n\u2069\nEOS" formats "<<-'EOS'\n\u2068\nEOS" formats "<<-'EOS'\n\u2068\nEOS" formats "foo(\"\u2066\": 1)" formats "foo(\"\u2066\": 1)" formats "NamedTuple(\"\u2068\": Int32)" formats "NamedTuple(\"\u2068\": Int32)" formats "\"\u2066\#{1}\"" formats "\"\u2066\#{1}\"" formats "{\"\u2068\": 1}" formats "{\"\u2068\": 1}" formats "%r(\u202E)" formats "%r(\u202E)" formats "/\u2069\#{1}/" formats "/\u2069\#{1}/" formats "<<-EOS\n\u202C\#{1}\nEOS" formats "<<-EOS\n\u202C\#{1}\nEOS" formats "NamedTuple(\"\u202E\": Int32)" formats "NamedTuple(\"\u202E\": Int32)" formats "\"\\c\u2068\#{1}\"" formats "\"\\c\u2068\#{1}\"" formats "%i(\u202D)" formats "%i(\u202D)" formats "<<-'EOS'\n\u202C\nEOS" formats "<<-'EOS'\n\u202C\nEOS" formats "%i(\u2068)" formats "%i(\u2068)" formats "%r(\u202A\#{1})" formats "%r(\u202A\#{1})" formats "<<-EOS\n\u202E\nEOS" formats "<<-EOS\n\u202E\nEOS" formats "%Q(\u202D\#{1})" formats "%Q(\u202D\#{1})" formats "<<-EOS\n\u202B\#{1}\nEOS" formats "<<-EOS\n\u202B\#{1}\nEOS" formats "%r(\u202B)" formats "%r(\u202B)" formats "%q(\u2068)" formats "%q(\u2068)" formats "def foo(a : T, b : U) forall T, U\n #\nend" formats "def foo(a : T, b : U) forall T, U\n #\nend" formats "lib Foo\nstruct Foo\nx , y : Int32\nend\nend" formats "lib Foo\nstruct Foo\nx , y : Int32\nend\nend" formats "def foo(**z : Foo)\nend" formats "def foo(**z : Foo)\nend" formats "return( *1 , *2 )" formats "return( *1 , *2 )" formats "def foo ( ) \n1\nend" formats "def foo ( ) \n1\nend" formats "def foo(x)\n self // x\nend" formats "def foo(x)\n self // x\nend" formats "@[Foo( 1, 2 )]" formats "@[Foo( 1, 2 )]" formats "SomeLib.UppercasedFunCall 1, 2" formats "SomeLib.UppercasedFunCall 1, 2" formats "def a\n b(\n 1, # x\n # y\n 2\n )\nend" formats "def a\n b(\n 1, # x\n # y\n 2\n )\nend" formats "yield 1 , *2" formats "yield 1 , *2" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\\v\\f\\e\"" formats "\"\\\\\\\"\\#\\a\\b\\n\\r\\t\\v\\f\\e\"" formats "a[1] , b[2] = 1 , 2" formats "a[1] , b[2] = 1 , 2" formats "foo.[1]" formats "foo.[1]" formats "macro foo\n {{x}} <<-FOO\n hello \n FOO\nend" formats "macro foo\n {{x}} <<-FOO\n hello \n FOO\nend" formats "foo[ 1 , 2 ]" formats "foo[ 1 , 2 ]" formats "foo . responds_to? :bar" formats "foo . responds_to? :bar" formats "foo &.responds_to?(:foo)" formats "foo &.responds_to?(:foo)" formats "def foo\nend;def bar\nend" formats "def foo\nend;def bar\nend" formats "def foo(a,\n *b)\nend" formats "def foo(a,\n *b)\nend" formats "1 # foo\n/ 1 /" formats "1 # foo\n/ 1 /" formats "bar do\n foo <<-X\n bar\n X\nend" formats "bar do\n foo <<-X\n bar\n X\nend" formats "lib LibFoo\n {% begin %}\n fun foo : Int32\n {% end %}\nend" formats "lib LibFoo\n {% begin %}\n fun foo : Int32\n {% end %}\nend" formats "10/a" formats "10/a" formats "macro foo # bar\n baz\nend" formats "macro foo # bar\n baz\nend" formats "asm(\"a\" : \"b\"(c)\n)" formats "asm(\"a\" : \"b\"(c)\n)" formats "[1, 2, 3] of Foo" formats "[1, 2, 3] of Foo" formats "FOO = 2\nA = 1" formats "FOO = 2\nA = 1" formats "{ foo: 1 }" formats "{ foo: 1 }" formats "foo(\n 1, 2)" formats "foo(\n 1, 2)" formats "x = <<-FOO\n hello\n FOO\n\ndef bar\nend" formats "x = <<-FOO\n hello\n FOO\n\ndef bar\nend" formats "foo x, self // 1" formats "foo x, self // 1" formats "foo(\"bar\" \\\n\"baz\")" formats "foo(\"bar\" \\\n\"baz\")" formats "return 1" formats "return 1" formats "macro foo\n {% if true %}if true{% end %}\n {% if true %}end{% end %}\nend" formats "macro foo\n {% if true %}if true{% end %}\n {% if true %}end{% end %}\nend" formats "def foo(x, **z)\nend" formats "def foo(x, **z)\nend" formats "%{hello}" formats "%{hello}" formats "%w(one two three)" formats "%w(one two three)" formats "macro foo\n <<-FOO\n hello \n FOO\nend" formats "macro foo\n <<-FOO\n hello \n FOO\nend" formats "select \n when foo \n 2 \n end" formats "select \n when foo \n 2 \n end" formats "%[hello]" formats "%[hello]" formats "return { {1, 2}, {3, 4} }" formats "return { {1, 2}, {3, 4} }" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n bar\n); end" formats "foo(A |\nB |\nC)" formats "foo(A |\nB |\nC)" formats "a&+1" formats "a&+1" formats "[ * [ * [ 1 ] ], * \n[ 2] ]" formats "[ * [ * [ 1 ] ], * \n[ 2] ]" formats "a = [\n1,\n2]" formats "a = [\n1,\n2]" formats "Foo(\"bar\": Int32, \"baz qux\": Float64)" formats "Foo(\"bar\": Int32, \"baz qux\": Float64)" formats "select \n when foo ; 2 \n end" formats "select \n when foo ; 2 \n end" formats "1.==() { 3 }" formats "1.==() { 3 }" formats "begin\n call\n # comment\nrescue\n call\n # comment\nelse\n call\n # comment\nensure\n call\n # comment\nend" formats "begin\n call\n # comment\nrescue\n call\n # comment\nelse\n call\n # comment\nensure\n call\n # comment\nend" formats "def foo ( x , y ) \n end" formats "def foo ( x , y ) \n end" formats " {%\na = 1 %}" formats " {%\na = 1 %}" formats "[c.x]\n .foo" formats "[c.x]\n .foo" formats "1.as? Int32" formats "1.as? Int32" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "1 + \\\n2\n3" formats "1 + \\\n2\n3" formats "foo(1,\n &.bar)" formats "foo(1,\n &.bar)" formats "foo = 1\n->foo.bar(Int32)" formats "foo = 1\n->foo.bar(Int32)" formats "->{}" formats "->{}" formats "\"foo \#{ 1 + 2 }\"" formats "\"foo \#{ 1 + 2 }\"" formats "def foo(a : T) forall T\n #\n\nend" formats "def foo(a : T) forall T\n #\n\nend" formats "macro foo\n {% if 1 %}\\ 2 {% else %}\\ 3 {% end %}\\\nend" formats "macro foo\n {% if 1 %}\\ 2 {% else %}\\ 3 {% end %}\\\nend" formats "foo &.as?(T)" formats "foo &.as?(T)" formats "while 1 # foo\nend" formats "while 1 # foo\nend" formats "<<-HTML\n \#{\"fo\#{\"o\"}\"}\n HTML" formats "<<-HTML\n \#{\"fo\#{\"o\"}\"}\n HTML" formats "fun foo(\n x : Int32,\n ...\n) : Int32\n 1\nend" formats "fun foo(\n x : Int32,\n ...\n) : Int32\n 1\nend" formats "next *1 ,2" formats "next *1 ,2" formats "a[b] ||= c" formats "a[b] ||= c" formats "[\n 1, # foo\n 3,\n]" formats "[\n 1, # foo\n 3,\n]" formats "return( 1 )" formats "return( 1 )" formats "begin\n 1 + \\\n 2\n 3\nend" formats "begin\n 1 + \\\n 2\n 3\nend" formats "\"foo\#{\"bar\"} Baz \#{\"qux\"} \"" formats "\"foo\#{\"bar\"} Baz \#{\"qux\"} \"" formats "x[ y ] += 1" formats "x[ y ] += 1" formats "x, y, z = <<-FOO, <<-BAR, <<-BAZ\n hello\n FOO\n world\n BAR\n qux\nBAZ" formats "x, y, z = <<-FOO, <<-BAR, <<-BAZ\n hello\n FOO\n world\n BAR\n qux\nBAZ" formats "1..\n2" formats "1..\n2" formats "lib Foo\n {% if 1 %}\n fun foo\n {% end %}\nend\n\nmacro bar\n 1\nend" formats "lib Foo\n {% if 1 %}\n fun foo\n {% end %}\nend\n\nmacro bar\n 1\nend" formats "%w{one( two( three)}" formats "%w{one( two( three)}" formats "1.!= { 3 }" formats "1.!= { 3 }" formats "def foo\n {{@type}}\nend" formats "def foo\n {{@type}}\nend" formats "yield(\n1 , \n2)" formats "yield(\n1 , \n2)" formats "asm(\n\"nop\" : \"a\"(0), \"b\"(1) )" formats "asm(\n\"nop\" : \"a\"(0), \"b\"(1) )" formats "case 1 # foo\nwhen 2 then 3 # bar\nwhen 4 then 5 # baz\nelse 6 # zzz\nend" formats "case 1 # foo\nwhen 2 then 3 # bar\nwhen 4 then 5 # baz\nelse 6 # zzz\nend" formats "def foo( x , & block : ->)\nend" formats "def foo( x , & block : ->)\nend" formats "foo : (Array(String)?) | String" formats "foo : (Array(String)?) | String" formats "foo = [1, [2,\n 3],\n 4]" formats "foo = [1, [2,\n 3],\n 4]" formats "asm(\"nop\" :::: \"volatile\" )" formats "asm(\"nop\" :::: \"volatile\" )" formats "macro foo\n macro bar\n \\{% begin %}\n \\\\{% puts %}\n \\{% end %}\n end\nend" formats "macro foo\n macro bar\n \\{% begin %}\n \\\\{% puts %}\n \\{% end %}\n end\nend" formats "case nil\nelse nil; nil\n# comment\nend" formats "case nil\nelse nil; nil\n# comment\nend" formats "-> : {Int32, String} {}" formats "-> : {Int32, String} {}" formats "def foo : Int32\n 1\nend" formats "def foo : Int32\n 1\nend" formats " <<-EOF\n 1\nEOF" formats " <<-EOF\n 1\nEOF" formats "foo 1, a: 1,\nb: 2,\nc: 3" formats "foo 1, a: 1,\nb: 2,\nc: 3" formats "asm(\"a\" : : : : \"volatile\")" formats "asm(\"a\" : : : : \"volatile\")" formats "a = foo(bar([\n 1,\n]))" formats "a = foo(bar([\n 1,\n]))" formats "{ * 1 * 2,\n*\n3, 4 }" formats "{ * 1 * 2,\n*\n3, 4 }" formats "lib Bar\n enum Foo\n end\nend" formats "lib Bar\n enum Foo\n end\nend" formats "foo(bar(baz3 do\nend))" formats "foo(bar(baz3 do\nend))" formats "-> do\nend" formats "-> do\nend" formats "macro foo\n 1 + 2 \n end" formats "macro foo\n 1 + 2 \n end" formats "def foo(\nx, #foo\nz #bar\n)\nend" formats "def foo(\nx, #foo\nz #bar\n)\nend" formats "%" formats "%" formats "struct Foo \n\n 1 \n\nend" formats "struct Foo \n\n 1 \n\nend" formats "abstract def foo\nabstract def bar" formats "abstract def foo\nabstract def bar" formats ":|" formats ":|" formats "while 1;\n2; end" formats "while 1;\n2; end" formats "1.<=(2) { 3 }" formats "1.<=(2) { 3 }" formats "lib LibFoo\n {% begin %}\n fun x = y(Int32)\n {% end %}\nend" formats "lib LibFoo\n {% begin %}\n fun x = y(Int32)\n {% end %}\nend" formats "macro flags\n {% if 1 %}\\\n 1 {% else %}\\\n {% end %}\\\nend" formats "macro flags\n {% if 1 %}\\\n 1 {% else %}\\\n {% end %}\\\nend" formats "FOO = 2 + 3\nA = 1 - 10" formats "FOO = 2 + 3\nA = 1 - 10" formats "foo 1, # comment\n do\n end" formats "foo 1, # comment\n do\n end" formats "{%\n unless true\n 1\n end\n%}" formats "{%\n unless true\n 1\n end\n%}" formats "{% if flag?(:freebsd) %}\n 1 + 2\n{% end %}\n\ncase x\nwhen 1234 then 1\nelse x\nend" formats "{% if flag?(:freebsd) %}\n 1 + 2\n{% end %}\n\ncase x\nwhen 1234 then 1\nelse x\nend" formats " macro foo\n end\n\n :+" formats " macro foo\n end\n\n :+" formats "1 # foo\n1234 # bar\n\n10 # bar" formats "1 # foo\n1234 # bar\n\n10 # bar" formats "foo[&.bar] ||= 1" formats "foo[&.bar] ||= 1" formats "1 &&\n2" formats "1 &&\n2" formats "@[Foo()]" formats "@[Foo()]" formats "foo : Foo * * * * *" formats "foo : Foo * * * * *" formats "class Foo\ndef foo\n1\nensure\n2\nend\nend" formats "class Foo\ndef foo\n1\nensure\n2\nend\nend" formats "foo &.bar.nil?()" formats "foo &.bar.nil?()" formats "def foo( @[MyAnn] v ); end" formats "def foo( @[MyAnn] v ); end" formats "$1" formats "$1" formats "1\n2\n# foo" formats "1\n2\n# foo" formats "begin\n query = <<-HEREDOC\n foo\n HEREDOC\nend" formats "begin\n query = <<-HEREDOC\n foo\n HEREDOC\nend" formats "x : (A | B)" formats "x : (A | B)" formats "private def foo\nend\nprivate def bar\nend" formats "private def foo\nend\nprivate def bar\nend" formats "module Foo;end" formats "module Foo;end" formats "foo &.bar.as?(T)" formats "foo &.bar.as?(T)" formats "$~.bar" formats "$~.bar" does not add `&` without flag `method_signature_yield` formats "def foo(x ,)\n yield\nend" formats "def foo(x ,)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(\nx, y)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo(x,\n)\n yield\nend" formats "def foo()\n yield\nend" formats "def foo()\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\n)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo(\nx,\ny)\n yield\nend" formats "def foo\n yield\nend" formats "def foo\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(x,\ny,)\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "def foo(a, **b)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(x)\n yield\nend" formats "def foo(x,\n y)\n yield\nend" formats "def foo(x,\n y)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(x\n)\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo(\nx)\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo # bar\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "def foo(\nx,\n)\n yield\nend" formats "[] of Int32\n1" formats "[] of Int32\n1" formats "foo.[ 1 , 2 ] =3" formats "foo.[ 1 , 2 ] =3" formats "x : (A -> )" formats "x : (A -> )" formats "foo do # hello\nend" formats "foo do # hello\nend" formats "foo &.as(T)" formats "foo &.as(T)" formats "next {1, 2}, {3, 4}" formats "next {1, 2}, {3, 4}" formats "if 1\nelse\n2\nend\n3" formats "if 1\nelse\n2\nend\n3" formats "a , b = 1 , 2" formats "a , b = 1 , 2" formats "begin\n1\nensure\n2\nend" formats "begin\n1\nensure\n2\nend" formats "def foo(@[AnnOne] @[AnnTwo] & ); end" formats "def foo(@[AnnOne] @[AnnTwo] & ); end" formats "next *1" formats "next *1" formats "begin\n1\nrescue ex\n3\nelse\n4\nend" formats "begin\n1\nrescue ex\n3\nelse\n4\nend" formats "foo.as? Int32*" formats "foo.as? Int32*" formats "foo.bar=(2)\n1" formats "foo.bar=(2)\n1" formats "yield" formats "yield" formats "\"foo\" \\\n \"bar\"" formats "\"foo\" \\\n \"bar\"" formats "a.!" formats "a.!" formats "{1 => 2,\n 3 => 4, # lala\n}\n" formats "{1 => 2,\n 3 => 4, # lala\n}\n" formats "return 1 , *2" formats "return 1 , *2" formats "{ 1 => 2 }" formats "{ 1 => 2 }" formats "`foo`" formats "`foo`" formats "x : A | B" formats "x : A | B" formats "foo &.nil?()" formats "foo &.nil?()" formats "offsetof( String, @length )" formats "offsetof( String, @length )" formats "foo(bar(\n 1,\n 2,\n))" formats "foo(bar(\n 1,\n 2,\n))" formats "{ %() }" formats "{ %() }" formats "def foo( x , & block )\nend" formats "def foo( x , & block )\nend" formats "a &.b.as(C)" formats "a &.b.as(C)" formats "a &.!.!" formats "a &.!.!" formats "asm(\"nop\" : : )" formats "asm(\"nop\" : : )" formats "foo( 1 , 2 )" formats "foo( 1 , 2 )" formats "{\n foo: 1,\n b: 2,\n barbaz: 3,\n}" formats "{\n foo: 1,\n b: 2,\n barbaz: 3,\n}" formats "foo(1, ) do\nend" formats "foo(1, ) do\nend" formats "def foo(*y, **z)\nend" formats "def foo(*y, **z)\nend" formats "macro foo\n {{ 1 + 2 }}\nend" formats "macro foo\n {{ 1 + 2 }}\nend" formats "x : Int32[ 8 ]" formats "x : Int32[ 8 ]" formats "case 1 \n when 2 then 3 \n end" formats "case 1 \n when 2 then 3 \n end" formats "case / /\nwhen / /, /x/\n / /\nend" formats "case / /\nwhen / /, /x/\n / /\nend" formats "{% if z %}\n 1\n{% end %}\n\ndef foo\n z =\n 123 + # foo\n 4 # bar\n\n 1\nend" formats "{% if z %}\n 1\n{% end %}\n\ndef foo\n z =\n 123 + # foo\n 4 # bar\n\n 1\nend" formats "class Foo\n# nothing\nend" formats "class Foo\n# nothing\nend" formats "a || b" formats "a || b" formats ":^" formats ":^" formats "yield( 1 , 2 )" formats "yield( 1 , 2 )" formats "class X\n annotation FooAnnotation \n end \n end" formats "class X\n annotation FooAnnotation \n end \n end" formats "{ {1 => 2} }" formats "{ {1 => 2} }" formats "foo a: 1\nb" formats "foo a: 1\nb" formats "->{1}" formats "->{1}" formats "<<-HTML\n \#{\"foo\"}\#{1}\n HTML" formats "<<-HTML\n \#{\"foo\"}\#{1}\n HTML" formats "break( *1 , *2 )" formats "break( *1 , *2 )" formats "foo.[1, 2] = 3" formats "foo.[1, 2] = 3" formats "def foo\n1\nensure\n2\nend" formats "def foo\n1\nensure\n2\nend" formats "foo(1, 2,\n)" formats "foo(1, 2,\n)" formats "%r(foo \#{ bar })" formats "%r(foo \#{ bar })" formats "def a\n b(\n 1, # x\n # y\n )\nend" formats "def a\n b(\n 1, # x\n # y\n )\nend" formats "foo.as(T).bar" formats "foo.as(T).bar" formats "-> : Int32? {}" formats "-> : Int32? {}" formats "@x[ 1 ] ||= 2" formats "@x[ 1 ] ||= 2" formats "foo.bar\n.baz" formats "foo.bar\n.baz" formats "module Foo ( U, *T ); 1; end" formats "module Foo ( U, *T ); 1; end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar\n); end" formats "class Actor\n macro inherited\n\nend\nend\n" formats "class Actor\n macro inherited\n\nend\nend\n" formats "nil?" formats "nil?" formats "yield( *1 , *2 )" formats "yield( *1 , *2 )" formats "foo(\n 1,\n) {\n 2\n}" formats "foo(\n 1,\n) {\n 2\n}" formats "1 unless 2" formats "1 unless 2" formats "def foo\n2 # foo\nend" formats "def foo\n2 # foo\nend" formats "require \"foo\"\n\n@x : Int32\n\nclass Bar\nend" formats "require \"foo\"\n\n@x : Int32\n\nclass Bar\nend" formats "[\n1,\n2,\n3]" formats "[\n1,\n2,\n3]" formats "foo ()" formats "foo ()" formats "\"\#{\"\#{foo}\"}\"" formats "\"\#{\"\#{foo}\"}\"" formats "macro foo()\nend" formats "macro foo()\nend" formats "foo\n .bar(\n 1\n )" formats "foo\n .bar(\n 1\n )" formats "Union(Foo::Bar?, Baz?, Qux(T, U?))" formats "Union(Foo::Bar?, Baz?, Qux(T, U?))" formats " ((1) + 2)" formats " ((1) + 2)" formats "a = / /" formats "a = / /" formats "def foo(&block: Int32)\nend" formats "def foo(&block: Int32)\nend" formats " {% if 1 %} 2 {% end %}" formats " {% if 1 %} 2 {% end %}" formats "foo do # a\n # b\n bar\nend" formats "foo do # a\n # b\n bar\nend" formats "->@foo.foo=" formats "->@foo.foo=" formats "foo &.[]=( 1, 2 )" formats "foo &.[]=( 1, 2 )" formats "begin\n a\nend.b { }\nc" formats "begin\n a\nend.b { }\nc" formats "class Foo ( *T, U )\nend" formats "class Foo ( *T, U )\nend" formats "foo do\n bar do\n foo <<-X\n bar\n X\n end\nend" formats "foo do\n bar do\n foo <<-X\n bar\n X\n end\nend" formats "def foo(x)\n case 1\n when self // 2\n 3\n end\nend" formats "def foo(x)\n case 1\n when self // 2\n 3\n end\nend" formats "\"foo \#{ 1 } \#{ __DIR__ }\"" formats "\"foo \#{ 1 } \#{ __DIR__ }\"" formats "begin\n #hola\n 1\nend\n" formats "begin\n #hola\n 1\nend\n" formats "1.>=() { 3 }" formats "1.>=() { 3 }" formats " <<-HTML\n foo\nHTML" formats " <<-HTML\n foo\nHTML" formats "enum Foo\nA = 1\nend" formats "enum Foo\nA = 1\nend" formats "a = %w(\n one two\n three four\n)" formats "a = %w(\n one two\n three four\n)" formats "[] of (((Array(T))))" formats "[] of (((Array(T))))" formats "macro foo\n {%1 + 2%}\\\nend" formats "macro foo\n {%1 + 2%}\\\nend" formats ":+" formats ":+" formats "class Foo < \n Bar \n\n 1 \n\nend" formats "class Foo < \n Bar \n\n 1 \n\nend" formats "def foo : (A | B(C))\n nil\nend" formats "def foo : (A | B(C))\n nil\nend" formats "def foo(x, *, z)\nend" formats "def foo(x, *, z)\nend" formats "10 // a" formats "10 // a" formats "foo(/ /)" formats "foo(/ /)" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n foo => true,\n}" formats "{\n variables => true,\n query => <<-HEREDOC,\n foo\n HEREDOC\n foo => true,\n}" formats "{1, 2, 3}" formats "{1, 2, 3}" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1),\n\"c\"(2) )" formats "asm(\"nop\" : \"a\"(0)\n: \"b\"(1),\n\"c\"(2) )" formats "[/ /, / /]" formats "[/ /, / /]" formats "1 && # foo\n 2 &&\n 3" formats "1 && # foo\n 2 &&\n 3" formats "while 1\n2\nend" formats "while 1\n2\nend" formats "foo.%(bar)" formats "foo.%(bar)" formats "$0.bar" formats "$0.bar" formats "def foo ( bar @select) \n end" formats "def foo ( bar @select) \n end" formats "foo[bar.baz]\n .qux" formats "foo[bar.baz]\n .qux" formats "def foo(**z)\nend" formats "def foo(**z)\nend" formats "def foo\n {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}\nend" formats "def foo\n {% if flag?(:foo) %}\n foo + bar\n {% else %}\n baz + qux\n {% end %}\nend" formats "0_u64" formats "0_u64" formats "class Foo\n@x : Int32\nend" formats "class Foo\n@x : Int32\nend" formats ":&-" formats ":&-" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "def foo(\n @[MyAnn]\n @[MyAnn]\n bar,\n\n @[MyAnn] @[MyAnn] baz,\n\n @[MyAnn]\n @[MyAnn]\n biz\n); end" formats "foo (1), 2" formats "foo (1), 2" formats " <<-EOF\n 1\n 2\n EOF" formats " <<-EOF\n 1\n 2\n EOF" adds trailing comma to def multi-line normal, splat, and double splat parameters formats "def foo(\n a,\n @[Ann]\n b\n)\nend" formats "def foo(\n a,\n @[Ann]\n b\n)\nend" formats "def foo(\n a : Int32,\n b : Int32\n)\nend" formats "def foo(\n a : Int32,\n b : Int32\n)\nend" formats "def foo(\n a,\n)\nend" formats "def foo(\n a,\n)\nend" formats "fun foo(\n a : Int32,\n b : Int32\n)\nend" formats "fun foo(\n a : Int32,\n b : Int32\n)\nend" formats "macro foo(\n a,\n *b\n)\nend" formats "macro foo(\n a,\n *b\n)\nend" formats "def foo(a, *args)\nend" formats "def foo(a, *args)\nend" formats "def foo(\n a,\n &block\n)\nend" formats "def foo(\n a,\n &block\n)\nend" formats "def foo(\n a,\n **b\n)\nend" formats "def foo(\n a,\n **b\n)\nend" formats "def foo(\n a,\n b c\n)\nend" formats "def foo(\n a,\n b c\n)\nend" formats "def foo(\n a, b\n)\nend" formats "def foo(\n a, b\n)\nend" formats "def foo(\n a : Int32,\n b : Int32 = 1\n)\nend" formats "def foo(\n a : Int32,\n b : Int32 = 1\n)\nend" formats "def foo(\n a,\n @[Ann] b\n)\nend" formats "def foo(\n a,\n @[Ann] b\n)\nend" formats "def foo(\n a,\n *b\n)\nend" formats "def foo(\n a,\n *b\n)\nend" formats "def foo(\n a,\n b\n)\nend" formats "def foo(\n a,\n b\n)\nend" formats "def foo(a, b)\nend" formats "def foo(a, b)\nend" formats "def foo(a, **kwargs, &block)\nend" formats "def foo(a, **kwargs, &block)\nend" formats "def foo(\n a, b,\n c, d\n)\nend" formats "def foo(\n a, b,\n c, d\n)\nend" formats "def foo(\n a, # Foo\n b # Bar\n)\nend" formats "def foo(\n a, # Foo\n b # Bar\n)\nend" formats "def foo(a, *args, &block)\nend" formats "def foo(a, *args, &block)\nend" formats "fun foo(\n a : Int32,\n ...\n)\nend" formats "fun foo(\n a : Int32,\n ...\n)\nend" formats "def foo(a, **kwargs)\nend" formats "def foo(a, **kwargs)\nend" formats "macro foo(\n a,\n b\n)\nend" formats "macro foo(\n a,\n b\n)\nend" formats "def foo(a)\nend" formats "def foo(a)\nend" formats "def foo(a, &block)\nend" formats "def foo(a, &block)\nend" formats "def foo ( @x) \n end" formats "def foo ( @x) \n end" formats "until 1\n2\nend" formats "until 1\n2\nend" formats "lib Foo\nalias Foo = Bar -> \n$a : Int32\nend" formats "lib Foo\nalias Foo = Bar -> \n$a : Int32\nend" formats "macro foo( x , y )\nend" formats "macro foo( x , y )\nend" formats "select\nwhen foo\n # foo\n # bar\nelse\n # foo\n # bar\nend" formats "select\nwhen foo\n # foo\n # bar\nelse\n # foo\n # bar\nend" formats "\"foo\" \\\n \"bar\" \\\n \"baz\"" formats "\"foo\" \\\n \"bar\" \\\n \"baz\"" formats "alias Foo = Bar" formats "alias Foo = Bar" formats "foo a , **b" formats "foo a , **b" formats "<<-FOO\nfoo\nfoo\nFOO" formats "<<-FOO\nfoo\nfoo\nFOO" formats "args.any? &.name.baz" formats "args.any? &.name.baz" formats "$?.bar" formats "$?.bar" formats "private getter foo" formats "private getter foo" formats "{ {% begin %}1{% end %}, nil }" formats "{ {% begin %}1{% end %}, nil }" formats "foo 1 , &bar" formats "foo 1 , &bar" formats "def foo\nselect \n when foo \n 2 \n else \n 3 \nend\nend" formats "def foo\nselect \n when foo \n 2 \n else \n 3 \nend\nend" formats "->( ){ x }" formats "->( ){ x }" formats "[1, 2, 3, ]" formats "[1, 2, 3, ]" formats "\"\#{\n foo = 1}\"" formats "\"\#{\n foo = 1}\"" formats "1 # foo\n1234 # bar" formats "1 # foo\n1234 # bar" formats "10**a" formats "10**a" formats "foo(//, //)" formats "foo(//, //)" formats "lib Foo\n $foo = hello : Int32 \nend" formats "lib Foo\n $foo = hello : Int32 \nend" formats "{ \"foo\": 1 }" formats "{ \"foo\": 1 }" formats "b &.[c]?.d" formats "b &.[c]?.d" formats "unless a\n2\nelse\nend" formats "unless a\n2\nelse\nend" formats "a = foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "a = foo(1, 2, {\n foo: 1,\n bar: 2,\n})" formats "def foo\n1\nend" formats "def foo\n1\nend" formats "1.>=(2) { 3 }" formats "1.>=(2) { 3 }" formats "unless a\n2\n3\nend" formats "unless a\n2\n3\nend" formats "foo(&.bar)" formats "foo(&.bar)" formats "foo.bar.baz\n.qux" formats "foo.bar.baz\n.qux" formats "foo . bar = 1" formats "foo . bar = 1" formats "foo(1 + \n2)" formats "foo(1 + \n2)" formats "1 +\n # foo\n 2" formats "1 +\n # foo\n 2" formats "->@foo.foo!" formats "->@foo.foo!" formats "next( 1 , 2 )" formats "next( 1 , 2 )" formats "enum Foo;end" formats "enum Foo;end" formats "(1 .. )" formats "(1 .. )" formats "def foo\nend\ndef bar\nend" formats "def foo\nend\ndef bar\nend" formats "def foo\n a = 1; # foo\n a = 2; # bar\nend\n" formats "def foo\n a = 1; # foo\n a = 2; # bar\nend\n" formats "def self . foo\nend" formats "def self . foo\nend" formats "enum Foo\nend" formats "enum Foo\nend" formats "foo(1, 2,)" formats "foo(1, 2,)" formats "enum Foo\n {% begin %}\n A\n B\n C\n {% end %}\nend" formats "enum Foo\n {% begin %}\n A\n B\n C\n {% end %}\nend" formats "%x(foo \#{ bar })" formats "%x(foo \#{ bar })" formats "def execute\n begin\n 1\n ensure\n 2\n end\n 3\nend" formats "def execute\n begin\n 1\n ensure\n 2\n end\n 3\nend" formats "macro foo\n %foo{x.id+2}\nend" formats "macro foo\n %foo{x.id+2}\nend" formats "def foo( & )\nend" formats "def foo( & )\nend" formats "enum Foo\nA \nend" formats "enum Foo\nA \nend" formats "あ.い = 1" formats "あ.い = 1" formats "macro foo\n 1 + 2\nend" formats "macro foo\n 1 + 2\nend" formats ":&*" formats ":&*" formats "macro foo\n %foo\nend" formats "macro foo\n %foo\nend" formats "[\n # foo\n] of String" formats "[\n # foo\n] of String" formats "foo self // 1" formats "foo self // 1" formats "getter foo # comment\n\ndef foo\nend" formats "getter foo # comment\n\ndef foo\nend" formats "1.==(2) { 3 }" formats "1.==(2) { 3 }" formats "break *1 , *2" formats "break *1 , *2" formats "foo.\nbar" formats "foo.\nbar" formats "::NamedTuple()" formats "::NamedTuple()" formats "if 1\n return foo(\n 1,\n 2,\n )\nend" formats "if 1\n return foo(\n 1,\n 2,\n )\nend" formats "class Foo\n1\n\n# foo\nend" formats "class Foo\n1\n\n# foo\nend" formats "def foo : (A, B) ->\n nil\nend" formats "def foo : (A, B) ->\n nil\nend" formats "macro []=(x, y)\nend" formats "macro []=(x, y)\nend" formats " [ 1, \n 2 , \n 3 ] " formats " [ 1, \n 2 , \n 3 ] " formats "1 && (\n 2 || 3\n)" formats "1 && (\n 2 || 3\n)" formats "lib Foo\ntype Foo = Bar\nend" formats "lib Foo\ntype Foo = Bar\nend" formats "nil" formats "nil" formats "::foo(1, 2)" formats "::foo(1, 2)" formats "/foo/" formats "/foo/" formats "asm(\"a\" :: : : \"volatile\")" formats "asm(\"a\" :: : : \"volatile\")" formats "a = \\\n # foo\n nil" formats "a = \\\n # foo\n nil" formats "long_variable_name = [1, 2, 3, # foo\n 4, 5, 6]" formats "long_variable_name = [1, 2, 3, # foo\n 4, 5, 6]" formats "module Moo ( T )\nend" formats "module Moo ( T )\nend" formats "lib Foo\n fun Foo = Bar\nend" formats "lib Foo\n fun Foo = Bar\nend" formats "unless a\nunless b\nelse\n4\nend\nend" formats "unless a\nunless b\nelse\n4\nend\nend" formats "foo 1" formats "foo 1" formats "macro foo(x)\n {% if 1 %} 2 {% end %}\nend" formats "macro foo(x)\n {% if 1 %} 2 {% end %}\nend" formats "foo : StaticArray(Foo, 12)[34]" formats "foo : StaticArray(Foo, 12)[34]" formats "asm(\"nop\" : \"a\"(0), \"b\"(1) )" formats "asm(\"nop\" : \"a\"(0), \"b\"(1) )" formats "foo(1 &+ \n2)" formats "foo(1 &+ \n2)" formats "asm(\"a\" :: \"d\"(e)\n)" formats "asm(\"a\" :: \"d\"(e)\n)" formats "[1, 2, 3]" formats "[1, 2, 3]" formats "next" formats "next" formats "[\n a(), # b\n]" formats "[\n a(), # b\n]" formats "if 1\n2\nelsif\n3\n4\nend" formats "if 1\n2\nelsif\n3\n4\nend" formats "lib Bar\n enum Foo\n A\n end\nend" formats "lib Bar\n enum Foo\n A\n end\nend" formats "foo.@bar" formats "foo.@bar" formats "asm(\"nop\" :::: \"volatile\" , \"alignstack\" , \"intel\" )" formats "asm(\"nop\" :::: \"volatile\" , \"alignstack\" , \"intel\" )" formats "if 1;\n2;\nelsif 3;\n4;\nend" formats "if 1;\n2;\nelsif 3;\n4;\nend" formats "foo.[] = 1" formats "foo.[] = 1" formats "foo x: 1, y: 2" formats "foo x: 1, y: 2" formats "foo &.[]=(1, 2)" formats "foo &.[]=(1, 2)" formats "case 1\nwhen 2\n\n#comment\nend" formats "case 1\nwhen 2\n\n#comment\nend" formats "->@@foo.foo!" formats "->@@foo.foo!" formats "next { 1 , 2 }" formats "next { 1 , 2 }" formats "macro foo\nend" formats "macro foo\nend" formats "%i(one two three)" formats "%i(one two three)" formats "return( 1 , 2 )" formats "return( 1 , 2 )" formats "foo(->do\n 1 + 2\nend)" formats "foo(->do\n 1 + 2\nend)" formats "%w(\n one two\n three four\n)" formats "%w(\n one two\n three four\n)" formats "1.[]= do\nend" formats "1.[]= do\nend" formats "sizeof( Int32 )" formats "sizeof( Int32 )" formats "yield 1\n2" formats "yield 1\n2" formats "case 1 \n when 2 \n 3 \n else \n 4 \n end" formats "case 1 \n when 2 \n 3 \n else \n 4 \n end" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "lib Foo\n fun foo = bar(Int32) : Int32\nend" formats "foo . responds_to?( :bar )" formats "foo . responds_to?( :bar )" formats "if a\n b &c\nend" formats "if a\n b &c\nend" formats "class Actor\n macro inherited\nend\nend\n" formats "class Actor\n macro inherited\nend\nend\n" formats "foo &bar" formats "foo &bar" formats "10//a" formats "10//a" formats "{% begin %}\n \"\n foo\"\n{% end %}" formats "{% begin %}\n \"\n foo\"\n{% end %}" formats "1\n.." formats "1\n.." formats "module Foo; 1; end" formats "module Foo; 1; end" formats "def foo( x , & : Int32 )\nend" formats "def foo( x , & : Int32 )\nend" formats "@[Foo( 1, 2, foo: 3 )]" formats "@[Foo( 1, 2, foo: 3 )]" formats "alias Foo=Bar" formats "alias Foo=Bar" formats "foo.[]" formats "foo.[]" formats "#######" formats "#######" formats "~ 1" formats "~ 1" formats "def foo(x @y)\nend" formats "def foo(x @y)\nend" formats "\"1\#{\"\#{\"2\"}\"}3\#{\"4\"}5\"" formats "\"1\#{\"\#{\"2\"}\"}3\#{\"4\"}5\"" formats "<<-FOO\nFOO" formats "<<-FOO\nFOO" formats "foo\n.bar\n.baz" formats "foo\n.bar\n.baz" formats "<<-HTML\n \#{1}x\n y\n z\n HTML" formats "<<-HTML\n \#{1}x\n y\n z\n HTML" formats "def foo\n# hello\n1\nend" formats "def foo\n# hello\n1\nend" formats "foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n})" formats "foo({\n 1 => 2,\n 3 => 4,\n 5 => 6,\n})" formats "-> { 1 }" formats "-> { 1 }" formats "foo bar # comment\n\n# doc\ndef baz; end" formats "foo bar # comment\n\n# doc\ndef baz; end" formats "x : Int32*" formats "x : Int32*" formats "-> :: foo!" formats "-> :: foo!" formats "foo[x: 1, &.bar] = 1" formats "foo[x: 1, &.bar] = 1" formats "lib Foo\nend" formats "lib Foo\nend" formats "1 if 2\n# foo" formats "1 if 2\n# foo" formats "1&+2&*3" formats "1&+2&*3" formats "foo.[ 1 , 2 ]" formats "foo.[ 1 , 2 ]" formats "break" formats "break" formats "yield *1" formats "yield *1" formats "def foo(x)\n {% if true %}\n # comment\n Foo = 1\n B = 2\n {% end %}\nend" formats "def foo(x)\n {% if true %}\n # comment\n Foo = 1\n B = 2\n {% end %}\nend" formats "a = foo(bar(\n 1,\n 2,\n))" formats "a = foo(bar(\n 1,\n 2,\n))" formats "def foo(x = __FILE__ )\nend" formats "def foo(x = __FILE__ )\nend" formats "macro foo\n {{ 1 + 2 }}\\\n 1\n end" formats "macro foo\n {{ 1 + 2 }}\\\n 1\n end" formats "def foo(x)\n case self // x\n when 2\n 3\n end\nend" formats "def foo(x)\n case self // x\n when 2\n 3\n end\nend" formats "while 1\n2 # foo\nend" formats "while 1\n2 # foo\nend" formats "def foo(\n\n#foo\nx,\n\n#bar\nz\n)\nend" formats "def foo(\n\n#foo\nx,\n\n#bar\nz\n)\nend" formats "foo &.bar do\n 1 + 2\nend" formats "foo &.bar do\n 1 + 2\nend" formats "foo(\n <<-HERE,\n hello\n HERE\n foo: 1,\n)" formats "foo(\n <<-HERE,\n hello\n HERE\n foo: 1,\n)" formats "foo(->{\n 1 + 2\n})" formats "foo(->{\n 1 + 2\n})" formats "p = Foo[1, 2, 3,\n 4, 5, 6,\n ]" formats "p = Foo[1, 2, 3,\n 4, 5, 6,\n ]" formats "alias Foo =Bar" formats "alias Foo =Bar" formats "foo[] =1" formats "foo[] =1" formats "foo[x: 1, &.bar] ||= 1" formats "foo[x: 1, &.bar] ||= 1" formats "foo . is_a? ( Bar )" formats "foo . is_a? ( Bar )" formats "1 + \\\n2" formats "1 + \\\n2" formats "false" formats "false" formats "while / /\nend" formats "while / /\nend" formats "next 1 , *2" formats "next 1 , *2" formats "foo(bar(\n 1,\n baz(2,\n 3,\n )\n))" formats "foo(bar(\n 1,\n baz(2,\n 3,\n )\n))" formats "x : Int32**" formats "x : Int32**" formats "def foo(a, &@b)\nend" formats "def foo(a, &@b)\nend" formats "1\n2 \n # foo" formats "1\n2 \n # foo" formats "foo &.[]?(1, 2)" formats "foo &.[]?(1, 2)" formats "foo : (String -> Array(String)?) | (String -> Array(String)) | Nil" formats "foo : (String -> Array(String)?) | (String -> Array(String)) | Nil" formats "::StaticArray(T)" formats "::StaticArray(T)" formats "while 1 &&\n2 &&\n3\n4\nend" formats "while 1 &&\n2 &&\n3\n4\nend" formats "begin\n1\nrescue ex : Int32 | Float64 \n3\nend" formats "begin\n1\nrescue ex : Int32 | Float64 \n3\nend" formats "1.>= do\nend" formats "1.>= do\nend" formats "1#foo" formats "1#foo" formats "{% if z %}\n class Foo\n end\n{% end %}" formats "{% if z %}\n class Foo\n end\n{% end %}" formats "foo.bar &.baz( 1 , 2 )" formats "foo.bar &.baz( 1 , 2 )" formats "(1)" formats "(1)" formats "extend Foo" formats "extend Foo" formats "foo do | x , y | \n x \n end" formats "foo do | x , y | \n x \n end" formats "X(typeof(begin\n e.is_a?(Y) ? 1 : 2\nend))" formats "X(typeof(begin\n e.is_a?(Y) ? 1 : 2\nend))" formats "@x : A(B | C)?" formats "@x : A(B | C)?" formats "{\n <<-KEY => 1,\n key\n KEY\n}" formats "{\n <<-KEY => 1,\n key\n KEY\n}" formats "->@@foo.foo=" formats "->@@foo.foo=" formats "alias A = (B(C, (C | D)) | E)" formats "alias A = (B(C, (C | D)) | E)" formats "def foo(\n foo,\n @[MyAnn] &block\n); end" formats "def foo(\n foo,\n @[MyAnn] &block\n); end" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\nend" formats "lib Foo\n fun foo =\n \"bar\"(Int32) : Int32\nend" formats "asm(\"a\" : \"b\"(1), \"c\"(2) : \"d\"(3) : : \"volatile\")" formats "asm(\"a\" : \"b\"(1), \"c\"(2) : \"d\"(3) : : \"volatile\")" formats "10 ** a" formats "10 ** a" formats "foo { |x| (x).a }" formats "foo { |x| (x).a }" formats "def foo(\n foo,\n\n @[MyAnn]\n @[MyAnn]\n & : Nil -> Nil\n); end" formats "def foo(\n foo,\n\n @[MyAnn]\n @[MyAnn]\n & : Nil -> Nil\n); end" formats "a.b &.[c]?\n1" formats "a.b &.[c]?\n1" formats "def foo(\n **a # comment\n)\n 1\nend" formats "def foo(\n **a # comment\n)\n 1\nend" formats "foo 1,\na: 1,\nb: 2,\nc: 3" formats "foo 1,\na: 1,\nb: 2,\nc: 3" formats "{ {% for x in 1..2 %}3{% end %}, nil }" formats "{ {% for x in 1..2 %}3{% end %}, nil }" formats "macro foo()\n {% if 1 %} 2 {% end %}\nend" formats "macro foo()\n {% if 1 %} 2 {% end %}\nend" formats "{ \"foo\" => 1 }" formats "{ \"foo\" => 1 }" formats "lib Foo\n fun foo =\n\n\n bar : Void\nend" formats "lib Foo\n fun foo =\n\n\n bar : Void\nend" formats "a = 1\na ||= begin\n 1\nend" formats "a = 1\na ||= begin\n 1\nend" formats "1.!=(2) { 3 }" formats "1.!=(2) { 3 }" formats "foo &.nil?" formats "foo &.nil?" formats "def foo(x)\n case //\n when //\n 3\n end\nend" formats "def foo(x)\n case //\n when //\n 3\n end\nend" formats "foo(\n 1,\n # 2,\n 3,\n)" formats "foo(\n 1,\n # 2,\n 3,\n)" formats "alias Foo::Bar=Baz" formats "alias Foo::Bar=Baz" formats "def foo(\n @[MyAnn] bar\n); end" formats "def foo(\n @[MyAnn] bar\n); end" formats "foo(\n1,\n\n 2 \n)" formats "foo(\n1,\n\n 2 \n)" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\")" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\")" formats "module Foo # foo\nend" formats "module Foo # foo\nend" formats "case 1\nwhen \"foo\" then 3\nwhen \"lalalala\" then 4\nelse 5\nend" formats "case 1\nwhen \"foo\" then 3\nwhen \"lalalala\" then 4\nelse 5\nend" formats "->do\nx\nend" formats "->do\nx\nend" formats "bar = foo(->{\n 1 + 2\n})" formats "bar = foo(->{\n 1 + 2\n})" formats "foo.responds_to? :bar\n1" formats "foo.responds_to? :bar\n1" formats "begin\nend\n\n# a\n" formats "begin\nend\n\n# a\n" formats "__FILE__" formats "__FILE__" formats "asm(\n # the assembly template string, following the\n # syntax for LLVM's integrated assembler\n \"nop\" : # output operands\n\"=r\"(foo), \"=r\"(bar) : # input operands\n\"r\"(1), \"r\"(baz) : # names of clobbered registers\n\"eax\", \"memory\" : # optional flags, corresponding to the LLVM IR\n # sideeffect / alignstack / inteldialect / unwind attributes\n\"volatile\", \"alignstack\", \"intel\", \"unwind\"\n)" formats "asm(\n # the assembly template string, following the\n # syntax for LLVM's integrated assembler\n \"nop\" : # output operands\n\"=r\"(foo), \"=r\"(bar) : # input operands\n\"r\"(1), \"r\"(baz) : # names of clobbered registers\n\"eax\", \"memory\" : # optional flags, corresponding to the LLVM IR\n # sideeffect / alignstack / inteldialect / unwind attributes\n\"volatile\", \"alignstack\", \"intel\", \"unwind\"\n)" formats "foo (1; 2)" formats "foo (1; 2)" formats "->{\nx\n}" formats "->{\nx\n}" formats "()" formats "()" formats ":\"foo bar\"" formats ":\"foo bar\"" formats "<<-FOO\nfoobar\nFOO" formats "<<-FOO\nfoobar\nFOO" formats "case nil\nelse nil; nil # comment\nend" formats "case nil\nelse nil; nil # comment\nend" formats "'a'" formats "'a'" formats "1 / 2" formats "1 / 2" formats "case 1\nwhen 8 then 1\nwhen 16 then 2\nwhen 256 then 3\nwhen 'a' then 5\nwhen \"foo\" then 6\nelse 4\nend" formats "case 1\nwhen 8 then 1\nwhen 16 then 2\nwhen 256 then 3\nwhen 'a' then 5\nwhen \"foo\" then 6\nelse 4\nend" formats "\"hello\"" formats "\"hello\"" formats "foo.as? ( Int32* )" formats "foo.as? ( Int32* )" formats "@a" formats "@a" formats "x = 1\nx += 1" formats "x = 1\nx += 1" formats "::Tuple(T)" formats "::Tuple(T)" formats "$? = 1" formats "$? = 1" formats "if a\nif b\n3\nelse\n4\nend\nend" formats "if a\nif b\n3\nelse\n4\nend\nend" formats "1.[]=() { 3 }" formats "1.[]=() { 3 }" formats "1*2" formats "1*2" formats "-> :: Foo . foo?" formats "-> :: Foo . foo?" formats "\"foo \#{ __DIR__ }\"" formats "\"foo \#{ __DIR__ }\"" formats "1.!=() { 3 }" formats "1.!=() { 3 }" formats "macro foo(\n a,\n *b,\n)\nend" formats "macro foo(\n a,\n *b,\n)\nend" formats "foo.bar. as Int32" formats "foo.bar. as Int32" formats "select \n when foo then 2 \n end" formats "select \n when foo then 2 \n end" formats "def foo\n 1\nend\n\n# Comment\n\ndef bar\n 2\nend" formats "def foo\n 1\nend\n\n# Comment\n\ndef bar\n 2\nend" formats "1\n.as?(Int32)" formats "1\n.as?(Int32)" formats "-> : Int32 {}" formats "-> : Int32 {}" formats "yield(1 , \n2)" formats "yield(1 , \n2)" formats "foo \\\n 1,\n 2" formats "foo \\\n 1,\n 2" formats "foo[1, &.bar]?" formats "foo[1, &.bar]?" formats "def foo ( x , y , ) \n end" formats "def foo ( x , y , ) \n end" formats "unless a\n2; 3\nelse\n3\nend" formats "unless a\n2; 3\nelse\n3\nend" formats "require \"foo\"" formats "require \"foo\"" formats "::Pointer(T)" formats "::Pointer(T)" formats "1.[]= { 3 }" formats "1.[]= { 3 }" formats "while 1 # foo\n # bar\n 2\nend" formats "while 1 # foo\n # bar\n 2\nend" formats "\"\#{\n foo = 1\n}\"" formats "\"\#{\n foo = 1\n}\"" formats "foo do | x | \n x \n end" formats "foo do | x | \n x \n end" formats "macro foo\n \\{\nend" formats "macro foo\n \\{\nend" formats "1 && 2" formats "1 && 2" formats ":\"foo\"" formats ":\"foo\"" formats "String?" formats "String?" formats "<<-HTML\n \#{1}x\n y\n HTML" formats "<<-HTML\n \#{1}x\n y\n HTML" formats "{ # foo\n 1 => 2,\n}" formats "{ # foo\n 1 => 2,\n}" formats "if 1\n2\n3\n# foo\nend" formats "if 1\n2\n3\n# foo\nend" formats "def foo(**b, # comment\n &block)\nend" formats "def foo(**b, # comment\n &block)\nend" formats "if a\n2; 3\nelse\n3\nend" formats "if a\n2; 3\nelse\n3\nend" formats "case 1\nend" formats "case 1\nend" formats "macro flags\n {% if 1 %}{{1}}a{{2}}{% end %}\\\nend" formats "macro flags\n {% if 1 %}{{1}}a{{2}}{% end %}\\\nend" formats "foo.bar do\n baz\n .b\nend" formats "foo.bar do\n baz\n .b\nend" formats "foo(bar(\n 1,\n baz(\n 2,\n 3,\n )\n))" formats "foo(bar(\n 1,\n baz(\n 2,\n 3,\n )\n))" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "def foo(@[AnnOne] @[AnnTwo] v); end" formats "alignof( Int32 )" formats "alignof( Int32 )" formats "`foo \#{ bar }`" formats "`foo \#{ bar }`" formats "x : {\"foo bar\": Int32}" formats "x : {\"foo bar\": Int32}" formats "1\n# hello\n\n\n" formats "1\n# hello\n\n\n" formats "-> : {x: Int32, y: String} {}" formats "-> : {x: Int32, y: String} {}" formats "foo { | a, ( b , (c, d) ) | a + b + c }" formats "foo { | a, ( b , (c, d) ) | a + b + c }" formats "def foo(\n a,\n b,\n)\nend" formats "def foo(\n a,\n b,\n)\nend" formats "1 + 2" formats "1 + 2" formats "foo{}" formats "foo{}" formats "break {1, 2}, 3" formats "break {1, 2}, 3" formats "foo do\n [foo <<-X\n bar\n X\n ]\nend" formats "foo do\n [foo <<-X\n bar\n X\n ]\nend" formats "asm(\"a\" : :: : \"volatile\")" formats "asm(\"a\" : :: : \"volatile\")" formats "def a\n [\n 1, # x\n # y\n ]\nend" formats "def a\n [\n 1, # x\n # y\n ]\nend" formats "[foo <<-X\nbar\nX\n]" formats "[foo <<-X\nbar\nX\n]" formats "1 # foo\n/ 1 /" formats "1 # foo\n/ 1 /" formats "as Foo" formats "as Foo" formats "{% if true %}\n # x\n{% end %}" formats "{% if true %}\n # x\n{% end %}" formats "1.=== { 3 }" formats "1.=== { 3 }" formats "\n# hello\n\n\n1" formats "\n# hello\n\n\n1" formats "$~" formats "$~" formats "Foo::Bar(T, U?)?" formats "Foo::Bar(T, U?)?" formats ":&**" formats ":&**" formats "{% if true %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "{% if true %}\n <<-FOO\n hello \n FOO\n{% end %}" formats "class Foo\n def foo\n # nothing\n end\nend" formats "class Foo\n def foo\n # nothing\n end\nend" formats "def foo\na = bar do\n1\nend\nend" formats "def foo\na = bar do\n1\nend\nend" formats "foo do \n x \n end" formats "foo do \n x \n end" formats "foo : ( A | B )" formats "foo : ( A | B )" formats "def foo(x y)\nend" formats "def foo(x y)\nend" formats "if 1\n[\n a() # b\n]\nend" formats "if 1\n[\n a() # b\n]\nend" formats "def foo(a,\n &block)\nend" formats "def foo(a,\n &block)\nend" formats "yield (1).foo" formats "yield (1).foo" formats "foo ( )" formats "foo ( )" formats "select\nwhen foo # foo\n # bar\nelse # foo\n # bar\nend" formats "select\nwhen foo # foo\n # bar\nelse # foo\n # bar\nend" formats ":&+" formats ":&+" formats "include Foo" formats "include Foo" formats "a = if 1\n2\n3\nend" formats "a = if 1\n2\n3\nend" formats "foo.[ 1, 2 ]?" formats "foo.[ 1, 2 ]?" formats "a+1" formats "a+1" formats "bar = foo([\n 1,\n 2,\n 3,\n])" formats "bar = foo([\n 1,\n 2,\n 3,\n])" formats "lib Foo\n fun foo =\n\n\n bar(Int32) : Int32\nend" formats "lib Foo\n fun foo =\n\n\n bar(Int32) : Int32\nend" formats "$1?" formats "$1?" formats "def foo\n <<-FOO\n foo \#{1}\n FOO\nend" formats "def foo\n <<-FOO\n foo \#{1}\n FOO\nend" formats "module Ton\n macro foo\n class {{name.id}}\n end\n end\nend" formats "module Ton\n macro foo\n class {{name.id}}\n end\n end\nend" formats "$?" formats "$?" formats "return *1 ,2" formats "return *1 ,2" formats "case 1 \n when 2 \n 3 \n end" formats "case 1 \n when 2 \n 3 \n end" formats "1\n\n2" formats "1\n\n2" formats "a = case 1\nwhen 2\n3\nend" formats "a = case 1\nwhen 2\n3\nend" formats ":/" formats ":/" formats "foo : (self)?" formats "foo : (self)?" formats "-> : Int32 { }" formats "-> : Int32 { }" formats "def foo(@[MyAnn] v); end" formats "def foo(@[MyAnn] v); end" formats "def foo(**a,)\n 1\nend" formats "def foo(**a,)\n 1\nend" formats "case 1\nwhen 1, # 1\n 2, # 2\n 3 # 3\n 1\nend" formats "case 1\nwhen 1, # 1\n 2, # 2\n 3 # 3\n 1\nend" formats "foo(\n 1,\n &.foo\n)" formats "foo(\n 1,\n &.foo\n)" formats "def foo : self | Nil\n nil\nend" formats "def foo : self | Nil\n nil\nend" formats "begin 0[1] rescue 2 end" formats "begin 0[1] rescue 2 end" formats "begin\n array[\n 0 # Zero\n ]\nend" formats "begin\n array[\n 0 # Zero\n ]\nend" formats "-> : Int32 | String { 1 }" formats "-> : Int32 | String { 1 }" formats "(\n a = 1\n a\n)" formats "(\n a = 1\n a\n)" formats "return *1 , *2" formats "return *1 , *2" formats "<<-FOO\n1\nFOO\n\n{\n 1 => 2,\n 10 => 3,\n}" formats "<<-FOO\n1\nFOO\n\n{\n 1 => 2,\n 10 => 3,\n}" formats "あ.い, う.え.お = 1, 2" formats "あ.い, う.え.お = 1, 2" formats "foo\n .foo1(bar\n .bar1\n .bar2)" formats "foo\n .foo1(bar\n .bar1\n .bar2)" formats "def foo : Int32 \n end" formats "def foo : Int32 \n end" formats "Foo( * T, { * A ,*\n B } )" formats "Foo( * T, { * A ,*\n B } )" formats "enum Baz\nA = 1\nFOO\n\nEX = 3\nend" formats "enum Baz\nA = 1\nFOO\n\nEX = 3\nend" formats "[\n# foo\n] of String" formats "[\n# foo\n] of String" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" : \"volatile\" , \"alignstack\" )" formats "asm(\"nop\" ::: \"eax\" , \"ebx\" : \"volatile\" , \"alignstack\" )" formats "<<-HTML\n \#{\"foo\"}\n HTML" formats "<<-HTML\n \#{\"foo\"}\n HTML" formats "def foo(x, *, y, **z)\nend" formats "def foo(x, *, y, **z)\nend" formats "alias Foo=\nBar" formats "alias Foo=\nBar" formats "def foo\nend\n\n\n\ndef bar\nend" formats "def foo\nend\n\n\n\ndef bar\nend" formats "macro foo\n 1 \n {{ \n 42 \n }} \n 2 \nend" formats "macro foo\n 1 \n {{ \n 42 \n }} \n 2 \nend" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\",\n \"g\")" formats "asm(\"a\" : \"b\"(c) : \"d\"(e)\n : \"f\",\n \"g\")" formats "->( x , y ) { x }" formats "->( x , y ) { x }" formats "unless a\nunless b\n3\nelse\n4\nend\nend" formats "unless a\nunless b\n3\nelse\n4\nend\nend" formats "class Foo;end" formats "class Foo;end" assert assert formats "foo : (A -> B)\nbar : C" formats "foo : (A -> B)\nbar : C" formats "foo { | a, ( b , c ) | a + b + c }" formats "foo { | a, ( b , c ) | a + b + c }" formats "next 1, {2, 3}" formats "next 1, {2, 3}" formats "unless a\n2\n3\nelse\n4\n5\nend" formats "unless a\n2\n3\nelse\n4\n5\nend" formats "[1,\n2,\n3\n]" formats "[1,\n2,\n3\n]" formats "def %(x)\n 1\nend" formats "def %(x)\n 1\nend" formats "class Foo ( T )\nend" formats "class Foo ( T )\nend" formats "if 1\ncase 1\nwhen 2\n3\nend\nend" formats "if 1\ncase 1\nwhen 2\n3\nend\nend" formats "foo[x: 1, &.bar]?" formats "foo[x: 1, &.bar]?" formats "{\n \"a\" => 1, \"b\" => 2,\n \"foo\" => 3, \"bar\" => 4,\n \"coconio\" => 5, \"lala\" => 6,\n}\n" formats "{\n \"a\" => 1, \"b\" => 2,\n \"foo\" => 3, \"bar\" => 4,\n \"coconio\" => 5, \"lala\" => 6,\n}\n" formats "1 ||\n # foo\n 2" formats "1 ||\n # foo\n 2" formats "->{\n # first comment\n puts \"hi\"\n # second comment\n}" formats "->{\n # first comment\n puts \"hi\"\n # second comment\n}" formats "macro foo\n {% if 1 %} 2 {% end %}\nend" formats "macro foo\n {% if 1 %} 2 {% end %}\nend" formats "inner &.color=(@color)\n1" formats "inner &.color=(@color)\n1" formats "macro foo\n def bar\n {{\n 1 + 2\n }}\n end\nend" formats "macro foo\n def bar\n {{\n 1 + 2\n }}\n end\nend" formats "a = \\\n # foo\n bar(1)" formats "a = \\\n # foo\n bar(1)" formats "asm(\"nop\" ::: \"eax\" )" formats "asm(\"nop\" ::: \"eax\" )" formats " {%\na = 1\n %}" formats " {%\na = 1\n %}" formats "struct Foo(T)\n# bar\n1\nend" formats "struct Foo(T)\n# bar\n1\nend" formats "foo : self? | A" formats "foo : self? | A" formats "a = if 1\n2\nelse\n3\nend" formats "a = if 1\n2\nelse\n3\nend" formats "alias Foo::Bar= Baz" formats "alias Foo::Bar= Baz" formats "x : (A -> B)?" formats "x : (A -> B)?" formats "foo[1, &.bar] ||= 1" formats "foo[1, &.bar] ||= 1" formats "class Foo\n enum Bar\n A; B; C;\n D; E; F\nend\nend\n" formats "class Foo\n enum Bar\n A; B; C;\n D; E; F\nend\nend\n" formats "1.>= { 3 }" formats "1.>= { 3 }" formats "{%\n if true\n 1\n else\n 2\n end\n%}" formats "{%\n if true\n 1\n else\n 2\n end\n%}" formats "return *1" formats "return *1" formats "a = while 1\n2\nend" formats "a = while 1\n2\nend" formats "a-1" formats "a-1" formats "@[Foo(\n foo: 1\n)]\ndef foo\nend" formats "@[Foo(\n foo: 1\n)]\ndef foo\nend" formats "foo[ 1, 2 ]?" formats "foo[ 1, 2 ]?" formats "->(x : Int32) {}" formats "->(x : Int32) {}" formats "begin\n 1\nend\n\n1\n" formats "begin\n 1\nend\n\n1\n" formats "<<-HEREDOC\n \#{foo}\n H\#{bar}\n HEREDOC" formats "<<-HEREDOC\n \#{foo}\n H\#{bar}\n HEREDOC" formats "alias X = ((Y, Z) ->)" formats "alias X = ((Y, Z) ->)" formats "case 1 \n when 2 ;\n 3 \n end" formats "case 1 \n when 2 ;\n 3 \n end" formats "class Foo\nx = 1\nend" formats "class Foo\nx = 1\nend" formats "foo (1).bar" formats "foo (1).bar" formats "unless a\n2\nend" formats "unless a\n2\nend" formats "1 rescue 2" formats "1 rescue 2" formats "{ 1 => 2 ,\n\n 3 => 4 }" formats "{ 1 => 2 ,\n\n 3 => 4 }" formats "[\n {\n 1 => 2,\n }, {\n 3 => 4,\n }, {\n 5 => 6,\n },\n]" formats "[\n {\n 1 => 2,\n }, {\n 3 => 4,\n }, {\n 5 => 6,\n },\n]" Semantic: macro finds macro in included generic module finds macro in included generic module finds type for global path shared with free var finds type for global path shared with free var finds free type vars finds free type vars executes MultiAssign executes MultiAssign gives precise location info when doing yield inside macro gives precise location info when doing yield inside macro finds macro in module in Object finds macro in module in Object executes OpAssign (#9356) executes OpAssign (#9356) allows specifying self as macro def return type (2) allows specifying self as macro def return type (2) declares variable for macro with out declares variable for macro with out doesn't crash on syntax error inside macro (regression, #8038) doesn't crash on syntax error inside macro (regression, #8038) types macro def that calls another method inside a class types macro def that calls another method inside a class errors if applying protected modifier to macro errors if applying protected modifier to macro errors if requires inside class through macro expansion errors if requires inside class through macro expansion works inside proc literal (#2984) works inside proc literal (#2984) errors if missing two arguments errors if missing two arguments types macro def that calls another method inside a class types macro def that calls another method inside a class matches with default value after splat matches with default value after splat finds macro and method at the same scope inside included module finds macro and method at the same scope inside included module finds generic type argument of included module finds generic type argument of included module skip_file macro directive skips expanding the rest of the current file skips expanding the rest of the current file skips file inside an if macro expression skips file inside an if macro expression evaluates yield expression (#2924) evaluates yield expression (#2924) show macro trace in errors (1) show macro trace in errors (1) applies visibility modifier only to first level applies visibility modifier only to first level finds macro in included module at class level (#4639) finds macro in included module at class level (#4639) declares rescue variable inside for macro declares rescue variable inside for macro allows specifying self as macro def return type allows specifying self as macro def return type types macro def with argument types macro def with argument uses splat and double splat uses splat and double splat shows correct error message in macro expansion (#7083) shows correct error message in macro expansion (#7083) doesn't include parameters with default values in missing arguments error doesn't include parameters with default values in missing arguments error errors if macro def type not found errors if macro def type not found finds var in proc for macros finds var in proc for macros can't define new variables (#466) can't define new variables (#466) can access variable inside macro expansion (#2057) can access variable inside macro expansion (#2057) finds generic in macro code finds generic in macro code uses uninitialized variable with macros uses uninitialized variable with macros does macro verbatim outside macro does macro verbatim outside macro can specify tuple as return type can specify tuple as return type finds method before macro (#236) finds method before macro (#236) expands multiline macro expression in verbatim (#6643) expands multiline macro expression in verbatim (#6643) allows declaring class with inline macro expression (#1333) allows declaring class with inline macro expression (#1333) clones default value before expanding clones default value before expanding double splat and regular args double splat and regular args checks if macro expansion returns (#821) checks if macro expansion returns (#821) solves macro expression arguments before macro expansion (type) solves macro expression arguments before macro expansion (type) errors if using macro that is defined later errors if using macro that is defined later errors if declares macro inside if errors if declares macro inside if can use macro in instance var initializer (#7666) can use macro in instance var initializer (#7666) can return class type in macro def can return class type in macro def solves named macro expression arguments before macro expansion (type) (#2423) solves named macro expression arguments before macro expansion (type) (#2423) errors if named arg matches splat parameter errors if named arg matches splat parameter errors if non-existent named arg errors if non-existent named arg finds macro in included module finds macro in included module allows subclasses of return type for macro def allows subclasses of return type for macro def assigns to underscore in MultiAssign assigns to underscore in MultiAssign says missing argument because positional args don't match past splat says missing argument because positional args don't match past splat can define constant via macro included can define constant via macro included solves named macro expression arguments before macro expansion (constant) (#2423) solves named macro expression arguments before macro expansion (constant) (#2423) allows return values that include the return type of the macro def allows return values that include the return type of the macro def has correct location after expanding assignment after instance var has correct location after expanding assignment after instance var allows named args after splat allows named args after splat transforms with {{yield}} and call transforms with {{yield}} and call raise inside method without node renders both frames (#7147) renders both frames (#7147) inside macro with node pointing at the correct node in complex/nested macro (#7147) pointing at the correct node in complex/nested macro (#7147) renders both frames (#7147) renders both frames (#7147) contains the message and not `expanding macro` (#5669) contains the message and not `expanding macro` (#5669) points to caller when missing node location information (#7147) points to caller when missing node location information (#7147) without node supports an empty message (#8631) supports an empty message (#8631) renders both frames (#7147) renders both frames (#7147) does not contain `expanding macro` does not contain `expanding macro` show macro trace in errors (2) show macro trace in errors (2) can use macro in instance var initializer (just assignment) (#7666) can use macro in instance var initializer (just assignment) (#7666) types macro def that calls another method types macro def that calls another method errors if missing one argument errors if missing one argument errors if requires inside if through macro expansion errors if requires inside if through macro expansion assigns to underscore assigns to underscore expands macro with block expands macro with block finds metaclass instance of instance method (#4739) finds metaclass instance of instance method (#4739) can return virtual class type in macro def can return virtual class type in macro def gets named arguments in double splat gets named arguments in double splat errors if named arg matches single splat parameter errors if named arg matches single splat parameter errors if macro uses undefined variable errors if macro uses undefined variable errors if named arg already specified errors if named arg already specified finds macro and method at the same scope finds macro and method at the same scope can lookup type parameter when macro is called inside class (#5343) can lookup type parameter when macro is called inside class (#5343) uses bare * uses bare * errors if macro def type doesn't match found errors if macro def type doesn't match found looks up argument types in macro owner, not in subclass (#2395) looks up argument types in macro owner, not in subclass (#2395) allows declaring class with macro for allows declaring class with macro for expands macro with break inside while (#1852) expands macro with break inside while (#1852) errors if find macros but missing argument errors if find macros but missing argument does macro verbatim inside macro does macro verbatim inside macro finds macro in inherited generic class finds macro in inherited generic class allows declaring class with macro if allows declaring class with macro if finds metaclass instance of instance method (#4639) finds metaclass instance of instance method (#4639) doesn't error when adding macro call to constant (#2457) doesn't error when adding macro call to constant (#2457) uses bare *, doesn't let more args uses bare *, doesn't let more args @caller provides access to the `Call` information provides access to the `Call` information returns an array of each call returns an array of each call returns nil if no stack is available returns nil if no stack is available executes MultiAssign with ArrayLiteral value executes MultiAssign with ArrayLiteral value types macro types macro doesn't die on && inside if (bug) doesn't die on && inside if (bug) finds generic type argument of included module with self finds generic type argument of included module with self unpacks to underscore within block parameters inside macros unpacks to underscore within block parameters inside macros unpacks block parameters inside macros (#13742) unpacks block parameters inside macros (#13742) expands macro with block and argument to yield expands macro with block and argument to yield finds macro through alias (#2706) finds macro through alias (#2706) uses bare *, doesn't let more args uses bare *, doesn't let more args errors if find macros but wrong arguments errors if find macros but wrong arguments solves macro expression arguments before macro expansion (constant) solves macro expression arguments before macro expansion (constant) declares multi-assign vars for macro declares multi-assign vars for macro allows generic return types for macro def allows generic return types for macro def cannot lookup type defined in caller class cannot lookup type defined in caller class allows union return types for macro def allows union return types for macro def preserves correct self in restriction when macro def is to be instantiated in subtypes (#5044) preserves correct self in restriction when macro def is to be instantiated in subtypes (#5044) can override macro (#2773) can override macro (#2773) types macro def types macro def errors when trying to define def inside def with macro expansion errors when trying to define def inside def with macro expansion doesn't affect self restrictions outside the macro def being instantiated in subtypes doesn't affect self restrictions outside the macro def being instantiated in subtypes finds generic in macro code using free var finds generic in macro code using free var gives correct error when method is invoked but macro exists at the same scope gives correct error when method is invoked but macro exists at the same scope Crystal::Repl::Interpreter comparisons interprets UInt64 > UInt32 (true) interprets UInt64 > UInt32 (true) interprets Int128 == Int128 (false) interprets Int128 == Int128 (false) interprets UInt64 > UInt32 (false) interprets UInt64 > UInt32 (false) interprets UInt64 < Int32 (false, right is greater than zero) interprets UInt64 < Int32 (false, right is greater than zero) interprets Float32 / Float32 interprets Float32 / Float32 interprets UInt64 == Int32 (true when Int32 >= 0) interprets UInt64 == Int32 (true when Int32 >= 0) interprets Int32 != UInt64 (false) interprets Int32 != UInt64 (false) interprets Char == Char (false) interprets Char == Char (false) interprets UInt64 != Int32 (true) interprets UInt64 != Int32 (true) interprets Int128 == Int128 (true) interprets Int128 == Int128 (true) interprets UInt8 < Int32 (false, right is less than zero) interprets UInt8 < Int32 (false, right is less than zero) interprets Float64 < Int32 interprets Float64 < Int32 interprets Int32 < Int32 interprets Int32 < Int32 interprets UInt32 < Int32 (true) interprets UInt32 < Int32 (true) interprets UInt32 < Int32 (false) interprets UInt32 < Int32 (false) discards comparison discards comparison interprets UInt64 == Int32 (false when Int32 >= 0) interprets UInt64 == Int32 (false when Int32 >= 0) interprets Int32 > Float64 (true) interprets Int32 > Float64 (true) interprets Int32 != Int32 (false) interprets Int32 != Int32 (false) interprets Int32 < Float64 interprets Int32 < Float64 interprets Bool == Bool (false) interprets Bool == Bool (false) interprets Bool != Bool (false) interprets Bool != Bool (false) interprets UInt64 == Int32 (false when Int32 < 0) interprets UInt64 == Int32 (false when Int32 < 0) interprets Int32 == Int32 (true) interprets Int32 == Int32 (true) interprets Int32 == Float64 (false) interprets Int32 == Float64 (false) interprets Bool == Bool (true) interprets Bool == Bool (true) interprets UInt8 < Int32 (true, right is greater than zero) interprets UInt8 < Int32 (true, right is greater than zero) interprets Float32 fdiv Float64 interprets Float32 fdiv Float64 interprets UInt64.unsafe_mod(UInt64) interprets UInt64.unsafe_mod(UInt64) interprets Bool != Bool (true) interprets Bool != Bool (true) interprets Float32 / Int32 interprets Float32 / Int32 interprets Int32 == UInt64 (false) interprets Int32 == UInt64 (false) interprets UInt64 < Int32 (true, right is greater than zero) interprets UInt64 < Int32 (true, right is greater than zero) interprets Float64 < Float64 interprets Float64 < Float64 interprets Int32 == UInt64 (true) interprets Int32 == UInt64 (true) interprets Int32 == Int32 (false) interprets Int32 == Int32 (false) interprets UInt64 != Int32 (false) interprets UInt64 != Int32 (false) interprets Float64 fdiv Float32 interprets Float64 fdiv Float32 interprets Int32 == Float64 (true) interprets Int32 == Float64 (true) interprets Int32 != Int32 (true) interprets Int32 != Int32 (true) interprets UInt8 < Int32 (false, right is greater than zero) interprets UInt8 < Int32 (false, right is greater than zero) interprets Int32 > Float64 (false) interprets Int32 > Float64 (false) interprets Char == Char (true) interprets Char == Char (true) interprets Float64 / Float64 interprets Float64 / Float64 interprets UInt64 < Int32 (false, right is less than zero) interprets UInt64 < Int32 (false, right is less than zero) interprets Int32 != UInt64 (true) interprets Int32 != UInt64 (true) overflow - overlows on 1_u16 - 2 overlows on 1_u16 - 2 overlows on 1_i64 - 9223372036854775810_u64 overlows on 1_i64 - 9223372036854775810_u64 overlows on 1 - 2147483650_i64 overlows on 1 - 2147483650_i64 overlows on 1_u64 - 2 overlows on 1_u64 - 2 overlows on 1_i16 - 32770 overlows on 1_i16 - 32770 overlows on 1_u32 - 2 overlows on 1_u32 - 2 overlows on 1_i8 - 256 overlows on 1_i8 - 256 overlows on 1_u8 - 2 overlows on 1_u8 - 2 conversion overlows on -1_i16.to_u16 overlows on -1_i16.to_u16 overlows on -1_i8.to_u64 overlows on -1_i8.to_u64 overlows on 256_f32.to_u8 overlows on 256_f32.to_u8 overlows on 32768_f64.to_i16 overlows on 32768_f64.to_i16 overlows on 128_u8.to_i8 overlows on 128_u8.to_i8 overlows on 32768_u64.to_i16 overlows on 32768_u64.to_i16 overlows on 32768_u16.to_i16 overlows on 32768_u16.to_i16 overlows on -1.to_u32 overlows on -1.to_u32 overlows on 4294967296_f64.to_u32 overlows on 4294967296_f64.to_u32 overlows on 128_u16.to_i8 overlows on 128_u16.to_i8 overlows on 128_u64.to_i8 overlows on 128_u64.to_i8 overlows on 1.7976931348623157e+308.to_f32 overlows on 1.7976931348623157e+308.to_f32 overlows on 128_u32.to_i8 overlows on 128_u32.to_i8 overlows on -1.to_u64 overlows on -1.to_u64 overlows on 32768_u32.to_i16 overlows on 32768_u32.to_i16 overlows on -1_i8.to_u8 overlows on -1_i8.to_u8 overlows on -1_i64.to_u8 overlows on -1_i64.to_u8 overlows on -1_i8.to_u32 overlows on -1_i8.to_u32 overlows on -1_i16.to_u8 overlows on -1_i16.to_u8 overlows on -1.to_u8 overlows on -1.to_u8 overlows on 9223372036854775808_u64.to_i64 overlows on 9223372036854775808_u64.to_i64 overlows on 2147483648_u64.to_i32 overlows on 2147483648_u64.to_i32 overlows on -1_i64.to_u16 overlows on -1_i64.to_u16 overlows on -1_i64.to_u64 overlows on -1_i64.to_u64 overlows on 32768_f32.to_i16 overlows on 32768_f32.to_i16 overlows on 128_f64.to_i8 overlows on 128_f64.to_i8 overlows on -1_i8.to_u16 overlows on -1_i8.to_u16 overlows on 256_f64.to_u8 overlows on 256_f64.to_u8 overlows on -1_i64.to_u32 overlows on -1_i64.to_u32 overlows on 2147483648_u32.to_i32 overlows on 2147483648_u32.to_i32 overlows on -1_i16.to_u64 overlows on -1_i16.to_u64 overlows on -1_i16.to_u32 overlows on -1_i16.to_u32 overlows on 65536_f64.to_u16 overlows on 65536_f64.to_u16 overlows on 2147483648_f64.to_i32 overlows on 2147483648_f64.to_i32 overlows on 128_f32.to_i8 overlows on 128_f32.to_i8 overlows on 65536_f32.to_u16 overlows on 65536_f32.to_u16 overlows on -1.to_u16 overlows on -1.to_u16 + overlows on 1_i16 + 32767 overlows on 1_i16 + 32767 overlows on 1_u16 + 65535 overlows on 1_u16 + 65535 overlows on 1_u8 + 255 overlows on 1_u8 + 255 overlows on 1_i64 + 9223372036854775807_i64 overlows on 1_i64 + 9223372036854775807_i64 overlows on 1 + 2147483647 overlows on 1 + 2147483647 overlows on 1_u32 + 4294967295_i64 overlows on 1_u32 + 4294967295_i64 overlows on 1_i8 + 128 overlows on 1_i8 + 128 overlows on 1_u64 + 18446744073709551615_u64 overlows on 1_u64 + 18446744073709551615_u64 * overlows on 20_i64 * 922337203685477580_i64 overlows on 20_i64 * 922337203685477580_i64 overlows on 10_i16 * 3300 overlows on 10_i16 * 3300 overlows on 10_i8 * 14 overlows on 10_i8 * 14 overlows on 20_u32 * 429496729 overlows on 20_u32 * 429496729 overlows on 20 * 214748364 overlows on 20 * 214748364 overlows on 20_u64 * 1844674407370955161_i64 overlows on 20_u64 * 1844674407370955161_i64 overlows on 10_u8 * 26 overlows on 10_u8 * 26 overlows on 10_u16 * 6600 overlows on 10_u16 * 6600 logical operations interprets not for generic module interprets not for generic module interprets not for nilable type (false) interprets not for nilable type (false) interprets not for nilable proc type (true) interprets not for nilable proc type (true) interprets not for mixed union (nil) interprets not for mixed union (nil) interprets not for bool false interprets not for bool false interprets not for nilable type (true) interprets not for nilable type (true) interprets not for generic module metaclass interprets not for generic module metaclass interprets not for nilable type (true) interprets not for nilable type (true) interprets not for bool true interprets not for bool true interprets not for mixed union (true) interprets not for mixed union (true) interprets not for nil interprets not for nil interprets not for nilable proc type (false) interprets not for nilable proc type (false) does math convert on union does math convert on union interprets not for mixed union (false) interprets not for mixed union (false) interprets not for module (#12918) interprets not for module (#12918) does math primitive on union does math primitive on union interprets not for mixed union (other) interprets not for mixed union (other) interprets not for generic class instance type interprets not for generic class instance type discards nil not discards nil not interprets not for generic class instance metaclass interprets not for generic class instance metaclass discards bool not discards bool not interprets not for nil type interprets not for nil type interprets not for nilable type (false) interprets not for nilable type (false) interprets not for bool false interprets not for bool false local variables interprets uninitialized interprets uninitialized interprets local variable declaration (#12229) interprets local variable declaration (#12229) interprets variable set interprets variable set doesn't declare variable with no type doesn't declare variable with no type interprets variable set and get interprets variable set and get doesn't declare variable with no type inside method doesn't declare variable with no type inside method interprets at the class level interprets at the class level assigns to underscore assigns to underscore interprets variable set and get with operations interprets variable set and get with operations doesn't discard underscore right hand side doesn't discard underscore right hand side interprets variable set with type restriction (#13023) interprets variable set with type restriction (#13023) interprets variable set and get, second local var interprets variable set and get, second local var math interprets Float64 + Int32 interprets Float64 + Int32 interprets Float64 + Float64 interprets Float64 + Float64 interprets Int32 &* Int32 interprets Int32 &* Int32 interprets Int32 &+ Int32 interprets Int32 &+ Int32 interprets UInt8 | Int32 interprets UInt8 | Int32 interprets Int32.unsafe_shl(Int32) with self interprets Int32.unsafe_shl(Int32) with self interprets UInt32 - Int32 interprets UInt32 - Int32 discards math discards math interprets Float64 - Float64 interprets Float64 - Float64 interprets UInt64 | UInt32 interprets UInt64 | UInt32 interprets Float32 + Float64 interprets Float32 + Float64 interprets Int64 + Int64 interprets Int64 + Int64 interprets Int8 + Int8 interprets Int8 + Int8 interprets UInt64 & Int32 interprets UInt64 & Int32 interprets Int32 + Float64 interprets Int32 + Float64 interprets Float64 * Float64 interprets Float64 * Float64 interprets Int32 * Int32 interprets Int32 * Int32 interprets Int32 - Int32 interprets Int32 - Int32 interprets Int128 + Int32 interprets Int128 + Int32 interprets UInt64 * Int32 interprets UInt64 * Int32 interprets Int32 + Int32 interprets Int32 + Int32 interprets Int32 &- Int32 interprets Int32 &- Int32 conversion interprets Float32#to_i8! (negative) interprets Float32#to_i8! (negative) interprets Int8::MAX#to_u32! interprets Int8::MAX#to_u32! interprets Float64#to_f32! (positive) interprets Float64#to_f32! (positive) interprets UInt8::MAX#to_i32! interprets UInt8::MAX#to_i32! interprets Int64::MAX#to_u! interprets Int64::MAX#to_u! interprets UInt64::MAX#to_f32! interprets UInt64::MAX#to_f32! interprets UInt8::MAX#to_u8! interprets UInt8::MAX#to_u8! interprets Int16::MAX#to_u64! interprets Int16::MAX#to_u64! interprets UInt64::MAX#to_i8! interprets UInt64::MAX#to_i8! interprets Int8::MAX#to_i8! interprets Int8::MAX#to_i8! interprets UInt16::MAX#to_u64! interprets UInt16::MAX#to_u64! interprets Int64::MIN#to_u8! interprets Int64::MIN#to_u8! interprets Int64::MAX#to_u32! interprets Int64::MAX#to_u32! interprets UInt64::MAX#to_u64! interprets UInt64::MAX#to_u64! interprets UInt32::MAX#to_i! interprets UInt32::MAX#to_i! interprets Int32::MIN#to_u8! interprets Int32::MIN#to_u8! interprets UInt64::MAX#to_u16! interprets UInt64::MAX#to_u16! interprets Int32::MIN#to_i32! interprets Int32::MIN#to_i32! discards conversion discards conversion interprets Float64#to_f64! (positive) interprets Float64#to_f64! (positive) interprets Int16::MIN#to_u8! interprets Int16::MIN#to_u8! interprets UInt64::MAX#to_u! interprets UInt64::MAX#to_u! interprets UInt32::MAX#to_f64! interprets UInt32::MAX#to_f64! interprets Int8::MAX#to_i64! interprets Int8::MAX#to_i64! interprets Int32::MAX#to_i8! interprets Int32::MAX#to_i8! interprets Int32::MAX#to_i64! interprets Int32::MAX#to_i64! interprets UInt32::MAX#to_u64! interprets UInt32::MAX#to_u64! interprets Int64::MIN#to_i64! interprets Int64::MIN#to_i64! interprets Float64#to_f64! (negative) interprets Float64#to_f64! (negative) interprets Float32#to_i8! (positive) interprets Float32#to_i8! (positive) interprets Float64#to_i! (negative) interprets Float64#to_i! (negative) interprets Int16::MAX#to_i32! interprets Int16::MAX#to_i32! interprets Int32::MAX#to_i16! interprets Int32::MAX#to_i16! Int32#unsafe_chr Int32#unsafe_chr interprets Int32::MIN#to_i64! interprets Int32::MIN#to_i64! interprets Float32#to_f32! (negative) interprets Float32#to_f32! (negative) interprets Int32::MIN#to_i8! interprets Int32::MIN#to_i8! interprets Int64::MIN#to_u16! interprets Int64::MIN#to_u16! interprets Float32#to_u16! (positive) interprets Float32#to_u16! (positive) interprets Int32::MAX#to_f64! interprets Int32::MAX#to_f64! interprets UInt16::MAX#to_f64! interprets UInt16::MAX#to_f64! interprets Int8::MIN#to_u64! interprets Int8::MIN#to_u64! interprets Int8::MIN#to_f64! interprets Int8::MIN#to_f64! interprets Int32::MAX#to_u! interprets Int32::MAX#to_u! interprets UInt32::MAX#to_i64! interprets UInt32::MAX#to_i64! interprets UInt8::MAX#to_u! interprets UInt8::MAX#to_u! interprets Float32#to_i64! (positive) interprets Float32#to_i64! (positive) interprets Float64#to_u8! (positive) interprets Float64#to_u8! (positive) interprets UInt32::MAX#to_u8! interprets UInt32::MAX#to_u8! interprets Int16::MIN#to_u64! interprets Int16::MIN#to_u64! interprets Int8::MIN#to_f32! interprets Int8::MIN#to_f32! interprets Int8::MAX#to_f64! interprets Int8::MAX#to_f64! interprets Int8::MIN#to_u32! interprets Int8::MIN#to_u32! interprets UInt16::MAX#to_u16! interprets UInt16::MAX#to_u16! interprets UInt64::MAX#to_i! interprets UInt64::MAX#to_i! interprets Int8::MAX#to_u16! interprets Int8::MAX#to_u16! interprets UInt16::MAX#to_i16! interprets UInt16::MAX#to_i16! interprets Int16::MIN#to_i64! interprets Int16::MIN#to_i64! interprets Float64#to_u16! (positive) interprets Float64#to_u16! (positive) interprets UInt8::MAX#to_f32! interprets UInt8::MAX#to_f32! interprets UInt16::MAX#to_f32! interprets UInt16::MAX#to_f32! interprets Int8::MAX#to_u64! interprets Int8::MAX#to_u64! interprets Float64#to_i8! (negative) interprets Float64#to_i8! (negative) interprets Float32#to_f64! (negative) interprets Float32#to_f64! (negative) interprets Float32#to_i32! (positive) interprets Float32#to_i32! (positive) interprets UInt8::MAX#to_i8! interprets UInt8::MAX#to_i8! interprets UInt16::MAX#to_i32! interprets UInt16::MAX#to_i32! interprets Char#ord interprets Char#ord interprets Int16::MIN#to_f32! interprets Int16::MIN#to_f32! interprets Float64#to_u32! (positive) interprets Float64#to_u32! (positive) interprets Int32::MIN#to_u16! interprets Int32::MIN#to_u16! interprets Int8::MAX#to_i16! interprets Int8::MAX#to_i16! interprets Int64::MIN#to_u32! interprets Int64::MIN#to_u32! interprets Int16::MAX#to_i64! interprets Int16::MAX#to_i64! interprets Int8::MAX#to_u8! interprets Int8::MAX#to_u8! interprets Int16::MIN#to_i16! interprets Int16::MIN#to_i16! interprets Int64::MIN#to_f32! interprets Int64::MIN#to_f32! interprets Float64#to_i16! (positive) interprets Float64#to_i16! (positive) interprets Int64::MAX#to_u8! interprets Int64::MAX#to_u8! interprets Int32::MAX#to_f32! interprets Int32::MAX#to_f32! interprets Int16::MAX#to_u! interprets Int16::MAX#to_u! interprets Float64#to_i64! (positive) interprets Float64#to_i64! (positive) interprets Int32::MAX#to_u8! interprets Int32::MAX#to_u8! interprets Int64::MAX#to_f64! interprets Int64::MAX#to_f64! interprets Int16::MAX#to_f64! interprets Int16::MAX#to_f64! interprets Int32::MAX#to_u32! interprets Int32::MAX#to_u32! interprets Int64::MAX#to_i64! interprets Int64::MAX#to_i64! interprets Int64::MIN#to_u64! interprets Int64::MIN#to_u64! interprets Int32::MIN#to_u64! interprets Int32::MIN#to_u64! interprets UInt8::MAX#to_i! interprets UInt8::MAX#to_i! interprets Float64#to_f32! (negative) interprets Float64#to_f32! (negative) interprets Int16::MIN#to_f64! interprets Int16::MIN#to_f64! interprets Float32#to_u64! (positive) interprets Float32#to_u64! (positive) interprets UInt16::MAX#to_i64! interprets UInt16::MAX#to_i64! interprets Float64#to_i32! (positive) interprets Float64#to_i32! (positive) interprets Int32::MIN#to_i16! interprets Int32::MIN#to_i16! interprets Float32#to_u32! (positive) interprets Float32#to_u32! (positive) interprets UInt8::MAX#to_f64! interprets UInt8::MAX#to_f64! interprets Int64::MAX#to_u16! interprets Int64::MAX#to_u16! interprets Int64::MIN#to_u! interprets Int64::MIN#to_u! interprets Int16::MIN#to_i32! interprets Int16::MIN#to_i32! interprets Int8::MIN#to_u8! interprets Int8::MIN#to_u8! interprets Int32::MAX#to_i! interprets Int32::MAX#to_i! interprets Int64::MAX#to_u64! interprets Int64::MAX#to_u64! interprets UInt64::MAX#to_i16! interprets UInt64::MAX#to_i16! interprets Float32#to_u! (positive) interprets Float32#to_u! (positive) interprets UInt16::MAX#to_i! interprets UInt16::MAX#to_i! interprets Int32::MIN#to_f32! interprets Int32::MIN#to_f32! interprets UInt16::MAX#to_u32! interprets UInt16::MAX#to_u32! interprets Float32#to_i16! (positive) interprets Float32#to_i16! (positive) interprets Float32#to_i! (positive) interprets Float32#to_i! (positive) interprets Int8::MIN#to_i8! interprets Int8::MIN#to_i8! interprets Int16::MAX#to_i! interprets Int16::MAX#to_i! interprets Float32#to_u8! (positive) interprets Float32#to_u8! (positive) interprets Float32#to_i! (negative) interprets Float32#to_i! (negative) interprets UInt32::MAX#to_i8! interprets UInt32::MAX#to_i8! interprets Int64::MIN#to_i16! interprets Int64::MIN#to_i16! interprets Int8::MAX#to_u! interprets Int8::MAX#to_u! interprets Int16::MAX#to_u8! interprets Int16::MAX#to_u8! interprets Int64::MIN#to_i32! interprets Int64::MIN#to_i32! interprets Int8::MIN#to_i16! interprets Int8::MIN#to_i16! interprets Int16::MAX#to_u16! interprets Int16::MAX#to_u16! interprets Float64#to_u! (positive) interprets Float64#to_u! (positive) interprets UInt8::MAX#to_u16! interprets UInt8::MAX#to_u16! interprets Int16::MIN#to_i8! interprets Int16::MIN#to_i8! interprets Int16::MIN#to_u16! interprets Int16::MIN#to_u16! interprets Int8::MIN#to_u16! interprets Int8::MIN#to_u16! interprets UInt8::MAX#to_u64! interprets UInt8::MAX#to_u64! interprets Int8::MAX#to_f32! interprets Int8::MAX#to_f32! interprets Int64::MAX#to_i16! interprets Int64::MAX#to_i16! interprets Float32#to_f64! (positive) interprets Float32#to_f64! (positive) interprets Float64#to_i8! (positive) interprets Float64#to_i8! (positive) interprets Int16::MAX#to_f32! interprets Int16::MAX#to_f32! interprets Int16::MIN#to_u! interprets Int16::MIN#to_u! interprets UInt8::MAX#to_i16! interprets UInt8::MAX#to_i16! interprets Int32::MAX#to_u16! interprets Int32::MAX#to_u16! interprets Float32#to_i16! (negative) interprets Float32#to_i16! (negative) interprets Int64::MAX#to_i! interprets Int64::MAX#to_i! discards conversion with local var discards conversion with local var interprets Int16::MIN#to_u32! interprets Int16::MIN#to_u32! interprets UInt64::MAX#to_u32! interprets UInt64::MAX#to_u32! interprets Int8::MAX#to_i! interprets Int8::MAX#to_i! interprets Int16::MAX#to_i8! interprets Int16::MAX#to_i8! interprets UInt8::MAX#to_u32! interprets UInt8::MAX#to_u32! interprets Int32::MIN#to_f64! interprets Int32::MIN#to_f64! interprets UInt16::MAX#to_i8! interprets UInt16::MAX#to_i8! interprets Int8::MAX#to_i32! interprets Int8::MAX#to_i32! interprets Int8::MIN#to_i! interprets Int8::MIN#to_i! interprets Float64#to_i! (positive) interprets Float64#to_i! (positive) interprets UInt8::MAX#to_i64! interprets UInt8::MAX#to_i64! interprets Int16::MAX#to_u32! interprets Int16::MAX#to_u32! interprets UInt32::MAX#to_u! interprets UInt32::MAX#to_u! interprets Int32::MIN#to_i! interprets Int32::MIN#to_i! interprets UInt64::MAX#to_i32! interprets UInt64::MAX#to_i32! UInt8#unsafe_chr UInt8#unsafe_chr interprets Int8::MIN#to_i32! interprets Int8::MIN#to_i32! interprets Int64::MIN#to_f64! interprets Int64::MIN#to_f64! interprets Float64#to_i16! (negative) interprets Float64#to_i16! (negative) interprets UInt16::MAX#to_u8! interprets UInt16::MAX#to_u8! interprets UInt32::MAX#to_u16! interprets UInt32::MAX#to_u16! interprets Float64#to_u64! (positive) interprets Float64#to_u64! (positive) interprets Float64#to_i32! (negative) interprets Float64#to_i32! (negative) interprets UInt32::MAX#to_i32! interprets UInt32::MAX#to_i32! interprets UInt64::MAX#to_i64! interprets UInt64::MAX#to_i64! interprets Int64::MAX#to_f32! interprets Int64::MAX#to_f32! interprets Int64::MIN#to_i! interprets Int64::MIN#to_i! interprets Int16::MIN#to_i! interprets Int16::MIN#to_i! interprets Int32::MIN#to_u! interprets Int32::MIN#to_u! interprets Int64::MAX#to_i8! interprets Int64::MAX#to_i8! interprets UInt32::MAX#to_f32! interprets UInt32::MAX#to_f32! interprets Int8::MIN#to_i64! interprets Int8::MIN#to_i64! interprets Int8::MIN#to_u! interprets Int8::MIN#to_u! interprets Float32#to_f32! (positive) interprets Float32#to_f32! (positive) interprets UInt64::MAX#to_u8! interprets UInt64::MAX#to_u8! interprets Int64::MIN#to_i8! interprets Int64::MIN#to_i8! interprets UInt16::MAX#to_u! interprets UInt16::MAX#to_u! interprets Int16::MAX#to_i16! interprets Int16::MAX#to_i16! interprets UInt32::MAX#to_u32! interprets UInt32::MAX#to_u32! interprets UInt64::MAX#to_f64! interprets UInt64::MAX#to_f64! interprets UInt32::MAX#to_i16! interprets UInt32::MAX#to_i16! interprets Int32::MIN#to_u32! interprets Int32::MIN#to_u32! interprets Int64::MAX#to_i32! interprets Int64::MAX#to_i32! interprets Float32#to_i32! (negative) interprets Float32#to_i32! (negative) interprets Float32#to_i64! (negative) interprets Float32#to_i64! (negative) interprets Int32::MAX#to_u64! interprets Int32::MAX#to_u64! interprets Float64#to_i64! (negative) interprets Float64#to_i64! (negative) interprets Int32::MAX#to_i32! interprets Int32::MAX#to_i32! literals precomputes string literal length precomputes string literal length interprets a Float64 interprets a Float64 uses a string pool uses a string pool interprets an UInt64 interprets an UInt64 interprets an UInt8 interprets an UInt8 interprets an UInt128 interprets an UInt128 interprets nil interprets nil interprets a char interprets a char interprets an Int64 interprets an Int64 interprets an Int128 interprets an Int128 interprets an Int8 interprets an Int8 interprets a bool (false) interprets a bool (false) interprets a bool (true) interprets a bool (true) interprets an UInt16 interprets an UInt16 interprets an Int32 interprets an Int32 interprets a Float32 interprets a Float32 interprets a String literal interprets a String literal interprets an UInt32 interprets an UInt32 interprets an Int16 interprets an Int16 semantic: case checks exhaustiveness of enum via const checks exhaustiveness of enum via const checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal with bool and underscore at second position checks exhaustiveness for tuple literal with bool and underscore at second position can't prove case is exhaustive for @[Flags] enum, tuple case can't prove case is exhaustive for @[Flags] enum, tuple case checks exhaustiveness for tuple literal of 2 elements, and warns checks exhaustiveness for tuple literal of 2 elements, and warns checks exhaustiveness for tuple literal with types and underscore at second position checks exhaustiveness for tuple literal with types and underscore at second position can't prove case is exhaustive for @[Flags] enum can't prove case is exhaustive for @[Flags] enum checks exhaustiveness for tuple literal with bool and underscore at second position, partial match checks exhaustiveness for tuple literal with bool and underscore at second position, partial match errors if casing against a constant errors if casing against a constant checks exhaustiveness of enum through method (all cases covered) checks exhaustiveness of enum through method (all cases covered) checks exhaustiveness of single type (generic) checks exhaustiveness of single type (generic) checks exhaustiveness for tuple literal with bool and underscore at first position, partial match checks exhaustiveness for tuple literal with bool and underscore at first position, partial match checks exhaustiveness of enum via question method checks exhaustiveness of enum via question method checks exhaustiveness for tuple literal, with call checks exhaustiveness for tuple literal, with call checks exhaustiveness for tuple literal of 3 elements, all bool checks exhaustiveness for tuple literal of 3 elements, all bool checks exhaustiveness of single type (T.class) checks exhaustiveness of single type (T.class) checks exhaustiveness, covers in base type covers (generic type) checks exhaustiveness, covers in base type covers (generic type) checks exhaustiveness, covers in base type covers checks exhaustiveness, covers in base type covers covers all types covers all types doesn't check exhaustiveness when using 'when' doesn't check exhaustiveness when using 'when' checks exhaustiveness of bool type with other types checks exhaustiveness of bool type with other types checks exhaustiveness of single type checks exhaustiveness of single type checks exhaustiveness of single type (Foo(T).class) checks exhaustiveness of single type (Foo(T).class) checks exhaustiveness for tuple literal with bool and underscore at second position checks exhaustiveness for tuple literal with bool and underscore at second position checks exhaustiveness of enum combined with another type checks exhaustiveness of enum combined with another type checks exhaustiveness for tuple literal of 2 elements, first is enum checks exhaustiveness for tuple literal of 2 elements, first is enum checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal with bool and underscore at first position checks exhaustiveness for tuple literal with types and underscore at first position checks exhaustiveness for tuple literal with types and underscore at first position checks exhaustiveness for tuple literal with bool and underscore at first position, with partial match checks exhaustiveness for tuple literal with bool and underscore at first position, with partial match checks exhaustiveness of bool type (missing false) checks exhaustiveness of bool type (missing false) checks exhaustiveness for tuple literal of 3 elements, and warns checks exhaustiveness for tuple literal of 3 elements, and warns checks exhaustiveness of nil type with nil literal checks exhaustiveness of nil type with nil literal checks exhaustiveness of enum (all cases covered) checks exhaustiveness of enum (all cases covered) checks exhaustiveness of nilable type with nil literal checks exhaustiveness of nilable type with nil literal checks exhaustiveness of union with bool checks exhaustiveness of union with bool checks exhaustiveness for tuple literal of 3 elements, all enums checks exhaustiveness for tuple literal of 3 elements, all enums checks exhaustiveness for tuple literal, and passes checks exhaustiveness for tuple literal, and passes checks exhaustiveness for tuple literal of 2 elements, first is bool checks exhaustiveness for tuple literal of 2 elements, first is bool checks exhaustiveness of union type with virtual type checks exhaustiveness of union type with virtual type can prove case is exhaustive for @[Flags] enum when matching type can prove case is exhaustive for @[Flags] enum when matching type checks exhaustiveness for tuple literal with bool and underscore at second position, with partial match checks exhaustiveness for tuple literal with bool and underscore at second position, with partial match checks exhaustiveness of bool type (missing true) checks exhaustiveness of bool type (missing true) Code gen: union type codegens if with same nested union codegens if with same nested union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union assigns union to larger union respects union payload alignment when upcasting Bool (#14898) respects union payload alignment when upcasting Bool (#14898) sorts restrictions when there are unions sorts restrictions when there are unions codegens union type when obj is not union but arg is codegens union type when obj is not union but arg is dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable dispatch call to object method on nilable 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 and restrictions codegens union type when no obj and restrictions assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to larger union when source is nilable 2 assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union assigns union to union codegens union type as return value codegens union type as return value codegens union type when no obj codegens union type when no obj provides T as a tuple literal provides T as a tuple literal codegens union type when obj is union and no args codegens union type when obj is union and no args assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 assigns union to larger union when source is nilable 1 codegens union type when obj is union and arg is union codegens union type when obj is union and arg is union codegens union type for instance var codegens union type for instance var codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s codegens union to_s Semantic: alias doesn't crash by infinite recursion against type alias and generics (#5329) doesn't crash by infinite recursion against type alias and generics (#5329) doesn't find type parameter in alias (#3502) doesn't find type parameter in alias (#3502) works with alias type as restriction works with alias type as restriction reopens module through alias reopens module through alias inherits class through alias inherits class through alias can use .class in alias (#2835) can use .class in alias (#2835) allows defining recursive aliases allows defining recursive aliases overloads union type through alias overloads union type through alias allows defining recursive fun aliases allows defining recursive fun aliases reopens struct through alias reopens struct through alias looks up alias for macro resolution (#3548) looks up alias for macro resolution (#3548) allows recursive array with alias allows recursive array with alias errors if defining infinite recursive alias errors if defining infinite recursive alias allows using generic type of recursive alias as restriction (#488) allows using generic type of recursive alias as restriction (#488) can pass recursive alias to proc can pass recursive alias to proc finds type through alias (#4645) finds type through alias (#4645) resolves alias type resolves alias type errors if alias already defined errors if alias already defined resolves type through alias (#563) resolves type through alias (#563) reopens struct through alias within itself reopens struct through alias within itself declares alias inside type declares alias inside type reopens class through alias within itself reopens class through alias within itself uses constant in alias (#3259) uses constant in alias (#3259) errors if trying to use typeof in alias errors if trying to use typeof in alias reopens module through alias within itself reopens module through alias within itself includes module through alias includes module through alias reopens class through alias reopens class through alias allows using alias type as generic type allows using alias type as generic type inherits struct through alias inherits struct through alias errors if trying to resolve type of recursive alias errors if trying to resolve type of recursive alias errors if defining infinite recursive alias in union errors if defining infinite recursive alias in union errors if alias is already defined as another type errors if alias is already defined as another type uses constant in alias with math (#3259) uses constant in alias with math (#3259) errors if declares alias inside if errors if declares alias inside if Crystal::Repl::Interpreter autocast autocasts float32 var to float64 (#12560) autocasts float32 var to float64 (#12560) autocasts number literal to integer autocasts number literal to integer autocasts symbol to enum in ivar initializer (#12216) autocasts symbol to enum in ivar initializer (#12216) autocasts symbol to enum autocasts symbol to enum autocasts number literal to float autocasts number literal to float autocasts integer var to integer (#12560) autocasts integer var to integer (#12560) autocasts int in multidispatch autocasts int in multidispatch autocasts integer var to float (#12560) autocasts integer var to float (#12560) autocasts symbol to enum in multidispatch (#11782) autocasts symbol to enum in multidispatch (#11782) Crystal normalize_path assert assert assert assert assert assert assert assert Semantic: not doesn't restrict and doesn't restrict and types not as NoReturn if exp is NoReturn types not as NoReturn if exp is NoReturn doesn't restrict and in while (#4243) doesn't restrict and in while (#4243) filters types inside if filters types inside if types not types not filters types inside if/else filters types inside if/else filters types with !is_a? filters types with !is_a? Visibility modifiers allows invoking private setter with self allows invoking private setter with self allows invoking protected method from subclass allows invoking protected method from subclass allows invoking protected method from virtual type allows invoking protected method from virtual type gives correct error on unknown call (#2838) gives correct error on unknown call (#2838) allows invoking protected method from the same class allows invoking protected method from the same class allows calling protected method from nested generic class (1) allows calling protected method from nested generic class (1) allows invoking protected method from namespaced type to namespace allows invoking protected method from namespaced type to namespace allows setting visibility modifier to macro allows setting visibility modifier to macro defines protected initialize (#7501) defines protected initialize (#7501) allows setting visibility modifier to macro that generates many methods (2) allows setting visibility modifier to macro that generates many methods (2) allows invoking protected method from subclass (2) allows invoking protected method from subclass (2) allows invoking protected from instance to class allows invoking protected from instance to class errors if invoking protected method from non-subclass, generated with macro that generates a macro errors if invoking protected method from non-subclass, generated with macro that generates a macro allows calling protected method from nested generic class (2) allows calling protected method from nested generic class (2) allows invoking protected method between types in the same namespace when inheriting allows invoking protected method between types in the same namespace when inheriting allows invoking private method from the same class allows invoking private method from the same class errors if invoking protected method from non-subclass errors if invoking protected method from non-subclass automatically makes initialize be protected automatically makes initialize be protected errors if applying visibility modifier to non-def or non-call errors if applying visibility modifier to non-def or non-call allows setting visibility modifier to macro that generates many methods (1) allows setting visibility modifier to macro that generates many methods (1) allows invoking protected method between types in the same namespace allows invoking protected method between types in the same namespace errors if invoking protected method from top-level errors if invoking protected method from top-level allows invoking protected method from namespace to namespaced type allows invoking protected method from namespace to namespaced type disallows invoking private method disallows invoking private method handles virtual types (#8561) handles virtual types (#8561) Code gen: named args sends two regular arguments as named arguments in inverted position (2) sends two regular arguments as named arguments in inverted position (2) calls with named arg as object method calls with named arg as object method overloads based on required named args overloads based on required named args sends one regular argument as named argument sends one regular argument as named argument calls with named arg and other args calls with named arg and other args calls with named arg calls with named arg uses named args in dispatch uses named args in dispatch calls new with named arg calls new with named arg calls twice with different types calls twice with different types 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) 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: sizeof alignof gets alignof union gets alignof union alignof mixed union is not less than alignof its variant types alignof mixed union is not less than alignof its variant types gets alignof primitive types gets alignof primitive types gets alignof class gets alignof class gets alignof struct gets alignof struct can use instance_sizeof in type argument can use instance_sizeof in type argument can use sizeof of virtual type can use sizeof of virtual type doesn't precompute sizeof of module (#7741) doesn't precompute sizeof of module (#7741) instance_alignof gets instance_alignof class gets instance_alignof class gets instance_alignof a generic type with type vars gets instance_alignof a generic type with type vars gets sizeof Void gets sizeof Void gets sizeof int gets sizeof int gets sizeof struct gets sizeof struct doesn't precompute sizeof of abstract struct (#7741) doesn't precompute sizeof of abstract struct (#7741) gets instance_sizeof class gets instance_sizeof class returns correct sizeof for abstract struct (#4319) returns correct sizeof for abstract struct (#4319) gets sizeof class gets sizeof class gets sizeof NoReturn gets sizeof NoReturn gets instance_sizeof a generic type with type vars gets instance_sizeof a generic type with type vars gets sizeof Nil (#7644) gets sizeof Nil (#7644) gets sizeof union gets sizeof union 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 instance_sizeof of virtual type can use instance_sizeof of virtual type Code gen: cast allows casting nilable type to Void* (3) allows casting nilable type to Void* (3) upcasts type to virtual (2) (#3304) upcasts type to virtual (2) (#3304) casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type casts from virtual to single type 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) upcasts from non-generic to generic upcasts from non-generic to generic casts to base class making it virtual casts to base class making it virtual upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment upcasts from union to union with different alignment casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts (bug) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from nilable type to virtual type (#3512) casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from pointer to pointer casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError casts from union to another union raises TypeCastError can cast to metaclass (#11121) can cast to metaclass (#11121) allows casting nilable type to Void* (1) allows casting nilable type to Void* (1) allows casting object to pointer and back allows casting object to pointer and back casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts from union to single type raises TypeCastError casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts to module casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts from nilable to nil raises TypeCastError casts between union types, where union has a tuple type (#3377) casts between union types, where union has a tuple type (#3377) casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts from union to single type casts with block var that changes type (#3341) casts with block var that changes type (#3341) can cast from Void* to virtual type (#3014) can cast from Void* to virtual type (#3014) casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from int to int casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union casts from union to another union downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment downcasts from union to union with different alignment cast virtual metaclass type to nilable virtual instance type (#12628) cast virtual metaclass type to nilable virtual instance type (#12628) casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil casts from nilable to nil upcasts type to virtual (#3304) upcasts type to virtual (#3304) sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment sidecasts from union to union with different alignment allows casting nilable type to Void* (2) allows casting nilable type to Void* (2) casts to bigger union casts to bigger union allows casting nil to Void* allows casting nil to Void* doesn't corrupt stack when downcasting union to union with different alignment (#14285) doesn't corrupt stack when downcasting union to union with different alignment (#14285) casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError casts from virtual to single type raises TypeCastError Restrictions works with static array (#637) works with static array (#637) makes metaclass subclass pass parent metaclass restriction (#2079) makes metaclass subclass pass parent metaclass restriction (#2079) errors if using free var without forall errors if using free var without forall matches alias against alias in block type matches alias against alias in block type should not let GenericChild(Base) pass as a GenericBase(Child) (#1294) should not let GenericChild(Base) pass as a GenericBase(Child) (#1294) errors on T::Type that's a union when used from block type restriction errors on T::Type that's a union when used from block type restriction restrict restricts virtual type with included module 1 restricts virtual type with included module 1 restricts generic module instance with class restricts generic module instance with class restricts generic module instance with another module restricts generic module instance with another module restricts generic module instance with another generic module instance restricts generic module instance with another generic module instance restricts virtual generic class against uninstantiated generic subclass (1) restricts virtual generic class against uninstantiated generic subclass (1) restricts class against uninstantiated generic base class through multiple inheritance (2) (#9660) restricts class against uninstantiated generic base class through multiple inheritance (2) (#9660) restricts type with same type restricts type with same type restricts module with another module restricts module with another module restricts type with superclass restricts type with superclass restricts virtual type with included module 2 restricts virtual type with included module 2 restricts module through generic include (#4287) restricts module through generic include (#4287) restricts type with included module restricts type with included module restricts class against uninstantiated generic base class through multiple inheritance (1) (#9660) restricts class against uninstantiated generic base class through multiple inheritance (1) (#9660) restricts type with another type restricts type with another type restricts virtual generic class against uninstantiated generic subclass (2) restricts virtual generic class against uninstantiated generic subclass (2) errors if can't find type on lookup errors if can't find type on lookup restricts virtual metaclass type against metaclass (#3438) restricts virtual metaclass type against metaclass (#3438) passes #278 passes #278 errors if using typeof in block restriction errors if using typeof in block restriction doesn't error if using NamedTuple with no args doesn't error if using NamedTuple with no args self always matches instance type in restriction self always matches instance type in restriction works with generic class metaclass vs. generic instance class metaclass works with generic class metaclass vs. generic instance class metaclass does not treat single path as free variable when given number (1) (#11859) does not treat single path as free variable when given number (1) (#11859) errors if using NamedTuple with positional args errors if using NamedTuple with positional args restricts class union type to overloads with classes (2) restricts class union type to overloads with classes (2) restricts class union type to overloads with classes restricts class union type to overloads with classes errors if using Tuple with named args errors if using Tuple with named args matches virtual type against alias matches virtual type against alias doesn't error if using Tuple with no args doesn't error if using Tuple with no args sets number as free variable (#2699) sets number as free variable (#2699) errors if using typeof in block restriction errors if using typeof in block restriction matches number in bound free variable (#13605) matches number in bound free variable (#13605) errors if using typeof inside generic type errors if using typeof inside generic type works with static array that uses underscore works with static array that uses underscore does not treat single path as free variable when given number (2) (#11859) does not treat single path as free variable when given number (2) (#11859) matches free variable for type variable matches free variable for type variable works with generic compared to fixed (primitive) type works with generic compared to fixed (primitive) type errors on T::Type that's union when used from type restriction errors on T::Type that's union when used from type restriction allows passing recursive type to free var (#1076) allows passing recursive type to free var (#1076) restriction_of? Union handles redefinitions (1) (#12330) handles redefinitions (1) (#12330) orders union before generic (#12330) orders union before generic (#12330) handles redefinitions (2) (#12330) handles redefinitions (2) (#12330) Generic vs Generic keeps typed Generic before untyped Generic keeps typed Generic before untyped Generic inserts typed Generic before untyped Generic inserts typed Generic before untyped Generic Path vs Path keeps typed Path before untyped Path keeps typed Path before untyped Path inserts typed Path before untyped Path inserts typed Path before untyped Path Generic vs Path inserts untyped Generic before untyped Path inserts untyped Generic before untyped Path keeps untyped Generic before untyped Path keeps untyped Generic before untyped Path keeps typed Generic before untyped Path keeps typed Generic before untyped Path inserts typed Generic before untyped Path inserts typed Generic before untyped Path inserts untyped Generic before untyped Path (2) inserts untyped Generic before untyped Path (2) Metaclass vs Metaclass keeps typed Metaclass before untyped Metaclass keeps typed Metaclass before untyped Metaclass inserts typed Metaclass before untyped Metaclass inserts typed Metaclass before untyped Metaclass Metaclass vs Path inserts metaclass before Object inserts metaclass before Object keeps metaclass before Object keeps metaclass before Object doesn't error if path is undefined and method is not called (1) (#12516) doesn't error if path is undefined and method is not called (1) (#12516) keeps metaclass before Value keeps metaclass before Value inserts metaclass before Class inserts metaclass before Class doesn't error if path is undefined and method is not called (2) (#12516) doesn't error if path is undefined and method is not called (2) (#12516) keeps metaclass before Class keeps metaclass before Class inserts metaclass before Value inserts metaclass before Value free variables keeps constant before free variable with same name keeps constant before free variable with same name inserts path before free variable with same name inserts path before free variable with same name inserts path before free variable even if free var resolves to a more specialized type inserts path before free variable even if free var resolves to a more specialized type keeps path before free variable with same name keeps path before free variable with same name inserts constant before free variable with same name inserts constant before free variable with same name keeps path before free variable even if free var resolves to a more specialized type keeps path before free variable even if free var resolves to a more specialized type Path vs NumberLiteral inserts constant before number literal of same value with generic arguments inserts constant before number literal of same value with generic arguments inserts number literal before constant of same value with generic arguments inserts number literal before constant of same value with generic arguments Underscore vs Path works with splats and modules, under -Dpreview_overload_order (#12854) works with splats and modules, under -Dpreview_overload_order (#12854) keeps underscore after Path (#12854) keeps underscore after Path (#12854) inserts Path before underscore (#12854) inserts Path before underscore (#12854) GenericClassType vs GenericClassInstanceType keeps GenericClassInstanceType before GenericClassType keeps GenericClassInstanceType before GenericClassType doesn't mix different generic classes doesn't mix different generic classes works with classes in different namespaces works with classes in different namespaces inserts GenericClassInstanceType before GenericClassType inserts GenericClassInstanceType before GenericClassType NamedTuple vs NamedTuple keeps more specialized NamedTuple before less specialized one keeps more specialized NamedTuple before less specialized one inserts more specialized NamedTuple before less specialized one inserts more specialized NamedTuple before less specialized one doesn't mix incompatible NamedTuples (#10238) doesn't mix incompatible NamedTuples (#10238) works with generic class metaclass vs. generic class metaclass works with generic class metaclass vs. generic class metaclass restricts aliased typedef type (#9474) restricts aliased typedef type (#9474) sets number as unbound generic type var (#13110) sets number as unbound generic type var (#13110) errors if using typeof errors if using typeof works with union against unions of generics works with union against unions of generics errors if can't find type on lookup with nested type errors if can't find type on lookup with nested type self always matches instance type in return type self always matches instance type in return type Parser warnings warns on missing space before colon in anonymous block param type restriction in anonymous block param type restriction in type declaration in type declaration in block param type restriction in block param type restriction in return type restriction in return type restriction warns on suffix-less UInt64 literals > Int64::MAX warns on suffix-less UInt64 literals > Int64::MAX Crystal::Repl::Interpreter casts proc call arguments to proc arg types (#12350) casts proc call arguments to proc arg types (#12350) does call without receiver inside closure does call without receiver inside closure procs casts from nilable proc type to proc type casts from nilable proc type to proc type interprets proc literal with args interprets proc literal with args interprets call inside Proc type interprets call inside Proc type can downcast Proc(T) to Proc(Nil) can downcast Proc(T) to Proc(Nil) discards proc call discards proc call interprets no args proc literal interprets no args proc literal calls proc primitive on union of module that has no subtypes (#12954) calls proc primitive on union of module that has no subtypes (#12954) Code gen: automatic cast casts literal integer (Int32 -> Float64) casts literal integer (Int32 -> Float64) does multidispatch with automatic casting (3) does multidispatch with automatic casting (3) does multidispatch with automatic casting (2) (#8217) does multidispatch with automatic casting (2) (#8217) casts integer variable to larger type (#9565) casts integer variable to larger type (#9565) does multidispatch with automatic casting (1) (#8217) does multidispatch with automatic casting (1) (#8217) casts Int32 to Int64 in cvar assignment casts Int32 to Int64 in cvar assignment casts Int32 to Int64 in ivar type declaration in generic casts Int32 to Int64 in ivar type declaration in generic casts Symbol to Enum in ivar assignment casts Symbol to Enum in ivar assignment casts literal integer (Int32 -> Float32) casts literal integer (Int32 -> Float32) casts Symbol to Enum in ivar type declaration casts Symbol to Enum in ivar type declaration casts Int32 to Int64 in lvar assignment casts Int32 to Int64 in lvar assignment casts literal integer (Int64 -> Int32, ok) casts literal integer (Int64 -> Int32, ok) casts Int32 to Int64 in ivar type declaration casts Int32 to Int64 in ivar type declaration casts literal float (Float64 -> Float32) casts literal float (Float64 -> Float32) casts Int32 to Int64 in ivar assignment casts Int32 to Int64 in ivar assignment casts literal integer (Int32 -> Int64) casts literal integer (Int32 -> Int64) casts Int32 -> Int64 in arg restriction casts Int32 -> Int64 in arg restriction casts literal float (Float32 -> Float64) casts literal float (Float32 -> Float64) casts symbol literal to enum casts symbol literal to enum casts Int32 to Int64 in cvar type declaration casts Int32 to Int64 in cvar type declaration doesn't autocast number on union (#8655) doesn't autocast number on union (#8655) Code gen: array literal spec creates custom non-generic array creates custom non-generic array creates custom non-generic array in nested module creates custom non-generic array in nested module creates custom non-generic array, with splats creates custom non-generic array, with splats creates custom non-generic array in module creates custom non-generic array in module creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array creates typed array assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works assignment in array literal works creates custom generic array via alias (2) creates custom generic array via alias (2) creates custom generic array in module (#5684) creates custom generic array in module (#5684) creates custom generic array via alias creates custom generic array via alias creates custom generic array, with splats creates custom generic array, with splats assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works assignment in array-like literal works creates custom generic array creates custom generic array creates custom generic array with type var creates custom generic array with type var Code gen: named tuple gets keys at compile time (1) gets keys at compile time (1) upcasts named tuple union to compatible named tuple upcasts named tuple union to compatible named tuple assigns named tuple to compatible named tuple assigns named tuple to compatible named tuple does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class does to_s for NamedTuple class assigns named tuple inside union to union with compatible named tuple assigns named tuple inside union to union with compatible named tuple codegens tuple nilable index (1) codegens tuple nilable index (1) codegens union of tuple of float with tuple of tuple of float codegens union of tuple of float with tuple of tuple of float assigns named tuple union to compatible named tuple assigns named tuple union to compatible named tuple codegens tuple index codegens tuple index merges two named tuple types with same keys but different types (2) merges two named tuple types with same keys but different types (2) doesn't error if NamedTuple includes a non-generic module (#10380) doesn't error if NamedTuple includes a non-generic module (#10380) upcasts named tuple inside compatible named tuple upcasts named tuple inside compatible named tuple upcasts named tuple inside union to union with compatible named tuple upcasts named tuple inside union to union with compatible named tuple codegens tuple nilable index (3) codegens tuple nilable index (3) provides T as a named tuple literal provides T as a named tuple literal codegens tuple index another order codegens tuple index another order codegens tuple nilable index (2) codegens tuple nilable index (2) downcasts union inside tuple to value (#3907) downcasts union inside tuple to value (#3907) gets keys at compile time (2) gets keys at compile time (2) passes named tuple to def passes named tuple to def doesn't crash when overload doesn't match doesn't crash when overload doesn't match accesses T and creates instance from it accesses T and creates instance from it merges two named tuple types with same keys but different types (1) merges two named tuple types with same keys but different types (1) assigns two same-size named tuple types to a same var (#3132) assigns two same-size named tuple types to a same var (#3132) allows named tuple covariance allows named tuple covariance gets size at compile time gets size at compile time Crystal::Repl::Interpreter types interprets class for module type (#12203) interprets class for module type (#12203) interprets class for virtual_type type interprets class for virtual_type type discards crystal_type_id discards crystal_type_id discards typeof discards typeof interprets crystal_type_id for non-nil interprets crystal_type_id for non-nil does class method on virtual metaclass casted to generic metaclass (#12302) does class method on virtual metaclass casted to generic metaclass (#12302) interprets crystal_type_id for nil interprets crystal_type_id for nil interprets class_crystal_instance_type_id interprets class_crystal_instance_type_id interprets class for virtual_type type (struct) interprets class for virtual_type type (struct) interprets crystal_type_id for virtual metaclass type (#12228) interprets crystal_type_id for virtual metaclass type (#12228) discards generic discards generic interprets class for non-union type interprets class for non-union type discards Path discards Path discards .class discards .class discards class for non-union type discards class for non-union type discards class for virtual_type type discards class for virtual_type type interprets path to type interprets path to type Crystal::Playground::Session assert assert Codegen: is_a? 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 with union restricts union with union does is_a?(generic type) for nested generic inheritance, through upcast (1) does is_a?(generic type) for nested generic inheritance, through upcast (1) codegens is_a? from nilable reference union type to type codegens is_a? from nilable reference union type to type codegens is_a? with virtual and nil codegens is_a? with virtual and nil 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) does is_a? with generic class metaclass does is_a? with generic class metaclass evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 evaluates method on filtered union type 3 says true for Class.is_a?(Class.class) (#4374) says true for Class.is_a?(Class.class) (#4374) codegens is_a? casts union to nilable in method codegens is_a? casts union to nilable in method does is_a? with && and true condition does is_a? with && and true condition codegens is_a? true for simple type codegens is_a? true for simple type codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true codegens is_a? with a Const does comparison and gives true restricts simple type with union restricts simple type with union doesn't error if result is discarded (#14113) doesn't error if result is discarded (#14113) doesn't work with inherited generic class against an instantiation (2) doesn't work with inherited generic class against an instantiation (2) restricts union metaclass to metaclass (#12295) restricts union metaclass to metaclass (#12295) does is_a? for virtual generic instance type against generic does is_a? for virtual generic instance type against generic evaluate method on filtered type evaluate method on filtered type evaluates method on filtered union type evaluates method on filtered union type codegens untyped var (#4009) codegens untyped var (#4009) works with inherited generic class against an instantiation (3) works with inherited generic class against an instantiation (3) evaluates method on filtered union type 2 evaluates method on filtered union type 2 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 type merge (1) (#548) doesn't type merge (1) (#548) codegens is_a? from nilable reference union type to nil codegens is_a? from nilable reference union type to nil 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 skip assignment when used in combination with .is_a? and && (#1121) doesn't skip assignment when used in combination with .is_a? and && (#1121) codegens is_a? with union gives true codegens is_a? with union gives true codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used codegens when is_a? is always false but properties are used gives false if generic type doesn't match exactly gives false if generic type doesn't match exactly does is_a?(generic type) for nested generic inheritance (2) does is_a?(generic type) for nested generic inheritance (2) says true for Class.is_a?(Class.class.class) (#4374) says true for Class.is_a?(Class.class.class) (#4374) codegens is_a? casts union to nilable codegens is_a? casts union to nilable does is_a? for union of module and type does is_a? for union of module and type resets truthy state after visiting nodes (bug) resets truthy state after visiting nodes (bug) codegens is_a? with virtual codegens is_a? with virtual says false for GenericChild(Base).is_a?(GenericBase(Child)) (#1294) says false for GenericChild(Base).is_a?(GenericBase(Child)) (#1294) passes is_a? with generic module type on virtual type (#10302) passes is_a? with generic module type on virtual type (#10302) transforms else if condition is always falsey transforms else if condition is always falsey codegens is_a? with nilable gives true codegens is_a? with nilable gives true doesn't type merge (2) (#548) doesn't type merge (2) (#548) transforms then if condition is always truthy transforms then if condition is always truthy codegens is_a? with virtual and module codegens is_a? with virtual and module does is_a?/responds_to? twice (#1451) does is_a?/responds_to? twice (#1451) codegens is_a? with nilable gives false because other type 1 codegens is_a? with nilable gives false because other type 1 doesn't skip assignment when used in combination with .is_a? (true case, else) (#1121) doesn't skip assignment when used in combination with .is_a? (true case, else) (#1121) works with inherited generic class against an instantiation works with inherited generic class against an instantiation evaluate method on filtered type nilable type not-nil evaluate method on filtered type nilable type not-nil codegens is_a? on right side of and codegens is_a? on right side of and codegens is_a? from virtual type to module codegens is_a? from virtual type to module 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 does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) does is_a? for generic type against generic class instance type (#12304) says false for value.is_a?(Class) says false for value.is_a?(Class) codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false codegens is_a? with a Const does comparison and gives false evaluate method on filtered type nilable type nil evaluate method on filtered type nilable type nil restricts virtual metaclass against virtual metaclass type restricts virtual metaclass against virtual metaclass type does is_a? with more strict virtual type does is_a? with more strict virtual type restricts metaclass against virtual metaclass type restricts metaclass against virtual metaclass type visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) visits 1.to_s twice, may trigger enclosing_call (#4364) virtual metaclass type is not virtual instance type (#12628) virtual metaclass type is not virtual instance type (#12628) codegens is_a? with nilable gives false because no type codegens is_a? with nilable gives false because no type codegens is_a? false for simple type codegens is_a? false for simple type does is_a?(generic type) for nested generic inheritance (1) (#9660) does is_a?(generic type) for nested generic inheritance (1) (#9660) restricts type in else but lazily restricts type in else but lazily 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) codegens is_a? with nilable gives false because other type 2 codegens is_a? with nilable gives false because other type 2 does is_a? with union type, don't resolve to virtual type (#10244) does is_a? with union type, don't resolve to virtual type (#10244) codegens is_a? with nilable gives false because no type codegens is_a? with nilable gives false because no type codegens is_a? with union gives true codegens is_a? with union gives true Crystal::Doc::Macro args_to_s shows splat arg shows splat arg shows simple arg and double splat arg shows simple arg and double splat arg shows external name of arg with quotes and escaping shows external name of arg with quotes and escaping shows simple args shows simple args shows default value with highlighting shows default value with highlighting shows block arg shows block arg shows simple arg and block arg shows simple arg and block arg shows double splat arg shows double splat arg shows external name of arg shows external name of arg shows double splat arg shows double splat arg shows simple arg and splat arg shows simple arg and splat arg Crystal::Doc::MarkdDocRenderer expand_code_links finds method with exclamation mark finds method with exclamation mark finds multiple methods with brackets finds multiple methods with brackets finds operator method finds operator method finds types from nested finds types from nested doesn't find sibling methods of wrong type doesn't find sibling methods of wrong type doesn't find method with wrong number of args doesn't find method with wrong number of args finds operator method with unspecified args finds operator method with unspecified args doesn't spuriously match range literals doesn't spuriously match range literals finds constant finds constant doesn't find wrong kind of sibling methods doesn't find wrong kind of sibling methods finds method of an absolute type finds method of an absolute type finds method with args finds method with args finds absolute type finds absolute type doesn't find method with wrong number of args doesn't find method with wrong number of args finds multiple kinds of things finds multiple kinds of things doesn't find type not at word boundary doesn't find type not at word boundary doesn't find sibling methods with fake receiver doesn't find sibling methods with fake receiver finds method with question mark finds method with question mark finds methods of a type finds methods of a type finds sibling methods finds sibling methods doesn't find parents' methods doesn't find parents' methods finds method with zero args finds method with zero args doesn't find substrings for methods doesn't find substrings for methods matches methods on single-character class names matches methods on single-character class names doesn't find wrong absolute type doesn't find wrong absolute type finds method with unspecified args finds method with unspecified args finds sibling methods with self receiver finds sibling methods with self receiver finds sibling methods finds sibling methods doesn't match with different separator doesn't match with different separator finds nested type finds nested type doesn't find wrong kind of methods doesn't find wrong kind of methods doesn't find parents' methods doesn't find parents' methods finds types from base finds types from base does not break when referencing lib type (#9928) does not break when referencing lib type (#9928) finds method with args even with empty brackets finds method with args even with empty brackets renders html renders "

Foo

" renders "

Foo

" renders code spans renders "`