Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unhandled Failure detected in DESTROY #6076

Closed
p6rt opened this issue Feb 14, 2017 · 6 comments
Closed

unhandled Failure detected in DESTROY #6076

p6rt opened this issue Feb 14, 2017 · 6 comments
Labels

Comments

@p6rt
Copy link

p6rt commented Feb 14, 2017

Migrated from rt.perl.org#130786 (status was 'rejected')

Searchable as RT130786$

@p6rt
Copy link
Author

p6rt commented Feb 14, 2017

From @zoffixznet

The Failure has DESTROY submethod[^1] with a comment above it saying "Shouldn't happen". But I did manage to make it happen,
but only on a 32-bit box. I have both 64-bit and 32-bit boxes with 2017.01-121-gf94cb21 on them and the warning
happens only on the 32-bit box.

Attached are the program and the output it generated. The warnings appear around test 100.

[1] https://github.com/rakudo/rakudo/blob/b51a5505a6b766e6be1861f4f6d08a0986b1a7ac/src/core/Failure.pm#L34-L35

@p6rt
Copy link
Author

p6rt commented Feb 14, 2017

From @zoffixznet

$ perl6 foo.p6
  ok 1 - 3..4 ~~ -1/0..1/0
  ok 2 - 0/0..0/0 ~~ -1/0..1/0
  ok 3 - 2..3 ~~ 2..3
  ok 4 - "2".."3" ~~ 2..3
  ok 5 - 2.0..3.0 ~~ 2..3
  ok 6 - 2..3 ~~ 2..3
  ok 7 - 2.5..2.8 ~~ 2..3
  ok 8 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2..3
  ok 9 - 2..FatRat.new(3, 1) ~~ 2..3
  ok 10 - 2e0..FatRat.new(3, 1) ~~ 2..3
  ok 11 - 2.5..FatRat.new(3, 1) ~~ 2..3
  ok 12 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2..3
  ok 13 - 1..3 ~~ 2..3
  ok 14 - "2".."4" ~~ 2..3
  ok 15 - -2..5.0 ~~ 2..3
  ok 16 - -10..10 ~~ 2..3
  ok 17 - 2.5..6.5 ~~ 2..3
  ok 18 - 1^..3 ~~ 2..3
  ok 19 - "2"..^"4" ~~ 2..3
  ok 20 - "1"^..^3 ~~ 2..3
  ok 21 - <0/0>..<0/0> ~~ 2..3
  ok 22 - FatRat.new(3, 1)..10 ~~ 2..3
  ok 23 - -2e0..FatRat.new(2, 1) ~~ 2..3
  ok 24 - 2..3 ~~ 2..3e0
  ok 25 - "2".."3" ~~ 2..3e0
  ok 26 - 2.0..3.0 ~~ 2..3e0
  ok 27 - 2..3 ~~ 2..3e0
  ok 28 - 2.5..2.8 ~~ 2..3e0
  ok 29 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2..3e0
  ok 30 - 2..FatRat.new(3, 1) ~~ 2..3e0
  ok 31 - 2e0..FatRat.new(3, 1) ~~ 2..3e0
  ok 32 - 2.5..FatRat.new(3, 1) ~~ 2..3e0
  ok 33 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2..3e0
  ok 34 - 1..3 ~~ 2..3e0
  ok 35 - "2".."4" ~~ 2..3e0
  ok 36 - -2..5.0 ~~ 2..3e0
  ok 37 - -10..10 ~~ 2..3e0
  ok 38 - 2.5..6.5 ~~ 2..3e0
  ok 39 - 1^..3 ~~ 2..3e0
  ok 40 - "2"..^"4" ~~ 2..3e0
  ok 41 - "1"^..^3 ~~ 2..3e0
  ok 42 - <0/0>..<0/0> ~~ 2..3e0
  ok 43 - FatRat.new(3, 1)..10 ~~ 2..3e0
  ok 44 - -2e0..FatRat.new(2, 1) ~~ 2..3e0
  ok 45 - 2..3 ~~ 2..3.0
  ok 46 - "2".."3" ~~ 2..3.0
  ok 47 - 2.0..3.0 ~~ 2..3.0
  ok 48 - 2..3 ~~ 2..3.0
  ok 49 - 2.5..2.8 ~~ 2..3.0
  ok 50 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2..3.0
  ok 51 - 2..FatRat.new(3, 1) ~~ 2..3.0
  ok 52 - 2e0..FatRat.new(3, 1) ~~ 2..3.0
  ok 53 - 2.5..FatRat.new(3, 1) ~~ 2..3.0
  ok 54 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2..3.0
  ok 55 - 1..3 ~~ 2..3.0
  ok 56 - "2".."4" ~~ 2..3.0
  ok 57 - -2..5.0 ~~ 2..3.0
  ok 58 - -10..10 ~~ 2..3.0
  ok 59 - 2.5..6.5 ~~ 2..3.0
  ok 60 - 1^..3 ~~ 2..3.0
  ok 61 - "2"..^"4" ~~ 2..3.0
  ok 62 - "1"^..^3 ~~ 2..3.0
  ok 63 - <0/0>..<0/0> ~~ 2..3.0
  ok 64 - FatRat.new(3, 1)..10 ~~ 2..3.0
  ok 65 - -2e0..FatRat.new(2, 1) ~~ 2..3.0
  ok 66 - 2..3 ~~ 2..FatRat.new(3, 1)
  ok 67 - "2".."3" ~~ 2..FatRat.new(3, 1)
  ok 68 - 2.0..3.0 ~~ 2..FatRat.new(3, 1)
  ok 69 - 2..3 ~~ 2..FatRat.new(3, 1)
  ok 70 - 2.5..2.8 ~~ 2..FatRat.new(3, 1)
  ok 71 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2..FatRat.new(3, 1)
  ok 72 - 2..FatRat.new(3, 1) ~~ 2..FatRat.new(3, 1)
  ok 73 - 2e0..FatRat.new(3, 1) ~~ 2..FatRat.new(3, 1)
  ok 74 - 2.5..FatRat.new(3, 1) ~~ 2..FatRat.new(3, 1)
  ok 75 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2..FatRat.new(3, 1)
  ok 76 - 1..3 ~~ 2..FatRat.new(3, 1)
  ok 77 - "2".."4" ~~ 2..FatRat.new(3, 1)
  ok 78 - -2..5.0 ~~ 2..FatRat.new(3, 1)
  ok 79 - -10..10 ~~ 2..FatRat.new(3, 1)
  ok 80 - 2.5..6.5 ~~ 2..FatRat.new(3, 1)
  ok 81 - 1^..3 ~~ 2..FatRat.new(3, 1)
  ok 82 - "2"..^"4" ~~ 2..FatRat.new(3, 1)
  ok 83 - "1"^..^3 ~~ 2..FatRat.new(3, 1)
  ok 84 - <0/0>..<0/0> ~~ 2..FatRat.new(3, 1)
  ok 85 - FatRat.new(3, 1)..10 ~~ 2..FatRat.new(3, 1)
  ok 86 - -2e0..FatRat.new(2, 1) ~~ 2..FatRat.new(3, 1)
  ok 87 - 2..3 ~~ 2e0..3
  ok 88 - "2".."3" ~~ 2e0..3
  ok 89 - 2.0..3.0 ~~ 2e0..3
  ok 90 - 2..3 ~~ 2e0..3
  ok 91 - 2.5..2.8 ~~ 2e0..3
  ok 92 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2e0..3
  ok 93 - 2..FatRat.new(3, 1) ~~ 2e0..3
  ok 94 - 2e0..FatRat.new(3, 1) ~~ 2e0..3
  ok 95 - 2.5..FatRat.new(3, 1) ~~ 2e0..3
  ok 96 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2e0..3
  ok 97 - 1..3 ~~ 2e0..3
  ok 98 - "2".."4" ~~ 2e0..3
  ok 99 - -2..5.0 ~~ 2e0..3
  ok 100 - -10..10 ~~ 2e0..3
  ok 101 - 2.5..6.5 ~~ 2e0..3
  ok 102 - 1^..3 ~~ 2e0..3
  ok 103 - "2"..^"4" ~~ 2e0..3
  ok 104 - "1"^..^3 ~~ 2e0..3
  ok 105 - <0/0>..<0/0> ~~ 2e0..3
  ok 106 - FatRat.new(3, 1)..10 ~~ 2e0..3
  ok 107 - -2e0..FatRat.new(2, 1) ~~ 2e0..3
  ok 108 - 2..3 ~~ 2e0..3e0
  ok 109 - "2".."3" ~~ 2e0..3e0
  ok 110 - 2.0..3.0 ~~ 2e0..3e0
  ok 111 - 2..3 ~~ 2e0..3e0
  ok 112 - 2.5..2.8 ~~ 2e0..3e0
  ok 113 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2e0..3e0
  ok 114 - 2..FatRat.new(3, 1) ~~ 2e0..3e0
  ok 115 - 2e0..FatRat.new(3, 1) ~~ 2e0..3e0
  ok 116 - 2.5..FatRat.new(3, 1) ~~ 2e0..3e0
  ok 117 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2e0..3e0
  ok 118 - 1..3 ~~ 2e0..3e0
  ok 119 - "2".."4" ~~ 2e0..3e0
  ok 120 - -2..5.0 ~~ 2e0..3e0
  ok 121 - -10..10 ~~ 2e0..3e0
  ok 122 - 2.5..6.5 ~~ 2e0..3e0
  ok 123 - 1^..3 ~~ 2e0..3e0
  ok 124 - "2"..^"4" ~~ 2e0..3e0
  ok 125 - "1"^..^3 ~~ 2e0..3e0
  ok 126 - <0/0>..<0/0> ~~ 2e0..3e0
  ok 127 - FatRat.new(3, 1)..10 ~~ 2e0..3e0
  ok 128 - -2e0..FatRat.new(2, 1) ~~ 2e0..3e0
  ok 129 - 2..3 ~~ 2e0..3.0
  ok 130 - "2".."3" ~~ 2e0..3.0
  ok 131 - 2.0..3.0 ~~ 2e0..3.0
  ok 132 - 2..3 ~~ 2e0..3.0
  ok 133 - 2.5..2.8 ~~ 2e0..3.0
  ok 134 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2e0..3.0
  ok 135 - 2..FatRat.new(3, 1) ~~ 2e0..3.0
  ok 136 - 2e0..FatRat.new(3, 1) ~~ 2e0..3.0
  ok 137 - 2.5..FatRat.new(3, 1) ~~ 2e0..3.0
  ok 138 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2e0..3.0
  ok 139 - 1..3 ~~ 2e0..3.0
  ok 140 - "2".."4" ~~ 2e0..3.0
  ok 141 - -2..5.0 ~~ 2e0..3.0
  ok 142 - -10..10 ~~ 2e0..3.0
  ok 143 - 2.5..6.5 ~~ 2e0..3.0
  ok 144 - 1^..3 ~~ 2e0..3.0
  ok 145 - "2"..^"4" ~~ 2e0..3.0
  ok 146 - "1"^..^3 ~~ 2e0..3.0
  ok 147 - <0/0>..<0/0> ~~ 2e0..3.0
  ok 148 - FatRat.new(3, 1)..10 ~~ 2e0..3.0
  ok 149 - -2e0..FatRat.new(2, 1) ~~ 2e0..3.0
  ok 150 - 2..3 ~~ 2e0..FatRat.new(3, 1)
  ok 151 - "2".."3" ~~ 2e0..FatRat.new(3, 1)
  ok 152 - 2.0..3.0 ~~ 2e0..FatRat.new(3, 1)
  ok 153 - 2..3 ~~ 2e0..FatRat.new(3, 1)
  ok 154 - 2.5..2.8 ~~ 2e0..FatRat.new(3, 1)
  ok 155 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2e0..FatRat.new(3, 1)
  ok 156 - 2..FatRat.new(3, 1) ~~ 2e0..FatRat.new(3, 1)
  ok 157 - 2e0..FatRat.new(3, 1) ~~ 2e0..FatRat.new(3, 1)
  ok 158 - 2.5..FatRat.new(3, 1) ~~ 2e0..FatRat.new(3, 1)
  ok 159 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2e0..FatRat.new(3, 1)
  ok 160 - 1..3 ~~ 2e0..FatRat.new(3, 1)
  ok 161 - "2".."4" ~~ 2e0..FatRat.new(3, 1)
  ok 162 - -2..5.0 ~~ 2e0..FatRat.new(3, 1)
  ok 163 - -10..10 ~~ 2e0..FatRat.new(3, 1)
  ok 164 - 2.5..6.5 ~~ 2e0..FatRat.new(3, 1)
  ok 165 - 1^..3 ~~ 2e0..FatRat.new(3, 1)
  ok 166 - "2"..^"4" ~~ 2e0..FatRat.new(3, 1)
  ok 167 - "1"^..^3 ~~ 2e0..FatRat.new(3, 1)
  ok 168 - <0/0>..<0/0> ~~ 2e0..FatRat.new(3, 1)
  ok 169 - FatRat.new(3, 1)..10 ~~ 2e0..FatRat.new(3, 1)
  ok 170 - -2e0..FatRat.new(2, 1) ~~ 2e0..FatRat.new(3, 1)
  ok 171 - 2..3 ~~ 2.0..3
  ok 172 - "2".."3" ~~ 2.0..3
  ok 173 - 2.0..3.0 ~~ 2.0..3
  ok 174 - 2..3 ~~ 2.0..3
  ok 175 - 2.5..2.8 ~~ 2.0..3
  ok 176 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2.0..3
  ok 177 - 2..FatRat.new(3, 1) ~~ 2.0..3
  ok 178 - 2e0..FatRat.new(3, 1) ~~ 2.0..3
  ok 179 - 2.5..FatRat.new(3, 1) ~~ 2.0..3
  ok 180 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2.0..3
  ok 181 - 1..3 ~~ 2.0..3
  ok 182 - "2".."4" ~~ 2.0..3
  ok 183 - -2..5.0 ~~ 2.0..3
  ok 184 - -10..10 ~~ 2.0..3
  ok 185 - 2.5..6.5 ~~ 2.0..3
  ok 186 - 1^..3 ~~ 2.0..3
  ok 187 - "2"..^"4" ~~ 2.0..3
  ok 188 - "1"^..^3 ~~ 2.0..3
  ok 189 - <0/0>..<0/0> ~~ 2.0..3
  ok 190 - FatRat.new(3, 1)..10 ~~ 2.0..3
  ok 191 - -2e0..FatRat.new(2, 1) ~~ 2.0..3
  ok 192 - 2..3 ~~ 2.0..3e0
  ok 193 - "2".."3" ~~ 2.0..3e0
  ok 194 - 2.0..3.0 ~~ 2.0..3e0
  ok 195 - 2..3 ~~ 2.0..3e0
  ok 196 - 2.5..2.8 ~~ 2.0..3e0
  ok 197 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2.0..3e0
  ok 198 - 2..FatRat.new(3, 1) ~~ 2.0..3e0
  ok 199 - 2e0..FatRat.new(3, 1) ~~ 2.0..3e0
  ok 200 - 2.5..FatRat.new(3, 1) ~~ 2.0..3e0
  ok 201 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2.0..3e0
  ok 202 - 1..3 ~~ 2.0..3e0
  ok 203 - "2".."4" ~~ 2.0..3e0
  ok 204 - -2..5.0 ~~ 2.0..3e0
  ok 205 - -10..10 ~~ 2.0..3e0
  ok 206 - 2.5..6.5 ~~ 2.0..3e0
  ok 207 - 1^..3 ~~ 2.0..3e0
  ok 208 - "2"..^"4" ~~ 2.0..3e0
  ok 209 - "1"^..^3 ~~ 2.0..3e0
  ok 210 - <0/0>..<0/0> ~~ 2.0..3e0
  ok 211 - FatRat.new(3, 1)..10 ~~ 2.0..3e0
  ok 212 - -2e0..FatRat.new(2, 1) ~~ 2.0..3e0
  ok 213 - 2..3 ~~ 2.0..3.0
  ok 214 - "2".."3" ~~ 2.0..3.0
  ok 215 - 2.0..3.0 ~~ 2.0..3.0
  ok 216 - 2..3 ~~ 2.0..3.0
  ok 217 - 2.5..2.8 ~~ 2.0..3.0
  ok 218 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2.0..3.0
  ok 219 - 2..FatRat.new(3, 1) ~~ 2.0..3.0
  ok 220 - 2e0..FatRat.new(3, 1) ~~ 2.0..3.0
  ok 221 - 2.5..FatRat.new(3, 1) ~~ 2.0..3.0
  ok 222 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2.0..3.0
  ok 223 - 1..3 ~~ 2.0..3.0
  ok 224 - "2".."4" ~~ 2.0..3.0
  ok 225 - -2..5.0 ~~ 2.0..3.0
  ok 226 - -10..10 ~~ 2.0..3.0
  ok 227 - 2.5..6.5 ~~ 2.0..3.0
  ok 228 - 1^..3 ~~ 2.0..3.0
  ok 229 - "2"..^"4" ~~ 2.0..3.0
  ok 230 - "1"^..^3 ~~ 2.0..3.0
  ok 231 - <0/0>..<0/0> ~~ 2.0..3.0
  ok 232 - FatRat.new(3, 1)..10 ~~ 2.0..3.0
  ok 233 - -2e0..FatRat.new(2, 1) ~~ 2.0..3.0
  ok 234 - 2..3 ~~ 2.0..FatRat.new(3, 1)
  ok 235 - "2".."3" ~~ 2.0..FatRat.new(3, 1)
  ok 236 - 2.0..3.0 ~~ 2.0..FatRat.new(3, 1)
  ok 237 - 2..3 ~~ 2.0..FatRat.new(3, 1)
  ok 238 - 2.5..2.8 ~~ 2.0..FatRat.new(3, 1)
  ok 239 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ 2.0..FatRat.new(3, 1)
  ok 240 - 2..FatRat.new(3, 1) ~~ 2.0..FatRat.new(3, 1)
  ok 241 - 2e0..FatRat.new(3, 1) ~~ 2.0..FatRat.new(3, 1)
  ok 242 - 2.5..FatRat.new(3, 1) ~~ 2.0..FatRat.new(3, 1)
  ok 243 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ 2.0..FatRat.new(3, 1)
  ok 244 - 1..3 ~~ 2.0..FatRat.new(3, 1)
  ok 245 - "2".."4" ~~ 2.0..FatRat.new(3, 1)
  ok 246 - -2..5.0 ~~ 2.0..FatRat.new(3, 1)
  ok 247 - -10..10 ~~ 2.0..FatRat.new(3, 1)
  ok 248 - 2.5..6.5 ~~ 2.0..FatRat.new(3, 1)
  ok 249 - 1^..3 ~~ 2.0..FatRat.new(3, 1)
  ok 250 - "2"..^"4" ~~ 2.0..FatRat.new(3, 1)
  ok 251 - "1"^..^3 ~~ 2.0..FatRat.new(3, 1)
  ok 252 - <0/0>..<0/0> ~~ 2.0..FatRat.new(3, 1)
  ok 253 - FatRat.new(3, 1)..10 ~~ 2.0..FatRat.new(3, 1)
  ok 254 - -2e0..FatRat.new(2, 1) ~~ 2.0..FatRat.new(3, 1)
  ok 255 - 2..3 ~~ FatRat.new(2, 1)..3
  ok 256 - "2".."3" ~~ FatRat.new(2, 1)..3
  ok 257 - 2.0..3.0 ~~ FatRat.new(2, 1)..3
  ok 258 - 2..3 ~~ FatRat.new(2, 1)..3
  ok 259 - 2.5..2.8 ~~ FatRat.new(2, 1)..3
  ok 260 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..3
  ok 261 - 2..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..3
  ok 262 - 2e0..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..3
  ok 263 - 2.5..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..3
  ok 264 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..3
  ok 265 - 1..3 ~~ FatRat.new(2, 1)..3
  ok 266 - "2".."4" ~~ FatRat.new(2, 1)..3
  ok 267 - -2..5.0 ~~ FatRat.new(2, 1)..3
  ok 268 - -10..10 ~~ FatRat.new(2, 1)..3
  ok 269 - 2.5..6.5 ~~ FatRat.new(2, 1)..3
  ok 270 - 1^..3 ~~ FatRat.new(2, 1)..3
  ok 271 - "2"..^"4" ~~ FatRat.new(2, 1)..3
  ok 272 - "1"^..^3 ~~ FatRat.new(2, 1)..3
  ok 273 - <0/0>..<0/0> ~~ FatRat.new(2, 1)..3
  ok 274 - FatRat.new(3, 1)..10 ~~ FatRat.new(2, 1)..3
  ok 275 - -2e0..FatRat.new(2, 1) ~~ FatRat.new(2, 1)..3
  ok 276 - 2..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 277 - "2".."3" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 278 - 2.0..3.0 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 279 - 2..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 280 - 2.5..2.8 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 281 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 282 - 2..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 283 - 2e0..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 284 - 2.5..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 285 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 286 - 1..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 287 - "2".."4" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 288 - -2..5.0 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 289 - -10..10 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 290 - 2.5..6.5 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 291 - 1^..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 292 - "2"..^"4" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 293 - "1"^..^3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 294 - <0/0>..<0/0> ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 295 - FatRat.new(3, 1)..10 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 296 - -2e0..FatRat.new(2, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 297 - 2..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 298 - "2".."3" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 299 - 2.0..3.0 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 300 - 2..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 301 - 2.5..2.8 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 302 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 303 - 2..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 304 - 2e0..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 305 - 2.5..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 306 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 307 - 1..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 308 - "2".."4" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 309 - -2..5.0 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 310 - -10..10 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 311 - 2.5..6.5 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 312 - 1^..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 313 - "2"..^"4" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 314 - "1"^..^3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 315 - <0/0>..<0/0> ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 316 - FatRat.new(3, 1)..10 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 317 - -2e0..FatRat.new(2, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 318 - 2..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 319 - "2".."3" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 320 - 2.0..3.0 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 321 - 2..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 322 - 2.5..2.8 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 323 - FatRat.new(2, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 324 - 2..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 325 - 2e0..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 326 - 2.5..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 327 - FatRat.new(3, 1)..FatRat.new(3, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 328 - 1..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 329 - "2".."4" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 330 - -2..5.0 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 331 - -10..10 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 332 - 2.5..6.5 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 333 - 1^..3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 334 - "2"..^"4" ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 335 - "1"^..^3 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 336 - <0/0>..<0/0> ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 337 - FatRat.new(3, 1)..10 ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  ok 338 - -2e0..FatRat.new(2, 1) ~~ FatRat.new(2, 1)..FatRat.new(3, 1)
  1..338
ok 1 - smartmatch against numeric range
  1..8
  # Looks like you planned 8 tests, but ran 0
not ok 2 - smartmatch of string ranges

# Failed test 'smartmatch of string ranges'
# at foo.p6 line 23
  not ok 1 - 0..10 ~~ "0"..3

  # Failed test '0..10 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 2 - 0..FatRat.new(10, 1) ~~ "0"..3

  # Failed test '0..FatRat.new(10, 1) ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 3 - 0..10e0 ~~ "0"..3

  # Failed test '0..10e0 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 4 - 0..10.0 ~~ "0"..3

  # Failed test '0..10.0 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 5 - 0..10.0 ~~ "0"..3

  # Failed test '0..10.0 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 6 - 0e0..10 ~~ "0"..3

  # Failed test '0e0..10 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 7 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..3

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 8 - 0.0..10e0 ~~ "0"..3

  # Failed test '0.0..10e0 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 9 - 0e0..10.0 ~~ "0"..3

  # Failed test '0e0..10.0 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 10 - 0e0..10.0 ~~ "0"..3

  # Failed test '0e0..10.0 ~~ "0"..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 11 - 0..30 ~~ "0"..3
  ok 12 - 0..FatRat.new(30, 1) ~~ "0"..3
  ok 13 - 0..30e0 ~~ "0"..3
  ok 14 - 0..30.0 ~~ "0"..3
  ok 15 - 0..30.0 ~~ "0"..3
  ok 16 - 0e0..30 ~~ "0"..3
  ok 17 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ "0"..3
  ok 18 - 0.0..30e0 ~~ "0"..3
  ok 19 - 0e0..30.0 ~~ "0"..3
  ok 20 - 0e0..30.0 ~~ "0"..3
  not ok 21 - 0..10 ~~ "0"..3.0

  # Failed test '0..10 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 22 - 0..FatRat.new(10, 1) ~~ "0"..3.0

  # Failed test '0..FatRat.new(10, 1) ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 23 - 0..10e0 ~~ "0"..3.0

  # Failed test '0..10e0 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 24 - 0..10.0 ~~ "0"..3.0

  # Failed test '0..10.0 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 25 - 0..10.0 ~~ "0"..3.0

  # Failed test '0..10.0 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 26 - 0e0..10 ~~ "0"..3.0

  # Failed test '0e0..10 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 27 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..3.0

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 28 - 0.0..10e0 ~~ "0"..3.0

  # Failed test '0.0..10e0 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 29 - 0e0..10.0 ~~ "0"..3.0

  # Failed test '0e0..10.0 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 30 - 0e0..10.0 ~~ "0"..3.0

  # Failed test '0e0..10.0 ~~ "0"..3.0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 31 - 0..30 ~~ "0"..3.0
  ok 32 - 0..FatRat.new(30, 1) ~~ "0"..3.0
  ok 33 - 0..30e0 ~~ "0"..3.0
  ok 34 - 0..30.0 ~~ "0"..3.0
  ok 35 - 0..30.0 ~~ "0"..3.0
  ok 36 - 0e0..30 ~~ "0"..3.0
  ok 37 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ "0"..3.0
  ok 38 - 0.0..30e0 ~~ "0"..3.0
  ok 39 - 0e0..30.0 ~~ "0"..3.0
  ok 40 - 0e0..30.0 ~~ "0"..3.0
  not ok 41 - 0..10 ~~ "0"..3e0

  # Failed test '0..10 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 42 - 0..FatRat.new(10, 1) ~~ "0"..3e0

  # Failed test '0..FatRat.new(10, 1) ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 43 - 0..10e0 ~~ "0"..3e0

  # Failed test '0..10e0 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 44 - 0..10.0 ~~ "0"..3e0

  # Failed test '0..10.0 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 45 - 0..10.0 ~~ "0"..3e0

  # Failed test '0..10.0 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 46 - 0e0..10 ~~ "0"..3e0

  # Failed test '0e0..10 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 47 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..3e0

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 48 - 0.0..10e0 ~~ "0"..3e0

  # Failed test '0.0..10e0 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 49 - 0e0..10.0 ~~ "0"..3e0

  # Failed test '0e0..10.0 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 50 - 0e0..10.0 ~~ "0"..3e0

  # Failed test '0e0..10.0 ~~ "0"..3e0'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 51 - 0..30 ~~ "0"..3e0
  ok 52 - 0..FatRat.new(30, 1) ~~ "0"..3e0
  ok 53 - 0..30e0 ~~ "0"..3e0
  ok 54 - 0..30.0 ~~ "0"..3e0
  ok 55 - 0..30.0 ~~ "0"..3e0
  ok 56 - 0e0..30 ~~ "0"..3e0
  ok 57 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ "0"..3e0
  ok 58 - 0.0..30e0 ~~ "0"..3e0
  ok 59 - 0e0..30.0 ~~ "0"..3e0
  ok 60 - 0e0..30.0 ~~ "0"..3e0
  not ok 61 - 0..10 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0..10 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 62 - 0..FatRat.new(10, 1) ~~ "0"..FatRat.new(3, 1)

  # Failed test '0..FatRat.new(10, 1) ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 63 - 0..10e0 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0..10e0 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 64 - 0..10.0 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0..10.0 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 65 - 0..10.0 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0..10.0 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 66 - 0e0..10 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0e0..10 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 67 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..FatRat.new(3, 1)

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 68 - 0.0..10e0 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0.0..10e0 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 69 - 0e0..10.0 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0e0..10.0 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 70 - 0e0..10.0 ~~ "0"..FatRat.new(3, 1)

  # Failed test '0e0..10.0 ~~ "0"..FatRat.new(3, 1)'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 71 - 0..30 ~~ "0"..FatRat.new(3, 1)
  ok 72 - 0..FatRat.new(30, 1) ~~ "0"..FatRat.new(3, 1)
  ok 73 - 0..30e0 ~~ "0"..FatRat.new(3, 1)
  ok 74 - 0..30.0 ~~ "0"..FatRat.new(3, 1)
  ok 75 - 0..30.0 ~~ "0"..FatRat.new(3, 1)
  ok 76 - 0e0..30 ~~ "0"..FatRat.new(3, 1)
  ok 77 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ "0"..FatRat.new(3, 1)
  ok 78 - 0.0..30e0 ~~ "0"..FatRat.new(3, 1)
  ok 79 - 0e0..30.0 ~~ "0"..FatRat.new(3, 1)
  ok 80 - 0e0..30.0 ~~ "0"..FatRat.new(3, 1)
  not ok 81 - 0..10 ~~ 0..3

  # Failed test '0..10 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 82 - 0..FatRat.new(10, 1) ~~ 0..3

  # Failed test '0..FatRat.new(10, 1) ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 83 - 0..10e0 ~~ 0..3

  # Failed test '0..10e0 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 84 - 0..10.0 ~~ 0..3

  # Failed test '0..10.0 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 85 - 0..10.0 ~~ 0..3

  # Failed test '0..10.0 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 86 - 0e0..10 ~~ 0..3

  # Failed test '0e0..10 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 87 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ 0..3

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 88 - 0.0..10e0 ~~ 0..3

  # Failed test '0.0..10e0 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 89 - 0e0..10.0 ~~ 0..3

  # Failed test '0e0..10.0 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 90 - 0e0..10.0 ~~ 0..3

  # Failed test '0e0..10.0 ~~ 0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 91 - 0..30 ~~ 0..3
  ok 92 - 0..FatRat.new(30, 1) ~~ 0..3
  ok 93 - 0..30e0 ~~ 0..3
  ok 94 - 0..30.0 ~~ 0..3
  ok 95 - 0..30.0 ~~ 0..3
  ok 96 - 0e0..30 ~~ 0..3
  ok 97 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ 0..3
  ok 98 - 0.0..30e0 ~~ 0..3
  ok 99 - 0e0..30.0 ~~ 0..3
  ok 100 - 0e0..30.0 ~~ 0..3
  not ok 101 - 0..10 ~~ 0.0..3

  # Failed test '0..10 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 102 - 0..FatRat.new(10, 1) ~~ 0.0..3

  # Failed test '0..FatRat.new(10, 1) ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 103 - 0..10e0 ~~ 0.0..3

  # Failed test '0..10e0 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 104 - 0..10.0 ~~ 0.0..3

  # Failed test '0..10.0 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 105 - 0..10.0 ~~ 0.0..3

  # Failed test '0..10.0 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 106 - 0e0..10 ~~ 0.0..3

  # Failed test '0e0..10 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 107 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ 0.0..3
WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏♥' (indicated by ⏏)
  in block at foo.p6 line 34
  in block <unit> at foo.p6 line 33

WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏b' (indicated by ⏏)
  in block at foo.p6 line 34
  in block <unit> at foo.p6 line 33

WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏a' (indicated by ⏏)
  in block at foo.p6 line 34
  in block <unit> at foo.p6 line 33

WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏♥0' (indicated by ⏏)
  in block at foo.p6 line 31
  in block <unit> at foo.p6 line 30

WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏♥' (indicated by ⏏)
  in block at foo.p6 line 31
  in block <unit> at foo.p6 line 30

WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏a' (indicated by ⏏)
  in block at foo.p6 line 31
  in block <unit> at foo.p6 line 30

WARNING​: unhandled Failure detected in DESTROY​:
Cannot convert string to number​: base-10 number must begin with valid digits or '.' in '⏏b' (indicated by ⏏)
  in block at foo.p6 line 31
  in block <unit> at foo.p6 line 30

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 108 - 0.0..10e0 ~~ 0.0..3

  # Failed test '0.0..10e0 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 109 - 0e0..10.0 ~~ 0.0..3

  # Failed test '0e0..10.0 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 110 - 0e0..10.0 ~~ 0.0..3

  # Failed test '0e0..10.0 ~~ 0.0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 111 - 0..30 ~~ 0.0..3
  ok 112 - 0..FatRat.new(30, 1) ~~ 0.0..3
  ok 113 - 0..30e0 ~~ 0.0..3
  ok 114 - 0..30.0 ~~ 0.0..3
  ok 115 - 0..30.0 ~~ 0.0..3
  ok 116 - 0e0..30 ~~ 0.0..3
  ok 117 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ 0.0..3
  ok 118 - 0.0..30e0 ~~ 0.0..3
  ok 119 - 0e0..30.0 ~~ 0.0..3
  ok 120 - 0e0..30.0 ~~ 0.0..3
  not ok 121 - 0..10 ~~ 0e0..3

  # Failed test '0..10 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 122 - 0..FatRat.new(10, 1) ~~ 0e0..3

  # Failed test '0..FatRat.new(10, 1) ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 123 - 0..10e0 ~~ 0e0..3

  # Failed test '0..10e0 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 124 - 0..10.0 ~~ 0e0..3

  # Failed test '0..10.0 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 125 - 0..10.0 ~~ 0e0..3

  # Failed test '0..10.0 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 126 - 0e0..10 ~~ 0e0..3

  # Failed test '0e0..10 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 127 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ 0e0..3

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 128 - 0.0..10e0 ~~ 0e0..3

  # Failed test '0.0..10e0 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 129 - 0e0..10.0 ~~ 0e0..3

  # Failed test '0e0..10.0 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 130 - 0e0..10.0 ~~ 0e0..3

  # Failed test '0e0..10.0 ~~ 0e0..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 131 - 0..30 ~~ 0e0..3
  ok 132 - 0..FatRat.new(30, 1) ~~ 0e0..3
  ok 133 - 0..30e0 ~~ 0e0..3
  ok 134 - 0..30.0 ~~ 0e0..3
  ok 135 - 0..30.0 ~~ 0e0..3
  ok 136 - 0e0..30 ~~ 0e0..3
  ok 137 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ 0e0..3
  ok 138 - 0.0..30e0 ~~ 0e0..3
  ok 139 - 0e0..30.0 ~~ 0e0..3
  ok 140 - 0e0..30.0 ~~ 0e0..3
  not ok 141 - 0..10 ~~ FatRat.new(0, 1)..3

  # Failed test '0..10 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 142 - 0..FatRat.new(10, 1) ~~ FatRat.new(0, 1)..3

  # Failed test '0..FatRat.new(10, 1) ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 143 - 0..10e0 ~~ FatRat.new(0, 1)..3

  # Failed test '0..10e0 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 144 - 0..10.0 ~~ FatRat.new(0, 1)..3

  # Failed test '0..10.0 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 145 - 0..10.0 ~~ FatRat.new(0, 1)..3

  # Failed test '0..10.0 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 146 - 0e0..10 ~~ FatRat.new(0, 1)..3

  # Failed test '0e0..10 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 147 - FatRat.new(0, 1)..FatRat.new(10, 1) ~~ FatRat.new(0, 1)..3

  # Failed test 'FatRat.new(0, 1)..FatRat.new(10, 1) ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 148 - 0.0..10e0 ~~ FatRat.new(0, 1)..3

  # Failed test '0.0..10e0 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 149 - 0e0..10.0 ~~ FatRat.new(0, 1)..3

  # Failed test '0e0..10.0 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  not ok 150 - 0e0..10.0 ~~ FatRat.new(0, 1)..3

  # Failed test '0e0..10.0 ~~ FatRat.new(0, 1)..3'
  # at foo.p6 line 53
  # expected​: Bool​::True
  # got​: Bool​::False
  ok 151 - 0..30 ~~ FatRat.new(0, 1)..3
  ok 152 - 0..FatRat.new(30, 1) ~~ FatRat.new(0, 1)..3
  ok 153 - 0..30e0 ~~ FatRat.new(0, 1)..3
  ok 154 - 0..30.0 ~~ FatRat.new(0, 1)..3
  ok 155 - 0..30.0 ~~ FatRat.new(0, 1)..3
  ok 156 - 0e0..30 ~~ FatRat.new(0, 1)..3
  ok 157 - FatRat.new(0, 1)..FatRat.new(30, 1) ~~ FatRat.new(0, 1)..3
  ok 158 - 0.0..30e0 ~~ FatRat.new(0, 1)..3
  ok 159 - 0e0..30.0 ~~ FatRat.new(0, 1)..3
  ok 160 - 0e0..30.0 ~~ FatRat.new(0, 1)..3
  1..160
  # Looks like you failed 80 tests of 160
not ok 3 - smartmatch numeric range against string range [numeric strings]

# Failed test 'smartmatch numeric range against string range [numeric strings]'
# at foo.p6 line 38

@p6rt
Copy link
Author

p6rt commented Feb 14, 2017

From @zoffixznet

use Test;
subtest 'smartmatch against numeric range' => {
  constant fr2 = FatRat.new​: 2, 1;
  constant fr3 = FatRat.new​: 3, 1;
  constant @​true = 2..3, '2'..'3', 2/1..3/1, 2..3, 2.5..2.8,
  fr2..fr3, 2..fr3, 2e0..fr3, 2.5..fr3, fr3..fr3;
  constant @​false = 1..3, '2'..'4', -2..5/1, -10..10, 2.5..6.5, 1^..3,
  '2'..^'4', '1'^..^3, 0/0..0/0, fr3..10, -2e0..fr2, 'a'..'z';
  constant @​variants = 2..3, 2..3e0, 2..3.0, 2..fr3,
  2e0..3, 2e0..3e0, 2e0..3.0, 2e0..fr3,
  2.0..3, 2.0..3e0, 2.0..3.0, 2.0..fr3,
  fr2..3, fr2..fr3, fr2..fr3, fr2..fr3;
  constant $plan = 2 + @​variants * (@​true + @​false);
  is-deeply 3..4 ~~ -1/0..1/0, True, ' 3..4 ~~ -1/0..1/0';
  is-deeply 0/0..0/0 ~~ -1/0..1/0, False, '0/0..0/0 ~~ -1/0..1/0';

  for @​variants -> $r {
  is-deeply $_ ~~ $r, True, "{.perl} ~~ {$r.perl}" for @​true;
  try is-deeply $_ ~~ $r, False, "{.perl} ~~ {$r.perl}" for @​false;
  }
}

subtest 'smartmatch of string ranges' => {
  my @​true = ['a'..'z', 'b'..'c'], ['aa'..'bb', 'a'..'z' ],
  ['♥'..'♦', '♥'..'♦'], ['♥0'..'♦3', '♥0'..'♦3'];
  my @​false = ['b'..'c', 'a'..'z'], ['aa'..'bb', 'b'..'z' ],
  ['♤'..'♦', '♥'..'♦'], ['♤0'..'♦3', '♥0'..'♦3'];
  plan @​true + @​false;

  for @​true -> ($a, $b) {
  try is-deeply $a ~~ $b, True, "{$a.perl} ~~ {$b.perl}";
  }
  for @​false -> ($a, $b) {
  try is-deeply $a ~~ $b, False, "{$a.perl} ~~ {$b.perl}";
  }
}

subtest 'smartmatch numeric range against string range [numeric strings]' => {
  # Note​: numeric `10` in tests below should be compared as a string by
  # the smartmatch against a string range, and so it *is* correct that
  # 0..10 ~~ '0'..'3' === True, since string '10' is before '3' and after '0'
  constant fr0 = FatRat.new​: 0, 1; constant fr3 = FatRat.new​: 3, 1;
  constant fr10 = FatRat.new​: 10, 1; constant fr30 = FatRat.new​: 30, 1;
  constant @​true = 0..10, 0..fr10, 0..10e0, 0..10.0, 0..10/1,
  0e0..10, fr0..fr10, 0.0..10e0, 0e0..10.0, 0e0..10/1;
  constant @​false = 0..30, 0..fr30, 0..30e0, 0..30.0, 0..30/1,
  0e0..30, fr0..fr30, 0.0..30e0, 0e0..30.0, 0e0..30/1;
  constant @​variants = '0'..3, '0'..3.0, '0'..3e0, '0'..fr3,
  0..'3', 0.0..'3', 0e0..'3', fr0..'3';
  constant $plan = @​variants * (@​true + @​false);

  for @​variants -> $r {
  is-deeply $_ ~~ $r, True, "{.perl} ~~ {$r.perl}" for @​true;
  is-deeply $_ ~~ $r, False, "{.perl} ~~ {$r.perl}" for @​false;
  }
}

@p6rt
Copy link
Author

p6rt commented Feb 14, 2017

From @zoffixznet

Just realized something​: I fixed Str ~~ Numeric to not throw, so on HEAD there won't be any Failures at all with the sample code.

I tried changing the tests to use $a + $b instead of $a ~~ $b, but then the DESTROY warning does not occur...

... should this ticket be closed?

@p6rt
Copy link
Author

p6rt commented Feb 15, 2017

From @zoffixznet

Gonna close this since I can only repo this on a 32-bit box with a specific commit and don't know of a way to repro this on HEAD.

@p6rt p6rt closed this as completed Feb 15, 2017
@p6rt
Copy link
Author

p6rt commented Feb 15, 2017

@zoffixznet - Status changed from 'new' to 'rejected'

@p6rt p6rt added the 32bit label Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant