about summary refs log tree commit diff
path: root/src/test/ui/issues
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-27 01:33:01 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-27 18:56:16 +0300
commit9be35f82c1abf2ecbab489bca9eca138ea648312 (patch)
tree69888506e34af447d9748c0d542de3ba1dd76210 /src/test/ui/issues
parentca9faa52f5ada0054b1fa27d97aedf448afb059b (diff)
tests: Move run-pass tests without naming conflicts to ui
Diffstat (limited to 'src/test/ui/issues')
-rw-r--r--src/test/ui/issues/.gitattributes1
-rw-r--r--src/test/ui/issues/auxiliary/cgu_test.rs6
-rw-r--r--src/test/ui/issues/auxiliary/cgu_test_a.rs15
-rw-r--r--src/test/ui/issues/auxiliary/cgu_test_b.rs15
-rw-r--r--src/test/ui/issues/auxiliary/i8.rs3
-rw-r--r--src/test/ui/issues/auxiliary/iss.rs12
-rw-r--r--src/test/ui/issues/auxiliary/issue-10028.rs9
-rw-r--r--src/test/ui/issues/auxiliary/issue-10031-aux.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-11224.rs16
-rw-r--r--src/test/ui/issues/auxiliary/issue-11225-1.rs18
-rw-r--r--src/test/ui/issues/auxiliary/issue-11225-2.rs28
-rw-r--r--src/test/ui/issues/auxiliary/issue-11225-3.rs28
-rw-r--r--src/test/ui/issues/auxiliary/issue-11508.rs10
-rw-r--r--src/test/ui/issues/auxiliary/issue-11529.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-12133-dylib.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-12133-dylib2.rs6
-rw-r--r--src/test/ui/issues/auxiliary/issue-12133-rlib.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-12612-1.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-12612-2.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-12660-aux.rs11
-rw-r--r--src/test/ui/issues/auxiliary/issue-13507.rs87
-rw-r--r--src/test/ui/issues/auxiliary/issue-13620-1.rs9
-rw-r--r--src/test/ui/issues/auxiliary/issue-13620-2.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-13872-1.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-13872-2.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-13872-3.rs9
-rw-r--r--src/test/ui/issues/auxiliary/issue-14344-1.rs5
-rw-r--r--src/test/ui/issues/auxiliary/issue-14344-2.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-14421.rs25
-rw-r--r--src/test/ui/issues/auxiliary/issue-14422.rs25
-rw-r--r--src/test/ui/issues/auxiliary/issue-15562.rs5
-rw-r--r--src/test/ui/issues/auxiliary/issue-16643.rs19
-rw-r--r--src/test/ui/issues/auxiliary/issue-17662.rs12
-rw-r--r--src/test/ui/issues/auxiliary/issue-17718-aux.rs10
-rw-r--r--src/test/ui/issues/auxiliary/issue-18501.rs17
-rw-r--r--src/test/ui/issues/auxiliary/issue-18514.rs17
-rw-r--r--src/test/ui/issues/auxiliary/issue-18711.rs5
-rw-r--r--src/test/ui/issues/auxiliary/issue-18913-1.rs6
-rw-r--r--src/test/ui/issues/auxiliary/issue-18913-2.rs6
-rw-r--r--src/test/ui/issues/auxiliary/issue-19293.rs4
-rw-r--r--src/test/ui/issues/auxiliary/issue-19340-1.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-20389.rs4
-rw-r--r--src/test/ui/issues/auxiliary/issue-2170-lib.rs18
-rw-r--r--src/test/ui/issues/auxiliary/issue-2316-a.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-2316-b.rs11
-rw-r--r--src/test/ui/issues/auxiliary/issue-2380.rs15
-rw-r--r--src/test/ui/issues/auxiliary/issue-2414-a.rs12
-rw-r--r--src/test/ui/issues/auxiliary/issue-2414-b.rs4
-rw-r--r--src/test/ui/issues/auxiliary/issue-2472-b.rs13
-rw-r--r--src/test/ui/issues/auxiliary/issue-25185-1.rs8
-rw-r--r--src/test/ui/issues/auxiliary/issue-25185-2.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-2526.rs44
-rw-r--r--src/test/ui/issues/auxiliary/issue-25467.rs10
-rw-r--r--src/test/ui/issues/auxiliary/issue-2631-a.rs14
-rw-r--r--src/test/ui/issues/auxiliary/issue-2723-a.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-29485.rs16
-rw-r--r--src/test/ui/issues/auxiliary/issue-3012-1.rs20
-rw-r--r--src/test/ui/issues/auxiliary/issue-3136-a.rc4
-rw-r--r--src/test/ui/issues/auxiliary/issue-3136-a.rs14
-rw-r--r--src/test/ui/issues/auxiliary/issue-31702-1.rs16
-rw-r--r--src/test/ui/issues/auxiliary/issue-31702-2.rs20
-rw-r--r--src/test/ui/issues/auxiliary/issue-34796-aux.rs20
-rw-r--r--src/test/ui/issues/auxiliary/issue-36954.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-38190.rs2
-rw-r--r--src/test/ui/issues/auxiliary/issue-38226-aux.rs23
-rw-r--r--src/test/ui/issues/auxiliary/issue-38715-modern.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-38715.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-3979-traits.rs15
-rw-r--r--src/test/ui/issues/auxiliary/issue-39823.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-40469.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-41053.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-41394.rs16
-rw-r--r--src/test/ui/issues/auxiliary/issue-42007-s.rs4
-rw-r--r--src/test/ui/issues/auxiliary/issue-4208-cc.rs10
-rw-r--r--src/test/ui/issues/auxiliary/issue-4545.rs2
-rw-r--r--src/test/ui/issues/auxiliary/issue-48984-aux.rs6
-rw-r--r--src/test/ui/issues/auxiliary/issue-5518.rs4
-rw-r--r--src/test/ui/issues/auxiliary/issue-5521.rs3
-rw-r--r--src/test/ui/issues/auxiliary/issue-7178.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-7899.rs1
-rw-r--r--src/test/ui/issues/auxiliary/issue-8044.rs15
-rw-r--r--src/test/ui/issues/auxiliary/issue-8259.rs4
-rw-r--r--src/test/ui/issues/auxiliary/issue-8401.rs16
-rw-r--r--src/test/ui/issues/auxiliary/issue-9123.rs9
-rw-r--r--src/test/ui/issues/auxiliary/issue-9155.rs7
-rw-r--r--src/test/ui/issues/auxiliary/issue-9188.rs13
-rw-r--r--src/test/ui/issues/auxiliary/issue-9906.rs15
-rw-r--r--src/test/ui/issues/auxiliary/issue-9968.rs22
-rw-r--r--src/test/ui/issues/issue-10025.rs11
-rw-r--r--src/test/ui/issues/issue-10028.rs21
-rw-r--r--src/test/ui/issues/issue-10031.rs9
-rw-r--r--src/test/ui/issues/issue-10228.rs20
-rw-r--r--src/test/ui/issues/issue-10392.rs30
-rw-r--r--src/test/ui/issues/issue-10436.rs11
-rw-r--r--src/test/ui/issues/issue-10626.rs27
-rw-r--r--src/test/ui/issues/issue-10638.rs11
-rw-r--r--src/test/ui/issues/issue-10682.rs15
-rw-r--r--src/test/ui/issues/issue-10683.rs11
-rw-r--r--src/test/ui/issues/issue-10718.rs11
-rw-r--r--src/test/ui/issues/issue-10734.rs36
-rw-r--r--src/test/ui/issues/issue-10767.rs10
-rw-r--r--src/test/ui/issues/issue-10802.rs46
-rw-r--r--src/test/ui/issues/issue-10806.rs38
-rw-r--r--src/test/ui/issues/issue-11047.rs26
-rw-r--r--src/test/ui/issues/issue-11085.rs46
-rw-r--r--src/test/ui/issues/issue-1112.rs37
-rw-r--r--src/test/ui/issues/issue-11205.rs85
-rw-r--r--src/test/ui/issues/issue-11224.rs8
-rw-r--r--src/test/ui/issues/issue-11225-1.rs11
-rw-r--r--src/test/ui/issues/issue-11225-2.rs11
-rw-r--r--src/test/ui/issues/issue-11225-3.rs11
-rw-r--r--src/test/ui/issues/issue-11267.rs19
-rw-r--r--src/test/ui/issues/issue-11382.rs4
-rw-r--r--src/test/ui/issues/issue-11508.rs11
-rw-r--r--src/test/ui/issues/issue-11529.rs11
-rw-r--r--src/test/ui/issues/issue-11552.rs22
-rw-r--r--src/test/ui/issues/issue-11577.rs18
-rw-r--r--src/test/ui/issues/issue-11677.rs23
-rw-r--r--src/test/ui/issues/issue-11709.rs38
-rw-r--r--src/test/ui/issues/issue-11820.rs12
-rw-r--r--src/test/ui/issues/issue-11940.rs11
-rw-r--r--src/test/ui/issues/issue-11958.rs10
-rw-r--r--src/test/ui/issues/issue-12033.rs7
-rw-r--r--src/test/ui/issues/issue-12133-1.rs10
-rw-r--r--src/test/ui/issues/issue-12133-2.rs11
-rw-r--r--src/test/ui/issues/issue-12133-3.rs14
-rw-r--r--src/test/ui/issues/issue-12285.rs14
-rw-r--r--src/test/ui/issues/issue-1257.rs11
-rw-r--r--src/test/ui/issues/issue-12582.rs21
-rw-r--r--src/test/ui/issues/issue-12612.rs15
-rw-r--r--src/test/ui/issues/issue-12660.rs14
-rw-r--r--src/test/ui/issues/issue-12677.rs9
-rw-r--r--src/test/ui/issues/issue-12699.rs10
-rw-r--r--src/test/ui/issues/issue-12744.rs5
-rw-r--r--src/test/ui/issues/issue-12860.rs49
-rw-r--r--src/test/ui/issues/issue-12909.rs20
-rw-r--r--src/test/ui/issues/issue-13027.rs178
-rw-r--r--src/test/ui/issues/issue-13204.rs25
-rw-r--r--src/test/ui/issues/issue-13259-windows-tcb-trash.rs42
-rw-r--r--src/test/ui/issues/issue-13264.rs74
-rw-r--r--src/test/ui/issues/issue-13304.rs40
-rw-r--r--src/test/ui/issues/issue-13323.rs59
-rw-r--r--src/test/ui/issues/issue-13434.rs21
-rw-r--r--src/test/ui/issues/issue-13507-2.rs36
-rw-r--r--src/test/ui/issues/issue-13620.rs11
-rw-r--r--src/test/ui/issues/issue-13655.rs32
-rw-r--r--src/test/ui/issues/issue-13665.rs15
-rw-r--r--src/test/ui/issues/issue-13763.rs15
-rw-r--r--src/test/ui/issues/issue-13808.rs18
-rw-r--r--src/test/ui/issues/issue-13867.rs49
-rw-r--r--src/test/ui/issues/issue-13872.rs12
-rw-r--r--src/test/ui/issues/issue-13902.rs16
-rw-r--r--src/test/ui/issues/issue-14229.rs21
-rw-r--r--src/test/ui/issues/issue-14308.rs15
-rw-r--r--src/test/ui/issues/issue-14344.rs11
-rw-r--r--src/test/ui/issues/issue-14382.rs15
-rw-r--r--src/test/ui/issues/issue-14393.rs10
-rw-r--r--src/test/ui/issues/issue-14399.rs20
-rw-r--r--src/test/ui/issues/issue-14421.rs16
-rw-r--r--src/test/ui/issues/issue-14422.rs16
-rw-r--r--src/test/ui/issues/issue-14456.rs38
-rw-r--r--src/test/ui/issues/issue-1451.rs27
-rw-r--r--src/test/ui/issues/issue-14589.rs24
-rw-r--r--src/test/ui/issues/issue-1460.rs7
-rw-r--r--src/test/ui/issues/issue-14821.rs21
-rw-r--r--src/test/ui/issues/issue-14865.rs23
-rw-r--r--src/test/ui/issues/issue-14875.rs35
-rw-r--r--src/test/ui/issues/issue-14919.rs55
-rw-r--r--src/test/ui/issues/issue-14940.rs20
-rw-r--r--src/test/ui/issues/issue-14958.rs31
-rw-r--r--src/test/ui/issues/issue-15043.rs14
-rw-r--r--src/test/ui/issues/issue-15063.rs12
-rw-r--r--src/test/ui/issues/issue-15080.rs23
-rw-r--r--src/test/ui/issues/issue-15104.rs14
-rw-r--r--src/test/ui/issues/issue-15155.rs21
-rw-r--r--src/test/ui/issues/issue-15189.rs10
-rw-r--r--src/test/ui/issues/issue-15221.rs16
-rw-r--r--src/test/ui/issues/issue-15444.rs23
-rw-r--r--src/test/ui/issues/issue-15487.rs13
-rw-r--r--src/test/ui/issues/issue-15523-big.rs39
-rw-r--r--src/test/ui/issues/issue-15523.rs42
-rw-r--r--src/test/ui/issues/issue-15562.rs19
-rw-r--r--src/test/ui/issues/issue-15571.rs58
-rw-r--r--src/test/ui/issues/issue-15673.rs9
-rw-r--r--src/test/ui/issues/issue-15689-1.rs10
-rw-r--r--src/test/ui/issues/issue-15730.rs9
-rw-r--r--src/test/ui/issues/issue-15734.rs58
-rw-r--r--src/test/ui/issues/issue-15763.rs89
-rw-r--r--src/test/ui/issues/issue-15774.rs25
-rw-r--r--src/test/ui/issues/issue-15793.rs27
-rw-r--r--src/test/ui/issues/issue-15858.rs33
-rw-r--r--src/test/ui/issues/issue-15881-model-lexer-dotdotdot.rs38
-rw-r--r--src/test/ui/issues/issue-16151.rs29
-rw-r--r--src/test/ui/issues/issue-16256.rs7
-rw-r--r--src/test/ui/issues/issue-16272.rs24
-rw-r--r--src/test/ui/issues/issue-16278.rs10
-rw-r--r--src/test/ui/issues/issue-16441.rs11
-rw-r--r--src/test/ui/issues/issue-16452.rs10
-rw-r--r--src/test/ui/issues/issue-16492.rs67
-rw-r--r--src/test/ui/issues/issue-16530.rs15
-rw-r--r--src/test/ui/issues/issue-16560.rs18
-rw-r--r--src/test/ui/issues/issue-16597-empty.rs5
-rw-r--r--src/test/ui/issues/issue-16597.rs10
-rw-r--r--src/test/ui/issues/issue-1660.rs8
-rw-r--r--src/test/ui/issues/issue-16602-1.rs6
-rw-r--r--src/test/ui/issues/issue-16602-2.rs12
-rw-r--r--src/test/ui/issues/issue-16602-3.rs27
-rw-r--r--src/test/ui/issues/issue-16643.rs10
-rw-r--r--src/test/ui/issues/issue-16648.rs11
-rw-r--r--src/test/ui/issues/issue-16671.rs12
-rw-r--r--src/test/ui/issues/issue-16739.rs50
-rw-r--r--src/test/ui/issues/issue-16745.rs11
-rw-r--r--src/test/ui/issues/issue-16774.rs46
-rw-r--r--src/test/ui/issues/issue-16783.rs8
-rw-r--r--src/test/ui/issues/issue-16819.rs12
-rw-r--r--src/test/ui/issues/issue-1696.rs8
-rw-r--r--src/test/ui/issues/issue-1701.rs26
-rw-r--r--src/test/ui/issues/issue-17068.rs12
-rw-r--r--src/test/ui/issues/issue-17074.rs15
-rw-r--r--src/test/ui/issues/issue-17170.rs11
-rw-r--r--src/test/ui/issues/issue-17216.rs21
-rw-r--r--src/test/ui/issues/issue-17233.rs17
-rw-r--r--src/test/ui/issues/issue-17302.rs26
-rw-r--r--src/test/ui/issues/issue-17322.rs15
-rw-r--r--src/test/ui/issues/issue-17351.rs10
-rw-r--r--src/test/ui/issues/issue-17361.rs9
-rw-r--r--src/test/ui/issues/issue-17503.rs10
-rw-r--r--src/test/ui/issues/issue-17662.rs17
-rw-r--r--src/test/ui/issues/issue-17718-borrow-interior.rs19
-rw-r--r--src/test/ui/issues/issue-17718-parse-const.rs7
-rw-r--r--src/test/ui/issues/issue-17718-static-unsafe-interior.rs52
-rw-r--r--src/test/ui/issues/issue-17718.rs75
-rw-r--r--src/test/ui/issues/issue-17734.rs15
-rw-r--r--src/test/ui/issues/issue-17756.rs8
-rw-r--r--src/test/ui/issues/issue-17771.rs21
-rw-r--r--src/test/ui/issues/issue-17816.rs10
-rw-r--r--src/test/ui/issues/issue-17877.rs14
-rw-r--r--src/test/ui/issues/issue-17897.rs8
-rw-r--r--src/test/ui/issues/issue-18060.rs8
-rw-r--r--src/test/ui/issues/issue-18075.rs7
-rw-r--r--src/test/ui/issues/issue-18110.rs7
-rw-r--r--src/test/ui/issues/issue-18173.rs12
-rw-r--r--src/test/ui/issues/issue-18232.rs22
-rw-r--r--src/test/ui/issues/issue-18352.rs14
-rw-r--r--src/test/ui/issues/issue-18353.rs15
-rw-r--r--src/test/ui/issues/issue-18412.rs26
-rw-r--r--src/test/ui/issues/issue-18425.rs9
-rw-r--r--src/test/ui/issues/issue-18464.rs12
-rw-r--r--src/test/ui/issues/issue-18501.rs13
-rw-r--r--src/test/ui/issues/issue-18514.rs16
-rw-r--r--src/test/ui/issues/issue-18539.rs16
-rw-r--r--src/test/ui/issues/issue-18652.rs10
-rw-r--r--src/test/ui/issues/issue-18655.rs22
-rw-r--r--src/test/ui/issues/issue-18661.rs19
-rw-r--r--src/test/ui/issues/issue-18685.rs21
-rw-r--r--src/test/ui/issues/issue-18711.rs12
-rw-r--r--src/test/ui/issues/issue-18767.rs10
-rw-r--r--src/test/ui/issues/issue-18804/auxiliary/lib.rs10
-rw-r--r--src/test/ui/issues/issue-18804/main.rs19
-rw-r--r--src/test/ui/issues/issue-18845.rs16
-rw-r--r--src/test/ui/issues/issue-18859.rs16
-rw-r--r--src/test/ui/issues/issue-18913.rs9
-rw-r--r--src/test/ui/issues/issue-18937-1.rs21
-rw-r--r--src/test/ui/issues/issue-18952.rs56
-rw-r--r--src/test/ui/issues/issue-19001.rs11
-rw-r--r--src/test/ui/issues/issue-19127.rs10
-rw-r--r--src/test/ui/issues/issue-19135.rs13
-rw-r--r--src/test/ui/issues/issue-19244.rs34
-rw-r--r--src/test/ui/issues/issue-19293.rs10
-rw-r--r--src/test/ui/issues/issue-19340-1.rs17
-rw-r--r--src/test/ui/issues/issue-19340-2.rs24
-rw-r--r--src/test/ui/issues/issue-19358.rs20
-rw-r--r--src/test/ui/issues/issue-19367.rs32
-rw-r--r--src/test/ui/issues/issue-19499.rs15
-rw-r--r--src/test/ui/issues/issue-1974.rs11
-rw-r--r--src/test/ui/issues/issue-19811-escape-unicode.rs9
-rw-r--r--src/test/ui/issues/issue-20055-box-trait.rs41
-rw-r--r--src/test/ui/issues/issue-20055-box-unsized-array.rs29
-rw-r--r--src/test/ui/issues/issue-20174.rs7
-rw-r--r--src/test/ui/issues/issue-20343.rs32
-rw-r--r--src/test/ui/issues/issue-20389.rs15
-rw-r--r--src/test/ui/issues/issue-20427.rs88
-rw-r--r--src/test/ui/issues/issue-20544.rs18
-rw-r--r--src/test/ui/issues/issue-20575.rs10
-rw-r--r--src/test/ui/issues/issue-20616.rs44
-rw-r--r--src/test/ui/issues/issue-2063.rs22
-rw-r--r--src/test/ui/issues/issue-20676.rs12
-rw-r--r--src/test/ui/issues/issue-2074.rs16
-rw-r--r--src/test/ui/issues/issue-20803.rs10
-rw-r--r--src/test/ui/issues/issue-20823.rs5
-rw-r--r--src/test/ui/issues/issue-20847.rs12
-rw-r--r--src/test/ui/issues/issue-20953.rs12
-rw-r--r--src/test/ui/issues/issue-21033.rs49
-rw-r--r--src/test/ui/issues/issue-21058.rs64
-rw-r--r--src/test/ui/issues/issue-21291.rs10
-rw-r--r--src/test/ui/issues/issue-21306.rs9
-rw-r--r--src/test/ui/issues/issue-21361.rs11
-rw-r--r--src/test/ui/issues/issue-21384.rs21
-rw-r--r--src/test/ui/issues/issue-21400.rs56
-rw-r--r--src/test/ui/issues/issue-21475.rs19
-rw-r--r--src/test/ui/issues/issue-21486.rs77
-rw-r--r--src/test/ui/issues/issue-21655.rs12
-rw-r--r--src/test/ui/issues/issue-2170-exe.rs9
-rw-r--r--src/test/ui/issues/issue-21721.rs9
-rw-r--r--src/test/ui/issues/issue-2190-1.rs26
-rw-r--r--src/test/ui/issues/issue-21909.rs15
-rw-r--r--src/test/ui/issues/issue-21922.rs17
-rw-r--r--src/test/ui/issues/issue-22008.rs9
-rw-r--r--src/test/ui/issues/issue-22036.rs25
-rw-r--r--src/test/ui/issues/issue-2214.rs41
-rw-r--r--src/test/ui/issues/issue-2216.rs24
-rw-r--r--src/test/ui/issues/issue-22258.rs10
-rw-r--r--src/test/ui/issues/issue-22346.rs11
-rw-r--r--src/test/ui/issues/issue-22403.rs6
-rw-r--r--src/test/ui/issues/issue-22426.rs9
-rw-r--r--src/test/ui/issues/issue-22463.rs20
-rw-r--r--src/test/ui/issues/issue-22536-copy-mustnt-zero.rs28
-rw-r--r--src/test/ui/issues/issue-22546.rs52
-rw-r--r--src/test/ui/issues/issue-22577.rs27
-rw-r--r--src/test/ui/issues/issue-22629.rs14
-rw-r--r--src/test/ui/issues/issue-22828.rs23
-rw-r--r--src/test/ui/issues/issue-2284.rs14
-rw-r--r--src/test/ui/issues/issue-22864-1.rs7
-rw-r--r--src/test/ui/issues/issue-22864-2.rs7
-rw-r--r--src/test/ui/issues/issue-2288.rs35
-rw-r--r--src/test/ui/issues/issue-22992-2.rs18
-rw-r--r--src/test/ui/issues/issue-22992.rs76
-rw-r--r--src/test/ui/issues/issue-23036.rs11
-rw-r--r--src/test/ui/issues/issue-2316-c.rs12
-rw-r--r--src/test/ui/issues/issue-23208.rs26
-rw-r--r--src/test/ui/issues/issue-23261.rs61
-rw-r--r--src/test/ui/issues/issue-23304-1.rs25
-rw-r--r--src/test/ui/issues/issue-23304-2.rs13
-rw-r--r--src/test/ui/issues/issue-23311.rs12
-rw-r--r--src/test/ui/issues/issue-23336.rs11
-rw-r--r--src/test/ui/issues/issue-23338-ensure-param-drop-order.rs164
-rw-r--r--src/test/ui/issues/issue-23338-params-outlive-temps-of-body.rs30
-rw-r--r--src/test/ui/issues/issue-23433.rs13
-rw-r--r--src/test/ui/issues/issue-23485.rs50
-rw-r--r--src/test/ui/issues/issue-23491.rs9
-rw-r--r--src/test/ui/issues/issue-23611-enum-swap-in-drop.rs258
-rw-r--r--src/test/ui/issues/issue-23649-1.rs12
-rw-r--r--src/test/ui/issues/issue-23649-2.rs11
-rw-r--r--src/test/ui/issues/issue-23699.rs14
-rw-r--r--src/test/ui/issues/issue-23781.rs29
-rw-r--r--src/test/ui/issues/issue-2380-b.rs10
-rw-r--r--src/test/ui/issues/issue-23808.rs59
-rw-r--r--src/test/ui/issues/issue-23825.rs21
-rw-r--r--src/test/ui/issues/issue-2383.rs9
-rw-r--r--src/test/ui/issues/issue-23833.rs17
-rw-r--r--src/test/ui/issues/issue-23891.rs11
-rw-r--r--src/test/ui/issues/issue-23898.rs10
-rw-r--r--src/test/ui/issues/issue-23958.rs13
-rw-r--r--src/test/ui/issues/issue-23968-const-not-overflow.rs12
-rw-r--r--src/test/ui/issues/issue-23992.rs19
-rw-r--r--src/test/ui/issues/issue-24010.rs14
-rw-r--r--src/test/ui/issues/issue-24086.rs23
-rw-r--r--src/test/ui/issues/issue-2414-c.rs9
-rw-r--r--src/test/ui/issues/issue-2428.rs14
-rw-r--r--src/test/ui/issues/issue-24308.rs17
-rw-r--r--src/test/ui/issues/issue-24313.rs33
-rw-r--r--src/test/ui/issues/issue-24353.rs8
-rw-r--r--src/test/ui/issues/issue-2445-b.rs31
-rw-r--r--src/test/ui/issues/issue-2445.rs29
-rw-r--r--src/test/ui/issues/issue-24533.rs24
-rw-r--r--src/test/ui/issues/issue-24535-allow-mutable-borrow-in-match-guard.rs57
-rw-r--r--src/test/ui/issues/issue-24589.rs17
-rw-r--r--src/test/ui/issues/issue-2463.rs25
-rw-r--r--src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs10
-rw-r--r--src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs27
-rw-r--r--src/test/ui/issues/issue-24687-embed-debuginfo/main.rs13
-rw-r--r--src/test/ui/issues/issue-2472.rs14
-rw-r--r--src/test/ui/issues/issue-24779.rs4
-rw-r--r--src/test/ui/issues/issue-24805-dropck-itemless.rs77
-rw-r--r--src/test/ui/issues/issue-24945-repeat-dash-opts.rs9
-rw-r--r--src/test/ui/issues/issue-24947.rs25
-rw-r--r--src/test/ui/issues/issue-24954.rs13
-rw-r--r--src/test/ui/issues/issue-25089.rs33
-rw-r--r--src/test/ui/issues/issue-25145.rs13
-rw-r--r--src/test/ui/issues/issue-25185.rs13
-rw-r--r--src/test/ui/issues/issue-2526-a.rs11
-rw-r--r--src/test/ui/issues/issue-25279.rs16
-rw-r--r--src/test/ui/issues/issue-25339.rs31
-rw-r--r--src/test/ui/issues/issue-25343.rs22
-rw-r--r--src/test/ui/issues/issue-25467.rs12
-rw-r--r--src/test/ui/issues/issue-25497.rs19
-rw-r--r--src/test/ui/issues/issue-2550.rs22
-rw-r--r--src/test/ui/issues/issue-25515.rs20
-rw-r--r--src/test/ui/issues/issue-25549-multiple-drop.rs33
-rw-r--r--src/test/ui/issues/issue-25679.rs19
-rw-r--r--src/test/ui/issues/issue-25693.rs22
-rw-r--r--src/test/ui/issues/issue-25700-1.rs13
-rw-r--r--src/test/ui/issues/issue-25700-2.rs22
-rw-r--r--src/test/ui/issues/issue-25746-bool-transmute.rs11
-rw-r--r--src/test/ui/issues/issue-25757.rs18
-rw-r--r--src/test/ui/issues/issue-25810.rs28
-rw-r--r--src/test/ui/issues/issue-25916.rs28
-rw-r--r--src/test/ui/issues/issue-26127.rs12
-rw-r--r--src/test/ui/issues/issue-26251.rs13
-rw-r--r--src/test/ui/issues/issue-2631-b.rs17
-rw-r--r--src/test/ui/issues/issue-26322.rs30
-rw-r--r--src/test/ui/issues/issue-2633-2.rs14
-rw-r--r--src/test/ui/issues/issue-2633.rs31
-rw-r--r--src/test/ui/issues/issue-2642.rs10
-rw-r--r--src/test/ui/issues/issue-26468.rs29
-rw-r--r--src/test/ui/issues/issue-26484.rs11
-rw-r--r--src/test/ui/issues/issue-26641.rs6
-rw-r--r--src/test/ui/issues/issue-26655.rs25
-rw-r--r--src/test/ui/issues/issue-26709.rs17
-rw-r--r--src/test/ui/issues/issue-26802.rs14
-rw-r--r--src/test/ui/issues/issue-26805.rs6
-rw-r--r--src/test/ui/issues/issue-26873-multifile.rs11
-rw-r--r--src/test/ui/issues/issue-26873-multifile/A/B.rs4
-rw-r--r--src/test/ui/issues/issue-26873-multifile/A/C.rs6
-rw-r--r--src/test/ui/issues/issue-26873-multifile/A/mod.rs5
-rw-r--r--src/test/ui/issues/issue-26873-multifile/compiletest-ignore-dir0
-rw-r--r--src/test/ui/issues/issue-26873-multifile/mod.rs4
-rw-r--r--src/test/ui/issues/issue-26873-onefile.rs25
-rw-r--r--src/test/ui/issues/issue-26996.rs24
-rw-r--r--src/test/ui/issues/issue-27021.rs28
-rw-r--r--src/test/ui/issues/issue-27054-primitive-binary-ops.rs5
-rw-r--r--src/test/ui/issues/issue-2708.rs30
-rw-r--r--src/test/ui/issues/issue-2718.rs327
-rw-r--r--src/test/ui/issues/issue-2723-b.rs11
-rw-r--r--src/test/ui/issues/issue-27240.rs26
-rw-r--r--src/test/ui/issues/issue-27268.rs4
-rw-r--r--src/test/ui/issues/issue-27320.rs15
-rw-r--r--src/test/ui/issues/issue-2734.rs24
-rw-r--r--src/test/ui/issues/issue-2735-2.rs27
-rw-r--r--src/test/ui/issues/issue-2735-3.rs27
-rw-r--r--src/test/ui/issues/issue-2735.rs24
-rw-r--r--src/test/ui/issues/issue-27401-dropflag-reinit.rs27
-rw-r--r--src/test/ui/issues/issue-2748-b.rs11
-rw-r--r--src/test/ui/issues/issue-27639.rs11
-rw-r--r--src/test/ui/issues/issue-27859.rs21
-rw-r--r--src/test/ui/issues/issue-27890.rs7
-rw-r--r--src/test/ui/issues/issue-27901.rs11
-rw-r--r--src/test/ui/issues/issue-27949.rs41
-rw-r--r--src/test/ui/issues/issue-27997.rs37
-rw-r--r--src/test/ui/issues/issue-28181.rs6
-rw-r--r--src/test/ui/issues/issue-28498-must-work-ex1.rs18
-rw-r--r--src/test/ui/issues/issue-28498-must-work-ex2.rs20
-rw-r--r--src/test/ui/issues/issue-28498-ugeh-ex1.rs27
-rw-r--r--src/test/ui/issues/issue-28498-ugeh-with-lifetime-param.rs38
-rw-r--r--src/test/ui/issues/issue-28498-ugeh-with-passed-to-fn.rs46
-rw-r--r--src/test/ui/issues/issue-28498-ugeh-with-trait-bound.rs41
-rw-r--r--src/test/ui/issues/issue-28550.rs16
-rw-r--r--src/test/ui/issues/issue-28676.rs35
-rw-r--r--src/test/ui/issues/issue-28777.rs21
-rw-r--r--src/test/ui/issues/issue-28828.rs18
-rw-r--r--src/test/ui/issues/issue-28839.rs15
-rw-r--r--src/test/ui/issues/issue-2895.rs28
-rw-r--r--src/test/ui/issues/issue-28950.rs22
-rw-r--r--src/test/ui/issues/issue-28983.rs22
-rw-r--r--src/test/ui/issues/issue-29053.rs12
-rw-r--r--src/test/ui/issues/issue-29071-2.rs32
-rw-r--r--src/test/ui/issues/issue-29092.rs26
-rw-r--r--src/test/ui/issues/issue-29166.rs21
-rw-r--r--src/test/ui/issues/issue-29227.rs142
-rw-r--r--src/test/ui/issues/issue-2935.rs29
-rw-r--r--src/test/ui/issues/issue-2936.rs31
-rw-r--r--src/test/ui/issues/issue-29466.rs3603
-rw-r--r--src/test/ui/issues/issue-29485.rs18
-rw-r--r--src/test/ui/issues/issue-29488.rs23
-rw-r--r--src/test/ui/issues/issue-29522.rs17
-rw-r--r--src/test/ui/issues/issue-29663.rs56
-rw-r--r--src/test/ui/issues/issue-29668.rs16
-rw-r--r--src/test/ui/issues/issue-29746.rs36
-rw-r--r--src/test/ui/issues/issue-29844.rs24
-rw-r--r--src/test/ui/issues/issue-2989.rs36
-rw-r--r--src/test/ui/issues/issue-29914-2.rs6
-rw-r--r--src/test/ui/issues/issue-29914-3.rs7
-rw-r--r--src/test/ui/issues/issue-29914.rs10
-rw-r--r--src/test/ui/issues/issue-29927-1.rs11
-rw-r--r--src/test/ui/issues/issue-29927.rs11
-rw-r--r--src/test/ui/issues/issue-29948.rs40
-rw-r--r--src/test/ui/issues/issue-30018-nopanic.rs103
-rw-r--r--src/test/ui/issues/issue-30018-panic.rs25
-rw-r--r--src/test/ui/issues/issue-30081.rs15
-rw-r--r--src/test/ui/issues/issue-3012-2.rs13
-rw-r--r--src/test/ui/issues/issue-3026.rs13
-rw-r--r--src/test/ui/issues/issue-3037.rs16
-rw-r--r--src/test/ui/issues/issue-30371.rs10
-rw-r--r--src/test/ui/issues/issue-30490.rs102
-rw-r--r--src/test/ui/issues/issue-3052.rs13
-rw-r--r--src/test/ui/issues/issue-30530.rs28
-rw-r--r--src/test/ui/issues/issue-30615.rs5
-rw-r--r--src/test/ui/issues/issue-30756.rs7
-rw-r--r--src/test/ui/issues/issue-30891.rs10
-rw-r--r--src/test/ui/issues/issue-3091.rs7
-rw-r--r--src/test/ui/issues/issue-3109.rs4
-rw-r--r--src/test/ui/issues/issue-3121.rs25
-rw-r--r--src/test/ui/issues/issue-31267-additional.rs20
-rw-r--r--src/test/ui/issues/issue-31267.rs14
-rw-r--r--src/test/ui/issues/issue-31299.rs34
-rw-r--r--src/test/ui/issues/issue-3136-b.rs8
-rw-r--r--src/test/ui/issues/issue-31702.rs10
-rw-r--r--src/test/ui/issues/issue-31776.rs57
-rw-r--r--src/test/ui/issues/issue-32008.rs28
-rw-r--r--src/test/ui/issues/issue-3211.rs7
-rw-r--r--src/test/ui/issues/issue-3220.rs25
-rw-r--r--src/test/ui/issues/issue-32292.rs9
-rw-r--r--src/test/ui/issues/issue-32389.rs11
-rw-r--r--src/test/ui/issues/issue-32518.rs13
-rw-r--r--src/test/ui/issues/issue-32805.rs10
-rw-r--r--src/test/ui/issues/issue-3290.rs8
-rw-r--r--src/test/ui/issues/issue-32947.rs24
-rw-r--r--src/test/ui/issues/issue-33096.rs18
-rw-r--r--src/test/ui/issues/issue-33185.rs17
-rw-r--r--src/test/ui/issues/issue-33187.rs18
-rw-r--r--src/test/ui/issues/issue-33202.rs9
-rw-r--r--src/test/ui/issues/issue-333.rs7
-rw-r--r--src/test/ui/issues/issue-33387.rs32
-rw-r--r--src/test/ui/issues/issue-33461.rs28
-rw-r--r--src/test/ui/issues/issue-33498.rs11
-rw-r--r--src/test/ui/issues/issue-33537.rs14
-rw-r--r--src/test/ui/issues/issue-33687.rs17
-rw-r--r--src/test/ui/issues/issue-33770.rs95
-rw-r--r--src/test/ui/issues/issue-3389.rs26
-rw-r--r--src/test/ui/issues/issue-33992.rs32
-rw-r--r--src/test/ui/issues/issue-34053.rs30
-rw-r--r--src/test/ui/issues/issue-34074.rs10
-rw-r--r--src/test/ui/issues/issue-3429.rs8
-rw-r--r--src/test/ui/issues/issue-34427.rs17
-rw-r--r--src/test/ui/issues/issue-3447.rs33
-rw-r--r--src/test/ui/issues/issue-34503.rs11
-rw-r--r--src/test/ui/issues/issue-34569.rs17
-rw-r--r--src/test/ui/issues/issue-34571.rs11
-rw-r--r--src/test/ui/issues/issue-34784.rs19
-rw-r--r--src/test/ui/issues/issue-34796.rs28
-rw-r--r--src/test/ui/issues/issue-34798.rs25
-rw-r--r--src/test/ui/issues/issue-34932.rs12
-rw-r--r--src/test/ui/issues/issue-3500.rs10
-rw-r--r--src/test/ui/issues/issue-35423.rs9
-rw-r--r--src/test/ui/issues/issue-3556.rs36
-rw-r--r--src/test/ui/issues/issue-3559.rs18
-rw-r--r--src/test/ui/issues/issue-35600.rs16
-rw-r--r--src/test/ui/issues/issue-3563-3.rs180
-rw-r--r--src/test/ui/issues/issue-3574.rs14
-rw-r--r--src/test/ui/issues/issue-35815.rs15
-rw-r--r--src/test/ui/issues/issue-36023.rs24
-rw-r--r--src/test/ui/issues/issue-36036-associated-type-layout.rs27
-rw-r--r--src/test/ui/issues/issue-36053.rs22
-rw-r--r--src/test/ui/issues/issue-36139-normalize-closure-sig.rs19
-rw-r--r--src/test/ui/issues/issue-36260.rs13
-rw-r--r--src/test/ui/issues/issue-36278-prefix-nesting.rs19
-rw-r--r--src/test/ui/issues/issue-36381.rs25
-rw-r--r--src/test/ui/issues/issue-36401.rs16
-rw-r--r--src/test/ui/issues/issue-36474.rs31
-rw-r--r--src/test/ui/issues/issue-3656.rs30
-rw-r--r--src/test/ui/issues/issue-36744-bitcast-args-if-needed.rs23
-rw-r--r--src/test/ui/issues/issue-36768.rs9
-rw-r--r--src/test/ui/issues/issue-36786-resolve-call.rs8
-rw-r--r--src/test/ui/issues/issue-36792.rs7
-rw-r--r--src/test/ui/issues/issue-36816.rs7
-rw-r--r--src/test/ui/issues/issue-3683.rs18
-rw-r--r--src/test/ui/issues/issue-36856.rs15
-rw-r--r--src/test/ui/issues/issue-36936.rs26
-rw-r--r--src/test/ui/issues/issue-36954.rs8
-rw-r--r--src/test/ui/issues/issue-3702.rs13
-rw-r--r--src/test/ui/issues/issue-37109.rs16
-rw-r--r--src/test/ui/issues/issue-37175.rs5
-rw-r--r--src/test/ui/issues/issue-37222.rs17
-rw-r--r--src/test/ui/issues/issue-37291/auxiliary/lib.rs42
-rw-r--r--src/test/ui/issues/issue-37291/main.rs21
-rw-r--r--src/test/ui/issues/issue-3743.rs55
-rw-r--r--src/test/ui/issues/issue-3753.rs32
-rw-r--r--src/test/ui/issues/issue-37686.rs7
-rw-r--r--src/test/ui/issues/issue-3794.rs32
-rw-r--r--src/test/ui/issues/issue-37991.rs17
-rw-r--r--src/test/ui/issues/issue-38002.rs35
-rw-r--r--src/test/ui/issues/issue-38033.rs79
-rw-r--r--src/test/ui/issues/issue-38074.rs20
-rw-r--r--src/test/ui/issues/issue-38091.rs20
-rw-r--r--src/test/ui/issues/issue-38190.rs15
-rw-r--r--src/test/ui/issues/issue-38226.rs15
-rw-r--r--src/test/ui/issues/issue-38437.rs46
-rw-r--r--src/test/ui/issues/issue-3847.rs13
-rw-r--r--src/test/ui/issues/issue-38556.rs13
-rw-r--r--src/test/ui/issues/issue-38763.rs12
-rw-r--r--src/test/ui/issues/issue-3878.rs10
-rw-r--r--src/test/ui/issues/issue-38942.rs17
-rw-r--r--src/test/ui/issues/issue-3895.rs11
-rw-r--r--src/test/ui/issues/issue-38987.rs4
-rw-r--r--src/test/ui/issues/issue-3904.rs25
-rw-r--r--src/test/ui/issues/issue-39292.rs17
-rw-r--r--src/test/ui/issues/issue-3935.rs13
-rw-r--r--src/test/ui/issues/issue-39367.rs39
-rw-r--r--src/test/ui/issues/issue-39548.rs6
-rw-r--r--src/test/ui/issues/issue-39709.rs5
-rw-r--r--src/test/ui/issues/issue-39720.rs26
-rw-r--r--src/test/ui/issues/issue-39720.stderr16
-rw-r--r--src/test/ui/issues/issue-3979-generics.rs36
-rw-r--r--src/test/ui/issues/issue-3979-xcrate.rs25
-rw-r--r--src/test/ui/issues/issue-3979.rs34
-rw-r--r--src/test/ui/issues/issue-39808.rs17
-rw-r--r--src/test/ui/issues/issue-39823.rs25
-rw-r--r--src/test/ui/issues/issue-39827.rs34
-rw-r--r--src/test/ui/issues/issue-40003.rs178
-rw-r--r--src/test/ui/issues/issue-40085.rs13
-rw-r--r--src/test/ui/issues/issue-40235.rs8
-rw-r--r--src/test/ui/issues/issue-40408.rs7
-rw-r--r--src/test/ui/issues/issue-40469.rs9
-rw-r--r--src/test/ui/issues/issue-40770.rs11
-rw-r--r--src/test/ui/issues/issue-40847.rs17
-rw-r--r--src/test/ui/issues/issue-40883.rs93
-rw-r--r--src/test/ui/issues/issue-40951.rs12
-rw-r--r--src/test/ui/issues/issue-41053.rs21
-rw-r--r--src/test/ui/issues/issue-4107.rs26
-rw-r--r--src/test/ui/issues/issue-41213.rs24
-rw-r--r--src/test/ui/issues/issue-41479.rs9
-rw-r--r--src/test/ui/issues/issue-41498.rs17
-rw-r--r--src/test/ui/issues/issue-41604.rs11
-rw-r--r--src/test/ui/issues/issue-41677.rs28
-rw-r--r--src/test/ui/issues/issue-41696.rs54
-rw-r--r--src/test/ui/issues/issue-41744.rs7
-rw-r--r--src/test/ui/issues/issue-41803.rs21
-rw-r--r--src/test/ui/issues/issue-41849-variance-req.rs35
-rw-r--r--src/test/ui/issues/issue-41888.rs34
-rw-r--r--src/test/ui/issues/issue-42007.rs11
-rw-r--r--src/test/ui/issues/issue-4208.rs12
-rw-r--r--src/test/ui/issues/issue-42148.rs6
-rw-r--r--src/test/ui/issues/issue-42210.rs20
-rw-r--r--src/test/ui/issues/issue-4228.rs16
-rw-r--r--src/test/ui/issues/issue-42453.rs10
-rw-r--r--src/test/ui/issues/issue-42463.rs32
-rw-r--r--src/test/ui/issues/issue-4252.rs33
-rw-r--r--src/test/ui/issues/issue-42552.rs31
-rw-r--r--src/test/ui/issues/issue-42679.rs22
-rw-r--r--src/test/ui/issues/issue-42747.rs46
-rw-r--r--src/test/ui/issues/issue-43132.rs65
-rw-r--r--src/test/ui/issues/issue-43205.rs5
-rw-r--r--src/test/ui/issues/issue-43291.rs9
-rw-r--r--src/test/ui/issues/issue-4333.rs10
-rw-r--r--src/test/ui/issues/issue-43692.rs5
-rw-r--r--src/test/ui/issues/issue-43853.rs17
-rw-r--r--src/test/ui/issues/issue-4387.rs6
-rw-r--r--src/test/ui/issues/issue-43910.rs7
-rw-r--r--src/test/ui/issues/issue-43923.rs12
-rw-r--r--src/test/ui/issues/issue-4401.rs7
-rw-r--r--src/test/ui/issues/issue-44333.rs20
-rw-r--r--src/test/ui/issues/issue-4446.rs15
-rw-r--r--src/test/ui/issues/issue-4448.rs16
-rw-r--r--src/test/ui/issues/issue-45124.rs18
-rw-r--r--src/test/ui/issues/issue-45152.rs24
-rw-r--r--src/test/ui/issues/issue-4541.rs23
-rw-r--r--src/test/ui/issues/issue-4542.rs13
-rw-r--r--src/test/ui/issues/issue-4545.rs7
-rw-r--r--src/test/ui/issues/issue-45510.rs32
-rw-r--r--src/test/ui/issues/issue-45731.rs26
-rw-r--r--src/test/ui/issues/issue-46069.rs23
-rw-r--r--src/test/ui/issues/issue-46095.rs30
-rw-r--r--src/test/ui/issues/issue-46519.rs28
-rw-r--r--src/test/ui/issues/issue-46553.rs23
-rw-r--r--src/test/ui/issues/issue-46845.rs32
-rw-r--r--src/test/ui/issues/issue-46855.rs24
-rw-r--r--src/test/ui/issues/issue-46920-byte-array-patterns.rs28
-rw-r--r--src/test/ui/issues/issue-47139-1.rs78
-rw-r--r--src/test/ui/issues/issue-47139-2.rs66
-rw-r--r--src/test/ui/issues/issue-4734.rs37
-rw-r--r--src/test/ui/issues/issue-4735.rs19
-rw-r--r--src/test/ui/issues/issue-47364.rs59
-rw-r--r--src/test/ui/issues/issue-4759-1.rs4
-rw-r--r--src/test/ui/issues/issue-4759.rs20
-rw-r--r--src/test/ui/issues/issue-47638.rs10
-rw-r--r--src/test/ui/issues/issue-48006.rs15
-rw-r--r--src/test/ui/issues/issue-48159.rs27
-rw-r--r--src/test/ui/issues/issue-48508-aux.rs7
-rw-r--r--src/test/ui/issues/issue-48508.rs19
-rw-r--r--src/test/ui/issues/issue-4865-1.rs33
-rw-r--r--src/test/ui/issues/issue-4865-2.rs24
-rw-r--r--src/test/ui/issues/issue-4865-3.rs17
-rw-r--r--src/test/ui/issues/issue-4875.rs15
-rw-r--r--src/test/ui/issues/issue-48962.rs34
-rw-r--r--src/test/ui/issues/issue-48984.rs9
-rw-r--r--src/test/ui/issues/issue-49298.rs42
-rw-r--r--src/test/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs16
-rw-r--r--src/test/ui/issues/issue-49632.rs8
-rw-r--r--src/test/ui/issues/issue-49685.rs13
-rw-r--r--src/test/ui/issues/issue-49854.rs9
-rw-r--r--src/test/ui/issues/issue-49955-2.rs19
-rw-r--r--src/test/ui/issues/issue-49955.rs20
-rw-r--r--src/test/ui/issues/issue-49973.rs11
-rw-r--r--src/test/ui/issues/issue-5008-borrowed-traitobject-method-call.rs34
-rw-r--r--src/test/ui/issues/issue-50415.rs18
-rw-r--r--src/test/ui/issues/issue-50442.rs13
-rw-r--r--src/test/ui/issues/issue-5060.rs16
-rw-r--r--src/test/ui/issues/issue-50689.rs9
-rw-r--r--src/test/ui/issues/issue-50731.rs6
-rw-r--r--src/test/ui/issues/issue-50811.rs56
-rw-r--r--src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs14
-rw-r--r--src/test/ui/issues/issue-50865-private-impl-trait/main.rs16
-rw-r--r--src/test/ui/issues/issue-51185.rs8
-rw-r--r--src/test/ui/issues/issue-51345.rs8
-rw-r--r--src/test/ui/issues/issue-51582.rs18
-rw-r--r--src/test/ui/issues/issue-51907.rs17
-rw-r--r--src/test/ui/issues/issue-5192.rs41
-rw-r--r--src/test/ui/issues/issue-52140/auxiliary/some_crate.rs5
-rw-r--r--src/test/ui/issues/issue-52140/main.rs13
-rw-r--r--src/test/ui/issues/issue-52141/auxiliary/some_crate.rs5
-rw-r--r--src/test/ui/issues/issue-52141/main.rs16
-rw-r--r--src/test/ui/issues/issue-52169.rs14
-rw-r--r--src/test/ui/issues/issue-5239-2.rs9
-rw-r--r--src/test/ui/issues/issue-5243.rs17
-rw-r--r--src/test/ui/issues/issue-52557.rs30
-rw-r--r--src/test/ui/issues/issue-52705/auxiliary/png2.rs3
-rw-r--r--src/test/ui/issues/issue-52705/main.rs15
-rw-r--r--src/test/ui/issues/issue-5280.rs18
-rw-r--r--src/test/ui/issues/issue-5315.rs9
-rw-r--r--src/test/ui/issues/issue-5321-immediates-with-bare-self.rs15
-rw-r--r--src/test/ui/issues/issue-53333.rs9
-rw-r--r--src/test/ui/issues/issue-53728.rs19
-rw-r--r--src/test/ui/issues/issue-53843.rs26
-rw-r--r--src/test/ui/issues/issue-54462-mutable-noalias-correctness.rs25
-rw-r--r--src/test/ui/issues/issue-54467.rs46
-rw-r--r--src/test/ui/issues/issue-54477-reduced-2.rs26
-rw-r--r--src/test/ui/issues/issue-54696.rs8
-rw-r--r--src/test/ui/issues/issue-5518.rs8
-rw-r--r--src/test/ui/issues/issue-5521.rs17
-rw-r--r--src/test/ui/issues/issue-5530.rs40
-rw-r--r--src/test/ui/issues/issue-55376.rs16
-rw-r--r--src/test/ui/issues/issue-55380.rs28
-rw-r--r--src/test/ui/issues/issue-5550.rs9
-rw-r--r--src/test/ui/issues/issue-5554.rs29
-rw-r--r--src/test/ui/issues/issue-56237.rs13
-rw-r--r--src/test/ui/issues/issue-5666.rs27
-rw-r--r--src/test/ui/issues/issue-5688.rs20
-rw-r--r--src/test/ui/issues/issue-5708.rs55
-rw-r--r--src/test/ui/issues/issue-5718.rs26
-rw-r--r--src/test/ui/issues/issue-5741.rs9
-rw-r--r--src/test/ui/issues/issue-5791.rs12
-rw-r--r--src/test/ui/issues/issue-58212.rs16
-rw-r--r--src/test/ui/issues/issue-58435-ice-with-assoc-const.rs18
-rw-r--r--src/test/ui/issues/issue-58463.rs8
-rw-r--r--src/test/ui/issues/issue-5917.rs9
-rw-r--r--src/test/ui/issues/issue-5988.rs24
-rw-r--r--src/test/ui/issues/issue-5997.rs15
-rw-r--r--src/test/ui/issues/issue-6117.rs12
-rw-r--r--src/test/ui/issues/issue-6128.rs24
-rw-r--r--src/test/ui/issues/issue-6130.rs10
-rw-r--r--src/test/ui/issues/issue-6153.rs13
-rw-r--r--src/test/ui/issues/issue-6157.rs23
-rw-r--r--src/test/ui/issues/issue-61696.rs66
-rw-r--r--src/test/ui/issues/issue-61894.rs21
-rw-r--r--src/test/ui/issues/issue-6318.rs22
-rw-r--r--src/test/ui/issues/issue-6334.rs46
-rw-r--r--src/test/ui/issues/issue-6344-let.rs15
-rw-r--r--src/test/ui/issues/issue-6344-match.rs18
-rw-r--r--src/test/ui/issues/issue-6449.rs44
-rw-r--r--src/test/ui/issues/issue-6892.rs58
-rw-r--r--src/test/ui/issues/issue-6919.rs12
-rw-r--r--src/test/ui/issues/issue-7012.rs22
-rw-r--r--src/test/ui/issues/issue-7178.rs10
-rw-r--r--src/test/ui/issues/issue-7222.rs12
-rw-r--r--src/test/ui/issues/issue-7344.rs22
-rw-r--r--src/test/ui/issues/issue-7519-match-unit-in-arg.rs12
-rw-r--r--src/test/ui/issues/issue-7563.rs28
-rw-r--r--src/test/ui/issues/issue-7575.rs17
-rw-r--r--src/test/ui/issues/issue-7660.rs18
-rw-r--r--src/test/ui/issues/issue-7663.rs32
-rw-r--r--src/test/ui/issues/issue-7784.rs31
-rw-r--r--src/test/ui/issues/issue-7899.rs11
-rw-r--r--src/test/ui/issues/issue-7911.rs37
-rw-r--r--src/test/ui/issues/issue-8044.rs11
-rw-r--r--src/test/ui/issues/issue-8248.rs15
-rw-r--r--src/test/ui/issues/issue-8249.rs20
-rw-r--r--src/test/ui/issues/issue-8259.rs12
-rw-r--r--src/test/ui/issues/issue-8351-1.rs16
-rw-r--r--src/test/ui/issues/issue-8351-2.rs16
-rw-r--r--src/test/ui/issues/issue-8391.rs9
-rw-r--r--src/test/ui/issues/issue-8401.rs8
-rw-r--r--src/test/ui/issues/issue-8460.rs51
-rw-r--r--src/test/ui/issues/issue-8498.rs27
-rw-r--r--src/test/ui/issues/issue-8506.rs14
-rw-r--r--src/test/ui/issues/issue-868.rs18
-rw-r--r--src/test/ui/issues/issue-8709.rs14
-rw-r--r--src/test/ui/issues/issue-8783.rs24
-rw-r--r--src/test/ui/issues/issue-8827.rs53
-rw-r--r--src/test/ui/issues/issue-8851.rs30
-rw-r--r--src/test/ui/issues/issue-8860.rs49
-rw-r--r--src/test/ui/issues/issue-8898.rs18
-rw-r--r--src/test/ui/issues/issue-9047.rs14
-rw-r--r--src/test/ui/issues/issue-9123.rs8
-rw-r--r--src/test/ui/issues/issue-9129.rs35
-rw-r--r--src/test/ui/issues/issue-9155.rs12
-rw-r--r--src/test/ui/issues/issue-9188.rs11
-rw-r--r--src/test/ui/issues/issue-9259.rs16
-rw-r--r--src/test/ui/issues/issue-9382.rs41
-rw-r--r--src/test/ui/issues/issue-9394-inherited-trait-calls.rs62
-rw-r--r--src/test/ui/issues/issue-9396.rs24
-rw-r--r--src/test/ui/issues/issue-9446.rs30
-rw-r--r--src/test/ui/issues/issue-9737.rs10
-rw-r--r--src/test/ui/issues/issue-979.rs29
-rw-r--r--src/test/ui/issues/issue-9837.rs11
-rw-r--r--src/test/ui/issues/issue-9906.rs11
-rw-r--r--src/test/ui/issues/issue-9918.rs5
-rw-r--r--src/test/ui/issues/issue-9942.rs6
-rw-r--r--src/test/ui/issues/issue-9951.rs21
-rw-r--r--src/test/ui/issues/issue-9968.rs13
799 files changed, 20870 insertions, 0 deletions
diff --git a/src/test/ui/issues/.gitattributes b/src/test/ui/issues/.gitattributes
new file mode 100644
index 00000000000..4517a4a2f1e
--- /dev/null
+++ b/src/test/ui/issues/.gitattributes
@@ -0,0 +1 @@
+issue-16278.rs -text
diff --git a/src/test/ui/issues/auxiliary/cgu_test.rs b/src/test/ui/issues/auxiliary/cgu_test.rs
new file mode 100644
index 00000000000..5ed973164a1
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/cgu_test.rs
@@ -0,0 +1,6 @@
+// no-prefer-dynamic
+// compile-flags: --crate-type=lib
+
+pub fn id<T>(t: T) -> T {
+  t
+}
diff --git a/src/test/ui/issues/auxiliary/cgu_test_a.rs b/src/test/ui/issues/auxiliary/cgu_test_a.rs
new file mode 100644
index 00000000000..a3dcd92012e
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/cgu_test_a.rs
@@ -0,0 +1,15 @@
+// no-prefer-dynamic
+// compile-flags: -Ccodegen-units=2 --crate-type=lib
+
+extern crate cgu_test;
+
+pub mod a {
+    pub fn a() {
+        ::cgu_test::id(0);
+    }
+}
+pub mod b {
+    pub fn a() {
+        ::cgu_test::id(0);
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/cgu_test_b.rs b/src/test/ui/issues/auxiliary/cgu_test_b.rs
new file mode 100644
index 00000000000..a3dcd92012e
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/cgu_test_b.rs
@@ -0,0 +1,15 @@
+// no-prefer-dynamic
+// compile-flags: -Ccodegen-units=2 --crate-type=lib
+
+extern crate cgu_test;
+
+pub mod a {
+    pub fn a() {
+        ::cgu_test::id(0);
+    }
+}
+pub mod b {
+    pub fn a() {
+        ::cgu_test::id(0);
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/i8.rs b/src/test/ui/issues/auxiliary/i8.rs
new file mode 100644
index 00000000000..889a9c4ebb1
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/i8.rs
@@ -0,0 +1,3 @@
+// A crate named after a built-in type.
+
+pub struct Test;
diff --git a/src/test/ui/issues/auxiliary/iss.rs b/src/test/ui/issues/auxiliary/iss.rs
new file mode 100644
index 00000000000..cf32f6c2d5d
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/iss.rs
@@ -0,0 +1,12 @@
+#![crate_name="issue6919_3"]
+
+// part of issue-6919.rs
+
+pub struct C<K> where K: FnOnce() {
+    pub k: K,
+}
+
+fn no_op() { }
+pub const D : C<fn()> = C {
+    k: no_op as fn()
+};
diff --git a/src/test/ui/issues/auxiliary/issue-10028.rs b/src/test/ui/issues/auxiliary/issue-10028.rs
new file mode 100644
index 00000000000..135f26f4047
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-10028.rs
@@ -0,0 +1,9 @@
+pub struct ZeroLengthThingWithDestructor;
+impl Drop for ZeroLengthThingWithDestructor {
+    fn drop(&mut self) {}
+}
+impl ZeroLengthThingWithDestructor {
+    pub fn new() -> ZeroLengthThingWithDestructor {
+        ZeroLengthThingWithDestructor
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-10031-aux.rs b/src/test/ui/issues/auxiliary/issue-10031-aux.rs
new file mode 100644
index 00000000000..e2abeb99ea8
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-10031-aux.rs
@@ -0,0 +1 @@
+pub struct Wrap<A>(pub A);
diff --git a/src/test/ui/issues/auxiliary/issue-11224.rs b/src/test/ui/issues/auxiliary/issue-11224.rs
new file mode 100644
index 00000000000..63543621a80
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-11224.rs
@@ -0,0 +1,16 @@
+#![deny(dead_code)]
+
+mod inner {
+    pub trait Trait {
+        fn f(&self) { f(); }
+    }
+
+    impl Trait for isize {}
+
+    fn f() {}
+}
+
+pub fn foo() {
+    let a = &1isize as &inner::Trait;
+    a.f();
+}
diff --git a/src/test/ui/issues/auxiliary/issue-11225-1.rs b/src/test/ui/issues/auxiliary/issue-11225-1.rs
new file mode 100644
index 00000000000..2c6f899a0f4
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-11225-1.rs
@@ -0,0 +1,18 @@
+mod inner {
+    pub trait Trait {
+        fn f(&self) { f(); }
+        fn f_ufcs(&self) { f_ufcs(); }
+    }
+
+    impl Trait for isize {}
+
+    fn f() {}
+    fn f_ufcs() {}
+}
+
+pub fn foo<T: inner::Trait>(t: T) {
+    t.f();
+}
+pub fn foo_ufcs<T: inner::Trait>(t: T) {
+    T::f_ufcs(&t);
+}
diff --git a/src/test/ui/issues/auxiliary/issue-11225-2.rs b/src/test/ui/issues/auxiliary/issue-11225-2.rs
new file mode 100644
index 00000000000..4381f0a4edf
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-11225-2.rs
@@ -0,0 +1,28 @@
+use inner::Trait;
+
+mod inner {
+    pub struct Foo;
+    pub trait Trait {
+        fn f(&self);
+        fn f_ufcs(&self);
+    }
+
+    impl Trait for Foo {
+        fn f(&self) { }
+        fn f_ufcs(&self) { }
+    }
+}
+
+pub trait Outer {
+    fn foo<T: Trait>(&self, t: T) { t.f(); }
+    fn foo_ufcs<T: Trait>(&self, t: T) { T::f(&t); }
+}
+
+impl Outer for isize {}
+
+pub fn foo<T: Outer>(t: T) {
+    t.foo(inner::Foo);
+}
+pub fn foo_ufcs<T: Outer>(t: T) {
+    T::foo_ufcs(&t, inner::Foo)
+}
diff --git a/src/test/ui/issues/auxiliary/issue-11225-3.rs b/src/test/ui/issues/auxiliary/issue-11225-3.rs
new file mode 100644
index 00000000000..266e42a10b5
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-11225-3.rs
@@ -0,0 +1,28 @@
+trait PrivateTrait {
+    fn private_trait_method(&self);
+    fn private_trait_method_ufcs(&self);
+}
+
+struct PrivateStruct;
+
+impl PrivateStruct {
+    fn private_inherent_method(&self) { }
+    fn private_inherent_method_ufcs(&self) { }
+}
+
+impl PrivateTrait for PrivateStruct {
+    fn private_trait_method(&self) { }
+    fn private_trait_method_ufcs(&self) { }
+}
+
+#[inline]
+pub fn public_inlinable_function() {
+    PrivateStruct.private_trait_method();
+    PrivateStruct.private_inherent_method();
+}
+
+#[inline]
+pub fn public_inlinable_function_ufcs() {
+    PrivateStruct::private_trait_method(&PrivateStruct);
+    PrivateStruct::private_inherent_method(&PrivateStruct);
+}
diff --git a/src/test/ui/issues/auxiliary/issue-11508.rs b/src/test/ui/issues/auxiliary/issue-11508.rs
new file mode 100644
index 00000000000..16bfc65c2b5
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-11508.rs
@@ -0,0 +1,10 @@
+pub struct Closed01<F>(pub F);
+
+pub trait Bar { fn new() -> Self; }
+
+impl<T: Bar> Bar for Closed01<T> {
+    fn new() -> Closed01<T> { Closed01(Bar::new()) }
+}
+impl Bar for f32 { fn new() -> f32 { 1.0 } }
+
+pub fn random<T: Bar>() -> T { Bar::new() }
diff --git a/src/test/ui/issues/auxiliary/issue-11529.rs b/src/test/ui/issues/auxiliary/issue-11529.rs
new file mode 100644
index 00000000000..dd3ef438705
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-11529.rs
@@ -0,0 +1 @@
+pub struct A<'a>(pub &'a isize);
diff --git a/src/test/ui/issues/auxiliary/issue-12133-dylib.rs b/src/test/ui/issues/auxiliary/issue-12133-dylib.rs
new file mode 100644
index 00000000000..8bd2b3353b8
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-12133-dylib.rs
@@ -0,0 +1 @@
+#![crate_type = "dylib"]
diff --git a/src/test/ui/issues/auxiliary/issue-12133-dylib2.rs b/src/test/ui/issues/auxiliary/issue-12133-dylib2.rs
new file mode 100644
index 00000000000..30de7400600
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-12133-dylib2.rs
@@ -0,0 +1,6 @@
+// no-prefer-dynamic
+
+#![crate_type = "dylib"]
+
+extern crate issue_12133_rlib as a;
+extern crate issue_12133_dylib as b;
diff --git a/src/test/ui/issues/auxiliary/issue-12133-rlib.rs b/src/test/ui/issues/auxiliary/issue-12133-rlib.rs
new file mode 100644
index 00000000000..39c261e1162
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-12133-rlib.rs
@@ -0,0 +1,3 @@
+// no-prefer-dynamic
+
+#![crate_type = "rlib"]
diff --git a/src/test/ui/issues/auxiliary/issue-12612-1.rs b/src/test/ui/issues/auxiliary/issue-12612-1.rs
new file mode 100644
index 00000000000..01f5a784bb7
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-12612-1.rs
@@ -0,0 +1,3 @@
+pub mod bar {
+    pub fn foo() {}
+}
diff --git a/src/test/ui/issues/auxiliary/issue-12612-2.rs b/src/test/ui/issues/auxiliary/issue-12612-2.rs
new file mode 100644
index 00000000000..2c724787193
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-12612-2.rs
@@ -0,0 +1 @@
+pub fn baz() {}
diff --git a/src/test/ui/issues/auxiliary/issue-12660-aux.rs b/src/test/ui/issues/auxiliary/issue-12660-aux.rs
new file mode 100644
index 00000000000..6dea8662dfe
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-12660-aux.rs
@@ -0,0 +1,11 @@
+#![crate_type="lib"]
+#![crate_name="issue12660aux"]
+
+pub use my_mod::{MyStruct, my_fn};
+
+mod my_mod {
+    pub struct MyStruct;
+
+    pub fn my_fn(my_struct: MyStruct) {
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-13507.rs b/src/test/ui/issues/auxiliary/issue-13507.rs
new file mode 100644
index 00000000000..c91013043eb
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-13507.rs
@@ -0,0 +1,87 @@
+pub mod testtypes {
+    use std::any::TypeId;
+
+    pub fn type_ids() -> Vec<TypeId> {
+        vec![
+            TypeId::of::<FooBool>(),
+            TypeId::of::<FooInt>(),
+            TypeId::of::<FooUint>(),
+            TypeId::of::<FooFloat>(),
+            TypeId::of::<FooStr>(),
+            TypeId::of::<FooArray>(),
+            TypeId::of::<FooSlice>(),
+            TypeId::of::<FooBox>(),
+            TypeId::of::<FooPtr>(),
+            TypeId::of::<FooRef>(),
+            TypeId::of::<FooFnPtr>(),
+            TypeId::of::<FooNil>(),
+            TypeId::of::<FooTuple>(),
+            TypeId::of::<FooTrait>(),
+            TypeId::of::<FooStruct>(),
+            TypeId::of::<FooEnum>()
+        ]
+    }
+
+    // Tests Bool
+    pub type FooBool = bool;
+
+    // Tests Char
+    pub type FooChar = char;
+
+    // Tests Int (does not test all variants of IntTy)
+    pub type FooInt = isize;
+
+    // Tests Uint (does not test all variants of UintTy)
+    pub type FooUint = usize;
+
+    // Tests Float (does not test all variants of FloatTy)
+    pub type FooFloat = f64;
+
+    // Tests Str
+    pub type FooStr = str;
+
+    // Tests Array
+    pub type FooArray = [u8; 1];
+
+    // Tests Slice
+    pub type FooSlice = [u8];
+
+    // Tests Box (of u8)
+    pub type FooBox = Box<u8>;
+
+    // Tests RawPtr
+    pub type FooPtr = *const u8;
+
+    // Tests Ref
+    pub type FooRef = &'static u8;
+
+    // Tests FnPtr
+    pub type FooFnPtr = fn(u8) -> bool;
+
+    // Tests Dynamic
+    pub trait FooTrait {
+        fn foo_method(&self) -> usize;
+    }
+
+    // Tests struct
+    pub struct FooStruct {
+        pub pub_foo_field: usize,
+        foo_field: usize
+    }
+
+    // Tests enum
+    pub enum FooEnum {
+        VarA(usize),
+        VarB(usize, usize)
+    }
+
+    // Tests Tuple
+    pub type FooNil = ();
+    pub type FooTuple = (u8, i8, bool);
+
+    // Skipping Param
+
+    // Skipping Infer
+
+    // Skipping Error
+}
diff --git a/src/test/ui/issues/auxiliary/issue-13620-1.rs b/src/test/ui/issues/auxiliary/issue-13620-1.rs
new file mode 100644
index 00000000000..1442c0cc7aa
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-13620-1.rs
@@ -0,0 +1,9 @@
+pub struct Foo {
+    pub foo: extern fn()
+}
+
+extern fn the_foo() {}
+
+pub const FOO: Foo = Foo {
+    foo: the_foo
+};
diff --git a/src/test/ui/issues/auxiliary/issue-13620-2.rs b/src/test/ui/issues/auxiliary/issue-13620-2.rs
new file mode 100644
index 00000000000..7efd24407ba
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-13620-2.rs
@@ -0,0 +1,3 @@
+extern crate issue_13620_1 as crate1;
+
+pub static FOO2: crate1::Foo = crate1::FOO;
diff --git a/src/test/ui/issues/auxiliary/issue-13872-1.rs b/src/test/ui/issues/auxiliary/issue-13872-1.rs
new file mode 100644
index 00000000000..fa9258834c7
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-13872-1.rs
@@ -0,0 +1 @@
+pub enum A { B }
diff --git a/src/test/ui/issues/auxiliary/issue-13872-2.rs b/src/test/ui/issues/auxiliary/issue-13872-2.rs
new file mode 100644
index 00000000000..8c64f16e3f9
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-13872-2.rs
@@ -0,0 +1,3 @@
+extern crate issue_13872_1 as foo;
+
+pub use foo::A::B;
diff --git a/src/test/ui/issues/auxiliary/issue-13872-3.rs b/src/test/ui/issues/auxiliary/issue-13872-3.rs
new file mode 100644
index 00000000000..d31d52eb847
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-13872-3.rs
@@ -0,0 +1,9 @@
+extern crate issue_13872_2 as bar;
+
+use bar::B;
+
+pub fn foo() {
+    match B {
+        B => {}
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-14344-1.rs b/src/test/ui/issues/auxiliary/issue-14344-1.rs
new file mode 100644
index 00000000000..954a1e554da
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-14344-1.rs
@@ -0,0 +1,5 @@
+// no-prefer-dynamic
+
+#![crate_type = "rlib"]
+
+pub fn foo() {}
diff --git a/src/test/ui/issues/auxiliary/issue-14344-2.rs b/src/test/ui/issues/auxiliary/issue-14344-2.rs
new file mode 100644
index 00000000000..c47b8c0ea6c
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-14344-2.rs
@@ -0,0 +1,3 @@
+extern crate issue_14344_1;
+
+pub fn bar() {}
diff --git a/src/test/ui/issues/auxiliary/issue-14421.rs b/src/test/ui/issues/auxiliary/issue-14421.rs
new file mode 100644
index 00000000000..5fe4b24cf17
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-14421.rs
@@ -0,0 +1,25 @@
+#![crate_type="lib"]
+#![deny(warnings)]
+#![allow(dead_code)]
+
+pub use src::aliases::B;
+pub use src::hidden_core::make;
+
+mod src {
+    pub mod aliases {
+        use super::hidden_core::A;
+        pub type B = A<f32>;
+    }
+
+    pub mod hidden_core {
+        use super::aliases::B;
+
+        pub struct A<T> { t: T }
+
+        pub fn make() -> B { A { t: 1.0 } }
+
+        impl<T> A<T> {
+            pub fn foo(&mut self) { println!("called foo"); }
+        }
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-14422.rs b/src/test/ui/issues/auxiliary/issue-14422.rs
new file mode 100644
index 00000000000..a6026c1d03f
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-14422.rs
@@ -0,0 +1,25 @@
+#![crate_type="lib"]
+#![deny(warnings)]
+
+pub use src::aliases::B;
+pub use src::hidden_core::make;
+
+mod src {
+    pub mod aliases {
+        use super::hidden_core::A;
+        pub type B = A;
+    }
+
+    pub mod hidden_core {
+        use super::aliases::B;
+
+        #[derive(Copy, Clone)]
+        pub struct A;
+
+        pub fn make() -> B { A }
+
+        impl A {
+            pub fn foo(&mut self) { println!("called foo"); }
+        }
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-15562.rs b/src/test/ui/issues/auxiliary/issue-15562.rs
new file mode 100644
index 00000000000..d5afaaa5622
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-15562.rs
@@ -0,0 +1,5 @@
+#![crate_type = "lib"]
+
+extern {
+    pub fn transmute();
+}
diff --git a/src/test/ui/issues/auxiliary/issue-16643.rs b/src/test/ui/issues/auxiliary/issue-16643.rs
new file mode 100644
index 00000000000..7808e0119f6
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-16643.rs
@@ -0,0 +1,19 @@
+#![crate_type = "lib"]
+
+pub struct TreeBuilder<H> { pub h: H }
+
+impl<H> TreeBuilder<H> {
+    pub fn process_token(&mut self) {
+        match self {
+            _ => for _y in self.by_ref() {}
+        }
+    }
+}
+
+impl<H> Iterator for TreeBuilder<H> {
+    type Item = H;
+
+    fn next(&mut self) -> Option<H> {
+        None
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-17662.rs b/src/test/ui/issues/auxiliary/issue-17662.rs
new file mode 100644
index 00000000000..75efe110cdf
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-17662.rs
@@ -0,0 +1,12 @@
+#![crate_type = "lib"]
+
+pub trait Foo<'a, T> {
+    fn foo(&'a self) -> T;
+}
+
+pub fn foo<'a, T>(x: &'a Foo<'a, T>) -> T {
+    let x: &'a Foo<T> = x;
+    //            ^ the lifetime parameter of Foo is left to be inferred.
+    x.foo()
+    // ^ encoding this method call in metadata triggers an ICE.
+}
diff --git a/src/test/ui/issues/auxiliary/issue-17718-aux.rs b/src/test/ui/issues/auxiliary/issue-17718-aux.rs
new file mode 100644
index 00000000000..91abdbff868
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-17718-aux.rs
@@ -0,0 +1,10 @@
+use std::sync::atomic;
+
+pub const C1: usize = 1;
+pub const C2: atomic::AtomicUsize = atomic::AtomicUsize::new(0);
+pub const C3: fn() = { fn foo() {} foo };
+pub const C4: usize = C1 * C1 + C1 / C1;
+pub const C5: &'static usize = &C4;
+
+pub static S1: usize = 3;
+pub static S2: atomic::AtomicUsize = atomic::AtomicUsize::new(0);
diff --git a/src/test/ui/issues/auxiliary/issue-18501.rs b/src/test/ui/issues/auxiliary/issue-18501.rs
new file mode 100644
index 00000000000..dd914b464fa
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-18501.rs
@@ -0,0 +1,17 @@
+#![crate_type = "rlib"]
+struct Foo;
+
+trait Tr {
+    fn tr(&self);
+}
+
+impl Tr for Foo {
+    fn tr(&self) {}
+}
+
+fn take_method<T>(f: fn(&T), t: &T) {}
+
+#[inline]
+pub fn pass_method() {
+    take_method(Tr::tr, &Foo);
+}
diff --git a/src/test/ui/issues/auxiliary/issue-18514.rs b/src/test/ui/issues/auxiliary/issue-18514.rs
new file mode 100644
index 00000000000..20c8e60ee45
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-18514.rs
@@ -0,0 +1,17 @@
+#![crate_type = "rlib"]
+
+pub trait Tr {
+    fn tr(&self);
+}
+
+pub struct St<V>(pub Vec<V>);
+
+impl<V> Tr for St<V> {
+    fn tr(&self) {
+        match self {
+            &St(ref v) => {
+                v.iter();
+            }
+        }
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-18711.rs b/src/test/ui/issues/auxiliary/issue-18711.rs
new file mode 100644
index 00000000000..5cb1f9c4371
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-18711.rs
@@ -0,0 +1,5 @@
+#![crate_type = "rlib"]
+
+pub fn inner<F>(f: F) -> F {
+    (move || f)()
+}
diff --git a/src/test/ui/issues/auxiliary/issue-18913-1.rs b/src/test/ui/issues/auxiliary/issue-18913-1.rs
new file mode 100644
index 00000000000..053c5ada5ee
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-18913-1.rs
@@ -0,0 +1,6 @@
+// no-prefer-dynamic
+
+#![crate_type = "rlib"]
+#![crate_name = "foo"]
+
+pub fn foo() -> i32 { 0 }
diff --git a/src/test/ui/issues/auxiliary/issue-18913-2.rs b/src/test/ui/issues/auxiliary/issue-18913-2.rs
new file mode 100644
index 00000000000..54747b45f52
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-18913-2.rs
@@ -0,0 +1,6 @@
+// no-prefer-dynamic
+
+#![crate_type = "rlib"]
+#![crate_name = "foo"]
+
+pub fn foo() -> i32 { 1 }
diff --git a/src/test/ui/issues/auxiliary/issue-19293.rs b/src/test/ui/issues/auxiliary/issue-19293.rs
new file mode 100644
index 00000000000..31359e86559
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-19293.rs
@@ -0,0 +1,4 @@
+pub struct Foo (pub isize);
+pub enum MyEnum {
+    Foo(Foo),
+}
diff --git a/src/test/ui/issues/auxiliary/issue-19340-1.rs b/src/test/ui/issues/auxiliary/issue-19340-1.rs
new file mode 100644
index 00000000000..39ee36b8b91
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-19340-1.rs
@@ -0,0 +1,3 @@
+pub enum Homura {
+    Madoka { name: String },
+}
diff --git a/src/test/ui/issues/auxiliary/issue-20389.rs b/src/test/ui/issues/auxiliary/issue-20389.rs
new file mode 100644
index 00000000000..ae6d44eeb77
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-20389.rs
@@ -0,0 +1,4 @@
+pub trait T {
+    type C;
+    fn dummy(&self) { }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2170-lib.rs b/src/test/ui/issues/auxiliary/issue-2170-lib.rs
new file mode 100644
index 00000000000..a99385a834d
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2170-lib.rs
@@ -0,0 +1,18 @@
+fn foo(_x: i32) {
+}
+
+pub struct rsrc {
+  x: i32,
+}
+
+impl Drop for rsrc {
+    fn drop(&mut self) {
+        foo(self.x);
+    }
+}
+
+pub fn rsrc(x: i32) -> rsrc {
+    rsrc {
+        x: x
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2316-a.rs b/src/test/ui/issues/auxiliary/issue-2316-a.rs
new file mode 100644
index 00000000000..418ddc0b069
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2316-a.rs
@@ -0,0 +1,3 @@
+enum cat {
+  tabby, calico, tortoiseshell
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2316-b.rs b/src/test/ui/issues/auxiliary/issue-2316-b.rs
new file mode 100644
index 00000000000..550c2d6eb22
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2316-b.rs
@@ -0,0 +1,11 @@
+#![allow(unused_imports)]
+
+extern crate issue_2316_a;
+
+pub mod cloth {
+    use issue_2316_a::*;
+
+    pub enum fabric {
+        gingham, flannel, calico
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2380.rs b/src/test/ui/issues/auxiliary/issue-2380.rs
new file mode 100644
index 00000000000..9a51a73c9a3
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2380.rs
@@ -0,0 +1,15 @@
+#![crate_name="a"]
+#![crate_type = "lib"]
+
+#![feature(box_syntax)]
+
+pub trait i<T>
+{
+    fn dummy(&self, t: T) -> T { panic!() }
+}
+
+pub fn f<T>() -> Box<i<T>+'static> {
+    impl<T> i<T> for () { }
+
+    box () as Box<i<T>+'static>
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2414-a.rs b/src/test/ui/issues/auxiliary/issue-2414-a.rs
new file mode 100644
index 00000000000..b90ab32ddc4
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2414-a.rs
@@ -0,0 +1,12 @@
+#![crate_name="a"]
+#![crate_type = "lib"]
+
+type t1 = usize;
+
+trait foo {
+    fn foo(&self);
+}
+
+impl foo for String {
+    fn foo(&self) {}
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2414-b.rs b/src/test/ui/issues/auxiliary/issue-2414-b.rs
new file mode 100644
index 00000000000..fc018349d80
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2414-b.rs
@@ -0,0 +1,4 @@
+#![crate_name="b"]
+#![crate_type = "lib"]
+
+extern crate a;
diff --git a/src/test/ui/issues/auxiliary/issue-2472-b.rs b/src/test/ui/issues/auxiliary/issue-2472-b.rs
new file mode 100644
index 00000000000..0d151520fe0
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2472-b.rs
@@ -0,0 +1,13 @@
+pub struct S(pub ());
+
+impl S {
+    pub fn foo(&self) { }
+}
+
+pub trait T {
+    fn bar(&self);
+}
+
+impl T for S {
+    fn bar(&self) { }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-25185-1.rs b/src/test/ui/issues/auxiliary/issue-25185-1.rs
new file mode 100644
index 00000000000..77a4787ba94
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-25185-1.rs
@@ -0,0 +1,8 @@
+// no-prefer-dynamic
+
+#![crate_type = "rlib"]
+
+#[link(name = "rust_test_helpers", kind = "static")]
+extern {
+    pub fn rust_dbg_extern_identity_u32(u: u32) -> u32;
+}
diff --git a/src/test/ui/issues/auxiliary/issue-25185-2.rs b/src/test/ui/issues/auxiliary/issue-25185-2.rs
new file mode 100644
index 00000000000..7ce3df255a3
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-25185-2.rs
@@ -0,0 +1,3 @@
+extern crate issue_25185_1;
+
+pub use issue_25185_1::rust_dbg_extern_identity_u32;
diff --git a/src/test/ui/issues/auxiliary/issue-2526.rs b/src/test/ui/issues/auxiliary/issue-2526.rs
new file mode 100644
index 00000000000..3b27f658cda
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2526.rs
@@ -0,0 +1,44 @@
+#![crate_name="issue_2526"]
+#![crate_type = "lib"]
+
+use std::marker;
+
+pub struct arc_destruct<T: Sync> {
+    _data: isize,
+    _marker: marker::PhantomData<T>
+}
+
+impl<T: Sync> Drop for arc_destruct<T> {
+    fn drop(&mut self) {}
+}
+
+fn arc_destruct<T: Sync>(data: isize) -> arc_destruct<T> {
+    arc_destruct {
+        _data: data,
+        _marker: marker::PhantomData
+    }
+}
+
+fn arc<T: Sync>(_data: T) -> arc_destruct<T> {
+    arc_destruct(0)
+}
+
+fn init() -> arc_destruct<context_res> {
+    arc(context_res())
+}
+
+pub struct context_res {
+    ctx : isize,
+}
+
+impl Drop for context_res {
+    fn drop(&mut self) {}
+}
+
+fn context_res() -> context_res {
+    context_res {
+        ctx: 0
+    }
+}
+
+pub type context = arc_destruct<context_res>;
diff --git a/src/test/ui/issues/auxiliary/issue-25467.rs b/src/test/ui/issues/auxiliary/issue-25467.rs
new file mode 100644
index 00000000000..ca9b3097c83
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-25467.rs
@@ -0,0 +1,10 @@
+#![crate_type="lib"]
+
+pub trait Trait {
+    // the issue is sensitive to interning order - so use names
+    // unlikely to appear in libstd.
+    type Issue25467FooT;
+    type Issue25467BarT;
+}
+
+pub type Object = Option<Box<Trait<Issue25467FooT=(),Issue25467BarT=()>>>;
diff --git a/src/test/ui/issues/auxiliary/issue-2631-a.rs b/src/test/ui/issues/auxiliary/issue-2631-a.rs
new file mode 100644
index 00000000000..1e8211bfaa7
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2631-a.rs
@@ -0,0 +1,14 @@
+#![crate_name="req"]
+#![crate_type = "lib"]
+
+use std::cell::RefCell;
+use std::collections::HashMap;
+use std::rc::Rc;
+
+pub type header_map = HashMap<String, Rc<RefCell<Vec<Rc<String>>>>>;
+
+// the unused ty param is necessary so this gets monomorphized
+pub fn request<T>(req: &header_map) {
+  let data = req[&"METHOD".to_string()].clone();
+  let _x = data.borrow().clone()[0].clone();
+}
diff --git a/src/test/ui/issues/auxiliary/issue-2723-a.rs b/src/test/ui/issues/auxiliary/issue-2723-a.rs
new file mode 100644
index 00000000000..661b46d829d
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-2723-a.rs
@@ -0,0 +1,3 @@
+pub unsafe fn f(xs: Vec<isize> ) {
+    xs.iter().map(|_x| { unsafe fn q() { panic!(); } }).collect::<Vec<()>>();
+}
diff --git a/src/test/ui/issues/auxiliary/issue-29485.rs b/src/test/ui/issues/auxiliary/issue-29485.rs
new file mode 100644
index 00000000000..1e8891c5120
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-29485.rs
@@ -0,0 +1,16 @@
+#![crate_name="a"]
+#![crate_type = "lib"]
+
+pub struct X(pub u8);
+
+impl Drop for X {
+    fn drop(&mut self) {
+        assert_eq!(self.0, 1)
+    }
+}
+
+pub fn f(x: &mut X, g: fn()) {
+    x.0 = 1;
+    g();
+    x.0 = 0;
+}
diff --git a/src/test/ui/issues/auxiliary/issue-3012-1.rs b/src/test/ui/issues/auxiliary/issue-3012-1.rs
new file mode 100644
index 00000000000..509af2a8d7d
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-3012-1.rs
@@ -0,0 +1,20 @@
+#![crate_name="socketlib"]
+#![crate_type = "lib"]
+
+pub mod socket {
+    pub struct socket_handle {
+        sockfd: u32,
+    }
+
+    impl Drop for socket_handle {
+        fn drop(&mut self) {
+            /* c::close(self.sockfd); */
+        }
+    }
+
+    pub fn socket_handle(x: u32) -> socket_handle {
+        socket_handle {
+            sockfd: x
+        }
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-3136-a.rc b/src/test/ui/issues/auxiliary/issue-3136-a.rc
new file mode 100644
index 00000000000..cd5fd314505
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-3136-a.rc
@@ -0,0 +1,4 @@
+#![crate_type = "lib"]
+
+#[path = "issue-3136-a.rs"]
+pub mod issue_3136_a;
diff --git a/src/test/ui/issues/auxiliary/issue-3136-a.rs b/src/test/ui/issues/auxiliary/issue-3136-a.rs
new file mode 100644
index 00000000000..9bb546ab393
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-3136-a.rs
@@ -0,0 +1,14 @@
+trait x {
+    fn use_x<T>(&self);
+}
+struct y(());
+impl x for y {
+    fn use_x<T>(&self) {
+        struct foo { //~ ERROR quux
+            i: ()
+        }
+        fn new_foo<T>(i: ()) -> foo {
+            foo { i: i }
+        }
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-31702-1.rs b/src/test/ui/issues/auxiliary/issue-31702-1.rs
new file mode 100644
index 00000000000..a48d0dc2c64
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-31702-1.rs
@@ -0,0 +1,16 @@
+#[derive(Copy)]
+pub struct U256(pub [u64; 4]);
+
+impl Clone for U256 {
+    fn clone(&self) -> U256 {
+        *self
+    }
+}
+
+impl U256 {
+    pub fn new(value: u64) -> U256 {
+        let mut ret = [0; 4];
+        ret[0] = value;
+        U256(ret)
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-31702-2.rs b/src/test/ui/issues/auxiliary/issue-31702-2.rs
new file mode 100644
index 00000000000..d360ae0ca7e
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-31702-2.rs
@@ -0,0 +1,20 @@
+// compile-flags: -g
+
+extern crate issue_31702_1;
+
+use std::collections::HashMap;
+use issue_31702_1::U256;
+
+pub struct Ethash {
+    engine_params: fn() -> Option<&'static Vec<u8>>,
+    u256_params: HashMap<String, U256>,
+}
+
+impl Ethash {
+    pub fn u256_param(&mut self, name: &str) -> U256 {
+        let engine = self.engine_params;
+        *self.u256_params.entry(name.to_owned()).or_insert_with(|| {
+            engine().map_or(U256::new(0u64), |_a| loop {})
+        })
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-34796-aux.rs b/src/test/ui/issues/auxiliary/issue-34796-aux.rs
new file mode 100644
index 00000000000..09c69b90329
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-34796-aux.rs
@@ -0,0 +1,20 @@
+#![crate_type = "lib"]
+pub trait Future {
+    type Item;
+    type Error;
+}
+
+impl Future for u32 {
+    type Item = ();
+    type Error = Box<()>;
+}
+
+fn foo() -> Box<Future<Item=(), Error=Box<()>>> {
+    Box::new(0u32)
+}
+
+pub fn bar<F, A, B>(_s: F)
+    where F: Fn(A) -> B,
+{
+    foo();
+}
diff --git a/src/test/ui/issues/auxiliary/issue-36954.rs b/src/test/ui/issues/auxiliary/issue-36954.rs
new file mode 100644
index 00000000000..bc444a3817b
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-36954.rs
@@ -0,0 +1,7 @@
+#![crate_type = "lib"]
+
+const fn foo(i: i32) -> i32 {
+    i
+}
+
+pub const FOO: i32 = foo(1);
diff --git a/src/test/ui/issues/auxiliary/issue-38190.rs b/src/test/ui/issues/auxiliary/issue-38190.rs
new file mode 100644
index 00000000000..373e646ba2c
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-38190.rs
@@ -0,0 +1,2 @@
+#[macro_export]
+macro_rules! m { ([$i:item]) => {} }
diff --git a/src/test/ui/issues/auxiliary/issue-38226-aux.rs b/src/test/ui/issues/auxiliary/issue-38226-aux.rs
new file mode 100644
index 00000000000..f968017199f
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-38226-aux.rs
@@ -0,0 +1,23 @@
+#![crate_type="rlib"]
+
+#[inline(never)]
+pub fn foo<T>() {
+    let _: Box<SomeTrait> = Box::new(SomeTraitImpl);
+}
+
+pub fn bar() {
+    SomeTraitImpl.bar();
+}
+
+mod submod {
+    pub trait SomeTrait {
+        fn bar(&self) {
+            panic!("NO")
+        }
+    }
+}
+
+use self::submod::SomeTrait;
+
+pub struct SomeTraitImpl;
+impl SomeTrait for SomeTraitImpl {}
diff --git a/src/test/ui/issues/auxiliary/issue-38715-modern.rs b/src/test/ui/issues/auxiliary/issue-38715-modern.rs
new file mode 100644
index 00000000000..15d072957cb
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-38715-modern.rs
@@ -0,0 +1,7 @@
+#![allow(duplicate_macro_exports)]
+
+#[macro_export]
+macro_rules! foo_modern { ($i:ident) => {} }
+
+#[macro_export]
+macro_rules! foo_modern { () => {} }
diff --git a/src/test/ui/issues/auxiliary/issue-38715.rs b/src/test/ui/issues/auxiliary/issue-38715.rs
new file mode 100644
index 00000000000..5c15073f5a5
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-38715.rs
@@ -0,0 +1,7 @@
+#![allow(duplicate_macro_exports)]
+
+#[macro_export]
+macro_rules! foo { ($i:ident) => {} }
+
+#[macro_export]
+macro_rules! foo { () => {} }
diff --git a/src/test/ui/issues/auxiliary/issue-3979-traits.rs b/src/test/ui/issues/auxiliary/issue-3979-traits.rs
new file mode 100644
index 00000000000..5d03a0e9e99
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-3979-traits.rs
@@ -0,0 +1,15 @@
+#![crate_name="issue_3979_traits"]
+
+#![crate_type = "lib"]
+
+pub trait Positioned {
+  fn SetX(&mut self, _: isize);
+  fn X(&self) -> isize;
+}
+
+pub trait Movable: Positioned {
+  fn translate(&mut self, dx: isize) {
+    let x = self.X() + dx;
+    self.SetX(x);
+  }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-39823.rs b/src/test/ui/issues/auxiliary/issue-39823.rs
new file mode 100644
index 00000000000..3af9c68f233
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-39823.rs
@@ -0,0 +1,7 @@
+#![crate_type="rlib"]
+
+#[derive(Debug, PartialEq)]
+pub struct RemoteC(pub u32);
+
+#[derive(Debug, PartialEq)]
+pub struct RemoteG<T>(pub T);
diff --git a/src/test/ui/issues/auxiliary/issue-40469.rs b/src/test/ui/issues/auxiliary/issue-40469.rs
new file mode 100644
index 00000000000..4f2f41f2cde
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-40469.rs
@@ -0,0 +1 @@
+macro_rules! m { () => { $crate::main(); } }
diff --git a/src/test/ui/issues/auxiliary/issue-41053.rs b/src/test/ui/issues/auxiliary/issue-41053.rs
new file mode 100644
index 00000000000..ae73c3e780f
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-41053.rs
@@ -0,0 +1 @@
+pub struct Test;
diff --git a/src/test/ui/issues/auxiliary/issue-41394.rs b/src/test/ui/issues/auxiliary/issue-41394.rs
new file mode 100644
index 00000000000..2e650efc714
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-41394.rs
@@ -0,0 +1,16 @@
+#![crate_type = "lib"]
+
+#[repr(u32)]
+pub enum Foo {
+    Foo = Private::Variant as u32
+}
+
+#[repr(u8)]
+enum Private {
+    Variant = 42
+}
+
+#[inline(always)]
+pub fn foo() -> Foo {
+    Foo::Foo
+}
diff --git a/src/test/ui/issues/auxiliary/issue-42007-s.rs b/src/test/ui/issues/auxiliary/issue-42007-s.rs
new file mode 100644
index 00000000000..95119a589c9
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-42007-s.rs
@@ -0,0 +1,4 @@
+#[repr(u8)]
+pub enum E {
+    B = 1 as u8,
+}
diff --git a/src/test/ui/issues/auxiliary/issue-4208-cc.rs b/src/test/ui/issues/auxiliary/issue-4208-cc.rs
new file mode 100644
index 00000000000..7b4c8b01a9e
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-4208-cc.rs
@@ -0,0 +1,10 @@
+#![crate_name="numeric"]
+#![crate_type = "lib"]
+
+pub trait Trig<T> {
+    fn sin(&self) -> T;
+}
+
+pub fn sin<T:Trig<R>, R>(theta: &T) -> R { theta.sin() }
+
+pub trait Angle<T>: Trig<T> {}
diff --git a/src/test/ui/issues/auxiliary/issue-4545.rs b/src/test/ui/issues/auxiliary/issue-4545.rs
new file mode 100644
index 00000000000..2f609475075
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-4545.rs
@@ -0,0 +1,2 @@
+pub struct S<T>(Option<T>);
+pub fn mk<T>() -> S<T> { S(None) }
diff --git a/src/test/ui/issues/auxiliary/issue-48984-aux.rs b/src/test/ui/issues/auxiliary/issue-48984-aux.rs
new file mode 100644
index 00000000000..7cc888cd4cb
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-48984-aux.rs
@@ -0,0 +1,6 @@
+#![crate_type = "lib"]
+#![crate_name = "issue48984aux"]
+
+pub trait Foo { type Item; }
+
+pub trait Bar: Foo<Item=[u8;1]> {  }
diff --git a/src/test/ui/issues/auxiliary/issue-5518.rs b/src/test/ui/issues/auxiliary/issue-5518.rs
new file mode 100644
index 00000000000..bfe96552a5c
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-5518.rs
@@ -0,0 +1,4 @@
+trait A<'a, T> {
+    fn f(&mut self) -> &'a mut T;
+    fn p() -> T;
+}
diff --git a/src/test/ui/issues/auxiliary/issue-5521.rs b/src/test/ui/issues/auxiliary/issue-5521.rs
new file mode 100644
index 00000000000..c2f81779b35
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-5521.rs
@@ -0,0 +1,3 @@
+use std::collections::HashMap;
+
+pub type map = Box<HashMap<usize, usize>>;
diff --git a/src/test/ui/issues/auxiliary/issue-7178.rs b/src/test/ui/issues/auxiliary/issue-7178.rs
new file mode 100644
index 00000000000..56ae5139af4
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-7178.rs
@@ -0,0 +1,7 @@
+pub struct Foo<'a, A:'a>(&'a A);
+
+impl<'a, A> Foo<'a, A> {
+    pub fn new(a: &'a A) -> Foo<'a, A> {
+        Foo(a)
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-7899.rs b/src/test/ui/issues/auxiliary/issue-7899.rs
new file mode 100644
index 00000000000..3af6e871661
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-7899.rs
@@ -0,0 +1 @@
+pub struct V2<T>(pub T, pub T);
diff --git a/src/test/ui/issues/auxiliary/issue-8044.rs b/src/test/ui/issues/auxiliary/issue-8044.rs
new file mode 100644
index 00000000000..2ec25f51cde
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-8044.rs
@@ -0,0 +1,15 @@
+pub struct BTree<V> {
+    pub node: TreeItem<V>,
+}
+
+pub enum TreeItem<V> {
+    TreeLeaf { value: V },
+}
+
+pub fn leaf<V>(value: V) -> TreeItem<V> {
+    TreeItem::TreeLeaf { value: value }
+}
+
+fn main() {
+    BTree::<isize> { node: leaf(1) };
+}
diff --git a/src/test/ui/issues/auxiliary/issue-8259.rs b/src/test/ui/issues/auxiliary/issue-8259.rs
new file mode 100644
index 00000000000..891aee099dc
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-8259.rs
@@ -0,0 +1,4 @@
+pub enum Foo<'a> {
+    A,
+    B(&'a str),
+}
diff --git a/src/test/ui/issues/auxiliary/issue-8401.rs b/src/test/ui/issues/auxiliary/issue-8401.rs
new file mode 100644
index 00000000000..e35dbbfabfc
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-8401.rs
@@ -0,0 +1,16 @@
+// for this issue, this code must be built in a library
+
+use std::mem;
+
+trait A {
+    fn dummy(&self) { }
+}
+struct B;
+impl A for B {}
+
+fn bar<T>(_: &mut A, _: &T) {}
+
+fn foo<T>(t: &T) {
+    let mut b = B;
+    bar(&mut b as &mut A, t)
+}
diff --git a/src/test/ui/issues/auxiliary/issue-9123.rs b/src/test/ui/issues/auxiliary/issue-9123.rs
new file mode 100644
index 00000000000..60af53359e8
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-9123.rs
@@ -0,0 +1,9 @@
+#![crate_type = "lib"]
+
+pub trait X {
+    fn x() {
+        fn f() { }
+        f();
+    }
+    fn dummy(&self) { }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-9155.rs b/src/test/ui/issues/auxiliary/issue-9155.rs
new file mode 100644
index 00000000000..049a96a655a
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-9155.rs
@@ -0,0 +1,7 @@
+pub struct Foo<T>(T);
+
+impl<T> Foo<T> {
+    pub fn new(t: T) -> Foo<T> {
+        Foo(t)
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-9188.rs b/src/test/ui/issues/auxiliary/issue-9188.rs
new file mode 100644
index 00000000000..3bc5697a1a6
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-9188.rs
@@ -0,0 +1,13 @@
+pub fn foo<T>() -> &'static isize {
+    if false {
+        static a: isize = 4;
+        return &a;
+    } else {
+        static a: isize = 5;
+        return &a;
+    }
+}
+
+pub fn bar() -> &'static isize {
+    foo::<isize>()
+}
diff --git a/src/test/ui/issues/auxiliary/issue-9906.rs b/src/test/ui/issues/auxiliary/issue-9906.rs
new file mode 100644
index 00000000000..8a3eea790a2
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-9906.rs
@@ -0,0 +1,15 @@
+pub use other::FooBar;
+pub use other::foo;
+
+mod other {
+    pub struct FooBar{value: isize}
+    impl FooBar{
+        pub fn new(val: isize) -> FooBar {
+            FooBar{value: val}
+        }
+    }
+
+    pub fn foo(){
+        1+1;
+    }
+}
diff --git a/src/test/ui/issues/auxiliary/issue-9968.rs b/src/test/ui/issues/auxiliary/issue-9968.rs
new file mode 100644
index 00000000000..8d795b59ea8
--- /dev/null
+++ b/src/test/ui/issues/auxiliary/issue-9968.rs
@@ -0,0 +1,22 @@
+pub use internal::core::{Trait, Struct};
+
+mod internal {
+    pub mod core {
+        pub struct Struct;
+        impl Struct {
+            pub fn init() -> Struct {
+                Struct
+            }
+        }
+
+        pub trait Trait {
+            fn test(&self) {
+                private();
+            }
+        }
+
+        impl Trait for Struct {}
+
+        fn private() { }
+    }
+}
diff --git a/src/test/ui/issues/issue-10025.rs b/src/test/ui/issues/issue-10025.rs
new file mode 100644
index 00000000000..193d7ee891f
--- /dev/null
+++ b/src/test/ui/issues/issue-10025.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+unsafe extern fn foo() {}
+unsafe extern "C" fn bar() {}
+
+fn main() {
+    let _a: unsafe extern fn() = foo;
+    let _a: unsafe extern "C" fn() = foo;
+}
diff --git a/src/test/ui/issues/issue-10028.rs b/src/test/ui/issues/issue-10028.rs
new file mode 100644
index 00000000000..1692470e8d1
--- /dev/null
+++ b/src/test/ui/issues/issue-10028.rs
@@ -0,0 +1,21 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-10028.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_10028 as issue10028;
+
+use issue10028::ZeroLengthThingWithDestructor;
+
+struct Foo {
+    zero_length_thing: ZeroLengthThingWithDestructor
+}
+
+fn make_foo() -> Foo {
+    Foo { zero_length_thing: ZeroLengthThingWithDestructor::new() }
+}
+
+fn main() {
+    let _f:Foo = make_foo();
+}
diff --git a/src/test/ui/issues/issue-10031.rs b/src/test/ui/issues/issue-10031.rs
new file mode 100644
index 00000000000..136df05c239
--- /dev/null
+++ b/src/test/ui/issues/issue-10031.rs
@@ -0,0 +1,9 @@
+// run-pass
+// aux-build:issue-10031-aux.rs
+// pretty-expanded FIXME #23616
+
+extern crate issue_10031_aux;
+
+pub fn main() {
+    let _ = issue_10031_aux::Wrap(());
+}
diff --git a/src/test/ui/issues/issue-10228.rs b/src/test/ui/issues/issue-10228.rs
new file mode 100644
index 00000000000..ebf8b436f13
--- /dev/null
+++ b/src/test/ui/issues/issue-10228.rs
@@ -0,0 +1,20 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+enum StdioContainer {
+    CreatePipe(bool)
+}
+
+struct Test<'a> {
+    args: &'a [String],
+    io: &'a [StdioContainer]
+}
+
+pub fn main() {
+    let test = Test {
+        args: &[],
+        io: &[StdioContainer::CreatePipe(true)]
+    };
+}
diff --git a/src/test/ui/issues/issue-10392.rs b/src/test/ui/issues/issue-10392.rs
new file mode 100644
index 00000000000..926fa94800e
--- /dev/null
+++ b/src/test/ui/issues/issue-10392.rs
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(unused_variables)]
+
+struct A { foo: isize }
+struct B { a: isize, b: isize, c: isize }
+
+fn mka() -> A { panic!() }
+fn mkb() -> B { panic!() }
+
+fn test() {
+    let A { foo, } = mka();
+    let A {
+        foo,
+    } = mka();
+
+    let B { a, b, c, } = mkb();
+
+    match mka() {
+        A { foo: _foo, } => {}
+    }
+
+    match Some(mka()) {
+        Some(A { foo: _foo, }) => {}
+        None => {}
+    }
+}
+
+pub fn main() {
+    if false { test() }
+}
diff --git a/src/test/ui/issues/issue-10436.rs b/src/test/ui/issues/issue-10436.rs
new file mode 100644
index 00000000000..a7a20bad517
--- /dev/null
+++ b/src/test/ui/issues/issue-10436.rs
@@ -0,0 +1,11 @@
+// run-pass
+fn works<T>(x: T) -> Vec<T> { vec![x] }
+
+fn also_works<T: Clone>(x: T) -> Vec<T> { vec![x] }
+
+fn main() {
+    let _: Vec<usize> = works(0);
+    let _: Vec<usize> = also_works(0);
+    let _ = works(0);
+    let _ = also_works(0);
+}
diff --git a/src/test/ui/issues/issue-10626.rs b/src/test/ui/issues/issue-10626.rs
new file mode 100644
index 00000000000..78fa8b7c6fb
--- /dev/null
+++ b/src/test/ui/issues/issue-10626.rs
@@ -0,0 +1,27 @@
+// run-pass
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+// Make sure that if a process doesn't have its stdio/stderr descriptors set up
+// that we don't die in a large ball of fire
+
+use std::env;
+use std::process::{Command, Stdio};
+
+pub fn main () {
+    let args: Vec<String> = env::args().collect();
+    if args.len() > 1 && args[1] == "child" {
+        for _ in 0..1000 {
+            println!("hello?");
+        }
+        for _ in 0..1000 {
+            println!("hello?");
+        }
+        return;
+    }
+
+    let mut p = Command::new(&args[0]);
+    p.arg("child").stdout(Stdio::null()).stderr(Stdio::null());
+    println!("{:?}", p.spawn().unwrap().wait());
+}
diff --git a/src/test/ui/issues/issue-10638.rs b/src/test/ui/issues/issue-10638.rs
new file mode 100644
index 00000000000..e359669c00d
--- /dev/null
+++ b/src/test/ui/issues/issue-10638.rs
@@ -0,0 +1,11 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    //// I am not a doc comment!
+    ////////////////// still not a doc comment
+    /////**** nope, me neither */
+    /*** And neither am I! */
+    5;
+    /*****! certainly not I */
+}
diff --git a/src/test/ui/issues/issue-10682.rs b/src/test/ui/issues/issue-10682.rs
new file mode 100644
index 00000000000..afaa90f05ca
--- /dev/null
+++ b/src/test/ui/issues/issue-10682.rs
@@ -0,0 +1,15 @@
+// run-pass
+// Regression test for issue #10682
+// Nested `proc` usage can't use outer owned data
+
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+fn work(_: Box<isize>) {}
+fn foo<F:FnOnce()>(_: F) {}
+
+pub fn main() {
+  let a = box 1;
+  foo(move|| { foo(move|| { work(a) }) })
+}
diff --git a/src/test/ui/issues/issue-10683.rs b/src/test/ui/issues/issue-10683.rs
new file mode 100644
index 00000000000..dcb221f8c57
--- /dev/null
+++ b/src/test/ui/issues/issue-10683.rs
@@ -0,0 +1,11 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+static NAME: &'static str = "hello world";
+
+fn main() {
+    match &*NAME.to_ascii_lowercase() {
+        "foo" => {}
+        _ => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-10718.rs b/src/test/ui/issues/issue-10718.rs
new file mode 100644
index 00000000000..a1de0cfe6ca
--- /dev/null
+++ b/src/test/ui/issues/issue-10718.rs
@@ -0,0 +1,11 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+fn f<F:FnOnce()>(p: F) {
+    p();
+}
+
+pub fn main() {
+    let p = || ();
+    f(p);
+}
diff --git a/src/test/ui/issues/issue-10734.rs b/src/test/ui/issues/issue-10734.rs
new file mode 100644
index 00000000000..723e6ed22dd
--- /dev/null
+++ b/src/test/ui/issues/issue-10734.rs
@@ -0,0 +1,36 @@
+// run-pass
+#![allow(non_upper_case_globals)]
+
+static mut drop_count: usize = 0;
+
+struct Foo {
+    dropped: bool
+}
+
+impl Drop for Foo {
+    fn drop(&mut self) {
+        // Test to make sure we haven't dropped already
+        assert!(!self.dropped);
+        self.dropped = true;
+        // And record the fact that we dropped for verification later
+        unsafe { drop_count += 1; }
+    }
+}
+
+pub fn main() {
+    // An `if true { expr }` statement should compile the same as `{ expr }`.
+    if true {
+        let _a = Foo{ dropped: false };
+    }
+    // Check that we dropped already (as expected from a `{ expr }`).
+    unsafe { assert_eq!(drop_count, 1); }
+
+    // An `if false {} else { expr }` statement should compile the same as `{ expr }`.
+    if false {
+        panic!();
+    } else {
+        let _a = Foo{ dropped: false };
+    }
+    // Check that we dropped already (as expected from a `{ expr }`).
+    unsafe { assert_eq!(drop_count, 2); }
+}
diff --git a/src/test/ui/issues/issue-10767.rs b/src/test/ui/issues/issue-10767.rs
new file mode 100644
index 00000000000..fa10f073b45
--- /dev/null
+++ b/src/test/ui/issues/issue-10767.rs
@@ -0,0 +1,10 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+pub fn main() {
+    fn f() {
+    };
+    let _: Box<fn()> = box (f as fn());
+}
diff --git a/src/test/ui/issues/issue-10802.rs b/src/test/ui/issues/issue-10802.rs
new file mode 100644
index 00000000000..f1d6b37a684
--- /dev/null
+++ b/src/test/ui/issues/issue-10802.rs
@@ -0,0 +1,46 @@
+// run-pass
+#![allow(dead_code)]
+#![feature(box_syntax)]
+
+struct DroppableStruct;
+enum DroppableEnum {
+    DroppableVariant1, DroppableVariant2
+}
+
+static mut DROPPED: bool = false;
+
+impl Drop for DroppableStruct {
+    fn drop(&mut self) {
+        unsafe { DROPPED = true; }
+    }
+}
+impl Drop for DroppableEnum {
+    fn drop(&mut self) {
+        unsafe { DROPPED = true; }
+    }
+}
+
+trait MyTrait { fn dummy(&self) { } }
+impl MyTrait for Box<DroppableStruct> {}
+impl MyTrait for Box<DroppableEnum> {}
+
+struct Whatever { w: Box<dyn MyTrait+'static> }
+impl  Whatever {
+    fn new(w: Box<dyn MyTrait+'static>) -> Whatever {
+        Whatever { w: w }
+    }
+}
+
+fn main() {
+    {
+        let f: Box<_> = box DroppableStruct;
+        let _a = Whatever::new(box f as Box<dyn MyTrait>);
+    }
+    assert!(unsafe { DROPPED });
+    unsafe { DROPPED = false; }
+    {
+        let f: Box<_> = box DroppableEnum::DroppableVariant1;
+        let _a = Whatever::new(box f as Box<dyn MyTrait>);
+    }
+    assert!(unsafe { DROPPED });
+}
diff --git a/src/test/ui/issues/issue-10806.rs b/src/test/ui/issues/issue-10806.rs
new file mode 100644
index 00000000000..2f1d7bb5aaf
--- /dev/null
+++ b/src/test/ui/issues/issue-10806.rs
@@ -0,0 +1,38 @@
+// run-pass
+#![allow(unused_imports)]
+
+// pretty-expanded FIXME #23616
+
+pub fn foo() -> isize {
+    3
+}
+pub fn bar() -> isize {
+    4
+}
+
+pub mod baz {
+    use {foo, bar};
+    pub fn quux() -> isize {
+        foo() + bar()
+    }
+}
+
+pub mod grault {
+    use {foo};
+    pub fn garply() -> isize {
+        foo()
+    }
+}
+
+pub mod waldo {
+    use {};
+    pub fn plugh() -> isize {
+        0
+    }
+}
+
+pub fn main() {
+    let _x = baz::quux();
+    let _y = grault::garply();
+    let _z = waldo::plugh();
+}
diff --git a/src/test/ui/issues/issue-11047.rs b/src/test/ui/issues/issue-11047.rs
new file mode 100644
index 00000000000..1fb2b5bb3a1
--- /dev/null
+++ b/src/test/ui/issues/issue-11047.rs
@@ -0,0 +1,26 @@
+// run-pass
+// Test that static methods can be invoked on `type` aliases
+
+#![allow(unused_variables)]
+
+pub mod foo {
+    pub mod bar {
+        pub mod baz {
+            pub struct Qux;
+
+            impl Qux {
+                pub fn new() {}
+            }
+        }
+    }
+}
+
+fn main() {
+
+    type Ham = foo::bar::baz::Qux;
+    let foo = foo::bar::baz::Qux::new();  // invoke directly
+    let bar = Ham::new();                 // invoke via type alias
+
+    type StringVec = Vec<String>;
+    let sv = StringVec::new();
+}
diff --git a/src/test/ui/issues/issue-11085.rs b/src/test/ui/issues/issue-11085.rs
new file mode 100644
index 00000000000..47c03238b55
--- /dev/null
+++ b/src/test/ui/issues/issue-11085.rs
@@ -0,0 +1,46 @@
+// run-pass
+#![allow(dead_code)]
+// compile-flags: --cfg foo
+
+// pretty-expanded FIXME #23616
+
+struct Foo {
+    #[cfg(fail)]
+    bar: baz,
+    foo: isize,
+}
+
+struct Foo2 {
+    #[cfg(foo)]
+    foo: isize,
+}
+
+enum Bar1 {
+    Bar1_1,
+    #[cfg(fail)]
+    Bar1_2(NotAType),
+}
+
+enum Bar2 {
+    #[cfg(fail)]
+    Bar2_1(NotAType),
+}
+
+enum Bar3 {
+    Bar3_1 {
+        #[cfg(fail)]
+        foo: isize,
+        bar: isize,
+    }
+}
+
+pub fn main() {
+    let _f = Foo { foo: 3 };
+    let _f = Foo2 { foo: 3 };
+
+    match Bar1::Bar1_1 {
+        Bar1::Bar1_1 => {}
+    }
+
+    let _f = Bar3::Bar3_1 { bar: 3 };
+}
diff --git a/src/test/ui/issues/issue-1112.rs b/src/test/ui/issues/issue-1112.rs
new file mode 100644
index 00000000000..3ba7bb21708
--- /dev/null
+++ b/src/test/ui/issues/issue-1112.rs
@@ -0,0 +1,37 @@
+// run-pass
+#![allow(dead_code)]
+// Issue #1112
+// Alignment of interior pointers to dynamic-size types
+
+
+struct X<T> {
+    a: T,
+    b: u8,
+    c: bool,
+    d: u8,
+    e: u16,
+    f: u8,
+    g: u8
+}
+
+pub fn main() {
+    let x: X<isize> = X {
+        a: 12345678,
+        b: 9,
+        c: true,
+        d: 10,
+        e: 11,
+        f: 12,
+        g: 13
+    };
+    bar(x);
+}
+
+fn bar<T>(x: X<T>) {
+    assert_eq!(x.b, 9);
+    assert_eq!(x.c, true);
+    assert_eq!(x.d, 10);
+    assert_eq!(x.e, 11);
+    assert_eq!(x.f, 12);
+    assert_eq!(x.g, 13);
+}
diff --git a/src/test/ui/issues/issue-11205.rs b/src/test/ui/issues/issue-11205.rs
new file mode 100644
index 00000000000..ce0951eafdd
--- /dev/null
+++ b/src/test/ui/issues/issue-11205.rs
@@ -0,0 +1,85 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![allow(dead_code)]
+
+trait Foo { fn dummy(&self) { } }
+impl Foo for isize {}
+fn foo(_: [&dyn Foo; 2]) {}
+fn foos(_: &[&dyn Foo]) {}
+fn foog<T>(_: &[T], _: &[T]) {}
+
+fn bar(_: [Box<dyn Foo>; 2]) {}
+fn bars(_: &[Box<dyn Foo+'static>]) {}
+
+fn main() {
+    let x: [&dyn Foo; 2] = [&1, &2];
+    foo(x);
+    foo([&1, &2]);
+
+    let r = &1;
+    let x: [&dyn Foo; 2] = [r; 2];
+    foo(x);
+    foo([&1; 2]);
+
+    let x: &[&dyn Foo] = &[&1, &2];
+    foos(x);
+    foos(&[&1, &2]);
+
+    let x: &[&dyn Foo] = &[&1, &2];
+    let r = &1;
+    foog(x, &[r]);
+
+    let x: [Box<dyn Foo>; 2] = [Box::new(1), Box::new(2)];
+    bar(x);
+    bar([Box::new(1), Box::new(2)]);
+
+    let x: &[Box<dyn Foo+'static>] = &[Box::new(1), Box::new(2)];
+    bars(x);
+    bars(&[Box::new(1), Box::new(2)]);
+
+    let x: &[Box<dyn Foo+'static>] = &[Box::new(1), Box::new(2)];
+    foog(x, &[Box::new(1)]);
+
+    struct T<'a> {
+        t: [&'a (dyn Foo+'a); 2]
+    }
+    let _n = T {
+        t: [&1, &2]
+    };
+    let r = &1;
+    let _n = T {
+        t: [r; 2]
+    };
+    let x: [&dyn Foo; 2] = [&1, &2];
+    let _n = T {
+        t: x
+    };
+
+    struct F<'b> {
+        t: &'b [&'b (dyn Foo+'b)]
+    }
+    let _n = F {
+        t: &[&1, &2]
+    };
+    let r = &1;
+    let r: [&dyn Foo; 2] = [r; 2];
+    let _n = F {
+        t: &r
+    };
+    let x: [&dyn Foo; 2] = [&1, &2];
+    let _n = F {
+        t: &x
+    };
+
+    struct M<'a> {
+        t: &'a [Box<dyn Foo+'static>]
+    }
+    let _n = M {
+        t: &[Box::new(1), Box::new(2)]
+    };
+    let x: [Box<dyn Foo>; 2] = [Box::new(1), Box::new(2)];
+    let _n = M {
+        t: &x
+    };
+}
diff --git a/src/test/ui/issues/issue-11224.rs b/src/test/ui/issues/issue-11224.rs
new file mode 100644
index 00000000000..e1c1df99aca
--- /dev/null
+++ b/src/test/ui/issues/issue-11224.rs
@@ -0,0 +1,8 @@
+// run-pass
+// aux-build:issue-11224.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_11224 as unused;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-11225-1.rs b/src/test/ui/issues/issue-11225-1.rs
new file mode 100644
index 00000000000..d1f2ea5e7de
--- /dev/null
+++ b/src/test/ui/issues/issue-11225-1.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-11225-1.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_11225_1 as foo;
+
+pub fn main() {
+    foo::foo(1);
+    foo::foo_ufcs(1);
+}
diff --git a/src/test/ui/issues/issue-11225-2.rs b/src/test/ui/issues/issue-11225-2.rs
new file mode 100644
index 00000000000..d41c75443f1
--- /dev/null
+++ b/src/test/ui/issues/issue-11225-2.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-11225-2.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_11225_2 as foo;
+
+pub fn main() {
+    foo::foo(1);
+    foo::foo_ufcs(1);
+}
diff --git a/src/test/ui/issues/issue-11225-3.rs b/src/test/ui/issues/issue-11225-3.rs
new file mode 100644
index 00000000000..e69496baa26
--- /dev/null
+++ b/src/test/ui/issues/issue-11225-3.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-11225-3.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_11225_3;
+
+pub fn main() {
+    issue_11225_3::public_inlinable_function();
+    issue_11225_3::public_inlinable_function_ufcs();
+}
diff --git a/src/test/ui/issues/issue-11267.rs b/src/test/ui/issues/issue-11267.rs
new file mode 100644
index 00000000000..848ed6ac7a8
--- /dev/null
+++ b/src/test/ui/issues/issue-11267.rs
@@ -0,0 +1,19 @@
+// run-pass
+// Tests that unary structs can be mutably borrowed.
+
+struct Empty;
+
+trait T<U> {
+    fn next(&mut self) -> Option<U>;
+}
+impl T<isize> for Empty {
+    fn next(&mut self) -> Option<isize> { None }
+}
+
+fn do_something_with(a : &mut dyn T<isize>) {
+    println!("{:?}", a.next())
+}
+
+pub fn main() {
+    do_something_with(&mut Empty);
+}
diff --git a/src/test/ui/issues/issue-11382.rs b/src/test/ui/issues/issue-11382.rs
new file mode 100644
index 00000000000..42a7a0d04a1
--- /dev/null
+++ b/src/test/ui/issues/issue-11382.rs
@@ -0,0 +1,4 @@
+// run-pass
+fn main() {
+    println!("{}", 1.2);
+}
diff --git a/src/test/ui/issues/issue-11508.rs b/src/test/ui/issues/issue-11508.rs
new file mode 100644
index 00000000000..49868b73efa
--- /dev/null
+++ b/src/test/ui/issues/issue-11508.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-11508.rs
+
+extern crate issue_11508 as rand;
+
+use rand::{Closed01, random};
+
+fn main() {
+    let Closed01(val) = random::<Closed01<f32>>();
+    println!("{}", val);
+}
diff --git a/src/test/ui/issues/issue-11529.rs b/src/test/ui/issues/issue-11529.rs
new file mode 100644
index 00000000000..9a6cc8e9fe8
--- /dev/null
+++ b/src/test/ui/issues/issue-11529.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-11529.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_11529 as a;
+
+fn main() {
+    let one = 1;
+    let _a = a::A(&one);
+}
diff --git a/src/test/ui/issues/issue-11552.rs b/src/test/ui/issues/issue-11552.rs
new file mode 100644
index 00000000000..bae12375da1
--- /dev/null
+++ b/src/test/ui/issues/issue-11552.rs
@@ -0,0 +1,22 @@
+// run-pass
+#![feature(box_patterns)]
+#![feature(box_syntax)]
+
+#[derive(Clone)]
+enum Noun
+{
+    Atom(isize),
+    Cell(Box<Noun>, Box<Noun>)
+}
+
+fn fas(n: &Noun) -> Noun
+{
+    match n {
+        &Noun::Cell(box Noun::Atom(2), box Noun::Cell(ref a, _)) => (**a).clone(),
+        _ => panic!("Invalid fas pattern")
+    }
+}
+
+pub fn main() {
+    fas(&Noun::Cell(box Noun::Atom(2), box Noun::Cell(box Noun::Atom(2), box Noun::Atom(3))));
+}
diff --git a/src/test/ui/issues/issue-11577.rs b/src/test/ui/issues/issue-11577.rs
new file mode 100644
index 00000000000..70177c5ed0d
--- /dev/null
+++ b/src/test/ui/issues/issue-11577.rs
@@ -0,0 +1,18 @@
+// run-pass
+// Destructuring struct variants would ICE where regular structs wouldn't
+
+enum Foo {
+    VBar { num: isize }
+}
+
+struct SBar { num: isize }
+
+pub fn main() {
+    let vbar = Foo::VBar { num: 1 };
+    let Foo::VBar { num } = vbar;
+    assert_eq!(num, 1);
+
+    let sbar = SBar { num: 2 };
+    let SBar { num } = sbar;
+    assert_eq!(num, 2);
+}
diff --git a/src/test/ui/issues/issue-11677.rs b/src/test/ui/issues/issue-11677.rs
new file mode 100644
index 00000000000..be18c736f14
--- /dev/null
+++ b/src/test/ui/issues/issue-11677.rs
@@ -0,0 +1,23 @@
+// run-pass
+#![allow(unused_imports)]
+
+#![allow(dead_code)]
+
+// this code used to cause an ICE
+
+use std::marker;
+
+trait X<T> {
+    fn dummy(&self) -> T { panic!() }
+}
+
+struct S<T> {f: Box<dyn X<T>+'static>,
+             g: Box<dyn X<T>+'static>}
+
+struct F;
+impl X<isize> for F {
+}
+
+fn main() {
+  S {f: Box::new(F), g: Box::new(F) };
+}
diff --git a/src/test/ui/issues/issue-11709.rs b/src/test/ui/issues/issue-11709.rs
new file mode 100644
index 00000000000..cb5e3dff3b3
--- /dev/null
+++ b/src/test/ui/issues/issue-11709.rs
@@ -0,0 +1,38 @@
+// run-pass
+#![allow(dead_code)]
+// ignore-pretty issue #37199
+
+// Don't panic on blocks without results
+// There are several tests in this run-pass that raised
+// when this bug was opened. The cases where the compiler
+// panics before the fix have a comment.
+
+struct S {x:()}
+
+fn test(slot: &mut Option<Box<dyn FnMut() -> Box<dyn FnMut()>>>) -> () {
+  let a = slot.take();
+  let _a = match a {
+    // `{let .. a(); }` would break
+    Some(mut a) => { let _a = a(); },
+    None => (),
+  };
+}
+
+fn not(b: bool) -> bool {
+    if b {
+        !b
+    } else {
+        // `panic!(...)` would break
+        panic!("Break the compiler");
+    }
+}
+
+pub fn main() {
+    // {} would break
+    let _r = {};
+    let mut slot = None;
+    // `{ test(...); }` would break
+    let _s : S  = S{ x: { test(&mut slot); } };
+
+    let _b = not(true);
+}
diff --git a/src/test/ui/issues/issue-11820.rs b/src/test/ui/issues/issue-11820.rs
new file mode 100644
index 00000000000..7ffe9652797
--- /dev/null
+++ b/src/test/ui/issues/issue-11820.rs
@@ -0,0 +1,12 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+struct NoClone;
+
+fn main() {
+  let rnc = &NoClone;
+  let rsnc = &Some(NoClone);
+
+  let _: &NoClone = rnc.clone();
+  let _: &Option<NoClone> = rsnc.clone();
+}
diff --git a/src/test/ui/issues/issue-11940.rs b/src/test/ui/issues/issue-11940.rs
new file mode 100644
index 00000000000..6815c87edd8
--- /dev/null
+++ b/src/test/ui/issues/issue-11940.rs
@@ -0,0 +1,11 @@
+// run-pass
+
+const TEST_STR: &'static str = "abcd";
+
+fn main() {
+    let s = "abcd";
+    match s {
+        TEST_STR => (),
+        _ => unreachable!()
+    }
+}
diff --git a/src/test/ui/issues/issue-11958.rs b/src/test/ui/issues/issue-11958.rs
new file mode 100644
index 00000000000..8fe8a8c6061
--- /dev/null
+++ b/src/test/ui/issues/issue-11958.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![forbid(warnings)]
+
+// We shouldn't need to rebind a moved upvar as mut if it's already
+// marked as mut
+
+pub fn main() {
+    let mut x = 1;
+    let _thunk = Box::new(move|| { x = 2; });
+}
diff --git a/src/test/ui/issues/issue-12033.rs b/src/test/ui/issues/issue-12033.rs
new file mode 100644
index 00000000000..9dc7573c9d3
--- /dev/null
+++ b/src/test/ui/issues/issue-12033.rs
@@ -0,0 +1,7 @@
+// run-pass
+use std::cell::RefCell;
+
+fn main() {
+    let x = RefCell::new(0);
+    if *x.borrow() == 0 {} else {}
+}
diff --git a/src/test/ui/issues/issue-12133-1.rs b/src/test/ui/issues/issue-12133-1.rs
new file mode 100644
index 00000000000..96ad5abd548
--- /dev/null
+++ b/src/test/ui/issues/issue-12133-1.rs
@@ -0,0 +1,10 @@
+// run-pass
+// aux-build:issue-12133-rlib.rs
+// aux-build:issue-12133-dylib.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_12133_rlib as a;
+extern crate issue_12133_dylib as b;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-12133-2.rs b/src/test/ui/issues/issue-12133-2.rs
new file mode 100644
index 00000000000..02fec65c2ed
--- /dev/null
+++ b/src/test/ui/issues/issue-12133-2.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-12133-rlib.rs
+// aux-build:issue-12133-dylib.rs
+// no-prefer-dynamic
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_12133_rlib as a;
+extern crate issue_12133_dylib as b;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-12133-3.rs b/src/test/ui/issues/issue-12133-3.rs
new file mode 100644
index 00000000000..c8aa9bf4649
--- /dev/null
+++ b/src/test/ui/issues/issue-12133-3.rs
@@ -0,0 +1,14 @@
+// run-pass
+// aux-build:issue-12133-rlib.rs
+// aux-build:issue-12133-dylib.rs
+// aux-build:issue-12133-dylib2.rs
+// ignore-cloudabi no dylib support
+// ignore-emscripten no dylib support
+// ignore-musl
+// ignore-sgx no dylib support
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_12133_dylib2 as other;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-12285.rs b/src/test/ui/issues/issue-12285.rs
new file mode 100644
index 00000000000..24ac5d2fbbf
--- /dev/null
+++ b/src/test/ui/issues/issue-12285.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+struct S;
+
+fn main() {
+    match Some(&S) {
+        Some(&S) => {},
+        _x => unreachable!()
+    }
+    match Some(&S) {
+        Some(&S) => {},
+        None => unreachable!()
+    }
+}
diff --git a/src/test/ui/issues/issue-1257.rs b/src/test/ui/issues/issue-1257.rs
new file mode 100644
index 00000000000..de5a6d35925
--- /dev/null
+++ b/src/test/ui/issues/issue-1257.rs
@@ -0,0 +1,11 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub fn main () {
+  let mut line = "".to_string();
+  let mut i = 0;
+  while line != "exit".to_string() {
+    line = if i == 9 { "exit".to_string() } else { "notexit".to_string() };
+    i += 1;
+  }
+}
diff --git a/src/test/ui/issues/issue-12582.rs b/src/test/ui/issues/issue-12582.rs
new file mode 100644
index 00000000000..f3366704e63
--- /dev/null
+++ b/src/test/ui/issues/issue-12582.rs
@@ -0,0 +1,21 @@
+// run-pass
+
+pub fn main() {
+    let x = 1;
+    let y = 2;
+
+    assert_eq!(3, match (x, y) {
+        (1, 1) => 1,
+        (2, 2) => 2,
+        (1..=2, 2) => 3,
+        _ => 4,
+    });
+
+    // nested tuple
+    assert_eq!(3, match ((x, y),) {
+        ((1, 1),) => 1,
+        ((2, 2),) => 2,
+        ((1..=2, 2),) => 3,
+        _ => 4,
+    });
+}
diff --git a/src/test/ui/issues/issue-12612.rs b/src/test/ui/issues/issue-12612.rs
new file mode 100644
index 00000000000..d254f6941a3
--- /dev/null
+++ b/src/test/ui/issues/issue-12612.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(unused_imports)]
+// aux-build:issue-12612-1.rs
+// aux-build:issue-12612-2.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_12612_1 as foo;
+extern crate issue_12612_2 as bar;
+
+mod test {
+    use bar::baz;
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-12660.rs b/src/test/ui/issues/issue-12660.rs
new file mode 100644
index 00000000000..44c492b43f0
--- /dev/null
+++ b/src/test/ui/issues/issue-12660.rs
@@ -0,0 +1,14 @@
+// run-pass
+// aux-build:issue-12660-aux.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue12660aux;
+
+use issue12660aux::{my_fn, MyStruct};
+
+#[allow(path_statements)]
+fn main() {
+    my_fn(MyStruct);
+    MyStruct;
+}
diff --git a/src/test/ui/issues/issue-12677.rs b/src/test/ui/issues/issue-12677.rs
new file mode 100644
index 00000000000..d0e4c17d4fa
--- /dev/null
+++ b/src/test/ui/issues/issue-12677.rs
@@ -0,0 +1,9 @@
+// run-pass
+
+fn main() {
+    let s = "Hello";
+    let first = s.bytes();
+    let second = first.clone();
+
+    assert_eq!(first.collect::<Vec<u8>>(), second.collect::<Vec<u8>>())
+}
diff --git a/src/test/ui/issues/issue-12699.rs b/src/test/ui/issues/issue-12699.rs
new file mode 100644
index 00000000000..e26c2d7cde2
--- /dev/null
+++ b/src/test/ui/issues/issue-12699.rs
@@ -0,0 +1,10 @@
+// run-pass
+// ignore-wasm32-bare can't block the thread
+// ignore-sgx not supported
+#![allow(deprecated)]
+
+use std::thread;
+
+fn main() {
+    thread::sleep_ms(250);
+}
diff --git a/src/test/ui/issues/issue-12744.rs b/src/test/ui/issues/issue-12744.rs
new file mode 100644
index 00000000000..e2756ec970c
--- /dev/null
+++ b/src/test/ui/issues/issue-12744.rs
@@ -0,0 +1,5 @@
+// run-pass
+fn main() {
+    fn test() -> Box<dyn std::any::Any + 'static> { Box::new(1) }
+    println!("{:?}", test())
+}
diff --git a/src/test/ui/issues/issue-12860.rs b/src/test/ui/issues/issue-12860.rs
new file mode 100644
index 00000000000..01b642cdfcc
--- /dev/null
+++ b/src/test/ui/issues/issue-12860.rs
@@ -0,0 +1,49 @@
+// run-pass
+use std::collections::HashSet;
+
+#[derive(Copy, Clone, PartialEq, Eq, Hash)]
+struct XYZ {
+    x: isize,
+    y: isize,
+    z: isize
+}
+
+fn main() {
+    let mut connected = HashSet::new();
+    let mut border = HashSet::new();
+
+    let middle = XYZ{x: 0, y: 0, z: 0};
+    border.insert(middle);
+
+    while !border.is_empty() && connected.len() < 10000 {
+        let choice = *(border.iter().next().unwrap());
+        border.remove(&choice);
+        connected.insert(choice);
+
+        let cxp = XYZ{x: choice.x + 1, y: choice.y, z: choice.z};
+        let cxm = XYZ{x: choice.x - 1, y: choice.y, z: choice.z};
+        let cyp = XYZ{x: choice.x, y: choice.y + 1, z: choice.z};
+        let cym = XYZ{x: choice.x, y: choice.y - 1, z: choice.z};
+        let czp = XYZ{x: choice.x, y: choice.y, z: choice.z + 1};
+        let czm = XYZ{x: choice.x, y: choice.y, z: choice.z - 1};
+
+        if !connected.contains(&cxp) {
+            border.insert(cxp);
+        }
+        if  !connected.contains(&cxm){
+            border.insert(cxm);
+        }
+        if !connected.contains(&cyp){
+            border.insert(cyp);
+        }
+        if !connected.contains(&cym) {
+            border.insert(cym);
+        }
+        if !connected.contains(&czp){
+            border.insert(czp);
+        }
+        if !connected.contains(&czm) {
+            border.insert(czm);
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-12909.rs b/src/test/ui/issues/issue-12909.rs
new file mode 100644
index 00000000000..a68d73a004f
--- /dev/null
+++ b/src/test/ui/issues/issue-12909.rs
@@ -0,0 +1,20 @@
+// run-pass
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+use std::collections::HashMap;
+
+fn copy<T: Copy>(&x: &T) -> T {
+    x
+}
+
+fn main() {
+    let arr = [(1, 1), (2, 2), (3, 3)];
+
+    let v1: Vec<&_> = arr.iter().collect();
+    let v2: Vec<_> = arr.iter().map(copy).collect();
+
+    let m1: HashMap<_, _> = arr.iter().map(copy).collect();
+    let m2: HashMap<isize, _> = arr.iter().map(copy).collect();
+    let m3: HashMap<_, usize> = arr.iter().map(copy).collect();
+}
diff --git a/src/test/ui/issues/issue-13027.rs b/src/test/ui/issues/issue-13027.rs
new file mode 100644
index 00000000000..1bab82a543f
--- /dev/null
+++ b/src/test/ui/issues/issue-13027.rs
@@ -0,0 +1,178 @@
+// run-pass
+
+// Tests that match expression handles overlapped literal and range
+// properly in the presence of guard function.
+
+fn val() -> usize { 1 }
+
+static CONST: usize = 1;
+
+pub fn main() {
+    lit_shadow_range();
+    range_shadow_lit();
+    range_shadow_range();
+    multi_pats_shadow_lit();
+    multi_pats_shadow_range();
+    lit_shadow_multi_pats();
+    range_shadow_multi_pats();
+    misc();
+}
+
+fn lit_shadow_range() {
+    assert_eq!(2, match 1 {
+        1 if false => 1,
+        1..=2 => 2,
+        _ => 3
+    });
+
+    let x = 0;
+    assert_eq!(2, match x+1 {
+        0 => 0,
+        1 if false => 1,
+        1..=2 => 2,
+        _ => 3
+    });
+
+    assert_eq!(2, match val() {
+        1 if false => 1,
+        1..=2 => 2,
+        _ => 3
+    });
+
+    assert_eq!(2, match CONST {
+        0 => 0,
+        1 if false => 1,
+        1..=2 => 2,
+        _ => 3
+    });
+
+    // value is out of the range of second arm, should match wildcard pattern
+    assert_eq!(3, match 3 {
+        1 if false => 1,
+        1..=2 => 2,
+        _ => 3
+    });
+}
+
+fn range_shadow_lit() {
+    assert_eq!(2, match 1 {
+        1..=2 if false => 1,
+        1 => 2,
+        _ => 3
+    });
+
+    let x = 0;
+    assert_eq!(2, match x+1 {
+        0 => 0,
+        1..=2 if false => 1,
+        1 => 2,
+        _ => 3
+    });
+
+    assert_eq!(2, match val() {
+        1..=2 if false => 1,
+        1 => 2,
+        _ => 3
+    });
+
+    assert_eq!(2, match CONST {
+        0 => 0,
+        1..=2 if false => 1,
+        1 => 2,
+        _ => 3
+    });
+
+    // ditto
+    assert_eq!(3, match 3 {
+        1..=2 if false => 1,
+        1 => 2,
+        _ => 3
+    });
+}
+
+fn range_shadow_range() {
+    assert_eq!(2, match 1 {
+        0..=2 if false => 1,
+        1..=3 => 2,
+        _ => 3,
+    });
+
+    let x = 0;
+    assert_eq!(2, match x+1 {
+        100 => 0,
+        0..=2 if false => 1,
+        1..=3 => 2,
+        _ => 3,
+    });
+
+    assert_eq!(2, match val() {
+        0..=2 if false => 1,
+        1..=3 => 2,
+        _ => 3,
+    });
+
+    assert_eq!(2, match CONST {
+        100 => 0,
+        0..=2 if false => 1,
+        1..=3 => 2,
+        _ => 3,
+    });
+
+    // ditto
+    assert_eq!(3, match 5 {
+        0..=2 if false => 1,
+        1..=3 => 2,
+        _ => 3,
+    });
+}
+
+fn multi_pats_shadow_lit() {
+    assert_eq!(2, match 1 {
+        100 => 0,
+        0 | 1..=10 if false => 1,
+        1 => 2,
+        _ => 3,
+    });
+}
+
+fn multi_pats_shadow_range() {
+    assert_eq!(2, match 1 {
+        100 => 0,
+        0 | 1..=10 if false => 1,
+        1..=3 => 2,
+        _ => 3,
+    });
+}
+
+fn lit_shadow_multi_pats() {
+    assert_eq!(2, match 1 {
+        100 => 0,
+        1 if false => 1,
+        0 | 1..=10 => 2,
+        _ => 3,
+    });
+}
+
+fn range_shadow_multi_pats() {
+    assert_eq!(2, match 1 {
+        100 => 0,
+        1..=3 if false => 1,
+        0 | 1..=10 => 2,
+        _ => 3,
+    });
+}
+
+fn misc() {
+    enum Foo {
+        Bar(usize, bool)
+    }
+    // This test basically mimics how trace_macros! macro is implemented,
+    // which is a rare combination of vector patterns, multiple wild-card
+    // patterns and guard functions.
+    let r = match [Foo::Bar(0, false)] {
+        [Foo::Bar(_, pred)] if pred => 1,
+        [Foo::Bar(_, pred)] if !pred => 2,
+        _ => 0,
+    };
+    assert_eq!(2, r);
+}
diff --git a/src/test/ui/issues/issue-13204.rs b/src/test/ui/issues/issue-13204.rs
new file mode 100644
index 00000000000..3d6aba8455a
--- /dev/null
+++ b/src/test/ui/issues/issue-13204.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(unused_mut)]
+// Test that when instantiating trait default methods, typeck handles
+// lifetime parameters defined on the method bound correctly.
+
+
+pub trait Foo {
+    fn bar<'a, I: Iterator<Item=&'a ()>>(&self, it: I) -> usize {
+        let mut xs = it.filter(|_| true);
+        xs.count()
+    }
+}
+
+pub struct Baz;
+
+impl Foo for Baz {
+    // When instantiating `Foo::bar` for `Baz` here, typeck used to
+    // ICE due to the lifetime parameter of `bar`.
+}
+
+fn main() {
+    let x = Baz;
+    let y = vec![(), (), ()];
+    assert_eq!(x.bar(y.iter()), 3);
+}
diff --git a/src/test/ui/issues/issue-13259-windows-tcb-trash.rs b/src/test/ui/issues/issue-13259-windows-tcb-trash.rs
new file mode 100644
index 00000000000..740e7780de6
--- /dev/null
+++ b/src/test/ui/issues/issue-13259-windows-tcb-trash.rs
@@ -0,0 +1,42 @@
+// run-pass
+#![feature(rustc_private)]
+
+extern crate libc;
+
+#[cfg(windows)]
+mod imp {
+    type LPVOID = *mut u8;
+    type DWORD = u32;
+    type LPWSTR = *mut u16;
+
+    extern "system" {
+        fn FormatMessageW(flags: DWORD,
+                          lpSrc: LPVOID,
+                          msgId: DWORD,
+                          langId: DWORD,
+                          buf: LPWSTR,
+                          nsize: DWORD,
+                          args: *const u8)
+                          -> DWORD;
+    }
+
+    pub fn test() {
+        let mut buf: [u16; 50] = [0; 50];
+        let ret = unsafe {
+            FormatMessageW(0x1000, core::ptr::null_mut(), 1, 0x400,
+                           buf.as_mut_ptr(), buf.len() as u32, core::ptr::null())
+        };
+        // On some 32-bit Windowses (Win7-8 at least) this will panic with segmented
+        // stacks taking control of pvArbitrary
+        assert!(ret != 0);
+    }
+}
+
+#[cfg(not(windows))]
+mod imp {
+    pub fn test() { }
+}
+
+fn main() {
+    imp::test()
+}
diff --git a/src/test/ui/issues/issue-13264.rs b/src/test/ui/issues/issue-13264.rs
new file mode 100644
index 00000000000..691bb63a2fe
--- /dev/null
+++ b/src/test/ui/issues/issue-13264.rs
@@ -0,0 +1,74 @@
+// run-pass
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+
+use std::ops::Deref;
+
+struct Root {
+    jsref: JSRef
+}
+
+impl Deref for Root {
+    type Target = JSRef;
+
+    fn deref<'a>(&'a self) -> &'a JSRef {
+        &self.jsref
+    }
+}
+
+#[derive(Copy, Clone)]
+struct JSRef {
+    node: *const Node
+}
+
+impl Deref for JSRef {
+    type Target = Node;
+
+    fn deref<'a>(&'a self) -> &'a Node {
+        self.get()
+    }
+}
+
+trait INode {
+    fn RemoveChild(&self);
+}
+
+impl INode for JSRef {
+    fn RemoveChild(&self) {
+        self.get().RemoveChild(0)
+    }
+}
+
+impl JSRef {
+    fn AddChild(&self) {
+        self.get().AddChild(0);
+    }
+
+    fn get<'a>(&'a self) -> &'a Node {
+        unsafe {
+            &*self.node
+        }
+    }
+}
+
+struct Node;
+
+impl Node {
+    fn RemoveChild(&self, _a: usize) {
+    }
+
+    fn AddChild(&self, _a: usize) {
+    }
+}
+
+fn main() {
+    let n = Node;
+    let jsref = JSRef { node: &n };
+    let root = Root { jsref: jsref };
+
+    root.AddChild();
+    jsref.AddChild();
+
+    root.RemoveChild();
+    jsref.RemoveChild();
+}
diff --git a/src/test/ui/issues/issue-13304.rs b/src/test/ui/issues/issue-13304.rs
new file mode 100644
index 00000000000..5698536ab5d
--- /dev/null
+++ b/src/test/ui/issues/issue-13304.rs
@@ -0,0 +1,40 @@
+// run-pass
+#![allow(unused_mut)]
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+use std::env;
+use std::io::prelude::*;
+use std::io;
+use std::process::{Command, Stdio};
+use std::str;
+
+fn main() {
+    let args: Vec<String> = env::args().collect();
+    if args.len() > 1 && args[1] == "child" {
+        child();
+    } else {
+        parent();
+    }
+}
+
+fn parent() {
+    let args: Vec<String> = env::args().collect();
+    let mut p = Command::new(&args[0]).arg("child")
+                        .stdout(Stdio::piped())
+                        .stdin(Stdio::piped())
+                        .spawn().unwrap();
+    p.stdin.as_mut().unwrap().write_all(b"test1\ntest2\ntest3").unwrap();
+    let out = p.wait_with_output().unwrap();
+    assert!(out.status.success());
+    let s = str::from_utf8(&out.stdout).unwrap();
+    assert_eq!(s, "test1\ntest2\ntest3\n");
+}
+
+fn child() {
+    let mut stdin = io::stdin();
+    for line in stdin.lock().lines() {
+        println!("{}", line.unwrap());
+    }
+}
diff --git a/src/test/ui/issues/issue-13323.rs b/src/test/ui/issues/issue-13323.rs
new file mode 100644
index 00000000000..26847ee7a08
--- /dev/null
+++ b/src/test/ui/issues/issue-13323.rs
@@ -0,0 +1,59 @@
+// run-pass
+#![feature(box_syntax)]
+
+struct StrWrap {
+    s: String
+}
+
+impl StrWrap {
+    fn new(s: &str) -> StrWrap {
+        StrWrap { s: s.to_string() }
+    }
+
+    fn get_s<'a>(&'a self) -> &'a str {
+        &self.s
+    }
+}
+
+struct MyStruct {
+    s: StrWrap
+}
+
+impl MyStruct {
+    fn new(s: &str) -> MyStruct {
+        MyStruct { s: StrWrap::new(s) }
+    }
+
+    fn get_str_wrap<'a>(&'a self) -> &'a StrWrap {
+        &self.s
+    }
+}
+
+trait Matcher<T> {
+    fn matches(&self, actual: T) -> bool;
+}
+
+fn assert_that<T, U: Matcher<T>>(actual: T, matcher: &U) {
+    assert!(matcher.matches(actual));
+}
+
+struct EqualTo<T> {
+    expected: T
+}
+
+impl<T: Eq> Matcher<T> for EqualTo<T> {
+    fn matches(&self, actual: T) -> bool {
+        self.expected.eq(&actual)
+    }
+}
+
+fn equal_to<T: Eq>(expected: T) -> Box<EqualTo<T>> {
+    box EqualTo { expected: expected }
+}
+
+pub fn main() {
+    let my_struct = MyStruct::new("zomg");
+    let s = my_struct.get_str_wrap();
+
+    assert_that(s.get_s(), &*equal_to("zomg"));
+}
diff --git a/src/test/ui/issues/issue-13434.rs b/src/test/ui/issues/issue-13434.rs
new file mode 100644
index 00000000000..1b7d3e20173
--- /dev/null
+++ b/src/test/ui/issues/issue-13434.rs
@@ -0,0 +1,21 @@
+// run-pass
+#[derive(Debug)]
+struct MyStruct;
+
+trait Repro {
+  fn repro(self, s: MyStruct) -> String;
+}
+
+impl<F> Repro for F where F: FnOnce(MyStruct) -> String {
+  fn repro(self, s: MyStruct) -> String {
+    self(s)
+  }
+}
+
+fn do_stuff<R: Repro>(r: R) -> String {
+  r.repro(MyStruct)
+}
+
+pub fn main() {
+  assert_eq!("MyStruct".to_string(), do_stuff(|s: MyStruct| format!("{:?}", s)));
+}
diff --git a/src/test/ui/issues/issue-13507-2.rs b/src/test/ui/issues/issue-13507-2.rs
new file mode 100644
index 00000000000..63f3589c6cc
--- /dev/null
+++ b/src/test/ui/issues/issue-13507-2.rs
@@ -0,0 +1,36 @@
+// run-pass
+#![allow(unused_imports)]
+// aux-build:issue-13507.rs
+
+extern crate issue_13507;
+use issue_13507::testtypes;
+
+use std::any::TypeId;
+
+pub fn type_ids() -> Vec<TypeId> {
+    use issue_13507::testtypes::*;
+    vec![
+        TypeId::of::<FooBool>(),
+        TypeId::of::<FooInt>(),
+        TypeId::of::<FooUint>(),
+        TypeId::of::<FooFloat>(),
+        TypeId::of::<FooStr>(),
+        TypeId::of::<FooArray>(),
+        TypeId::of::<FooSlice>(),
+        TypeId::of::<FooBox>(),
+        TypeId::of::<FooPtr>(),
+        TypeId::of::<FooRef>(),
+        TypeId::of::<FooFnPtr>(),
+        TypeId::of::<FooNil>(),
+        TypeId::of::<FooTuple>(),
+        TypeId::of::<dyn FooTrait>(),
+        TypeId::of::<FooStruct>(),
+        TypeId::of::<FooEnum>()
+    ]
+}
+
+pub fn main() {
+    let othercrate = issue_13507::testtypes::type_ids();
+    let thiscrate = type_ids();
+    assert_eq!(thiscrate, othercrate);
+}
diff --git a/src/test/ui/issues/issue-13620.rs b/src/test/ui/issues/issue-13620.rs
new file mode 100644
index 00000000000..3c3c19df75d
--- /dev/null
+++ b/src/test/ui/issues/issue-13620.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-13620-1.rs
+// aux-build:issue-13620-2.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_13620_2 as crate2;
+
+fn main() {
+    (crate2::FOO2.foo)();
+}
diff --git a/src/test/ui/issues/issue-13655.rs b/src/test/ui/issues/issue-13655.rs
new file mode 100644
index 00000000000..6dd1847995f
--- /dev/null
+++ b/src/test/ui/issues/issue-13655.rs
@@ -0,0 +1,32 @@
+// run-pass
+#![feature(fn_traits, unboxed_closures)]
+use std::ops::Fn;
+
+struct Foo<T>(T);
+
+impl<T: Copy> Fn<()> for Foo<T> {
+    extern "rust-call" fn call(&self, _: ()) -> T {
+      match *self {
+        Foo(t) => t
+      }
+    }
+}
+
+impl<T: Copy> FnMut<()> for Foo<T> {
+    extern "rust-call" fn call_mut(&mut self, _: ()) -> T {
+        self.call(())
+    }
+}
+
+impl<T: Copy> FnOnce<()> for Foo<T> {
+    type Output = T;
+
+    extern "rust-call" fn call_once(self, _: ()) -> T {
+        self.call(())
+    }
+}
+
+fn main() {
+  let t: u8 = 1;
+  println!("{}", Foo(t)());
+}
diff --git a/src/test/ui/issues/issue-13665.rs b/src/test/ui/issues/issue-13665.rs
new file mode 100644
index 00000000000..a3843c65034
--- /dev/null
+++ b/src/test/ui/issues/issue-13665.rs
@@ -0,0 +1,15 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+fn foo<'r>() {
+  let maybe_value_ref: Option<&'r u8> = None;
+
+  let _ = maybe_value_ref.map(|& ref v| v);
+  let _ = maybe_value_ref.map(|& ref v| -> &'r u8 {v});
+  let _ = maybe_value_ref.map(|& ref v: &'r u8| -> &'r u8 {v});
+  let _ = maybe_value_ref.map(|& ref v: &'r u8| {v});
+}
+
+fn main() {
+  foo();
+}
diff --git a/src/test/ui/issues/issue-13763.rs b/src/test/ui/issues/issue-13763.rs
new file mode 100644
index 00000000000..dd5f6dbc9dc
--- /dev/null
+++ b/src/test/ui/issues/issue-13763.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+mod u8 {
+    pub const BITS: usize = 8;
+}
+
+const NUM: usize = u8::BITS;
+
+struct MyStruct { nums: [usize; 8] }
+
+fn main() {
+    let _s = MyStruct { nums: [0; NUM] };
+}
diff --git a/src/test/ui/issues/issue-13808.rs b/src/test/ui/issues/issue-13808.rs
new file mode 100644
index 00000000000..9f9db067bf4
--- /dev/null
+++ b/src/test/ui/issues/issue-13808.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+struct Foo<'a> {
+    listener: Box<dyn FnMut() + 'a>,
+}
+
+impl<'a> Foo<'a> {
+    fn new<F>(listener: F) -> Foo<'a> where F: FnMut() + 'a {
+        Foo { listener: Box::new(listener) }
+    }
+}
+
+fn main() {
+    let a = Foo::new(|| {});
+}
diff --git a/src/test/ui/issues/issue-13867.rs b/src/test/ui/issues/issue-13867.rs
new file mode 100644
index 00000000000..e66368f9ba8
--- /dev/null
+++ b/src/test/ui/issues/issue-13867.rs
@@ -0,0 +1,49 @@
+// run-pass
+// Test that codegen works correctly when there are multiple refutable
+// patterns in match expression.
+
+
+enum Foo {
+    FooUint(usize),
+    FooNullary,
+}
+
+fn main() {
+    let r = match (Foo::FooNullary, 'a') {
+        (Foo::FooUint(..), 'a'..='z') => 1,
+        (Foo::FooNullary, 'x') => 2,
+        _ => 0
+    };
+    assert_eq!(r, 0);
+
+    let r = match (Foo::FooUint(0), 'a') {
+        (Foo::FooUint(1), 'a'..='z') => 1,
+        (Foo::FooUint(..), 'x') => 2,
+        (Foo::FooNullary, 'a') => 3,
+        _ => 0
+    };
+    assert_eq!(r, 0);
+
+    let r = match ('a', Foo::FooUint(0)) {
+        ('a'..='z', Foo::FooUint(1)) => 1,
+        ('x', Foo::FooUint(..)) => 2,
+        ('a', Foo::FooNullary) => 3,
+        _ => 0
+    };
+    assert_eq!(r, 0);
+
+    let r = match ('a', 'a') {
+        ('a'..='z', 'b') => 1,
+        ('x', 'a'..='z') => 2,
+        _ => 0
+    };
+    assert_eq!(r, 0);
+
+    let r = match ('a', 'a') {
+        ('a'..='z', 'b') => 1,
+        ('x', 'a'..='z') => 2,
+        ('a', 'a') => 3,
+        _ => 0
+    };
+    assert_eq!(r, 3);
+}
diff --git a/src/test/ui/issues/issue-13872.rs b/src/test/ui/issues/issue-13872.rs
new file mode 100644
index 00000000000..aade6b8367c
--- /dev/null
+++ b/src/test/ui/issues/issue-13872.rs
@@ -0,0 +1,12 @@
+// run-pass
+// aux-build:issue-13872-1.rs
+// aux-build:issue-13872-2.rs
+// aux-build:issue-13872-3.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_13872_3 as other;
+
+fn main() {
+    other::foo();
+}
diff --git a/src/test/ui/issues/issue-13902.rs b/src/test/ui/issues/issue-13902.rs
new file mode 100644
index 00000000000..1afde0ebe85
--- /dev/null
+++ b/src/test/ui/issues/issue-13902.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+const JSVAL_TAG_CLEAR: u32 = 0xFFFFFF80;
+const JSVAL_TYPE_INT32: u8 = 0x01;
+const JSVAL_TYPE_UNDEFINED: u8 = 0x02;
+#[repr(u32)]
+enum ValueTag {
+    JSVAL_TAG_INT32 = JSVAL_TAG_CLEAR | (JSVAL_TYPE_INT32 as u32),
+    JSVAL_TAG_UNDEFINED = JSVAL_TAG_CLEAR | (JSVAL_TYPE_UNDEFINED as u32),
+}
+
+fn main() {
+    let _ = ValueTag::JSVAL_TAG_INT32;
+}
diff --git a/src/test/ui/issues/issue-14229.rs b/src/test/ui/issues/issue-14229.rs
new file mode 100644
index 00000000000..477a2c65053
--- /dev/null
+++ b/src/test/ui/issues/issue-14229.rs
@@ -0,0 +1,21 @@
+// run-pass
+trait Foo: Sized {
+    fn foo(self) {}
+}
+
+trait Bar: Sized {
+    fn bar(self) {}
+}
+
+struct S;
+
+impl<'l> Foo for &'l S {}
+
+impl<T: Foo> Bar for T {}
+
+fn main() {
+    let s = S;
+    s.foo();
+    (&s).bar();
+    s.bar();
+}
diff --git a/src/test/ui/issues/issue-14308.rs b/src/test/ui/issues/issue-14308.rs
new file mode 100644
index 00000000000..e067bcdf34a
--- /dev/null
+++ b/src/test/ui/issues/issue-14308.rs
@@ -0,0 +1,15 @@
+// run-pass
+
+struct A(isize);
+
+fn main() {
+    let x = match A(3) {
+        A(..) => 1
+    };
+    assert_eq!(x, 1);
+    let x = match A(4) {
+        A(1) => 1,
+        A(..) => 2
+    };
+    assert_eq!(x, 2);
+}
diff --git a/src/test/ui/issues/issue-14344.rs b/src/test/ui/issues/issue-14344.rs
new file mode 100644
index 00000000000..33b1df827d3
--- /dev/null
+++ b/src/test/ui/issues/issue-14344.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-14344-1.rs
+// aux-build:issue-14344-2.rs
+
+extern crate issue_14344_1;
+extern crate issue_14344_2;
+
+fn main() {
+    issue_14344_1::foo();
+    issue_14344_2::bar();
+}
diff --git a/src/test/ui/issues/issue-14382.rs b/src/test/ui/issues/issue-14382.rs
new file mode 100644
index 00000000000..671e7a22667
--- /dev/null
+++ b/src/test/ui/issues/issue-14382.rs
@@ -0,0 +1,15 @@
+// run-pass
+#[derive(Debug)]
+struct Matrix4<S>(S);
+trait POrd<S> {}
+
+fn translate<S: POrd<S>>(s: S) -> Matrix4<S> { Matrix4(s) }
+
+impl POrd<f32> for f32 {}
+impl POrd<f64> for f64 {}
+
+fn main() {
+    let x = 1.0;
+    let m : Matrix4<f32> = translate(x);
+    println!("m: {:?}", m);
+}
diff --git a/src/test/ui/issues/issue-14393.rs b/src/test/ui/issues/issue-14393.rs
new file mode 100644
index 00000000000..df635407af6
--- /dev/null
+++ b/src/test/ui/issues/issue-14393.rs
@@ -0,0 +1,10 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+fn main() {
+    match ("", 1_usize) {
+        (_, 42_usize) => (),
+        ("", _) => (),
+        _ => ()
+    }
+}
diff --git a/src/test/ui/issues/issue-14399.rs b/src/test/ui/issues/issue-14399.rs
new file mode 100644
index 00000000000..6bf8a589959
--- /dev/null
+++ b/src/test/ui/issues/issue-14399.rs
@@ -0,0 +1,20 @@
+// run-pass
+// #14399
+// We'd previously ICE if we had a method call whose return
+// value was coerced to a trait object. (v.clone() returns Box<B1>
+// which is coerced to Box<A>).
+
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+#[derive(Clone)]
+struct B1;
+
+trait A { fn foo(&self) {} }
+impl A for B1 {}
+
+fn main() {
+    let v: Box<_> = box B1;
+    let _c: Box<dyn A> = v.clone();
+}
diff --git a/src/test/ui/issues/issue-14421.rs b/src/test/ui/issues/issue-14421.rs
new file mode 100644
index 00000000000..c59bd87065f
--- /dev/null
+++ b/src/test/ui/issues/issue-14421.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(non_snake_case)]
+
+// aux-build:issue-14421.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_14421 as bug_lib;
+
+use bug_lib::B;
+use bug_lib::make;
+
+pub fn main() {
+    let mut an_A: B = make();
+    an_A.foo();
+}
diff --git a/src/test/ui/issues/issue-14422.rs b/src/test/ui/issues/issue-14422.rs
new file mode 100644
index 00000000000..b9e2065d014
--- /dev/null
+++ b/src/test/ui/issues/issue-14422.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(non_snake_case)]
+
+// aux-build:issue-14422.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_14422 as bug_lib;
+
+use bug_lib::B;
+use bug_lib::make;
+
+pub fn main() {
+    let mut an_A: B = make();
+    an_A.foo();
+}
diff --git a/src/test/ui/issues/issue-14456.rs b/src/test/ui/issues/issue-14456.rs
new file mode 100644
index 00000000000..164d7ef8af2
--- /dev/null
+++ b/src/test/ui/issues/issue-14456.rs
@@ -0,0 +1,38 @@
+// run-pass
+#![allow(unused_mut)]
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+use std::env;
+use std::io::prelude::*;
+use std::io;
+use std::process::{Command, Stdio};
+
+fn main() {
+    let args: Vec<String> = env::args().collect();
+    if args.len() > 1 && args[1] == "child" {
+        return child()
+    }
+
+    test();
+}
+
+fn child() {
+    writeln!(&mut io::stdout(), "foo").unwrap();
+    writeln!(&mut io::stderr(), "bar").unwrap();
+    let mut stdin = io::stdin();
+    let mut s = String::new();
+    stdin.lock().read_line(&mut s).unwrap();
+    assert_eq!(s.len(), 0);
+}
+
+fn test() {
+    let args: Vec<String> = env::args().collect();
+    let mut p = Command::new(&args[0]).arg("child")
+                                     .stdin(Stdio::piped())
+                                     .stdout(Stdio::piped())
+                                     .stderr(Stdio::piped())
+                                     .spawn().unwrap();
+    assert!(p.wait().unwrap().success());
+}
diff --git a/src/test/ui/issues/issue-1451.rs b/src/test/ui/issues/issue-1451.rs
new file mode 100644
index 00000000000..ad8928b2043
--- /dev/null
+++ b/src/test/ui/issues/issue-1451.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+#![allow(non_snake_case)]
+#![allow(unused_variables)]
+
+struct T { f: extern "Rust" fn() }
+struct S { f: extern "Rust" fn() }
+
+fn fooS(t: S) {
+}
+
+fn fooT(t: T) {
+}
+
+fn bar() {
+}
+
+pub fn main() {
+    let x: extern "Rust" fn() = bar;
+    fooS(S {f: x});
+    fooS(S {f: bar});
+
+    let x: extern "Rust" fn() = bar;
+    fooT(T {f: x});
+    fooT(T {f: bar});
+}
diff --git a/src/test/ui/issues/issue-14589.rs b/src/test/ui/issues/issue-14589.rs
new file mode 100644
index 00000000000..5d8aab2ce74
--- /dev/null
+++ b/src/test/ui/issues/issue-14589.rs
@@ -0,0 +1,24 @@
+// run-pass
+// All 3 expressions should work in that the argument gets
+// coerced to a trait object
+
+// pretty-expanded FIXME #23616
+
+fn main() {
+    send::<Box<dyn Foo>>(Box::new(Output(0)));
+    Test::<Box<dyn Foo>>::foo(Box::new(Output(0)));
+    Test::<Box<dyn Foo>>::new().send(Box::new(Output(0)));
+}
+
+fn send<T>(_: T) {}
+
+struct Test<T> { marker: std::marker::PhantomData<T> }
+impl<T> Test<T> {
+    fn new() -> Test<T> { Test { marker: ::std::marker::PhantomData } }
+    fn foo(_: T) {}
+    fn send(&self, _: T) {}
+}
+
+trait Foo { fn dummy(&self) { }}
+struct Output(isize);
+impl Foo for Output {}
diff --git a/src/test/ui/issues/issue-1460.rs b/src/test/ui/issues/issue-1460.rs
new file mode 100644
index 00000000000..143a0387e21
--- /dev/null
+++ b/src/test/ui/issues/issue-1460.rs
@@ -0,0 +1,7 @@
+// run-pass
+
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    {|i: u32| if 1 == i { }};
+}
diff --git a/src/test/ui/issues/issue-14821.rs b/src/test/ui/issues/issue-14821.rs
new file mode 100644
index 00000000000..00b2e3607fc
--- /dev/null
+++ b/src/test/ui/issues/issue-14821.rs
@@ -0,0 +1,21 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+trait SomeTrait {}
+struct Meow;
+impl SomeTrait for Meow {}
+
+struct Foo<'a> {
+    x: &'a dyn SomeTrait,
+    y: &'a dyn SomeTrait,
+}
+
+impl<'a> Foo<'a> {
+    pub fn new<'b>(x: &'b dyn SomeTrait, y: &'b dyn SomeTrait) -> Foo<'b> { Foo { x: x, y: y } }
+}
+
+fn main() {
+    let r = Meow;
+    let s = Meow;
+    let q = Foo::new(&r as &dyn SomeTrait, &s as &dyn SomeTrait);
+}
diff --git a/src/test/ui/issues/issue-14865.rs b/src/test/ui/issues/issue-14865.rs
new file mode 100644
index 00000000000..56e78e78f18
--- /dev/null
+++ b/src/test/ui/issues/issue-14865.rs
@@ -0,0 +1,23 @@
+// run-pass
+#![allow(dead_code)]
+
+enum X {
+    Foo(usize),
+    Bar(bool)
+}
+
+fn main() {
+    let x = match X::Foo(42) {
+        X::Foo(..) => 1,
+        _ if true => 0,
+        X::Bar(..) => panic!("Oh dear")
+    };
+    assert_eq!(x, 1);
+
+    let x = match X::Foo(42) {
+        _ if true => 0,
+        X::Foo(..) => 1,
+        X::Bar(..) => panic!("Oh dear")
+    };
+    assert_eq!(x, 0);
+}
diff --git a/src/test/ui/issues/issue-14875.rs b/src/test/ui/issues/issue-14875.rs
new file mode 100644
index 00000000000..a2fd7962458
--- /dev/null
+++ b/src/test/ui/issues/issue-14875.rs
@@ -0,0 +1,35 @@
+// run-pass
+// ignore-wasm32-bare always compiled as panic=abort right now
+
+// Check that values are not leaked when a dtor panics (#14875)
+
+use std::panic::{self, UnwindSafe};
+
+struct SetInnerOnDrop<'a>(&'a mut bool);
+
+impl<'a> UnwindSafe for SetInnerOnDrop<'a> {}
+
+impl<'a> Drop for SetInnerOnDrop<'a> {
+    fn drop(&mut self) {
+        *self.0 = true;
+    }
+}
+
+struct PanicOnDrop;
+impl Drop for PanicOnDrop {
+    fn drop(&mut self) {
+        panic!("test panic");
+    }
+}
+
+fn main() {
+    let mut set_on_drop = false;
+    {
+        let set_inner_on_drop = SetInnerOnDrop(&mut set_on_drop);
+        let _ = panic::catch_unwind(|| {
+            let _set_inner_on_drop = set_inner_on_drop;
+            let _panic_on_drop = PanicOnDrop;
+        });
+    }
+    assert!(set_on_drop);
+}
diff --git a/src/test/ui/issues/issue-14919.rs b/src/test/ui/issues/issue-14919.rs
new file mode 100644
index 00000000000..94361543354
--- /dev/null
+++ b/src/test/ui/issues/issue-14919.rs
@@ -0,0 +1,55 @@
+// run-pass
+#![allow(unused_must_use)]
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+trait Matcher {
+    fn next_match(&mut self) -> Option<(usize, usize)>;
+}
+
+struct CharPredMatcher<'a, 'b> {
+    str: &'a str,
+    pred: Box<dyn FnMut(char) -> bool + 'b>,
+}
+
+impl<'a, 'b> Matcher for CharPredMatcher<'a, 'b> {
+    fn next_match(&mut self) -> Option<(usize, usize)> {
+        None
+    }
+}
+
+trait IntoMatcher<'a, T> {
+    fn into_matcher(self, _: &'a str) -> T;
+}
+
+impl<'a, 'b, F> IntoMatcher<'a, CharPredMatcher<'a, 'b>> for F where F: FnMut(char) -> bool + 'b {
+    fn into_matcher(self, s: &'a str) -> CharPredMatcher<'a, 'b> {
+        CharPredMatcher {
+            str: s,
+            pred: Box::new(self),
+        }
+    }
+}
+
+struct MatchIndices<M> {
+    matcher: M
+}
+
+impl<M: Matcher> Iterator for MatchIndices<M> {
+    type Item = (usize, usize);
+
+    fn next(&mut self) -> Option<(usize, usize)> {
+        self.matcher.next_match()
+    }
+}
+
+fn match_indices<'a, M, T: IntoMatcher<'a, M>>(s: &'a str, from: T) -> MatchIndices<M> {
+    let string_matcher = from.into_matcher(s);
+    MatchIndices { matcher: string_matcher }
+}
+
+fn main() {
+    let s = "abcbdef";
+    match_indices(s, |c: char| c == 'b')
+        .collect::<Vec<_>>();
+}
diff --git a/src/test/ui/issues/issue-14940.rs b/src/test/ui/issues/issue-14940.rs
new file mode 100644
index 00000000000..785ad6a2c49
--- /dev/null
+++ b/src/test/ui/issues/issue-14940.rs
@@ -0,0 +1,20 @@
+// run-pass
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+use std::env;
+use std::process::Command;
+use std::io::{self, Write};
+
+fn main() {
+    let mut args = env::args();
+    if args.len() > 1 {
+        let mut out = io::stdout();
+        out.write(&['a' as u8; 128 * 1024]).unwrap();
+    } else {
+        let out = Command::new(&args.next().unwrap()).arg("child").output();
+        let out = out.unwrap();
+        assert!(out.status.success());
+    }
+}
diff --git a/src/test/ui/issues/issue-14958.rs b/src/test/ui/issues/issue-14958.rs
new file mode 100644
index 00000000000..a12564ca9c0
--- /dev/null
+++ b/src/test/ui/issues/issue-14958.rs
@@ -0,0 +1,31 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(fn_traits, unboxed_closures)]
+
+trait Foo { fn dummy(&self) { }}
+
+struct Bar;
+
+impl<'a> std::ops::Fn<(&'a (dyn Foo+'a),)> for Bar {
+    extern "rust-call" fn call(&self, _: (&'a dyn Foo,)) {}
+}
+
+impl<'a> std::ops::FnMut<(&'a (dyn Foo+'a),)> for Bar {
+    extern "rust-call" fn call_mut(&mut self, a: (&'a dyn Foo,)) { self.call(a) }
+}
+
+impl<'a> std::ops::FnOnce<(&'a (dyn Foo+'a),)> for Bar {
+    type Output = ();
+    extern "rust-call" fn call_once(self, a: (&'a dyn Foo,)) { self.call(a) }
+}
+
+struct Baz;
+
+impl Foo for Baz {}
+
+fn main() {
+    let bar = Bar;
+    let baz = &Baz;
+    bar(baz);
+}
diff --git a/src/test/ui/issues/issue-15043.rs b/src/test/ui/issues/issue-15043.rs
new file mode 100644
index 00000000000..53748be8a02
--- /dev/null
+++ b/src/test/ui/issues/issue-15043.rs
@@ -0,0 +1,14 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![allow(warnings)]
+
+struct S<T>(T);
+
+static s1: S<S<usize>>=S(S(0));
+static s2: S<usize>=S(0);
+
+fn main() {
+    let foo: S<S<usize>>=S(S(0));
+    let foo: S<usize>=S(0);
+}
diff --git a/src/test/ui/issues/issue-15063.rs b/src/test/ui/issues/issue-15063.rs
new file mode 100644
index 00000000000..4082675129d
--- /dev/null
+++ b/src/test/ui/issues/issue-15063.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+enum Two { A, B}
+impl Drop for Two {
+    fn drop(&mut self) {
+        println!("Dropping!");
+    }
+}
+fn main() {
+    let k = Two::A;
+}
diff --git a/src/test/ui/issues/issue-15080.rs b/src/test/ui/issues/issue-15080.rs
new file mode 100644
index 00000000000..4558118a809
--- /dev/null
+++ b/src/test/ui/issues/issue-15080.rs
@@ -0,0 +1,23 @@
+// run-pass
+#![feature(slice_patterns)]
+
+fn main() {
+    let mut x: &[_] = &[1, 2, 3, 4];
+
+    let mut result = vec![];
+    loop {
+        x = match *x {
+            [1, n, 3, ref rest..] => {
+                result.push(n);
+                rest
+            }
+            [n, ref rest..] => {
+                result.push(n);
+                rest
+            }
+            [] =>
+                break
+        }
+    }
+    assert_eq!(result, [2, 4]);
+}
diff --git a/src/test/ui/issues/issue-15104.rs b/src/test/ui/issues/issue-15104.rs
new file mode 100644
index 00000000000..3a03a52c324
--- /dev/null
+++ b/src/test/ui/issues/issue-15104.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![feature(slice_patterns)]
+
+fn main() {
+    assert_eq!(count_members(&[1, 2, 3, 4]), 4);
+}
+
+fn count_members(v: &[usize]) -> usize {
+    match *v {
+        []         => 0,
+        [_]        => 1,
+        [_, ref xs..] => 1 + count_members(xs)
+    }
+}
diff --git a/src/test/ui/issues/issue-15155.rs b/src/test/ui/issues/issue-15155.rs
new file mode 100644
index 00000000000..7b137b4af56
--- /dev/null
+++ b/src/test/ui/issues/issue-15155.rs
@@ -0,0 +1,21 @@
+// run-pass
+trait TraitWithSend: Send {}
+trait IndirectTraitWithSend: TraitWithSend {}
+
+// Check struct instantiation (Box<TraitWithSend> will only have Send if TraitWithSend has Send)
+#[allow(dead_code)]
+struct Blah { x: Box<dyn TraitWithSend> }
+impl TraitWithSend for Blah {}
+
+// Struct instantiation 2-levels deep
+#[allow(dead_code)]
+struct IndirectBlah { x: Box<dyn IndirectTraitWithSend> }
+impl TraitWithSend for IndirectBlah {}
+impl IndirectTraitWithSend for IndirectBlah {}
+
+fn test_trait<T: Send + ?Sized>() { println!("got here!") }
+
+fn main() {
+    test_trait::<dyn TraitWithSend>();
+    test_trait::<dyn IndirectTraitWithSend>();
+}
diff --git a/src/test/ui/issues/issue-15189.rs b/src/test/ui/issues/issue-15189.rs
new file mode 100644
index 00000000000..a9c884bdcfd
--- /dev/null
+++ b/src/test/ui/issues/issue-15189.rs
@@ -0,0 +1,10 @@
+// run-pass
+macro_rules! third {
+    ($e:expr) => ({let x = 2; $e[x]})
+}
+
+fn main() {
+    let x = vec![10_usize,11_usize,12_usize,13_usize];
+    let t = third!(x);
+    assert_eq!(t,12_usize);
+}
diff --git a/src/test/ui/issues/issue-15221.rs b/src/test/ui/issues/issue-15221.rs
new file mode 100644
index 00000000000..4b8319a8304
--- /dev/null
+++ b/src/test/ui/issues/issue-15221.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(path_statements)]
+// pretty-expanded FIXME #23616
+
+macro_rules! inner {
+    ($e:pat ) => ($e)
+}
+
+macro_rules! outer {
+    ($e:pat ) => (inner!($e))
+}
+
+fn main() {
+    let outer!(g1) = 13;
+    g1;
+}
diff --git a/src/test/ui/issues/issue-15444.rs b/src/test/ui/issues/issue-15444.rs
new file mode 100644
index 00000000000..e94afee9634
--- /dev/null
+++ b/src/test/ui/issues/issue-15444.rs
@@ -0,0 +1,23 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+trait MyTrait {
+    fn foo(&self);
+}
+
+impl<A, B, C> MyTrait for fn(A, B) -> C {
+    fn foo(&self) {}
+}
+
+fn bar<T: MyTrait>(t: &T) {
+    t.foo()
+}
+
+fn thing(a: isize, b: isize) -> isize {
+    a + b
+}
+
+fn main() {
+    let thing: fn(isize, isize) -> isize = thing; // coerce to fn type
+    bar(&thing);
+}
diff --git a/src/test/ui/issues/issue-15487.rs b/src/test/ui/issues/issue-15487.rs
new file mode 100644
index 00000000000..98714cba0e4
--- /dev/null
+++ b/src/test/ui/issues/issue-15487.rs
@@ -0,0 +1,13 @@
+// run-pass
+#![allow(unused_attributes)]
+// ignore-windows
+// ignore-wasm32-bare no libs to link
+
+#![feature(link_args)]
+
+#[link_args="-lc  -lm"]
+#[link_args=" -lc"]
+#[link_args="-lc "]
+extern {}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-15523-big.rs b/src/test/ui/issues/issue-15523-big.rs
new file mode 100644
index 00000000000..05414f1db72
--- /dev/null
+++ b/src/test/ui/issues/issue-15523-big.rs
@@ -0,0 +1,39 @@
+// run-pass
+// Issue 15523: derive(PartialOrd) should use the provided
+// discriminant values for the derived ordering.
+//
+// This test is checking corner cases that arise when you have
+// 64-bit values in the variants.
+
+#[derive(PartialEq, PartialOrd)]
+#[repr(u64)]
+enum Eu64 {
+    Pos2 = 2,
+    PosMax = !0,
+    Pos1 = 1,
+}
+
+#[derive(PartialEq, PartialOrd)]
+#[repr(i64)]
+enum Ei64 {
+    Pos2 = 2,
+    Neg1 = -1,
+    NegMin = 1 << 63,
+    PosMax = !(1 << 63),
+    Pos1 = 1,
+}
+
+fn main() {
+    assert!(Eu64::Pos2 > Eu64::Pos1);
+    assert!(Eu64::Pos2 < Eu64::PosMax);
+    assert!(Eu64::Pos1 < Eu64::PosMax);
+
+
+    assert!(Ei64::Pos2 > Ei64::Pos1);
+    assert!(Ei64::Pos2 > Ei64::Neg1);
+    assert!(Ei64::Pos1 > Ei64::Neg1);
+    assert!(Ei64::Pos2 > Ei64::NegMin);
+    assert!(Ei64::Pos1 > Ei64::NegMin);
+    assert!(Ei64::Pos2 < Ei64::PosMax);
+    assert!(Ei64::Pos1 < Ei64::PosMax);
+}
diff --git a/src/test/ui/issues/issue-15523.rs b/src/test/ui/issues/issue-15523.rs
new file mode 100644
index 00000000000..220a34b9b0f
--- /dev/null
+++ b/src/test/ui/issues/issue-15523.rs
@@ -0,0 +1,42 @@
+// run-pass
+// Issue 15523: derive(PartialOrd) should use the provided
+// discriminant values for the derived ordering.
+//
+// This is checking the basic functionality.
+
+#[derive(PartialEq, PartialOrd)]
+enum E1 {
+    Pos2 = 2,
+    Neg1 = -1,
+    Pos1 = 1,
+}
+
+#[derive(PartialEq, PartialOrd)]
+#[repr(u8)]
+enum E2 {
+    Pos2 = 2,
+    PosMax = !0 as u8,
+    Pos1 = 1,
+}
+
+#[derive(PartialEq, PartialOrd)]
+#[repr(i8)]
+enum E3 {
+    Pos2 = 2,
+    Neg1 = -1_i8,
+    Pos1 = 1,
+}
+
+fn main() {
+    assert!(E1::Pos2 > E1::Pos1);
+    assert!(E1::Pos1 > E1::Neg1);
+    assert!(E1::Pos2 > E1::Neg1);
+
+    assert!(E2::Pos2 > E2::Pos1);
+    assert!(E2::Pos1 < E2::PosMax);
+    assert!(E2::Pos2 < E2::PosMax);
+
+    assert!(E3::Pos2 > E3::Pos1);
+    assert!(E3::Pos1 > E3::Neg1);
+    assert!(E3::Pos2 > E3::Neg1);
+}
diff --git a/src/test/ui/issues/issue-15562.rs b/src/test/ui/issues/issue-15562.rs
new file mode 100644
index 00000000000..b37ba81e291
--- /dev/null
+++ b/src/test/ui/issues/issue-15562.rs
@@ -0,0 +1,19 @@
+// run-pass
+// aux-build:issue-15562.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_15562 as i;
+
+pub fn main() {
+    unsafe {
+        transmute();
+        i::transmute();
+    }
+}
+
+// We declare this so we don't run into unresolved symbol errors
+// The above extern is NOT `extern "rust-intrinsic"` and thus
+// means it'll try to find a corresponding symbol to link to.
+#[no_mangle]
+pub extern fn transmute() {}
diff --git a/src/test/ui/issues/issue-15571.rs b/src/test/ui/issues/issue-15571.rs
new file mode 100644
index 00000000000..5381d65232f
--- /dev/null
+++ b/src/test/ui/issues/issue-15571.rs
@@ -0,0 +1,58 @@
+// run-pass
+#![feature(box_syntax)]
+
+fn match_on_local() {
+    let mut foo: Option<Box<_>> = Some(box 5);
+    match foo {
+        None => {},
+        Some(x) => {
+            foo = Some(x);
+        }
+    }
+    println!("'{}'", foo.unwrap());
+}
+
+fn match_on_arg(mut foo: Option<Box<i32>>) {
+    match foo {
+        None => {}
+        Some(x) => {
+            foo = Some(x);
+        }
+    }
+    println!("'{}'", foo.unwrap());
+}
+
+fn match_on_binding() {
+    match Some(Box::new(7)) {
+        mut foo => {
+            match foo {
+                None => {},
+                Some(x) => {
+                    foo = Some(x);
+                }
+            }
+            println!("'{}'", foo.unwrap());
+        }
+    }
+}
+
+fn match_on_upvar() {
+    let mut foo: Option<Box<_>> = Some(box 8);
+    let f = move|| {
+        match foo {
+            None => {},
+            Some(x) => {
+                foo = Some(x);
+            }
+        }
+        println!("'{}'", foo.unwrap());
+    };
+    f();
+}
+
+fn main() {
+    match_on_local();
+    match_on_arg(Some(box 6));
+    match_on_binding();
+    match_on_upvar();
+}
diff --git a/src/test/ui/issues/issue-15673.rs b/src/test/ui/issues/issue-15673.rs
new file mode 100644
index 00000000000..a8733d7f157
--- /dev/null
+++ b/src/test/ui/issues/issue-15673.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(stable_features)]
+
+#![feature(iter_arith)]
+
+fn main() {
+    let x: [u64; 3] = [1, 2, 3];
+    assert_eq!(6, (0..3).map(|i| x[i]).sum::<u64>());
+}
diff --git a/src/test/ui/issues/issue-15689-1.rs b/src/test/ui/issues/issue-15689-1.rs
new file mode 100644
index 00000000000..d143926b281
--- /dev/null
+++ b/src/test/ui/issues/issue-15689-1.rs
@@ -0,0 +1,10 @@
+// run-pass
+
+#[derive(PartialEq, Debug)]
+enum Test<'a> {
+    Slice(&'a isize)
+}
+
+fn main() {
+    assert_eq!(Test::Slice(&1), Test::Slice(&1))
+}
diff --git a/src/test/ui/issues/issue-15730.rs b/src/test/ui/issues/issue-15730.rs
new file mode 100644
index 00000000000..dacffd154fc
--- /dev/null
+++ b/src/test/ui/issues/issue-15730.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(unused_mut)]
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+fn main() {
+    let mut array = [1, 2, 3];
+    let pie_slice = &array[1..2];
+}
diff --git a/src/test/ui/issues/issue-15734.rs b/src/test/ui/issues/issue-15734.rs
new file mode 100644
index 00000000000..be582060601
--- /dev/null
+++ b/src/test/ui/issues/issue-15734.rs
@@ -0,0 +1,58 @@
+// run-pass
+// If `Index` used an associated type for its output, this test would
+// work more smoothly.
+
+use std::ops::Index;
+
+struct Mat<T> { data: Vec<T>, cols: usize, }
+
+impl<T> Mat<T> {
+    fn new(data: Vec<T>, cols: usize) -> Mat<T> {
+        Mat { data: data, cols: cols }
+    }
+    fn row<'a>(&'a self, row: usize) -> Row<&'a Mat<T>> {
+        Row { mat: self, row: row, }
+    }
+}
+
+impl<T> Index<(usize, usize)> for Mat<T> {
+    type Output = T;
+
+    fn index<'a>(&'a self, (row, col): (usize, usize)) -> &'a T {
+        &self.data[row * self.cols + col]
+    }
+}
+
+impl<'a, T> Index<(usize, usize)> for &'a Mat<T> {
+    type Output = T;
+
+    fn index<'b>(&'b self, index: (usize, usize)) -> &'b T {
+        (*self).index(index)
+    }
+}
+
+struct Row<M> { mat: M, row: usize, }
+
+impl<T, M: Index<(usize, usize), Output=T>> Index<usize> for Row<M> {
+    type Output = T;
+
+    fn index<'a>(&'a self, col: usize) -> &'a T {
+        &self.mat[(self.row, col)]
+    }
+}
+
+fn main() {
+    let m = Mat::new(vec![1, 2, 3, 4, 5, 6], 3);
+    let r = m.row(1);
+
+    assert_eq!(r.index(2), &6);
+    assert_eq!(r[2], 6);
+    assert_eq!(r[2], 6);
+    assert_eq!(6, r[2]);
+
+    let e = r[2];
+    assert_eq!(e, 6);
+
+    let e: usize = r[2];
+    assert_eq!(e, 6);
+}
diff --git a/src/test/ui/issues/issue-15763.rs b/src/test/ui/issues/issue-15763.rs
new file mode 100644
index 00000000000..9ceffff2e38
--- /dev/null
+++ b/src/test/ui/issues/issue-15763.rs
@@ -0,0 +1,89 @@
+// run-pass
+#![allow(unreachable_code)]
+#![feature(box_syntax)]
+
+#[derive(PartialEq, Debug)]
+struct Bar {
+    x: isize
+}
+impl Drop for Bar {
+    fn drop(&mut self) {
+        assert_eq!(self.x, 22);
+    }
+}
+
+#[derive(PartialEq, Debug)]
+struct Foo {
+    x: Bar,
+    a: isize
+}
+
+fn foo() -> Result<Foo, isize> {
+    return Ok(Foo {
+        x: Bar { x: 22 },
+        a: return Err(32)
+    });
+}
+
+fn baz() -> Result<Foo, isize> {
+    Ok(Foo {
+        x: Bar { x: 22 },
+        a: return Err(32)
+    })
+}
+
+// explicit immediate return
+fn aa() -> isize {
+    return 3;
+}
+
+// implicit immediate return
+fn bb() -> isize {
+    3
+}
+
+// implicit outptr return
+fn cc() -> Result<isize, isize> {
+    Ok(3)
+}
+
+// explicit outptr return
+fn dd() -> Result<isize, isize> {
+    return Ok(3);
+}
+
+trait A {
+    fn aaa(&self) -> isize {
+        3
+    }
+    fn bbb(&self) -> isize {
+        return 3;
+    }
+    fn ccc(&self) -> Result<isize, isize> {
+        Ok(3)
+    }
+    fn ddd(&self) -> Result<isize, isize> {
+        return Ok(3);
+    }
+}
+
+impl A for isize {}
+
+fn main() {
+    assert_eq!(foo(), Err(32));
+    assert_eq!(baz(), Err(32));
+
+    assert_eq!(aa(), 3);
+    assert_eq!(bb(), 3);
+    assert_eq!(cc().unwrap(), 3);
+    assert_eq!(dd().unwrap(), 3);
+
+    let i = box 32isize as Box<dyn A>;
+    assert_eq!(i.aaa(), 3);
+    let i = box 32isize as Box<dyn A>;
+    assert_eq!(i.bbb(), 3);
+    let i = box 32isize as Box<dyn A>;
+    assert_eq!(i.ccc().unwrap(), 3);
+    let i = box 32isize as Box<dyn A>;
+    assert_eq!(i.ddd().unwrap(), 3);
+}
diff --git a/src/test/ui/issues/issue-15774.rs b/src/test/ui/issues/issue-15774.rs
new file mode 100644
index 00000000000..ed2235758b9
--- /dev/null
+++ b/src/test/ui/issues/issue-15774.rs
@@ -0,0 +1,25 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![deny(warnings)]
+#![allow(unused_imports)]
+
+pub enum Foo { A }
+mod bar {
+    pub fn normal(x: ::Foo) {
+        use Foo::A;
+        match x {
+            A => {}
+        }
+    }
+    pub fn wrong(x: ::Foo) {
+        match x {
+            ::Foo::A => {}
+        }
+    }
+}
+
+pub fn main() {
+    bar::normal(Foo::A);
+    bar::wrong(Foo::A);
+}
diff --git a/src/test/ui/issues/issue-15793.rs b/src/test/ui/issues/issue-15793.rs
new file mode 100644
index 00000000000..769012b1ba7
--- /dev/null
+++ b/src/test/ui/issues/issue-15793.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(dead_code)]
+
+enum NestedEnum {
+    First,
+    Second,
+    Third
+}
+enum Enum {
+    Variant1(bool),
+    Variant2(NestedEnum)
+}
+
+#[inline(never)]
+fn foo(x: Enum) -> isize {
+    match x {
+        Enum::Variant1(true) => 1,
+        Enum::Variant1(false) => 2,
+        Enum::Variant2(NestedEnum::Second) => 3,
+        Enum::Variant2(NestedEnum::Third) => 4,
+        Enum::Variant2(NestedEnum::First) => 5
+    }
+}
+
+fn main() {
+    assert_eq!(foo(Enum::Variant2(NestedEnum::Third)), 4);
+}
diff --git a/src/test/ui/issues/issue-15858.rs b/src/test/ui/issues/issue-15858.rs
new file mode 100644
index 00000000000..41d2f13952a
--- /dev/null
+++ b/src/test/ui/issues/issue-15858.rs
@@ -0,0 +1,33 @@
+// run-pass
+static mut DROP_RAN: bool = false;
+
+trait Bar {
+    fn do_something(&mut self);
+}
+
+struct BarImpl;
+
+impl Bar for BarImpl {
+    fn do_something(&mut self) {}
+}
+
+
+struct Foo<B: Bar>(B);
+
+impl<B: Bar> Drop for Foo<B> {
+    fn drop(&mut self) {
+        unsafe {
+            DROP_RAN = true;
+        }
+    }
+}
+
+
+fn main() {
+    {
+       let _x: Foo<BarImpl> = Foo(BarImpl);
+    }
+    unsafe {
+        assert_eq!(DROP_RAN, true);
+    }
+}
diff --git a/src/test/ui/issues/issue-15881-model-lexer-dotdotdot.rs b/src/test/ui/issues/issue-15881-model-lexer-dotdotdot.rs
new file mode 100644
index 00000000000..dee7f25d7bb
--- /dev/null
+++ b/src/test/ui/issues/issue-15881-model-lexer-dotdotdot.rs
@@ -0,0 +1,38 @@
+// run-pass
+#![allow(illegal_floating_point_literal_pattern)] // FIXME #41620
+#![allow(ellipsis_inclusive_range_patterns)]
+
+// regression test for the model lexer handling the DOTDOTDOT syntax (#15877)
+
+
+pub fn main() {
+    match 5_usize {
+      1_usize...5_usize => {}
+      _ => panic!("should match range"),
+    }
+    match 5_usize {
+      6_usize...7_usize => panic!("shouldn't match range"),
+      _ => {}
+    }
+    match 5_usize {
+      1_usize => panic!("should match non-first range"),
+      2_usize...6_usize => {}
+      _ => panic!("math is broken")
+    }
+    match 'c' {
+      'a'...'z' => {}
+      _ => panic!("should support char ranges")
+    }
+    match -3_isize {
+      -7...5 => {}
+      _ => panic!("should match signed range")
+    }
+    match 3.0f64 {
+      1.0...5.0 => {}
+      _ => panic!("should match float range")
+    }
+    match -1.5f64 {
+      -3.6...3.6 => {}
+      _ => panic!("should match negative float range")
+    }
+}
diff --git a/src/test/ui/issues/issue-16151.rs b/src/test/ui/issues/issue-16151.rs
new file mode 100644
index 00000000000..48a14b2af7c
--- /dev/null
+++ b/src/test/ui/issues/issue-16151.rs
@@ -0,0 +1,29 @@
+// run-pass
+
+use std::mem;
+
+static mut DROP_COUNT: usize = 0;
+
+struct Fragment;
+
+impl Drop for Fragment {
+    fn drop(&mut self) {
+        unsafe {
+            DROP_COUNT += 1;
+        }
+    }
+}
+
+fn main() {
+    {
+        let mut fragments = vec![Fragment, Fragment, Fragment];
+        let _new_fragments: Vec<Fragment> = mem::replace(&mut fragments, vec![])
+            .into_iter()
+            .skip_while(|_fragment| {
+                true
+            }).collect();
+    }
+    unsafe {
+        assert_eq!(DROP_COUNT, 3);
+    }
+}
diff --git a/src/test/ui/issues/issue-16256.rs b/src/test/ui/issues/issue-16256.rs
new file mode 100644
index 00000000000..e566eede8d2
--- /dev/null
+++ b/src/test/ui/issues/issue-16256.rs
@@ -0,0 +1,7 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+fn main() {
+    let mut buf = Vec::new();
+    |c: u8| buf.push(c);
+}
diff --git a/src/test/ui/issues/issue-16272.rs b/src/test/ui/issues/issue-16272.rs
new file mode 100644
index 00000000000..3ba2483f430
--- /dev/null
+++ b/src/test/ui/issues/issue-16272.rs
@@ -0,0 +1,24 @@
+// run-pass
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+use std::process::Command;
+use std::env;
+
+fn main() {
+    let len = env::args().len();
+
+    if len == 1 {
+        test();
+    } else {
+        assert_eq!(len, 3);
+    }
+}
+
+fn test() {
+    let status = Command::new(&env::current_exe().unwrap())
+                         .arg("foo").arg("")
+                         .status().unwrap();
+    assert!(status.success());
+}
diff --git a/src/test/ui/issues/issue-16278.rs b/src/test/ui/issues/issue-16278.rs
new file mode 100644
index 00000000000..2f47b694ae9
--- /dev/null
+++ b/src/test/ui/issues/issue-16278.rs
@@ -0,0 +1,10 @@
+// run-pass
+// ignore-tidy-cr
+
+// this file has some special \r\n endings (use xxd to see them)
+
+fn main() {assert_eq!(b"", b"\

+                                   ");
+assert_eq!(b"\n", b"

+");
+}
diff --git a/src/test/ui/issues/issue-16441.rs b/src/test/ui/issues/issue-16441.rs
new file mode 100644
index 00000000000..bae3813f9da
--- /dev/null
+++ b/src/test/ui/issues/issue-16441.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+struct Empty;
+
+// This used to cause an ICE
+extern "C" fn ice(_a: Empty) {}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-16452.rs b/src/test/ui/issues/issue-16452.rs
new file mode 100644
index 00000000000..faf9edd3b26
--- /dev/null
+++ b/src/test/ui/issues/issue-16452.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+fn main() {
+    if true { return }
+    match () {
+        () => { static MAGIC: usize = 0; }
+    }
+}
diff --git a/src/test/ui/issues/issue-16492.rs b/src/test/ui/issues/issue-16492.rs
new file mode 100644
index 00000000000..7fa808237bf
--- /dev/null
+++ b/src/test/ui/issues/issue-16492.rs
@@ -0,0 +1,67 @@
+// run-pass
+#![allow(non_snake_case)]
+
+use std::rc::Rc;
+use std::cell::Cell;
+
+struct Field {
+    number: usize,
+    state: Rc<Cell<usize>>
+}
+
+impl Field {
+    fn new(number: usize, state: Rc<Cell<usize>>) -> Field {
+        Field {
+            number: number,
+            state: state
+        }
+    }
+}
+
+impl Drop for Field {
+    fn drop(&mut self) {
+        println!("Dropping field {}", self.number);
+        assert_eq!(self.state.get(), self.number);
+        self.state.set(self.state.get()+1);
+    }
+}
+
+struct NoDropImpl {
+    _one: Field,
+    _two: Field,
+    _three: Field
+}
+
+struct HasDropImpl {
+    _one: Field,
+    _two: Field,
+    _three: Field
+}
+
+impl Drop for HasDropImpl {
+    fn drop(&mut self) {
+        println!("HasDropImpl.drop()");
+        assert_eq!(self._one.state.get(), 0);
+        self._one.state.set(1);
+    }
+}
+
+pub fn main() {
+    let state = Rc::new(Cell::new(1));
+    let noImpl = NoDropImpl {
+        _one: Field::new(1, state.clone()),
+        _two: Field::new(2, state.clone()),
+        _three: Field::new(3, state.clone())
+    };
+    drop(noImpl);
+    assert_eq!(state.get(), 4);
+
+    state.set(0);
+    let hasImpl = HasDropImpl {
+        _one: Field::new(1, state.clone()),
+        _two: Field::new(2, state.clone()),
+        _three: Field::new(3, state.clone())
+    };
+    drop(hasImpl);
+    assert_eq!(state.get(), 4);
+}
diff --git a/src/test/ui/issues/issue-16530.rs b/src/test/ui/issues/issue-16530.rs
new file mode 100644
index 00000000000..22a6ef7fa09
--- /dev/null
+++ b/src/test/ui/issues/issue-16530.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(deprecated)]
+
+use std::hash::{SipHasher, Hasher, Hash};
+
+#[derive(Hash)]
+struct Empty;
+
+pub fn main() {
+    let mut s1 = SipHasher::new_with_keys(0, 0);
+    Empty.hash(&mut s1);
+    let mut s2 = SipHasher::new_with_keys(0, 0);
+    Empty.hash(&mut s2);
+    assert_eq!(s1.finish(), s2.finish());
+}
diff --git a/src/test/ui/issues/issue-16560.rs b/src/test/ui/issues/issue-16560.rs
new file mode 100644
index 00000000000..d5fffc7ef9b
--- /dev/null
+++ b/src/test/ui/issues/issue-16560.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(unused_variables)]
+// ignore-emscripten no threads support
+
+use std::thread;
+use std::mem;
+
+fn main() {
+    let y = 0u8;
+    let closure = move |x: u8| y + x;
+
+    // Check that both closures are capturing by value
+    assert_eq!(1, mem::size_of_val(&closure));
+
+    thread::spawn(move|| {
+        let ok = closure;
+    }).join().ok().unwrap();
+}
diff --git a/src/test/ui/issues/issue-16597-empty.rs b/src/test/ui/issues/issue-16597-empty.rs
new file mode 100644
index 00000000000..2bdd08575c4
--- /dev/null
+++ b/src/test/ui/issues/issue-16597-empty.rs
@@ -0,0 +1,5 @@
+// run-pass
+// compile-flags:--test
+
+// This verifies that the test generation doesn't crash when we have
+// no tests - for more information, see PR #16892.
diff --git a/src/test/ui/issues/issue-16597.rs b/src/test/ui/issues/issue-16597.rs
new file mode 100644
index 00000000000..35769bfc117
--- /dev/null
+++ b/src/test/ui/issues/issue-16597.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unused_imports)]
+// compile-flags:--test
+
+mod tests {
+    use super::*;
+
+    #[test]
+    pub fn test(){}
+}
diff --git a/src/test/ui/issues/issue-1660.rs b/src/test/ui/issues/issue-1660.rs
new file mode 100644
index 00000000000..aa60a8d8a96
--- /dev/null
+++ b/src/test/ui/issues/issue-1660.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![allow(non_upper_case_globals)]
+
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    static _x: isize = 1<<2;
+}
diff --git a/src/test/ui/issues/issue-16602-1.rs b/src/test/ui/issues/issue-16602-1.rs
new file mode 100644
index 00000000000..dd64ee75b34
--- /dev/null
+++ b/src/test/ui/issues/issue-16602-1.rs
@@ -0,0 +1,6 @@
+// run-pass
+fn main() {
+    let mut t = [1; 2];
+    t = [t[1] * 2, t[0] * 2];
+    assert_eq!(&t[..], &[2, 2]);
+}
diff --git a/src/test/ui/issues/issue-16602-2.rs b/src/test/ui/issues/issue-16602-2.rs
new file mode 100644
index 00000000000..6364630ffa9
--- /dev/null
+++ b/src/test/ui/issues/issue-16602-2.rs
@@ -0,0 +1,12 @@
+// run-pass
+struct A {
+    pub x: u32,
+    pub y: u32,
+}
+
+fn main() {
+    let mut a = A { x: 1, y: 1 };
+    a = A { x: a.y * 2, y: a.x * 2 };
+    assert_eq!(a.x, 2);
+    assert_eq!(a.y, 2);
+}
diff --git a/src/test/ui/issues/issue-16602-3.rs b/src/test/ui/issues/issue-16602-3.rs
new file mode 100644
index 00000000000..dbfeef053da
--- /dev/null
+++ b/src/test/ui/issues/issue-16602-3.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(unused_variables)]
+#![allow(unused_assignments)]
+#[derive(Debug)]
+enum Foo {
+    Bar(u32, u32),
+    Baz(&'static u32, &'static u32)
+}
+
+static NUM: u32 = 100;
+
+fn main () {
+    let mut b = Foo::Baz(&NUM, &NUM);
+    b = Foo::Bar(f(&b), g(&b));
+}
+
+static FNUM: u32 = 1;
+
+fn f (b: &Foo) -> u32 {
+    FNUM
+}
+
+static GNUM: u32 = 2;
+
+fn g (b: &Foo) -> u32 {
+    GNUM
+}
diff --git a/src/test/ui/issues/issue-16643.rs b/src/test/ui/issues/issue-16643.rs
new file mode 100644
index 00000000000..c74a554af2e
--- /dev/null
+++ b/src/test/ui/issues/issue-16643.rs
@@ -0,0 +1,10 @@
+// run-pass
+// aux-build:issue-16643.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_16643 as i;
+
+pub fn main() {
+    i::TreeBuilder { h: 3 }.process_token();
+}
diff --git a/src/test/ui/issues/issue-16648.rs b/src/test/ui/issues/issue-16648.rs
new file mode 100644
index 00000000000..539f015fa28
--- /dev/null
+++ b/src/test/ui/issues/issue-16648.rs
@@ -0,0 +1,11 @@
+// run-pass
+fn main() {
+    let x: (isize, &[isize]) = (2, &[1, 2]);
+    assert_eq!(match x {
+        (0, &[_, _]) => 0,
+        (1, _) => 1,
+        (2, &[_, _]) => 2,
+        (2, _) => 3,
+        _ => 4
+    }, 2);
+}
diff --git a/src/test/ui/issues/issue-16671.rs b/src/test/ui/issues/issue-16671.rs
new file mode 100644
index 00000000000..eff8e275bb5
--- /dev/null
+++ b/src/test/ui/issues/issue-16671.rs
@@ -0,0 +1,12 @@
+// run-pass
+
+#![deny(warnings)]
+
+fn foo<F: FnOnce()>(_f: F) { }
+
+fn main() {
+    let mut var = Vec::new();
+    foo(move|| {
+        var.push(1);
+    });
+}
diff --git a/src/test/ui/issues/issue-16739.rs b/src/test/ui/issues/issue-16739.rs
new file mode 100644
index 00000000000..54ad8fd076e
--- /dev/null
+++ b/src/test/ui/issues/issue-16739.rs
@@ -0,0 +1,50 @@
+// run-pass
+#![feature(box_syntax)]
+#![feature(unboxed_closures, fn_traits)]
+
+// Test that unboxing shim for calling rust-call ABI methods through a
+// trait box works and does not cause an ICE.
+
+struct Foo { foo: u32 }
+
+impl FnMut<()> for Foo {
+    extern "rust-call" fn call_mut(&mut self, _: ()) -> u32 { self.foo }
+}
+
+impl FnOnce<()> for Foo {
+    type Output = u32;
+    extern "rust-call" fn call_once(mut self, _: ()) -> u32 { self.call_mut(()) }
+}
+
+/////////////////////////////////////////////////////////////////////////
+
+impl FnMut<(u32,)> for Foo {
+    extern "rust-call" fn call_mut(&mut self, (x,): (u32,)) -> u32 { self.foo + x }
+}
+
+impl FnOnce<(u32,)> for Foo {
+    type Output = u32;
+    extern "rust-call" fn call_once(mut self, args: (u32,)) -> u32 { self.call_mut(args) }
+}
+
+/////////////////////////////////////////////////////////////////////////
+
+impl FnMut<(u32,u32)> for Foo {
+    extern "rust-call" fn call_mut(&mut self, (x, y): (u32, u32)) -> u32 { self.foo + x + y }
+}
+
+impl FnOnce<(u32,u32)> for Foo {
+    type Output = u32;
+    extern "rust-call" fn call_once(mut self, args: (u32,u32)) -> u32 { self.call_mut(args) }
+}
+
+fn main() {
+    let mut f = box Foo { foo: 42 } as Box<dyn FnMut() -> u32>;
+    assert_eq!(f.call_mut(()), 42);
+
+    let mut f = box Foo { foo: 40 } as Box<dyn FnMut(u32) -> u32>;
+    assert_eq!(f.call_mut((2,)), 42);
+
+    let mut f = box Foo { foo: 40 } as Box<dyn FnMut(u32, u32) -> u32>;
+    assert_eq!(f.call_mut((1, 1)), 42);
+}
diff --git a/src/test/ui/issues/issue-16745.rs b/src/test/ui/issues/issue-16745.rs
new file mode 100644
index 00000000000..e9137df0f1e
--- /dev/null
+++ b/src/test/ui/issues/issue-16745.rs
@@ -0,0 +1,11 @@
+// run-pass
+fn main() {
+    const X: u8 = 0;
+    let out: u8 = match 0u8 {
+        X => 99,
+        b'\t' => 1,
+        1u8 => 2,
+        _ => 3,
+    };
+    assert_eq!(out, 99);
+}
diff --git a/src/test/ui/issues/issue-16774.rs b/src/test/ui/issues/issue-16774.rs
new file mode 100644
index 00000000000..9e9b84034db
--- /dev/null
+++ b/src/test/ui/issues/issue-16774.rs
@@ -0,0 +1,46 @@
+// run-pass
+#![feature(box_syntax)]
+#![feature(box_patterns)]
+
+use std::ops::{Deref, DerefMut};
+
+struct X(Box<isize>);
+
+static mut DESTRUCTOR_RAN: bool = false;
+
+impl Drop for X {
+    fn drop(&mut self) {
+        unsafe {
+            assert!(!DESTRUCTOR_RAN);
+            DESTRUCTOR_RAN = true;
+        }
+    }
+}
+
+impl Deref for X {
+    type Target = isize;
+
+    fn deref(&self) -> &isize {
+        let &X(box ref x) = self;
+        x
+    }
+}
+
+impl DerefMut for X {
+    fn deref_mut(&mut self) -> &mut isize {
+        let &mut X(box ref mut x) = self;
+        x
+    }
+}
+
+fn main() {
+    {
+        let mut test = X(box 5);
+        {
+            let mut change = || { *test = 10 };
+            change();
+        }
+        assert_eq!(*test, 10);
+    }
+    assert!(unsafe { DESTRUCTOR_RAN });
+}
diff --git a/src/test/ui/issues/issue-16783.rs b/src/test/ui/issues/issue-16783.rs
new file mode 100644
index 00000000000..4af4031d278
--- /dev/null
+++ b/src/test/ui/issues/issue-16783.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    let x = [1, 2, 3];
+    let y = x;
+}
diff --git a/src/test/ui/issues/issue-16819.rs b/src/test/ui/issues/issue-16819.rs
new file mode 100644
index 00000000000..cc0200904e5
--- /dev/null
+++ b/src/test/ui/issues/issue-16819.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(unused_variables)]
+// `#[cfg]` on struct field permits empty unusable struct
+
+struct S {
+    #[cfg(untrue)]
+    a: int,
+}
+
+fn main() {
+    let s = S {};
+}
diff --git a/src/test/ui/issues/issue-1696.rs b/src/test/ui/issues/issue-1696.rs
new file mode 100644
index 00000000000..b5d77df3a18
--- /dev/null
+++ b/src/test/ui/issues/issue-1696.rs
@@ -0,0 +1,8 @@
+// run-pass
+use std::collections::HashMap;
+
+pub fn main() {
+    let mut m = HashMap::new();
+    m.insert(b"foo".to_vec(), b"bar".to_vec());
+    println!("{:?}", m);
+}
diff --git a/src/test/ui/issues/issue-1701.rs b/src/test/ui/issues/issue-1701.rs
new file mode 100644
index 00000000000..bae32a77765
--- /dev/null
+++ b/src/test/ui/issues/issue-1701.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+
+enum pattern { tabby, tortoiseshell, calico }
+enum breed { beagle, rottweiler, pug }
+type name = String;
+enum ear_kind { lop, upright }
+enum animal { cat(pattern), dog(breed), rabbit(name, ear_kind), tiger }
+
+fn noise(a: animal) -> Option<String> {
+    match a {
+      animal::cat(..)    => { Some("meow".to_string()) }
+      animal::dog(..)    => { Some("woof".to_string()) }
+      animal::rabbit(..) => { None }
+      animal::tiger  => { Some("roar".to_string()) }
+    }
+}
+
+pub fn main() {
+    assert_eq!(noise(animal::cat(pattern::tabby)), Some("meow".to_string()));
+    assert_eq!(noise(animal::dog(breed::pug)), Some("woof".to_string()));
+    assert_eq!(noise(animal::rabbit("Hilbert".to_string(), ear_kind::upright)), None);
+    assert_eq!(noise(animal::tiger), Some("roar".to_string()));
+}
diff --git a/src/test/ui/issues/issue-17068.rs b/src/test/ui/issues/issue-17068.rs
new file mode 100644
index 00000000000..fe2c1a34bb4
--- /dev/null
+++ b/src/test/ui/issues/issue-17068.rs
@@ -0,0 +1,12 @@
+// run-pass
+// Test that regionck creates the right region links in the pattern
+// binding of a for loop
+
+fn foo<'a>(v: &'a [usize]) -> &'a usize {
+    for &ref x in v { return x; }
+    unreachable!()
+}
+
+fn main() {
+    assert_eq!(foo(&[0]), &0);
+}
diff --git a/src/test/ui/issues/issue-17074.rs b/src/test/ui/issues/issue-17074.rs
new file mode 100644
index 00000000000..0ed81132ec6
--- /dev/null
+++ b/src/test/ui/issues/issue-17074.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+
+static X2: u64 = !0 as u16 as u64;
+static Y2: u64 = !0 as u32 as u64;
+const X: u64 = !0 as u16 as u64;
+const Y: u64 = !0 as u32 as u64;
+
+fn main() {
+    assert_eq!(match 1 {
+        X => unreachable!(),
+        Y => unreachable!(),
+        _ => 1
+    }, 1);
+}
diff --git a/src/test/ui/issues/issue-17170.rs b/src/test/ui/issues/issue-17170.rs
new file mode 100644
index 00000000000..8d70dacdc90
--- /dev/null
+++ b/src/test/ui/issues/issue-17170.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![feature(repr_simd)]
+
+#[repr(simd)]
+struct T(f64, f64, f64);
+
+static X: T = T(0.0, 0.0, 0.0);
+
+fn main() {
+    let _ = X;
+}
diff --git a/src/test/ui/issues/issue-17216.rs b/src/test/ui/issues/issue-17216.rs
new file mode 100644
index 00000000000..05baa1bffdd
--- /dev/null
+++ b/src/test/ui/issues/issue-17216.rs
@@ -0,0 +1,21 @@
+// run-pass
+#![allow(unused_variables)]
+struct Leak<'a> {
+    dropped: &'a mut bool
+}
+
+impl<'a> Drop for Leak<'a> {
+    fn drop(&mut self) {
+        *self.dropped = true;
+    }
+}
+
+fn main() {
+    let mut dropped = false;
+    {
+        let leak = Leak { dropped: &mut dropped };
+        for ((), leaked) in Some(((), leak)).into_iter() {}
+    }
+
+    assert!(dropped);
+}
diff --git a/src/test/ui/issues/issue-17233.rs b/src/test/ui/issues/issue-17233.rs
new file mode 100644
index 00000000000..54a12fdf8e8
--- /dev/null
+++ b/src/test/ui/issues/issue-17233.rs
@@ -0,0 +1,17 @@
+// run-pass
+
+const X1: &'static [u8] = &[b'1'];
+const X2: &'static [u8] = b"1";
+const X3: &'static [u8; 1] = &[b'1'];
+const X4: &'static [u8; 1] = b"1";
+
+static Y1: u8 = X1[0];
+static Y2: u8 = X2[0];
+static Y3: u8 = X3[0];
+static Y4: u8 = X4[0];
+
+fn main() {
+    assert_eq!(Y1, Y2);
+    assert_eq!(Y1, Y3);
+    assert_eq!(Y1, Y4);
+}
diff --git a/src/test/ui/issues/issue-17302.rs b/src/test/ui/issues/issue-17302.rs
new file mode 100644
index 00000000000..cf7a2f1b063
--- /dev/null
+++ b/src/test/ui/issues/issue-17302.rs
@@ -0,0 +1,26 @@
+// run-pass
+
+static mut DROPPED: [bool; 2] = [false, false];
+
+struct A(usize);
+struct Foo { _a: A, _b: isize }
+
+impl Drop for A {
+    fn drop(&mut self) {
+        let A(i) = *self;
+        unsafe { DROPPED[i] = true; }
+    }
+}
+
+fn main() {
+    {
+        Foo {
+            _a: A(0),
+            ..Foo { _a: A(1), _b: 2 }
+        };
+    }
+    unsafe {
+        assert!(DROPPED[0]);
+        assert!(DROPPED[1]);
+    }
+}
diff --git a/src/test/ui/issues/issue-17322.rs b/src/test/ui/issues/issue-17322.rs
new file mode 100644
index 00000000000..20a8d136124
--- /dev/null
+++ b/src/test/ui/issues/issue-17322.rs
@@ -0,0 +1,15 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+use std::io::{self, Write};
+
+fn f(wr: &mut dyn Write) {
+    wr.write_all(b"hello").ok().expect("failed");
+}
+
+fn main() {
+    let mut wr = box io::stdout() as Box<dyn Write>;
+    f(&mut wr);
+}
diff --git a/src/test/ui/issues/issue-17351.rs b/src/test/ui/issues/issue-17351.rs
new file mode 100644
index 00000000000..62f6bcf15e3
--- /dev/null
+++ b/src/test/ui/issues/issue-17351.rs
@@ -0,0 +1,10 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+trait Str { fn foo(&self) {} }
+impl Str for str {}
+impl<'a, S: ?Sized> Str for &'a S where S: Str {}
+
+fn main() {
+    let _: &dyn Str = &"x";
+}
diff --git a/src/test/ui/issues/issue-17361.rs b/src/test/ui/issues/issue-17361.rs
new file mode 100644
index 00000000000..e97fc3afd1c
--- /dev/null
+++ b/src/test/ui/issues/issue-17361.rs
@@ -0,0 +1,9 @@
+// run-pass
+// Test that astconv doesn't forget about mutability of &mut str
+
+// pretty-expanded FIXME #23616
+
+fn main() {
+    fn foo<T: ?Sized>(_: &mut T) {}
+    let _f: fn(&mut str) = foo;
+}
diff --git a/src/test/ui/issues/issue-17503.rs b/src/test/ui/issues/issue-17503.rs
new file mode 100644
index 00000000000..9a92c06e159
--- /dev/null
+++ b/src/test/ui/issues/issue-17503.rs
@@ -0,0 +1,10 @@
+// run-pass
+fn main() {
+    let s: &[isize] = &[0, 1, 2, 3, 4];
+    let ss: &&[isize] = &s;
+    let sss: &&&[isize] = &ss;
+
+    println!("{:?}", &s[..3]);
+    println!("{:?}", &ss[3..]);
+    println!("{:?}", &sss[2..4]);
+}
diff --git a/src/test/ui/issues/issue-17662.rs b/src/test/ui/issues/issue-17662.rs
new file mode 100644
index 00000000000..a2683808b52
--- /dev/null
+++ b/src/test/ui/issues/issue-17662.rs
@@ -0,0 +1,17 @@
+// run-pass
+// aux-build:issue-17662.rs
+
+
+extern crate issue_17662 as i;
+
+use std::marker;
+
+struct Bar<'a> { m: marker::PhantomData<&'a ()> }
+
+impl<'a> i::Foo<'a, usize> for Bar<'a> {
+    fn foo(&self) -> usize { 5 }
+}
+
+pub fn main() {
+    assert_eq!(i::foo(&Bar { m: marker::PhantomData }), 5);
+}
diff --git a/src/test/ui/issues/issue-17718-borrow-interior.rs b/src/test/ui/issues/issue-17718-borrow-interior.rs
new file mode 100644
index 00000000000..5861f218689
--- /dev/null
+++ b/src/test/ui/issues/issue-17718-borrow-interior.rs
@@ -0,0 +1,19 @@
+// run-pass
+#![allow(dead_code)]
+struct S { a: usize }
+
+static A: S = S { a: 3 };
+static B: &'static usize = &A.a;
+static C: &'static usize = &(A.a);
+
+static D: [usize; 1] = [1];
+static E: usize = D[0];
+static F: &'static usize = &D[0];
+
+fn main() {
+    assert_eq!(*B, A.a);
+    assert_eq!(*B, A.a);
+
+    assert_eq!(E, D[0]);
+    assert_eq!(*F, D[0]);
+}
diff --git a/src/test/ui/issues/issue-17718-parse-const.rs b/src/test/ui/issues/issue-17718-parse-const.rs
new file mode 100644
index 00000000000..d5a5f445d5b
--- /dev/null
+++ b/src/test/ui/issues/issue-17718-parse-const.rs
@@ -0,0 +1,7 @@
+// run-pass
+
+const FOO: usize = 3;
+
+fn main() {
+    assert_eq!(FOO, 3);
+}
diff --git a/src/test/ui/issues/issue-17718-static-unsafe-interior.rs b/src/test/ui/issues/issue-17718-static-unsafe-interior.rs
new file mode 100644
index 00000000000..65a8713ba05
--- /dev/null
+++ b/src/test/ui/issues/issue-17718-static-unsafe-interior.rs
@@ -0,0 +1,52 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_imports)]
+// pretty-expanded FIXME #23616
+
+use std::marker;
+use std::cell::UnsafeCell;
+
+struct MyUnsafePack<T>(UnsafeCell<T>);
+
+unsafe impl<T: Send> Sync for MyUnsafePack<T> {}
+
+struct MyUnsafe<T> {
+    value: MyUnsafePack<T>
+}
+
+impl<T> MyUnsafe<T> {
+    fn forbidden(&self) {}
+}
+
+unsafe impl<T: Send> Sync for MyUnsafe<T> {}
+
+enum UnsafeEnum<T> {
+    VariantSafe,
+    VariantUnsafe(UnsafeCell<T>)
+}
+
+unsafe impl<T: Send> Sync for UnsafeEnum<T> {}
+
+static STATIC1: UnsafeEnum<isize> = UnsafeEnum::VariantSafe;
+
+static STATIC2: MyUnsafePack<isize> = MyUnsafePack(UnsafeCell::new(1));
+const CONST: MyUnsafePack<isize> = MyUnsafePack(UnsafeCell::new(1));
+static STATIC3: MyUnsafe<isize> = MyUnsafe{value: CONST};
+
+static STATIC4: &'static MyUnsafePack<isize> = &STATIC2;
+
+struct Wrap<T> {
+    value: T
+}
+
+unsafe impl<T: Send> Sync for Wrap<T> {}
+
+static UNSAFE: MyUnsafePack<isize> = MyUnsafePack(UnsafeCell::new(2));
+static WRAPPED_UNSAFE: Wrap<&'static MyUnsafePack<isize>> = Wrap { value: &UNSAFE };
+
+fn main() {
+    let a = &STATIC1;
+
+    STATIC3.forbidden()
+}
diff --git a/src/test/ui/issues/issue-17718.rs b/src/test/ui/issues/issue-17718.rs
new file mode 100644
index 00000000000..c6341d80844
--- /dev/null
+++ b/src/test/ui/issues/issue-17718.rs
@@ -0,0 +1,75 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-17718-aux.rs
+
+extern crate issue_17718_aux as other;
+
+use std::sync::atomic::{AtomicUsize, Ordering};
+
+const C1: usize = 1;
+const C2: AtomicUsize = AtomicUsize::new(0);
+const C3: fn() = foo;
+const C4: usize = C1 * C1 + C1 / C1;
+const C5: &'static usize = &C4;
+const C6: usize = {
+    const C: usize = 3;
+    C
+};
+
+static S1: usize = 3;
+static S2: AtomicUsize = AtomicUsize::new(0);
+
+mod test {
+    static A: usize = 4;
+    static B: &'static usize = &A;
+    static C: &'static usize = &(A);
+}
+
+fn foo() {}
+
+fn main() {
+    assert_eq!(C1, 1);
+    assert_eq!(C3(), ());
+    assert_eq!(C2.fetch_add(1, Ordering::SeqCst), 0);
+    assert_eq!(C2.fetch_add(1, Ordering::SeqCst), 0);
+    assert_eq!(C4, 2);
+    assert_eq!(*C5, 2);
+    assert_eq!(C6, 3);
+    assert_eq!(S1, 3);
+    assert_eq!(S2.fetch_add(1, Ordering::SeqCst), 0);
+    assert_eq!(S2.fetch_add(1, Ordering::SeqCst), 1);
+
+    match 1 {
+        C1 => {}
+        _ => unreachable!(),
+    }
+
+    let _a = C1;
+    let _a = C2;
+    let _a = C3;
+    let _a = C4;
+    let _a = C5;
+    let _a = C6;
+    let _a = S1;
+
+    assert_eq!(other::C1, 1);
+    assert_eq!(other::C3(), ());
+    assert_eq!(other::C2.fetch_add(1, Ordering::SeqCst), 0);
+    assert_eq!(other::C2.fetch_add(1, Ordering::SeqCst), 0);
+    assert_eq!(other::C4, 2);
+    assert_eq!(*other::C5, 2);
+    assert_eq!(other::S1, 3);
+    assert_eq!(other::S2.fetch_add(1, Ordering::SeqCst), 0);
+    assert_eq!(other::S2.fetch_add(1, Ordering::SeqCst), 1);
+
+    let _a = other::C1;
+    let _a = other::C2;
+    let _a = other::C3;
+    let _a = other::C4;
+    let _a = other::C5;
+
+    match 1 {
+        other::C1 => {}
+        _ => unreachable!(),
+    }
+}
diff --git a/src/test/ui/issues/issue-17734.rs b/src/test/ui/issues/issue-17734.rs
new file mode 100644
index 00000000000..ba8d6c21ca8
--- /dev/null
+++ b/src/test/ui/issues/issue-17734.rs
@@ -0,0 +1,15 @@
+// run-pass
+// Test that generating drop glue for Box<str> doesn't ICE
+
+
+fn f(s: Box<str>) -> Box<str> {
+    s
+}
+
+fn main() {
+    // There is currently no safe way to construct a `Box<str>`, so improvise
+    let box_arr: Box<[u8]> = Box::new(['h' as u8, 'e' as u8, 'l' as u8, 'l' as u8, 'o' as u8]);
+    let box_str: Box<str> = unsafe { std::mem::transmute(box_arr) };
+    assert_eq!(&*box_str, "hello");
+    f(box_str);
+}
diff --git a/src/test/ui/issues/issue-17756.rs b/src/test/ui/issues/issue-17756.rs
new file mode 100644
index 00000000000..1835b177ff3
--- /dev/null
+++ b/src/test/ui/issues/issue-17756.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![allow(unused_variables)]
+#![allow(non_upper_case_globals)]
+
+const count : usize = 2 as usize;
+fn main() {
+    let larger : [usize; count*2];
+}
diff --git a/src/test/ui/issues/issue-17771.rs b/src/test/ui/issues/issue-17771.rs
new file mode 100644
index 00000000000..2f6464668c2
--- /dev/null
+++ b/src/test/ui/issues/issue-17771.rs
@@ -0,0 +1,21 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+trait Aaa { fn dummy(&self) { } }
+
+impl<'a> Aaa for &'a mut (dyn Aaa + 'a) {}
+
+struct Bar<'a> {
+    writer: &'a mut (dyn Aaa + 'a),
+}
+
+fn baz(_: &mut dyn Aaa) {
+}
+
+fn foo<'a>(mut bar: Bar<'a>) {
+    baz(&mut bar.writer);
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-17816.rs b/src/test/ui/issues/issue-17816.rs
new file mode 100644
index 00000000000..7ca47d50335
--- /dev/null
+++ b/src/test/ui/issues/issue-17816.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unused_variables)]
+use std::marker::PhantomData;
+
+fn main() {
+    struct Symbol<'a, F: Fn(Vec<&'a str>) -> &'a str> { function: F, marker: PhantomData<&'a ()> }
+    let f = |x: Vec<&str>| -> &str { "foobar" };
+    let sym = Symbol { function: f, marker: PhantomData };
+    (sym.function)(vec![]);
+}
diff --git a/src/test/ui/issues/issue-17877.rs b/src/test/ui/issues/issue-17877.rs
new file mode 100644
index 00000000000..af22b1ad8f0
--- /dev/null
+++ b/src/test/ui/issues/issue-17877.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![feature(slice_patterns)]
+
+fn main() {
+    assert_eq!(match [0u8; 1024] {
+        _ => 42_usize,
+    }, 42_usize);
+
+    assert_eq!(match [0u8; 1024] {
+        [1, _..] => 0_usize,
+        [0, _..] => 1_usize,
+        _ => 2_usize
+    }, 1_usize);
+}
diff --git a/src/test/ui/issues/issue-17897.rs b/src/test/ui/issues/issue-17897.rs
new file mode 100644
index 00000000000..6873c7ccb7f
--- /dev/null
+++ b/src/test/ui/issues/issue-17897.rs
@@ -0,0 +1,8 @@
+// run-pass
+fn action(mut cb: Box<dyn FnMut(usize) -> usize>) -> usize {
+    cb(1)
+}
+
+pub fn main() {
+    println!("num: {}", action(Box::new(move |u| u)));
+}
diff --git a/src/test/ui/issues/issue-18060.rs b/src/test/ui/issues/issue-18060.rs
new file mode 100644
index 00000000000..b5f3d0f74bc
--- /dev/null
+++ b/src/test/ui/issues/issue-18060.rs
@@ -0,0 +1,8 @@
+// run-pass
+// Regression test for #18060: match arms were matching in the wrong order.
+
+fn main() {
+    assert_eq!(2, match (1, 3) { (0, 2..=5) => 1, (1, 3) => 2, (_, 2..=5) => 3, (_, _) => 4 });
+    assert_eq!(2, match (1, 3) {                  (1, 3) => 2, (_, 2..=5) => 3, (_, _) => 4 });
+    assert_eq!(2, match (1, 7) { (0, 2..=5) => 1, (1, 7) => 2, (_, 2..=5) => 3, (_, _) => 4 });
+}
diff --git a/src/test/ui/issues/issue-18075.rs b/src/test/ui/issues/issue-18075.rs
new file mode 100644
index 00000000000..ee6845c1278
--- /dev/null
+++ b/src/test/ui/issues/issue-18075.rs
@@ -0,0 +1,7 @@
+// run-pass
+// exec-env:RUSTC_LOG=rustc::middle=debug
+
+fn main() {
+    let b = 1isize;
+    println!("{}", b);
+}
diff --git a/src/test/ui/issues/issue-18110.rs b/src/test/ui/issues/issue-18110.rs
new file mode 100644
index 00000000000..41c29e77da5
--- /dev/null
+++ b/src/test/ui/issues/issue-18110.rs
@@ -0,0 +1,7 @@
+// run-pass
+#![allow(unreachable_code)]
+// pretty-expanded FIXME #23616
+
+fn main() {
+    ({return},);
+}
diff --git a/src/test/ui/issues/issue-18173.rs b/src/test/ui/issues/issue-18173.rs
new file mode 100644
index 00000000000..11468040ee5
--- /dev/null
+++ b/src/test/ui/issues/issue-18173.rs
@@ -0,0 +1,12 @@
+// run-pass
+trait Foo {
+    type T;
+}
+
+// should be able to use a trait with an associated type without specifying it as an argument
+trait Bar<F: Foo> {
+    fn bar(foo: &F);
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-18232.rs b/src/test/ui/issues/issue-18232.rs
new file mode 100644
index 00000000000..7e6f6ef0f39
--- /dev/null
+++ b/src/test/ui/issues/issue-18232.rs
@@ -0,0 +1,22 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+struct Cursor<'a>(::std::marker::PhantomData<&'a ()>);
+
+trait CursorNavigator {
+    fn init_cursor<'a, 'b:'a>(&'a self, cursor: &mut Cursor<'b>) -> bool;
+}
+
+struct SimpleNavigator;
+
+impl CursorNavigator for SimpleNavigator {
+    fn init_cursor<'a, 'b: 'a>(&'a self, _cursor: &mut Cursor<'b>) -> bool {
+        false
+    }
+}
+
+fn main() {
+    let mut c = Cursor(::std::marker::PhantomData);
+    let n = SimpleNavigator;
+    n.init_cursor(&mut c);
+}
diff --git a/src/test/ui/issues/issue-18352.rs b/src/test/ui/issues/issue-18352.rs
new file mode 100644
index 00000000000..5d93ed0646c
--- /dev/null
+++ b/src/test/ui/issues/issue-18352.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+const X: &'static str = "12345";
+
+fn test(s: String) -> bool {
+    match &*s {
+        X => true,
+        _ => false
+    }
+}
+
+fn main() {
+    assert!(test("12345".to_string()));
+}
diff --git a/src/test/ui/issues/issue-18353.rs b/src/test/ui/issues/issue-18353.rs
new file mode 100644
index 00000000000..3d15c9980c3
--- /dev/null
+++ b/src/test/ui/issues/issue-18353.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+// Test that wrapping an unsized struct in an enum which gets optimised does
+// not ICE.
+
+// pretty-expanded FIXME #23616
+
+struct Str {
+    f: [u8]
+}
+
+fn main() {
+    let str: Option<&Str> = None;
+    let _ = str.is_some();
+}
diff --git a/src/test/ui/issues/issue-18412.rs b/src/test/ui/issues/issue-18412.rs
new file mode 100644
index 00000000000..fe1cfb3dffa
--- /dev/null
+++ b/src/test/ui/issues/issue-18412.rs
@@ -0,0 +1,26 @@
+// run-pass
+// Test that non-static methods can be assigned to local variables as
+// function pointers.
+
+
+trait Foo {
+    fn foo(&self) -> usize;
+}
+
+struct A(usize);
+
+impl A {
+    fn bar(&self) -> usize { self.0 }
+}
+
+impl Foo for A {
+    fn foo(&self) -> usize { self.bar() }
+}
+
+fn main() {
+    let f = A::bar;
+    let g = Foo::foo;
+    let a = A(42);
+
+    assert_eq!(f(&a), g(&a));
+}
diff --git a/src/test/ui/issues/issue-18425.rs b/src/test/ui/issues/issue-18425.rs
new file mode 100644
index 00000000000..354c14a756a
--- /dev/null
+++ b/src/test/ui/issues/issue-18425.rs
@@ -0,0 +1,9 @@
+// run-pass
+// Check that codegen doesn't ICE when codegenning an array repeat
+// expression with a count of 1 and a non-Copy element type.
+
+// pretty-expanded FIXME #23616
+
+fn main() {
+    let _ = [Box::new(1_usize); 1];
+}
diff --git a/src/test/ui/issues/issue-18464.rs b/src/test/ui/issues/issue-18464.rs
new file mode 100644
index 00000000000..14d2d0a6c8d
--- /dev/null
+++ b/src/test/ui/issues/issue-18464.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![deny(dead_code)]
+
+const LOW_RANGE: char = '0';
+const HIGH_RANGE: char = '9';
+
+fn main() {
+    match '5' {
+        LOW_RANGE..=HIGH_RANGE => (),
+        _ => ()
+    };
+}
diff --git a/src/test/ui/issues/issue-18501.rs b/src/test/ui/issues/issue-18501.rs
new file mode 100644
index 00000000000..0ca23074c55
--- /dev/null
+++ b/src/test/ui/issues/issue-18501.rs
@@ -0,0 +1,13 @@
+// run-pass
+// Test that we don't ICE when inlining a function from another
+// crate that uses a trait method as a value due to incorrectly
+// translating the def ID of the trait during AST decoding.
+
+// aux-build:issue-18501.rs
+// pretty-expanded FIXME #23616
+
+extern crate issue_18501 as issue;
+
+fn main() {
+    issue::pass_method();
+}
diff --git a/src/test/ui/issues/issue-18514.rs b/src/test/ui/issues/issue-18514.rs
new file mode 100644
index 00000000000..48e7f07418f
--- /dev/null
+++ b/src/test/ui/issues/issue-18514.rs
@@ -0,0 +1,16 @@
+// run-pass
+// Test that we don't ICE when codegenning a generic impl method from
+// an extern crate that contains a match expression on a local
+// variable place where one of the match case bodies contains an
+// expression that autoderefs through an overloaded generic deref
+// impl.
+
+// aux-build:issue-18514.rs
+
+extern crate issue_18514 as ice;
+use ice::{Tr, St};
+
+fn main() {
+    let st: St<()> = St(vec![]);
+    st.tr();
+}
diff --git a/src/test/ui/issues/issue-18539.rs b/src/test/ui/issues/issue-18539.rs
new file mode 100644
index 00000000000..745df26e320
--- /dev/null
+++ b/src/test/ui/issues/issue-18539.rs
@@ -0,0 +1,16 @@
+// run-pass
+// Test that coercing bare fn's that return a zero sized type to
+// a closure doesn't cause an LLVM ERROR
+
+// pretty-expanded FIXME #23616
+
+struct Foo;
+
+fn uint_to_foo(_: usize) -> Foo {
+    Foo
+}
+
+#[allow(unused_must_use)]
+fn main() {
+    (0..10).map(uint_to_foo);
+}
diff --git a/src/test/ui/issues/issue-18652.rs b/src/test/ui/issues/issue-18652.rs
new file mode 100644
index 00000000000..59aa0156842
--- /dev/null
+++ b/src/test/ui/issues/issue-18652.rs
@@ -0,0 +1,10 @@
+// run-pass
+// Tests multiple free variables being passed by value into an unboxed
+// once closure as an optimization by codegen.  This used to hit an
+// incorrect assert.
+
+fn main() {
+    let x = 2u8;
+    let y = 3u8;
+    assert_eq!((move || x + y)(), 5);
+}
diff --git a/src/test/ui/issues/issue-18655.rs b/src/test/ui/issues/issue-18655.rs
new file mode 100644
index 00000000000..3d18542acdc
--- /dev/null
+++ b/src/test/ui/issues/issue-18655.rs
@@ -0,0 +1,22 @@
+// run-pass
+trait Factory {
+    type Product;
+    fn create(&self) -> <Self as Factory>::Product;
+}
+
+impl Factory for f64 {
+    type Product = f64;
+    fn create(&self) -> f64 { *self * *self }
+}
+
+impl<A: Factory, B: Factory> Factory for (A, B) {
+    type Product = (<A as Factory>::Product, <B as Factory>::Product);
+    fn create(&self) -> (<A as Factory>::Product, <B as Factory>::Product) {
+        let (ref a, ref b) = *self;
+        (a.create(), b.create())
+    }
+}
+
+fn main() {
+    assert_eq!((16., 25.), (4., 5.).create());
+}
diff --git a/src/test/ui/issues/issue-18661.rs b/src/test/ui/issues/issue-18661.rs
new file mode 100644
index 00000000000..e2427243235
--- /dev/null
+++ b/src/test/ui/issues/issue-18661.rs
@@ -0,0 +1,19 @@
+// run-pass
+// Test that param substitutions from the correct environment are
+// used when codegenning unboxed closure calls.
+
+// pretty-expanded FIXME #23616
+
+pub fn inside<F: Fn()>(c: F) {
+    c();
+}
+
+// Use different number of type parameters and closure type to trigger
+// an obvious ICE when param environments are mixed up
+pub fn outside<A,B>() {
+    inside(|| {});
+}
+
+fn main() {
+    outside::<(),()>();
+}
diff --git a/src/test/ui/issues/issue-18685.rs b/src/test/ui/issues/issue-18685.rs
new file mode 100644
index 00000000000..bfe24b663f6
--- /dev/null
+++ b/src/test/ui/issues/issue-18685.rs
@@ -0,0 +1,21 @@
+// run-pass
+// Test that the self param space is not used in a conflicting
+// manner by unboxed closures within a default method on a trait
+
+// pretty-expanded FIXME #23616
+
+trait Tr {
+    fn foo(&self);
+
+    fn bar(&self) {
+        (|| { self.foo() })()
+    }
+}
+
+impl Tr for () {
+    fn foo(&self) {}
+}
+
+fn main() {
+    ().bar();
+}
diff --git a/src/test/ui/issues/issue-18711.rs b/src/test/ui/issues/issue-18711.rs
new file mode 100644
index 00000000000..43584187752
--- /dev/null
+++ b/src/test/ui/issues/issue-18711.rs
@@ -0,0 +1,12 @@
+// run-pass
+// Test that we don't panic on a RefCell borrow conflict in certain
+// code paths involving unboxed closures.
+
+// pretty-expanded FIXME #23616
+
+// aux-build:issue-18711.rs
+extern crate issue_18711 as issue;
+
+fn main() {
+    (|| issue::inner(()))();
+}
diff --git a/src/test/ui/issues/issue-18767.rs b/src/test/ui/issues/issue-18767.rs
new file mode 100644
index 00000000000..2a5721b7295
--- /dev/null
+++ b/src/test/ui/issues/issue-18767.rs
@@ -0,0 +1,10 @@
+// run-pass
+// Test that regionck uses the right memcat for patterns in for loops
+// and doesn't ICE.
+
+
+fn main() {
+    for &&x in Some(&0_usize).iter() {
+        assert_eq!(x, 0)
+    }
+}
diff --git a/src/test/ui/issues/issue-18804/auxiliary/lib.rs b/src/test/ui/issues/issue-18804/auxiliary/lib.rs
new file mode 100644
index 00000000000..ae27dd520e9
--- /dev/null
+++ b/src/test/ui/issues/issue-18804/auxiliary/lib.rs
@@ -0,0 +1,10 @@
+#![crate_type = "rlib"]
+#![feature(linkage)]
+
+pub fn foo<T>() -> *const() {
+    extern {
+        #[linkage = "extern_weak"]
+        static FOO: *const();
+    }
+    unsafe { FOO }
+}
diff --git a/src/test/ui/issues/issue-18804/main.rs b/src/test/ui/issues/issue-18804/main.rs
new file mode 100644
index 00000000000..c36048ea545
--- /dev/null
+++ b/src/test/ui/issues/issue-18804/main.rs
@@ -0,0 +1,19 @@
+// run-pass
+// Test for issue #18804, #[linkage] does not propagate through generic
+// functions. Failure results in a linker error.
+
+// ignore-asmjs no weak symbol support
+// ignore-emscripten no weak symbol support
+// ignore-windows no extern_weak linkage
+// ignore-macos no extern_weak linkage
+
+// aux-build:lib.rs
+
+// rust-lang/rust#56772: nikic says we need this to be proper test.
+// compile-flags: -C no-prepopulate-passes -C passes=name-anon-globals
+
+extern crate lib;
+
+fn main() {
+    lib::foo::<i32>();
+}
diff --git a/src/test/ui/issues/issue-18845.rs b/src/test/ui/issues/issue-18845.rs
new file mode 100644
index 00000000000..83fab4b5e8f
--- /dev/null
+++ b/src/test/ui/issues/issue-18845.rs
@@ -0,0 +1,16 @@
+// run-pass
+// This used to generate invalid IR in that even if we took the
+// `false` branch we'd still try to free the Box from the other
+// arm. This was due to treating `*Box::new(9)` as an rvalue datum
+// instead of as a place.
+
+fn test(foo: bool) -> u8 {
+    match foo {
+        true => *Box::new(9),
+        false => 0
+    }
+}
+
+fn main() {
+    assert_eq!(9, test(true));
+}
diff --git a/src/test/ui/issues/issue-18859.rs b/src/test/ui/issues/issue-18859.rs
new file mode 100644
index 00000000000..c4575bce925
--- /dev/null
+++ b/src/test/ui/issues/issue-18859.rs
@@ -0,0 +1,16 @@
+// run-pass
+
+mod foo {
+    pub mod bar {
+        pub mod baz {
+            pub fn name() -> &'static str {
+                module_path!()
+            }
+        }
+    }
+}
+
+fn main() {
+    assert_eq!(module_path!(), "issue_18859");
+    assert_eq!(foo::bar::baz::name(), "issue_18859::foo::bar::baz");
+}
diff --git a/src/test/ui/issues/issue-18913.rs b/src/test/ui/issues/issue-18913.rs
new file mode 100644
index 00000000000..27fae6d7757
--- /dev/null
+++ b/src/test/ui/issues/issue-18913.rs
@@ -0,0 +1,9 @@
+// run-pass
+// aux-build:issue-18913-1.rs
+// aux-build:issue-18913-2.rs
+
+extern crate foo;
+
+fn main() {
+    assert_eq!(foo::foo(), 1);
+}
diff --git a/src/test/ui/issues/issue-18937-1.rs b/src/test/ui/issues/issue-18937-1.rs
new file mode 100644
index 00000000000..57e56d832c6
--- /dev/null
+++ b/src/test/ui/issues/issue-18937-1.rs
@@ -0,0 +1,21 @@
+// run-pass
+// Test that we are able to type-check this example. In particular,
+// knowing that `T: 'a` allows us to deduce that `[U]: 'a` (because
+// when `T=[U]` it implies that `U: 'a`).
+//
+// Regr. test for live code we found in the wild when fixing #18937.
+
+pub trait Leak<T : ?Sized> {
+    fn leak<'a>(self) -> &'a T where T: 'a;
+}
+
+impl<U> Leak<[U]> for Vec<U> {
+    fn leak<'a>(mut self) -> &'a [U] where [U]: 'a {
+        let r: *mut [U] = &mut self[..];
+        std::mem::forget(self);
+        unsafe { &mut *r }
+    }
+}
+fn main() {
+    println!("Hello, world!");
+}
diff --git a/src/test/ui/issues/issue-18952.rs b/src/test/ui/issues/issue-18952.rs
new file mode 100644
index 00000000000..56378b59e36
--- /dev/null
+++ b/src/test/ui/issues/issue-18952.rs
@@ -0,0 +1,56 @@
+// This issue tests fn_traits overloading on arity.
+// run-pass
+
+#![feature(fn_traits)]
+#![feature(unboxed_closures)]
+
+struct Foo;
+
+impl Fn<(isize, isize)> for Foo {
+    extern "rust-call" fn call(&self, args: (isize, isize)) -> Self::Output {
+        println!("{:?}", args);
+        (args.0 + 1, args.1 + 1)
+    }
+}
+
+impl FnMut<(isize, isize)> for Foo {
+    extern "rust-call" fn call_mut(&mut self, args: (isize, isize)) -> Self::Output {
+        println!("{:?}", args);
+        (args.0 + 1, args.1 + 1)
+    }
+}
+
+impl FnOnce<(isize, isize)> for Foo {
+    type Output = (isize, isize);
+    extern "rust-call" fn call_once(self, args: (isize, isize)) -> Self::Output {
+        println!("{:?}", args);
+        (args.0 + 1, args.1 + 1)
+    }
+}
+
+impl Fn<(isize, isize, isize)> for Foo {
+    extern "rust-call" fn call(&self, args: (isize, isize, isize)) -> Self::Output {
+        println!("{:?}", args);
+        (args.0 + 3, args.1 + 3, args.2 + 3)
+    }
+}
+
+impl FnMut<(isize, isize, isize)> for Foo {
+    extern "rust-call" fn call_mut(&mut self, args: (isize, isize, isize)) -> Self::Output {
+        println!("{:?}", args);
+        (args.0 + 3, args.1 + 3, args.2 + 3)
+    }
+}
+impl FnOnce<(isize, isize, isize)> for Foo {
+    type Output = (isize, isize, isize);
+    extern "rust-call" fn call_once(self, args: (isize, isize, isize)) -> Self::Output {
+        println!("{:?}", args);
+        (args.0 + 3, args.1 + 3, args.2 + 3)
+    }
+}
+
+fn main() {
+    let foo = Foo;
+    assert_eq!(foo(1, 1), (2, 2));
+    assert_eq!(foo(1, 1, 1), (4, 4, 4));
+}
diff --git a/src/test/ui/issues/issue-19001.rs b/src/test/ui/issues/issue-19001.rs
new file mode 100644
index 00000000000..76c380c2fc9
--- /dev/null
+++ b/src/test/ui/issues/issue-19001.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+// check that we handle recursive arrays correctly in `type_of`
+
+struct Loopy {
+    ptr: *mut [Loopy; 1]
+}
+
+fn main() {
+    let _t = Loopy { ptr: core::ptr::null_mut() };
+}
diff --git a/src/test/ui/issues/issue-19127.rs b/src/test/ui/issues/issue-19127.rs
new file mode 100644
index 00000000000..c847ac9e435
--- /dev/null
+++ b/src/test/ui/issues/issue-19127.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+fn foo<T, F: FnOnce(T) -> T>(f: F) {}
+fn id<'a>(input: &'a u8) -> &'a u8 { input }
+
+fn main() {
+    foo(id);
+}
diff --git a/src/test/ui/issues/issue-19135.rs b/src/test/ui/issues/issue-19135.rs
new file mode 100644
index 00000000000..84540a3ff5f
--- /dev/null
+++ b/src/test/ui/issues/issue-19135.rs
@@ -0,0 +1,13 @@
+// run-pass
+use std::marker::PhantomData;
+
+#[derive(Debug)]
+struct LifetimeStruct<'a>(PhantomData<&'a ()>);
+
+fn main() {
+    takes_hrtb_closure(|lts| println!("{:?}", lts));
+}
+
+fn takes_hrtb_closure<F: for<'a>FnMut(LifetimeStruct<'a>)>(mut f: F) {
+    f(LifetimeStruct(PhantomData));
+}
diff --git a/src/test/ui/issues/issue-19244.rs b/src/test/ui/issues/issue-19244.rs
new file mode 100644
index 00000000000..44d9748fd2a
--- /dev/null
+++ b/src/test/ui/issues/issue-19244.rs
@@ -0,0 +1,34 @@
+// run-pass
+
+struct MyStruct { field: usize }
+struct Nested { nested: MyStruct }
+struct Mix2 { nested: ((usize,),) }
+
+const STRUCT: MyStruct = MyStruct { field: 42 };
+const TUP: (usize,) = (43,);
+const NESTED_S: Nested = Nested { nested: MyStruct { field: 5 } };
+const NESTED_T: ((usize,),) = ((4,),);
+const MIX_1: ((Nested,),) = ((Nested { nested: MyStruct { field: 3 } },),);
+const MIX_2: Mix2 = Mix2 { nested: ((2,),) };
+const INSTANT_1: usize = (MyStruct { field: 1 }).field;
+const INSTANT_2: usize = (0,).0;
+
+fn main() {
+    let a = [0; STRUCT.field];
+    let b = [0; TUP.0];
+    let c = [0; NESTED_S.nested.field];
+    let d = [0; (NESTED_T.0).0];
+    let e = [0; (MIX_1.0).0.nested.field];
+    let f = [0; (MIX_2.nested.0).0];
+    let g = [0; INSTANT_1];
+    let h = [0; INSTANT_2];
+
+    assert_eq!(a.len(), 42);
+    assert_eq!(b.len(), 43);
+    assert_eq!(c.len(), 5);
+    assert_eq!(d.len(), 4);
+    assert_eq!(e.len(), 3);
+    assert_eq!(f.len(), 2);
+    assert_eq!(g.len(), 1);
+    assert_eq!(h.len(), 0);
+}
diff --git a/src/test/ui/issues/issue-19293.rs b/src/test/ui/issues/issue-19293.rs
new file mode 100644
index 00000000000..b6e9e3d065a
--- /dev/null
+++ b/src/test/ui/issues/issue-19293.rs
@@ -0,0 +1,10 @@
+// run-pass
+// aux-build:issue-19293.rs
+// pretty-expanded FIXME #23616
+
+extern crate issue_19293;
+use issue_19293::{Foo, MyEnum};
+
+fn main() {
+    MyEnum::Foo(Foo(5));
+}
diff --git a/src/test/ui/issues/issue-19340-1.rs b/src/test/ui/issues/issue-19340-1.rs
new file mode 100644
index 00000000000..e3cc2daae9b
--- /dev/null
+++ b/src/test/ui/issues/issue-19340-1.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(unused_variables)]
+// aux-build:issue-19340-1.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_19340_1 as lib;
+
+use lib::Homura;
+
+fn main() {
+    let homura = Homura::Madoka { name: "Kaname".to_string() };
+
+    match homura {
+        Homura::Madoka { name } => (),
+    };
+}
diff --git a/src/test/ui/issues/issue-19340-2.rs b/src/test/ui/issues/issue-19340-2.rs
new file mode 100644
index 00000000000..a222e9e4621
--- /dev/null
+++ b/src/test/ui/issues/issue-19340-2.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+enum Homura {
+    Madoka {
+        name: String,
+        age: u32,
+    },
+}
+
+fn main() {
+    let homura = Homura::Madoka {
+        name: "Akemi".to_string(),
+        age: 14,
+    };
+
+    match homura {
+        Homura::Madoka {
+            name,
+            age,
+        } => (),
+    };
+}
diff --git a/src/test/ui/issues/issue-19358.rs b/src/test/ui/issues/issue-19358.rs
new file mode 100644
index 00000000000..f66e0a1c078
--- /dev/null
+++ b/src/test/ui/issues/issue-19358.rs
@@ -0,0 +1,20 @@
+// run-pass
+trait Trait { fn dummy(&self) { } }
+
+#[derive(Debug)]
+struct Foo<T: Trait> {
+    foo: T,
+}
+
+#[derive(Debug)]
+struct Bar<T> where T: Trait {
+    bar: T,
+}
+
+impl Trait for isize {}
+
+fn main() {
+    let a = Foo { foo: 12 };
+    let b = Bar { bar: 12 };
+    println!("{:?} {:?}", a, b);
+}
diff --git a/src/test/ui/issues/issue-19367.rs b/src/test/ui/issues/issue-19367.rs
new file mode 100644
index 00000000000..0699533e72b
--- /dev/null
+++ b/src/test/ui/issues/issue-19367.rs
@@ -0,0 +1,32 @@
+// run-pass
+struct S {
+    o: Option<String>
+}
+
+// Make sure we don't reuse the same alloca when matching
+// on field of struct or tuple which we reassign in the match body.
+
+fn main() {
+    let mut a = (0, Some("right".to_string()));
+    let b = match a.1 {
+        Some(v) => {
+            a.1 = Some("wrong".to_string());
+            v
+        }
+        None => String::new()
+    };
+    println!("{}", b);
+    assert_eq!(b, "right");
+
+
+    let mut s = S{ o: Some("right".to_string()) };
+    let b = match s.o {
+        Some(v) => {
+            s.o = Some("wrong".to_string());
+            v
+        }
+        None => String::new(),
+    };
+    println!("{}", b);
+    assert_eq!(b, "right");
+}
diff --git a/src/test/ui/issues/issue-19499.rs b/src/test/ui/issues/issue-19499.rs
new file mode 100644
index 00000000000..d09056ce3de
--- /dev/null
+++ b/src/test/ui/issues/issue-19499.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(path_statements)]
+#![allow(unused_variables)]
+// Regression test for issue #19499. Due to incorrect caching of trait
+// results for closures with upvars whose types were not fully
+// computed, this rather bizarre little program (along with many more
+// reasonable examples) let to ambiguity errors about not being able
+// to infer sufficient type information.
+
+// pretty-expanded FIXME #23616
+
+fn main() {
+    let n = 0;
+    let it = Some(1_usize).into_iter().inspect(|_| {n;});
+}
diff --git a/src/test/ui/issues/issue-1974.rs b/src/test/ui/issues/issue-1974.rs
new file mode 100644
index 00000000000..74a54a6029e
--- /dev/null
+++ b/src/test/ui/issues/issue-1974.rs
@@ -0,0 +1,11 @@
+// run-pass
+// Issue 1974
+// Don't double free the condition allocation
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    let s = "hej".to_string();
+    while s != "".to_string() {
+        return;
+    }
+}
diff --git a/src/test/ui/issues/issue-19811-escape-unicode.rs b/src/test/ui/issues/issue-19811-escape-unicode.rs
new file mode 100644
index 00000000000..a2c50bc022d
--- /dev/null
+++ b/src/test/ui/issues/issue-19811-escape-unicode.rs
@@ -0,0 +1,9 @@
+// run-pass
+
+fn main() {
+    let mut escaped = String::from("");
+    for c in '\u{10401}'.escape_unicode() {
+        escaped.push(c);
+    }
+    assert_eq!("\\u{10401}", escaped);
+}
diff --git a/src/test/ui/issues/issue-20055-box-trait.rs b/src/test/ui/issues/issue-20055-box-trait.rs
new file mode 100644
index 00000000000..772cd9d7eda
--- /dev/null
+++ b/src/test/ui/issues/issue-20055-box-trait.rs
@@ -0,0 +1,41 @@
+// run-pass
+// See Issues #20055 and #21695.
+
+// We are checking here that the temporaries `Box<[i8, k]>`, for `k`
+// in 1, 2, 3, 4, that are induced by the match expression are
+// properly handled, in that only *one* will be initialized by
+// whichever arm is run, and subsequently dropped at the end of the
+// statement surrounding the `match`.
+
+trait Boo {
+    fn dummy(&self) { }
+}
+
+impl Boo for [i8; 1] { }
+impl Boo for [i8; 2] { }
+impl Boo for [i8; 3] { }
+impl Boo for [i8; 4] { }
+
+pub fn foo(box_1: fn () -> Box<[i8; 1]>,
+           box_2: fn () -> Box<[i8; 2]>,
+           box_3: fn () -> Box<[i8; 3]>,
+           box_4: fn () -> Box<[i8; 4]>,
+            ) {
+    println!("Hello World 1");
+    let _: Box<dyn Boo> = match 3 {
+        1 => box_1(),
+        2 => box_2(),
+        3 => box_3(),
+        _ => box_4(),
+    };
+    println!("Hello World 2");
+}
+
+pub fn main() {
+    fn box_1() -> Box<[i8; 1]> { Box::new( [1; 1] ) }
+    fn box_2() -> Box<[i8; 2]> { Box::new( [1; 2] ) }
+    fn box_3() -> Box<[i8; 3]> { Box::new( [1; 3] ) }
+    fn box_4() -> Box<[i8; 4]> { Box::new( [1; 4] ) }
+
+    foo(box_1, box_2, box_3, box_4);
+}
diff --git a/src/test/ui/issues/issue-20055-box-unsized-array.rs b/src/test/ui/issues/issue-20055-box-unsized-array.rs
new file mode 100644
index 00000000000..1246c80651f
--- /dev/null
+++ b/src/test/ui/issues/issue-20055-box-unsized-array.rs
@@ -0,0 +1,29 @@
+// run-pass
+// Issue #2005: Check that boxed fixed-size arrays are properly
+// accounted for (namely, only deallocated if they were actually
+// created) when they appear as temporaries in unused arms of a match
+// expression.
+
+pub fn foo(box_1: fn () -> Box<[i8; 1]>,
+           box_2: fn () -> Box<[i8; 20]>,
+           box_3: fn () -> Box<[i8; 300]>,
+           box_4: fn () -> Box<[i8; 4000]>,
+            ) {
+    println!("Hello World 1");
+    let _: Box<[i8]> = match 3 {
+        1 => box_1(),
+        2 => box_2(),
+        3 => box_3(),
+        _ => box_4(),
+    };
+    println!("Hello World 2");
+}
+
+pub fn main() {
+    fn box_1() -> Box<[i8; 1]> { Box::new( [1] ) }
+    fn box_2() -> Box<[i8; 20]> { Box::new( [1; 20] ) }
+    fn box_3() -> Box<[i8; 300]> { Box::new( [1; 300] ) }
+    fn box_4() -> Box<[i8; 4000]> { Box::new( [1; 4000] ) }
+
+    foo(box_1, box_2, box_3, box_4);
+}
diff --git a/src/test/ui/issues/issue-20174.rs b/src/test/ui/issues/issue-20174.rs
new file mode 100644
index 00000000000..4ed5a97c172
--- /dev/null
+++ b/src/test/ui/issues/issue-20174.rs
@@ -0,0 +1,7 @@
+// run-pass
+struct GradFn<F: Fn() -> usize>(F);
+
+fn main() {
+    let GradFn(x_squared) : GradFn<_> = GradFn(|| -> usize { 2 });
+    let _  = x_squared();
+}
diff --git a/src/test/ui/issues/issue-20343.rs b/src/test/ui/issues/issue-20343.rs
new file mode 100644
index 00000000000..000b6398442
--- /dev/null
+++ b/src/test/ui/issues/issue-20343.rs
@@ -0,0 +1,32 @@
+// run-pass
+#![allow(unused_variables)]
+// Regression test for Issue #20343.
+
+// pretty-expanded FIXME #23616
+
+#![deny(dead_code)]
+
+struct B { b: u32 }
+struct C;
+struct D;
+
+trait T<A> { fn dummy(&self, a: A) { } }
+impl<A> T<A> for () {}
+
+impl B {
+    // test for unused code in arguments
+    fn foo(B { b }: B) -> u32 { b }
+
+    // test for unused code in return type
+    fn bar() -> C { unsafe { ::std::mem::transmute(()) } }
+
+    // test for unused code in generics
+    fn baz<A: T<D>>() {}
+}
+
+pub fn main() {
+    let b = B { b: 3 };
+    B::foo(b);
+    B::bar();
+    B::baz::<()>();
+}
diff --git a/src/test/ui/issues/issue-20389.rs b/src/test/ui/issues/issue-20389.rs
new file mode 100644
index 00000000000..9bc3efcc1c4
--- /dev/null
+++ b/src/test/ui/issues/issue-20389.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-20389.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_20389;
+
+struct Foo;
+
+impl issue_20389::T for Foo {
+    type C = ();
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-20427.rs b/src/test/ui/issues/issue-20427.rs
new file mode 100644
index 00000000000..fa2ea6cf592
--- /dev/null
+++ b/src/test/ui/issues/issue-20427.rs
@@ -0,0 +1,88 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![allow(unused_imports)]
+#![allow(non_upper_case_globals)]
+#![allow(non_camel_case_types)]
+
+// aux-build:i8.rs
+// ignore-pretty issue #37201
+
+extern crate i8;
+use std::string as i16;
+static i32: i32 = 0;
+const i64: i64 = 0;
+fn u8(f32: f32) {}
+fn f<f64>(f64: f64) {}
+enum u32 {}
+struct u64;
+trait bool {}
+
+mod char {
+    extern crate i8;
+    static i32_: i32 = 0;
+    const i64_: i64 = 0;
+    fn u8_(f32: f32) {}
+    fn f_<f64_>(f64: f64_) {}
+    type u16_ = u16;
+    enum u32_ {}
+    struct u64_;
+    trait bool_ {}
+    mod char_ {}
+
+    mod str {
+        use super::i8 as i8;
+        use super::i32_ as i32;
+        use super::i64_ as i64;
+        use super::u8_ as u8;
+        use super::f_ as f64;
+        use super::u16_ as u16;
+        use super::u32_ as u32;
+        use super::u64_ as u64;
+        use super::bool_ as bool;
+        use super::{bool_ as str};
+        use super::char_ as char;
+    }
+}
+
+trait isize_ {
+    type isize;
+}
+
+fn usize<'usize>(usize: &'usize usize) -> &'usize usize { usize }
+
+mod reuse {
+    use std::mem::size_of;
+
+    type u8 = u64;
+    use std::string::String as i16;
+
+    pub fn check<u16>() {
+        assert_eq!(size_of::<u8>(), 8);
+        assert_eq!(size_of::<::u64>(), 0);
+        assert_eq!(size_of::<i16>(), 3 * size_of::<*const ()>());
+        assert_eq!(size_of::<u16>(), 0);
+    }
+}
+
+mod guard {
+    pub fn check() {
+        use std::u8; // bring module u8 in scope
+        fn f() -> u8 { // OK, resolves to primitive u8, not to std::u8
+            u8::max_value() // OK, resolves to associated function <u8>::max_value,
+                            // not to non-existent std::u8::max_value
+        }
+        assert_eq!(f(), u8::MAX); // OK, resolves to std::u8::MAX
+    }
+}
+
+fn main() {
+    let bool = true;
+    let _ = match bool {
+        str @ true => if str { i32 as i64 } else { i64 },
+        false => i64,
+    };
+
+    reuse::check::<u64>();
+    guard::check();
+}
diff --git a/src/test/ui/issues/issue-20544.rs b/src/test/ui/issues/issue-20544.rs
new file mode 100644
index 00000000000..0f4d314f166
--- /dev/null
+++ b/src/test/ui/issues/issue-20544.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![feature(unboxed_closures)]
+#![feature(fn_traits)]
+
+struct Fun<F>(F);
+
+impl<F, T> FnOnce<(T,)> for Fun<F> where F: Fn(T) -> T {
+    type Output = T;
+
+    extern "rust-call" fn call_once(self, (t,): (T,)) -> T {
+        (self.0)(t)
+    }
+}
+
+fn main() {
+    let fun = Fun(|i: isize| i * 2);
+    println!("{}", fun(3));
+}
diff --git a/src/test/ui/issues/issue-20575.rs b/src/test/ui/issues/issue-20575.rs
new file mode 100644
index 00000000000..0ca67d9dc71
--- /dev/null
+++ b/src/test/ui/issues/issue-20575.rs
@@ -0,0 +1,10 @@
+// run-pass
+// Test that overloaded calls work with zero arity closures
+
+// pretty-expanded FIXME #23616
+
+fn main() {
+    let functions: [Box<dyn Fn() -> Option<()>>; 1] = [Box::new(|| None)];
+
+    let _: Option<Vec<()>> = functions.iter().map(|f| (*f)()).collect();
+}
diff --git a/src/test/ui/issues/issue-20616.rs b/src/test/ui/issues/issue-20616.rs
new file mode 100644
index 00000000000..6c24d437272
--- /dev/null
+++ b/src/test/ui/issues/issue-20616.rs
@@ -0,0 +1,44 @@
+// run-pass
+#![allow(dead_code)]
+type MyType<'a, T> = &'a T;
+
+// combine lifetime bounds and type arguments in usual way
+type TypeA<'a> = MyType<'a, ()>;
+
+// ensure token `>>` works fine
+type TypeB = Box<TypeA<'static>>;
+type TypeB_ = Box<TypeA<'static,>>;
+
+// trailing comma when combine lifetime bounds and type arguments
+type TypeC<'a> = MyType<'a, (),>;
+
+// normal lifetime bounds
+type TypeD = TypeA<'static>;
+
+// trailing comma on lifetime bounds
+type TypeE = TypeA<'static,>;
+
+// normal type argument
+type TypeF<T> = Box<T>;
+
+// type argument with trailing comma
+type TypeG<T> = Box<T,>;
+
+// trailing comma on lifetime defs
+type TypeH<'a,> = &'a ();
+
+// trailing comma on type argument
+type TypeI<T,> = T;
+
+static STATIC: () = ();
+
+fn main() {
+
+    // ensure token `>=` works fine
+    let _: TypeA<'static>= &STATIC;
+    let _: TypeA<'static,>= &STATIC;
+
+    // ensure token `>>=` works fine
+    let _: Box<TypeA<'static>>= Box::new(&STATIC);
+    let _: Box<TypeA<'static,>>= Box::new(&STATIC);
+}
diff --git a/src/test/ui/issues/issue-2063.rs b/src/test/ui/issues/issue-2063.rs
new file mode 100644
index 00000000000..9dbac6ccee1
--- /dev/null
+++ b/src/test/ui/issues/issue-2063.rs
@@ -0,0 +1,22 @@
+// run-pass
+// test that autoderef of a type like this does not
+// cause compiler to loop.  Note that no instances
+// of such a type could ever be constructed.
+
+struct T(Box<T>);
+
+trait ToStr2 {
+    fn my_to_string(&self) -> String;
+}
+
+impl ToStr2 for T {
+    fn my_to_string(&self) -> String { "t".to_string() }
+}
+
+#[allow(dead_code)]
+fn new_t(x: T) {
+    x.my_to_string();
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-20676.rs b/src/test/ui/issues/issue-20676.rs
new file mode 100644
index 00000000000..2bc5034960a
--- /dev/null
+++ b/src/test/ui/issues/issue-20676.rs
@@ -0,0 +1,12 @@
+// run-pass
+// Regression test for #20676. Error was that we didn't support
+// UFCS-style calls to a method in `Trait` where `Self` was bound to a
+// trait object of type `Trait`. See also `ufcs-trait-object.rs`.
+
+
+use std::fmt;
+
+fn main() {
+    let a: &dyn fmt::Debug = &1;
+    format!("{:?}", a);
+}
diff --git a/src/test/ui/issues/issue-2074.rs b/src/test/ui/issues/issue-2074.rs
new file mode 100644
index 00000000000..bd5f015cca0
--- /dev/null
+++ b/src/test/ui/issues/issue-2074.rs
@@ -0,0 +1,16 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![allow(non_camel_case_types)]
+
+pub fn main() {
+    let one = || {
+        enum r { a };
+        r::a as usize
+    };
+    let two = || {
+        enum r { a };
+        r::a as usize
+    };
+    one(); two();
+}
diff --git a/src/test/ui/issues/issue-20803.rs b/src/test/ui/issues/issue-20803.rs
new file mode 100644
index 00000000000..f657cf6cdd7
--- /dev/null
+++ b/src/test/ui/issues/issue-20803.rs
@@ -0,0 +1,10 @@
+// run-pass
+use std::ops::Add;
+
+fn foo<T>(x: T) -> <i32 as Add<T>>::Output where i32: Add<T> {
+    42i32 + x
+}
+
+fn main() {
+    println!("{}", foo(0i32));
+}
diff --git a/src/test/ui/issues/issue-20823.rs b/src/test/ui/issues/issue-20823.rs
new file mode 100644
index 00000000000..9e209d5d33a
--- /dev/null
+++ b/src/test/ui/issues/issue-20823.rs
@@ -0,0 +1,5 @@
+// run-pass
+// compile-flags: --test
+
+#[test]
+pub fn foo() {}
diff --git a/src/test/ui/issues/issue-20847.rs b/src/test/ui/issues/issue-20847.rs
new file mode 100644
index 00000000000..0cd7edf89db
--- /dev/null
+++ b/src/test/ui/issues/issue-20847.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![feature(fn_traits)]
+
+use std::ops::Fn;
+
+fn say(x: u32, y: u32) {
+    println!("{} {}", x, y);
+}
+
+fn main() {
+    Fn::call(&say, (1, 2));
+}
diff --git a/src/test/ui/issues/issue-20953.rs b/src/test/ui/issues/issue-20953.rs
new file mode 100644
index 00000000000..4ec7e3195eb
--- /dev/null
+++ b/src/test/ui/issues/issue-20953.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(unused_mut)]
+#![allow(unused_variables)]
+fn main() {
+    let mut shrinker: Box<dyn Iterator<Item=i32>> = Box::new(vec![1].into_iter());
+    println!("{:?}", shrinker.next());
+    for v in shrinker { assert!(false); }
+
+    let mut shrinker: &mut dyn Iterator<Item=i32> = &mut vec![1].into_iter();
+    println!("{:?}", shrinker.next());
+    for v in shrinker { assert!(false); }
+}
diff --git a/src/test/ui/issues/issue-21033.rs b/src/test/ui/issues/issue-21033.rs
new file mode 100644
index 00000000000..86cc7707e50
--- /dev/null
+++ b/src/test/ui/issues/issue-21033.rs
@@ -0,0 +1,49 @@
+// run-pass
+#![allow(unused_mut)]
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+#![feature(box_patterns)]
+#![feature(box_syntax)]
+
+enum E {
+    StructVar { boxed: Box<i32> }
+}
+
+fn main() {
+
+    // Test matching each shorthand notation for field patterns.
+    let mut a = E::StructVar { boxed: box 3 };
+    match a {
+        E::StructVar { box boxed } => { }
+    }
+    match a {
+        E::StructVar { box ref boxed } => { }
+    }
+    match a {
+        E::StructVar { box mut boxed } => { }
+    }
+    match a {
+        E::StructVar { box ref mut boxed } => { }
+    }
+    match a {
+        E::StructVar { ref boxed } => { }
+    }
+    match a {
+        E::StructVar { ref mut boxed } => { }
+    }
+    match a {
+        E::StructVar { mut boxed } => { }
+    }
+
+    // Test matching non shorthand notation. Recreate a since last test
+    // moved `boxed`
+    let mut a = E::StructVar { boxed: box 3 };
+    match a {
+        E::StructVar { boxed: box ref mut num } => { }
+    }
+    match a {
+        E::StructVar { boxed: ref mut num } => { }
+    }
+
+}
diff --git a/src/test/ui/issues/issue-21058.rs b/src/test/ui/issues/issue-21058.rs
new file mode 100644
index 00000000000..6facf0b2dd5
--- /dev/null
+++ b/src/test/ui/issues/issue-21058.rs
@@ -0,0 +1,64 @@
+// run-pass
+#![allow(dead_code)]
+
+use std::fmt::Debug;
+
+struct NT(str);
+struct DST { a: u32, b: str }
+
+macro_rules! check {
+    (val: $ty_of:expr, $expected:expr) => {
+        assert_eq!(type_name_of_val($ty_of), $expected);
+    };
+    ($ty:ty, $expected:expr) => {
+        assert_eq!(std::any::type_name::<$ty>(), $expected);
+    };
+}
+
+fn main() {
+    // type_name should support unsized types
+    check!([u8], "[u8]");
+    check!(str, "str");
+    check!(dyn Send, "dyn core::marker::Send");
+    check!(NT, "issue_21058::NT");
+    check!(DST, "issue_21058::DST");
+    check!(&i32, "&i32");
+    check!(&'static i32, "&i32");
+    check!((i32, u32), "(i32, u32)");
+    check!(val: foo(), "issue_21058::Foo");
+    check!(val: Foo::new, "issue_21058::Foo::new");
+    check!(val:
+        <Foo as Debug>::fmt,
+        "<issue_21058::Foo as core::fmt::Debug>::fmt"
+    );
+    check!(val: || {}, "issue_21058::main::{{closure}}");
+    bar::<i32>();
+}
+
+trait Trait {
+    type Assoc;
+}
+
+impl Trait for i32 {
+    type Assoc = String;
+}
+
+fn bar<T: Trait>() {
+    check!(T::Assoc, "alloc::string::String");
+    check!(T, "i32");
+}
+
+fn type_name_of_val<T>(_: T) -> &'static str {
+    std::any::type_name::<T>()
+}
+
+#[derive(Debug)]
+struct Foo;
+
+impl Foo {
+    fn new() -> Self { Foo }
+}
+
+fn foo() -> impl Debug {
+    Foo
+}
diff --git a/src/test/ui/issues/issue-21291.rs b/src/test/ui/issues/issue-21291.rs
new file mode 100644
index 00000000000..b351e22d862
--- /dev/null
+++ b/src/test/ui/issues/issue-21291.rs
@@ -0,0 +1,10 @@
+// run-pass
+// ignore-emscripten no threads support
+
+// Regression test for unwrapping the result of `join`, issue #21291
+
+use std::thread;
+
+fn main() {
+    thread::spawn(|| {}).join().unwrap()
+}
diff --git a/src/test/ui/issues/issue-21306.rs b/src/test/ui/issues/issue-21306.rs
new file mode 100644
index 00000000000..b06a475e4df
--- /dev/null
+++ b/src/test/ui/issues/issue-21306.rs
@@ -0,0 +1,9 @@
+// run-pass
+
+use std::sync::Arc;
+
+fn main() {
+    let x = 5;
+    let command = Arc::new(Box::new(|| { x*2 }));
+    assert_eq!(command(), 10);
+}
diff --git a/src/test/ui/issues/issue-21361.rs b/src/test/ui/issues/issue-21361.rs
new file mode 100644
index 00000000000..c970e77abb7
--- /dev/null
+++ b/src/test/ui/issues/issue-21361.rs
@@ -0,0 +1,11 @@
+// run-pass
+
+fn main() {
+    let v = vec![1, 2, 3];
+    let boxed: Box<dyn Iterator<Item=i32>> = Box::new(v.into_iter());
+    assert_eq!(boxed.max(), Some(3));
+
+    let v = vec![1, 2, 3];
+    let boxed: &mut dyn Iterator<Item=i32> = &mut v.into_iter();
+    assert_eq!(boxed.max(), Some(3));
+}
diff --git a/src/test/ui/issues/issue-21384.rs b/src/test/ui/issues/issue-21384.rs
new file mode 100644
index 00000000000..caa99a15982
--- /dev/null
+++ b/src/test/ui/issues/issue-21384.rs
@@ -0,0 +1,21 @@
+// run-pass
+
+use ::std::ops::RangeFull;
+
+fn test<T : Clone>(arg: T) -> T {
+    arg.clone()
+}
+
+#[derive(PartialEq, Debug)]
+struct Test(isize);
+
+fn main() {
+    // Check that ranges implement clone
+    assert_eq!(test(1..5), (1..5));
+    assert_eq!(test(..5), (..5));
+    assert_eq!(test(1..), (1..));
+    assert_eq!(test(RangeFull), (RangeFull));
+
+    // Check that ranges can still be used with non-clone limits
+    assert_eq!((Test(1)..Test(5)), (Test(1)..Test(5)));
+}
diff --git a/src/test/ui/issues/issue-21400.rs b/src/test/ui/issues/issue-21400.rs
new file mode 100644
index 00000000000..4a85158d97a
--- /dev/null
+++ b/src/test/ui/issues/issue-21400.rs
@@ -0,0 +1,56 @@
+// run-pass
+// Regression test for #21400 which itself was extracted from
+// stackoverflow.com/questions/28031155/is-my-borrow-checker-drunk/28031580
+
+fn main() {
+    let mut t = Test;
+    assert_eq!(t.method1("one"), Ok(1));
+    assert_eq!(t.method2("two"), Ok(2));
+    assert_eq!(t.test(), Ok(2));
+}
+
+struct Test;
+
+impl Test {
+    fn method1(&mut self, _arg: &str) -> Result<usize, &str> {
+        Ok(1)
+    }
+
+    fn method2(self: &mut Test, _arg: &str) -> Result<usize, &str> {
+        Ok(2)
+    }
+
+    fn test(self: &mut Test) -> Result<usize, &str> {
+        let s = format!("abcde");
+        // (Originally, this invocation of method2 was saying that `s`
+        // does not live long enough.)
+        let data = match self.method2(&*s) {
+            Ok(r) => r,
+            Err(e) => return Err(e)
+        };
+        Ok(data)
+    }
+}
+
+// Below is a closer match for the original test that was failing to compile
+
+pub struct GitConnect;
+
+impl GitConnect {
+    fn command(self: &mut GitConnect, _s: &str) -> Result<Vec<Vec<u8>>, &str> {
+        unimplemented!()
+    }
+
+    pub fn git_upload_pack(self: &mut GitConnect) -> Result<String, &str> {
+        let c = format!("git-upload-pack");
+
+        let mut out = String::new();
+        let data = self.command(&c)?;
+
+        for line in data.iter() {
+            out.push_str(&format!("{:?}", line));
+        }
+
+        Ok(out)
+    }
+}
diff --git a/src/test/ui/issues/issue-21475.rs b/src/test/ui/issues/issue-21475.rs
new file mode 100644
index 00000000000..16d003aba7c
--- /dev/null
+++ b/src/test/ui/issues/issue-21475.rs
@@ -0,0 +1,19 @@
+// run-pass
+#![allow(unused_imports)]
+// pretty-expanded FIXME #23616
+
+use m::{START, END};
+
+fn main() {
+    match 42 {
+        m::START..=m::END => {},
+        0..=m::END => {},
+        m::START..=59 => {},
+        _  => {},
+    }
+}
+
+mod m {
+  pub const START: u32 = 4;
+  pub const END:   u32 = 14;
+}
diff --git a/src/test/ui/issues/issue-21486.rs b/src/test/ui/issues/issue-21486.rs
new file mode 100644
index 00000000000..46d6ccd56bd
--- /dev/null
+++ b/src/test/ui/issues/issue-21486.rs
@@ -0,0 +1,77 @@
+// run-pass
+#![allow(unreachable_code)]
+// Issue #21486: Make sure that all structures are dropped, even when
+// created via FRU and control-flow breaks in the middle of
+// construction.
+
+use std::sync::atomic::{Ordering, AtomicUsize};
+
+#[derive(Debug)]
+struct Noisy(u8);
+impl Drop for Noisy {
+    fn drop(&mut self) {
+        // println!("splat #{}", self.0);
+        event(self.0);
+    }
+}
+
+#[allow(dead_code)]
+#[derive(Debug)]
+struct Foo { n0: Noisy, n1: Noisy }
+impl Foo {
+    fn vals(&self) -> (u8, u8) { (self.n0.0, self.n1.0) }
+}
+
+fn leak_1_ret() -> Foo {
+    let _old_foo = Foo { n0: Noisy(1), n1: Noisy(2) };
+    Foo { n0: { return Foo { n0: Noisy(3), n1: Noisy(4) } },
+          .._old_foo
+    };
+}
+
+fn leak_2_ret() -> Foo {
+    let _old_foo = Foo { n0: Noisy(1), n1: Noisy(2) };
+    Foo { n1: { return Foo { n0: Noisy(3), n1: Noisy(4) } },
+          .._old_foo
+    };
+}
+
+// In this case, the control flow break happens *before* we construct
+// `Foo(Noisy(1),Noisy(2))`, so there should be no record of it in the
+// event log.
+fn leak_3_ret() -> Foo {
+    let _old_foo = || Foo { n0: Noisy(1), n1: Noisy(2) };
+    Foo { n1: { return Foo { n0: Noisy(3), n1: Noisy(4) } },
+          .._old_foo()
+    };
+}
+
+pub fn main() {
+    reset_log();
+    assert_eq!(leak_1_ret().vals(), (3,4));
+    assert_eq!(0x01_02_03_04, event_log());
+
+    reset_log();
+    assert_eq!(leak_2_ret().vals(), (3,4));
+    assert_eq!(0x01_02_03_04, event_log());
+
+    reset_log();
+    assert_eq!(leak_3_ret().vals(), (3,4));
+    assert_eq!(0x03_04, event_log());
+}
+
+static LOG: AtomicUsize = AtomicUsize::new(0);
+
+fn reset_log() {
+    LOG.store(0, Ordering::SeqCst);
+}
+
+fn event_log() -> usize {
+    LOG.load(Ordering::SeqCst)
+}
+
+fn event(tag: u8) {
+    let old_log = LOG.load(Ordering::SeqCst);
+    let new_log = (old_log << 8) + tag as usize;
+    LOG.store(new_log, Ordering::SeqCst);
+}
diff --git a/src/test/ui/issues/issue-21655.rs b/src/test/ui/issues/issue-21655.rs
new file mode 100644
index 00000000000..d1cd4ec7b8a
--- /dev/null
+++ b/src/test/ui/issues/issue-21655.rs
@@ -0,0 +1,12 @@
+// run-pass
+
+fn test(it: &mut dyn Iterator<Item=i32>) {
+    for x in it {
+        assert_eq!(x, 1)
+    }
+}
+
+fn main() {
+    let v = vec![1];
+    test(&mut v.into_iter())
+}
diff --git a/src/test/ui/issues/issue-2170-exe.rs b/src/test/ui/issues/issue-2170-exe.rs
new file mode 100644
index 00000000000..a89579706c8
--- /dev/null
+++ b/src/test/ui/issues/issue-2170-exe.rs
@@ -0,0 +1,9 @@
+// run-pass
+// aux-build:issue-2170-lib.rs
+// pretty-expanded FIXME #23616
+
+extern crate issue_2170_lib;
+
+pub fn main() {
+   // let _ = issue_2170_lib::rsrc(2);
+}
diff --git a/src/test/ui/issues/issue-21721.rs b/src/test/ui/issues/issue-21721.rs
new file mode 100644
index 00000000000..4c1411e1ecf
--- /dev/null
+++ b/src/test/ui/issues/issue-21721.rs
@@ -0,0 +1,9 @@
+// run-pass
+
+fn main() {
+    static NONE: Option<((), &'static u8)> = None;
+    let ptr = unsafe {
+        *(&NONE as *const _ as *const *const u8)
+    };
+    assert!(ptr.is_null());
+}
diff --git a/src/test/ui/issues/issue-2190-1.rs b/src/test/ui/issues/issue-2190-1.rs
new file mode 100644
index 00000000000..e67a924b9ee
--- /dev/null
+++ b/src/test/ui/issues/issue-2190-1.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(unused_must_use)]
+#![allow(non_upper_case_globals)]
+
+// pretty-expanded FIXME #23616
+// ignore-emscripten no threads
+
+use std::thread::Builder;
+
+static generations: usize = 1024+256+128+49;
+
+fn spawn(mut f: Box<dyn FnMut() + 'static + Send>) {
+    Builder::new().stack_size(32 * 1024).spawn(move|| f());
+}
+
+fn child_no(x: usize) -> Box<dyn FnMut() + 'static + Send> {
+    Box::new(move|| {
+        if x < generations {
+            spawn(child_no(x+1));
+        }
+    })
+}
+
+pub fn main() {
+    spawn(child_no(0));
+}
diff --git a/src/test/ui/issues/issue-21909.rs b/src/test/ui/issues/issue-21909.rs
new file mode 100644
index 00000000000..7cb558d9a4f
--- /dev/null
+++ b/src/test/ui/issues/issue-21909.rs
@@ -0,0 +1,15 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+trait A<X> {
+    fn dummy(&self, arg: X);
+}
+
+trait B {
+    type X;
+    type Y: A<Self::X>;
+
+    fn dummy(&self);
+}
+
+fn main () { }
diff --git a/src/test/ui/issues/issue-21922.rs b/src/test/ui/issues/issue-21922.rs
new file mode 100644
index 00000000000..9727b2efe9a
--- /dev/null
+++ b/src/test/ui/issues/issue-21922.rs
@@ -0,0 +1,17 @@
+// run-pass
+use std::ops::Add;
+fn show(z: i32) {
+    println!("{}", z)
+}
+fn main() {
+    let x = 23;
+    let y = 42;
+    show(Add::add( x,  y));
+    show(Add::add( x, &y));
+    show(Add::add(&x,  y));
+    show(Add::add(&x, &y));
+    show( x +  y);
+    show( x + &y);
+    show(&x +  y);
+    show(&x + &y);
+}
diff --git a/src/test/ui/issues/issue-22008.rs b/src/test/ui/issues/issue-22008.rs
new file mode 100644
index 00000000000..00425582266
--- /dev/null
+++ b/src/test/ui/issues/issue-22008.rs
@@ -0,0 +1,9 @@
+// run-pass
+pub fn main() {
+    let command = "a";
+
+    match command {
+        "foo" => println!("foo"),
+        _     => println!("{}", command),
+    }
+}
diff --git a/src/test/ui/issues/issue-22036.rs b/src/test/ui/issues/issue-22036.rs
new file mode 100644
index 00000000000..30da2130a31
--- /dev/null
+++ b/src/test/ui/issues/issue-22036.rs
@@ -0,0 +1,25 @@
+// run-pass
+
+trait DigitCollection: Sized {
+    type Iter: Iterator<Item = u8>;
+    fn digit_iter(self) -> Self::Iter;
+
+    fn digit_sum(self) -> u32 {
+        self.digit_iter()
+            .map(|digit: u8| digit as u32)
+            .fold(0, |sum, digit| sum + digit)
+    }
+}
+
+impl<I> DigitCollection for I where I: Iterator<Item=u8> {
+    type Iter = I;
+
+    fn digit_iter(self) -> I {
+        self
+    }
+}
+
+fn main() {
+    let xs = vec![1, 2, 3, 4, 5];
+    assert_eq!(xs.into_iter().digit_sum(), 15);
+}
diff --git a/src/test/ui/issues/issue-2214.rs b/src/test/ui/issues/issue-2214.rs
new file mode 100644
index 00000000000..22f33545cb9
--- /dev/null
+++ b/src/test/ui/issues/issue-2214.rs
@@ -0,0 +1,41 @@
+// run-pass
+// ignore-wasm32-bare no libc to test ffi with
+// ignore-sgx no libc
+#![feature(rustc_private)]
+
+extern crate libc;
+
+use std::mem;
+use libc::{c_double, c_int};
+
+fn to_c_int(v: &mut isize) -> &mut c_int {
+    unsafe {
+        mem::transmute_copy(&v)
+    }
+}
+
+fn lgamma(n: c_double, value: &mut isize) -> c_double {
+    unsafe {
+        return m::lgamma(n, to_c_int(value));
+    }
+}
+
+mod m {
+    use libc::{c_double, c_int};
+
+    #[link_name = "m"]
+    extern {
+        #[cfg(any(unix, target_os = "cloudabi"))]
+        #[link_name="lgamma_r"]
+        pub fn lgamma(n: c_double, sign: &mut c_int) -> c_double;
+        #[cfg(windows)]
+        #[link_name="lgamma"]
+        pub fn lgamma(n: c_double, sign: &mut c_int) -> c_double;
+    }
+}
+
+pub fn main() {
+  let mut y: isize = 5;
+  let x: &mut isize = &mut y;
+  assert_eq!(lgamma(1.0 as c_double, x), 0.0 as c_double);
+}
diff --git a/src/test/ui/issues/issue-2216.rs b/src/test/ui/issues/issue-2216.rs
new file mode 100644
index 00000000000..fa712edcd1b
--- /dev/null
+++ b/src/test/ui/issues/issue-2216.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(unreachable_code)]
+pub fn main() {
+    let mut x = 0;
+
+    'foo: loop {
+        'bar: loop {
+            'quux: loop {
+                if 1 == 2 {
+                    break 'foo;
+                }
+                else {
+                    break 'bar;
+                }
+            }
+            continue 'foo;
+        }
+        x = 42;
+        break;
+    }
+
+    println!("{}", x);
+    assert_eq!(x, 42);
+}
diff --git a/src/test/ui/issues/issue-22258.rs b/src/test/ui/issues/issue-22258.rs
new file mode 100644
index 00000000000..93ead5818d5
--- /dev/null
+++ b/src/test/ui/issues/issue-22258.rs
@@ -0,0 +1,10 @@
+// run-pass
+use std::ops::Add;
+
+fn f<T: Add>(a: T, b: T) -> <T as Add>::Output {
+    a + b
+}
+
+fn main() {
+    println!("a + b is {}", f::<f32>(100f32, 200f32));
+}
diff --git a/src/test/ui/issues/issue-22346.rs b/src/test/ui/issues/issue-22346.rs
new file mode 100644
index 00000000000..5f6d9dcc9ae
--- /dev/null
+++ b/src/test/ui/issues/issue-22346.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+// This used to cause an ICE because the retslot for the "return" had the wrong type
+fn testcase<'a>() -> Box<dyn Iterator<Item=usize> + 'a> {
+    return Box::new((0..3).map(|i| { return i; }));
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-22403.rs b/src/test/ui/issues/issue-22403.rs
new file mode 100644
index 00000000000..8d855909435
--- /dev/null
+++ b/src/test/ui/issues/issue-22403.rs
@@ -0,0 +1,6 @@
+// run-pass
+fn main() {
+    let x = Box::new([1, 2, 3]);
+    let y = x as Box<[i32]>;
+    println!("y: {:?}", y);
+}
diff --git a/src/test/ui/issues/issue-22426.rs b/src/test/ui/issues/issue-22426.rs
new file mode 100644
index 00000000000..adf060a8292
--- /dev/null
+++ b/src/test/ui/issues/issue-22426.rs
@@ -0,0 +1,9 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+fn main() {
+  match 42 {
+    x if x < 7 => (),
+    _ => ()
+  }
+}
diff --git a/src/test/ui/issues/issue-22463.rs b/src/test/ui/issues/issue-22463.rs
new file mode 100644
index 00000000000..fdf5a2fca72
--- /dev/null
+++ b/src/test/ui/issues/issue-22463.rs
@@ -0,0 +1,20 @@
+// run-pass
+macro_rules! items {
+    () => {
+        type A = ();
+        fn a() {}
+    }
+}
+
+trait Foo {
+    type A;
+    fn a();
+}
+
+impl Foo for () {
+    items!();
+}
+
+fn main() {
+
+}
diff --git a/src/test/ui/issues/issue-22536-copy-mustnt-zero.rs b/src/test/ui/issues/issue-22536-copy-mustnt-zero.rs
new file mode 100644
index 00000000000..017f36484c1
--- /dev/null
+++ b/src/test/ui/issues/issue-22536-copy-mustnt-zero.rs
@@ -0,0 +1,28 @@
+// run-pass
+// Regression test for Issue #22536: If a type implements Copy, then
+// moving it must not zero the original memory.
+
+
+trait Resources {
+    type Buffer: Copy;
+    fn foo(&self) {}
+}
+
+struct BufferHandle<R: Resources> {
+    raw: <R as Resources>::Buffer,
+}
+impl<R: Resources> Copy for BufferHandle<R> {}
+impl<R: Resources> Clone for BufferHandle<R> {
+    fn clone(&self) -> BufferHandle<R> { *self }
+}
+
+enum Res {}
+impl Resources for Res {
+    type Buffer = u32;
+}
+
+fn main() {
+    let b: BufferHandle<Res> = BufferHandle { raw: 1 };
+    let c = b;
+    assert_eq!(c.raw, b.raw)
+}
diff --git a/src/test/ui/issues/issue-22546.rs b/src/test/ui/issues/issue-22546.rs
new file mode 100644
index 00000000000..c26e457f9e4
--- /dev/null
+++ b/src/test/ui/issues/issue-22546.rs
@@ -0,0 +1,52 @@
+// run-pass
+#![allow(unused_variables)]
+// Parsing patterns with paths with type parameters (issue #22544)
+
+use std::default::Default;
+
+#[derive(Default)]
+pub struct Foo<T>(T, T);
+
+impl<T: ::std::fmt::Display> Foo<T> {
+    fn foo(&self) {
+        match *self {
+            Foo::<T>(ref x, ref y) => println!("Goodbye, World! {} {}", x, y)
+        }
+    }
+}
+
+trait Tr {
+    type U;
+}
+
+impl<T> Tr for Foo<T> {
+    type U = T;
+}
+
+struct Wrapper<T> {
+    value: T
+}
+
+fn main() {
+    let Foo::<i32>(a, b) = Default::default();
+
+    let f = Foo(2,3);
+    f.foo();
+
+    let w = Wrapper { value: Foo(10u8, 11u8) };
+    match w {
+        Wrapper::<Foo<u8>> { value: Foo(10, 11) } => {},
+        ::Wrapper::<<Foo<_> as Tr>::U> { value: Foo::<u8>(11, 16) } => { panic!() },
+        _ => { panic!() }
+    }
+
+    if let None::<u8> = Some(8) {
+        panic!();
+    }
+    if let None::<u8> { .. } = Some(8) {
+        panic!();
+    }
+    if let Option::None::<u8> { .. } = Some(8) {
+        panic!();
+    }
+}
diff --git a/src/test/ui/issues/issue-22577.rs b/src/test/ui/issues/issue-22577.rs
new file mode 100644
index 00000000000..24f4f60aa2f
--- /dev/null
+++ b/src/test/ui/issues/issue-22577.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+// ignore-cloudabi no std::fs
+
+use std::{fs, net};
+
+fn assert_both<T: Send + Sync>() {}
+fn assert_send<T: Send>() {}
+
+fn main() {
+    assert_both::<fs::File>();
+    assert_both::<fs::Metadata>();
+    assert_both::<fs::ReadDir>();
+    assert_both::<fs::DirEntry>();
+    assert_both::<fs::OpenOptions>();
+    assert_both::<fs::Permissions>();
+
+    assert_both::<net::TcpStream>();
+    assert_both::<net::TcpListener>();
+    assert_both::<net::UdpSocket>();
+    assert_both::<net::SocketAddr>();
+    assert_both::<net::SocketAddrV4>();
+    assert_both::<net::SocketAddrV6>();
+    assert_both::<net::Ipv4Addr>();
+    assert_both::<net::Ipv6Addr>();
+}
diff --git a/src/test/ui/issues/issue-22629.rs b/src/test/ui/issues/issue-22629.rs
new file mode 100644
index 00000000000..7beeb126ee4
--- /dev/null
+++ b/src/test/ui/issues/issue-22629.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![allow(unused_imports)]
+// Test transitive analysis for associated types. Collected types
+// should be normalized and new obligations generated.
+
+// pretty-expanded FIXME #23616
+
+use std::borrow::{ToOwned, Cow};
+
+fn assert_send<T: Send>(_: T) {}
+
+fn main() {
+    assert_send(Cow::Borrowed("foo"));
+}
diff --git a/src/test/ui/issues/issue-22828.rs b/src/test/ui/issues/issue-22828.rs
new file mode 100644
index 00000000000..adf4dd6ce75
--- /dev/null
+++ b/src/test/ui/issues/issue-22828.rs
@@ -0,0 +1,23 @@
+// run-pass
+#![allow(dead_code)]
+// Test transitive analysis for associated types. Collected types
+// should be normalized and new obligations generated.
+
+// pretty-expanded FIXME #23616
+
+trait Foo {
+    type A;
+    fn foo(&self) {}
+}
+
+impl Foo for usize {
+    type A = usize;
+}
+
+struct Bar<T: Foo> { inner: T::A }
+
+fn is_send<T: Send>() {}
+
+fn main() {
+    is_send::<Bar<usize>>();
+}
diff --git a/src/test/ui/issues/issue-2284.rs b/src/test/ui/issues/issue-2284.rs
new file mode 100644
index 00000000000..6f2c958341b
--- /dev/null
+++ b/src/test/ui/issues/issue-2284.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+trait Send {
+    fn f(&self);
+}
+
+fn f<T:Send>(t: T) {
+    t.f();
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-22864-1.rs b/src/test/ui/issues/issue-22864-1.rs
new file mode 100644
index 00000000000..0fad5433d6c
--- /dev/null
+++ b/src/test/ui/issues/issue-22864-1.rs
@@ -0,0 +1,7 @@
+// run-pass
+pub fn main() {
+    struct Fun<F>(F);
+    let f = Fun(|x| 3*x);
+    let Fun(g) = f;
+    println!("{:?}",g(4));
+}
diff --git a/src/test/ui/issues/issue-22864-2.rs b/src/test/ui/issues/issue-22864-2.rs
new file mode 100644
index 00000000000..4aa9e3e086b
--- /dev/null
+++ b/src/test/ui/issues/issue-22864-2.rs
@@ -0,0 +1,7 @@
+// run-pass
+// ignore-emscripten no threads support
+
+pub fn main() {
+    let f = || || 0;
+    std::thread::spawn(f());
+}
diff --git a/src/test/ui/issues/issue-2288.rs b/src/test/ui/issues/issue-2288.rs
new file mode 100644
index 00000000000..c74e53fca60
--- /dev/null
+++ b/src/test/ui/issues/issue-2288.rs
@@ -0,0 +1,35 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+#![feature(box_syntax)]
+
+trait clam<A> {
+  fn chowder(&self, y: A);
+}
+
+#[derive(Copy, Clone)]
+struct foo<A> {
+  x: A,
+}
+
+impl<A> clam<A> for foo<A> {
+  fn chowder(&self, _y: A) {
+  }
+}
+
+fn foo<A>(b: A) -> foo<A> {
+    foo {
+        x: b
+    }
+}
+
+fn f<A>(x: Box<dyn clam<A>>, a: A) {
+  x.chowder(a);
+}
+
+pub fn main() {
+
+  let c = foo(42);
+  let d: Box<dyn clam<isize>> = box c as Box<dyn clam<isize>>;
+  f(d, c.x);
+}
diff --git a/src/test/ui/issues/issue-22992-2.rs b/src/test/ui/issues/issue-22992-2.rs
new file mode 100644
index 00000000000..042af40eda6
--- /dev/null
+++ b/src/test/ui/issues/issue-22992-2.rs
@@ -0,0 +1,18 @@
+// run-pass
+struct A(B);
+struct B;
+
+use std::ops::Deref;
+
+impl Deref for A {
+    type Target = B;
+    fn deref(&self) -> &B { &self.0 }
+}
+
+impl B {
+    fn foo(&self) {}
+}
+
+fn main() {
+    A(B).foo();
+}
diff --git a/src/test/ui/issues/issue-22992.rs b/src/test/ui/issues/issue-22992.rs
new file mode 100644
index 00000000000..e2ae1f96ee5
--- /dev/null
+++ b/src/test/ui/issues/issue-22992.rs
@@ -0,0 +1,76 @@
+// run-pass
+// ignore-pretty issue #37201
+
+struct X { val: i32 }
+impl std::ops::Deref for X {
+    type Target = i32;
+    fn deref(&self) -> &i32 { &self.val }
+}
+
+
+trait            M                   { fn m(self); }
+impl             M for i32           { fn m(self) { println!("i32::m()"); } }
+impl             M for X             { fn m(self) { println!("X::m()"); } }
+impl<'a>         M for &'a X         { fn m(self) { println!("&X::m()"); } }
+impl<'a, 'b>     M for &'a &'b X     { fn m(self) { println!("&&X::m()"); } }
+impl<'a, 'b, 'c> M for &'a &'b &'c X { fn m(self) { println!("&&&X::m()"); } }
+
+trait            RefM                   { fn refm(&self); }
+impl             RefM for i32           { fn refm(&self) { println!("i32::refm()"); } }
+impl             RefM for X             { fn refm(&self) { println!("X::refm()"); } }
+impl<'a>         RefM for &'a X         { fn refm(&self) { println!("&X::refm()"); } }
+impl<'a, 'b>     RefM for &'a &'b X     { fn refm(&self) { println!("&&X::refm()"); } }
+impl<'a, 'b, 'c> RefM for &'a &'b &'c X { fn refm(&self) { println!("&&&X::refm()"); } }
+
+struct Y { val: i32 }
+impl std::ops::Deref for Y {
+    type Target = i32;
+    fn deref(&self) -> &i32 { &self.val }
+}
+
+struct Z { val: Y }
+impl std::ops::Deref for Z {
+    type Target = Y;
+    fn deref(&self) -> &Y { &self.val }
+}
+
+struct A;
+impl std::marker::Copy for A {}
+impl Clone for A { fn clone(&self) -> Self { *self } }
+impl             M for             A { fn m(self) { println!("A::m()"); } }
+impl<'a, 'b, 'c> M for &'a &'b &'c A { fn m(self) { println!("&&&A::m()"); } }
+impl             RefM for             A { fn refm(&self) { println!("A::refm()"); } }
+impl<'a, 'b, 'c> RefM for &'a &'b &'c A { fn refm(&self) { println!("&&&A::refm()"); } }
+
+fn main() {
+    // I'll use @ to denote left side of the dot operator
+    (*X{val:42}).m();        // i32::refm() , self == @
+    X{val:42}.m();           // X::m()      , self == @
+    (&X{val:42}).m();        // &X::m()     , self == @
+    (&&X{val:42}).m();       // &&X::m()    , self == @
+    (&&&X{val:42}).m();      // &&&X:m()    , self == @
+    (&&&&X{val:42}).m();     // &&&X::m()   , self == *@
+    (&&&&&X{val:42}).m();    // &&&X::m()   , self == **@
+
+    (*X{val:42}).refm();     // i32::refm() , self == @
+    X{val:42}.refm();        // X::refm()   , self == @
+    (&X{val:42}).refm();     // X::refm()   , self == *@
+    (&&X{val:42}).refm();    // &X::refm()  , self == *@
+    (&&&X{val:42}).refm();   // &&X::refm() , self == *@
+    (&&&&X{val:42}).refm();  // &&&X::refm(), self == *@
+    (&&&&&X{val:42}).refm(); // &&&X::refm(), self == **@
+
+    Y{val:42}.refm();        // i32::refm() , self == *@
+    Z{val:Y{val:42}}.refm(); // i32::refm() , self == **@
+
+    A.m();                   // A::m()      , self == @
+    // without the Copy trait, (&A).m() would be a compilation error:
+    // cannot move out of borrowed content
+    (&A).m();                // A::m()      , self == *@
+    (&&A).m();               // &&&A::m()   , self == &@
+    (&&&A).m();              // &&&A::m()   , self == @
+    A.refm();                // A::refm()   , self == @
+    (&A).refm();             // A::refm()   , self == *@
+    (&&A).refm();            // A::refm()   , self == **@
+    (&&&A).refm();           // &&&A::refm(), self == @
+}
diff --git a/src/test/ui/issues/issue-23036.rs b/src/test/ui/issues/issue-23036.rs
new file mode 100644
index 00000000000..a307e7eed95
--- /dev/null
+++ b/src/test/ui/issues/issue-23036.rs
@@ -0,0 +1,11 @@
+// run-pass
+// ignore-cloudabi no std::path
+
+use std::collections::HashMap;
+use std::path::Path;
+
+fn main() {
+    let mut map = HashMap::new();
+    map.insert(Path::new("a"), 0);
+    map.get(Path::new("a"));
+}
diff --git a/src/test/ui/issues/issue-2316-c.rs b/src/test/ui/issues/issue-2316-c.rs
new file mode 100644
index 00000000000..d975aa695c8
--- /dev/null
+++ b/src/test/ui/issues/issue-2316-c.rs
@@ -0,0 +1,12 @@
+// run-pass
+// aux-build:issue-2316-a.rs
+// aux-build:issue-2316-b.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_2316_b;
+use issue_2316_b::cloth;
+
+pub fn main() {
+  let _c: cloth::fabric = cloth::fabric::calico;
+}
diff --git a/src/test/ui/issues/issue-23208.rs b/src/test/ui/issues/issue-23208.rs
new file mode 100644
index 00000000000..fd4ffe5d6e1
--- /dev/null
+++ b/src/test/ui/issues/issue-23208.rs
@@ -0,0 +1,26 @@
+// run-pass
+trait TheTrait : TheSuperTrait<<Self as TheTrait>::Item> {
+    type Item;
+}
+
+trait TheSuperTrait<T> {
+    fn get(&self) -> T;
+}
+
+impl TheTrait for i32 {
+    type Item = u32;
+}
+
+impl TheSuperTrait<u32> for i32 {
+    fn get(&self) -> u32 {
+        *self as u32
+    }
+}
+
+fn foo<T:TheTrait<Item=u32>>(t: &T) -> u32 {
+    t.get()
+}
+
+fn main() {
+    foo::<i32>(&22);
+}
diff --git a/src/test/ui/issues/issue-23261.rs b/src/test/ui/issues/issue-23261.rs
new file mode 100644
index 00000000000..e21f86351ee
--- /dev/null
+++ b/src/test/ui/issues/issue-23261.rs
@@ -0,0 +1,61 @@
+// run-pass
+// Matching on a DST struct should not trigger an LLVM assertion.
+
+struct Foo<T: ?Sized> {
+    a: i32,
+    inner: T
+}
+
+trait Get {
+    fn get(&self) -> i32;
+}
+
+impl Get for i32 {
+    fn get(&self) -> i32 {
+        *self
+    }
+}
+
+fn check_val(val: &Foo<[u8]>) {
+    match *val {
+        Foo { a, .. } => {
+            assert_eq!(a, 32);
+        }
+    }
+}
+
+fn check_dst_val(val: &Foo<[u8]>) {
+    match *val {
+        Foo { ref inner, .. } => {
+            assert_eq!(inner, [1, 2, 3]);
+        }
+    }
+}
+
+fn check_both(val: &Foo<[u8]>) {
+    match *val {
+        Foo { a, ref inner } => {
+            assert_eq!(a, 32);
+            assert_eq!(inner, [1, 2, 3]);
+        }
+    }
+}
+
+fn check_trait_obj(val: &Foo<dyn Get>) {
+    match *val {
+        Foo { a, ref inner } => {
+            assert_eq!(a, 32);
+            assert_eq!(inner.get(), 32);
+        }
+    }
+}
+
+fn main() {
+    let foo: &Foo<[u8]> = &Foo { a: 32, inner: [1, 2, 3] };
+    check_val(foo);
+    check_dst_val(foo);
+    check_both(foo);
+
+    let foo: &Foo<dyn Get> = &Foo { a: 32, inner: 32 };
+    check_trait_obj(foo);
+}
diff --git a/src/test/ui/issues/issue-23304-1.rs b/src/test/ui/issues/issue-23304-1.rs
new file mode 100644
index 00000000000..1805c1c19b9
--- /dev/null
+++ b/src/test/ui/issues/issue-23304-1.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(dead_code)]
+
+#[repr(u8)]
+#[allow(dead_code)]
+enum ValueType {
+    DOUBLE              = 0x00,
+    INT32               = 0x01,
+}
+
+#[repr(u32)]
+enum ValueTag {
+    INT32                = 0x1FFF0u32 | (ValueType::INT32 as u32),
+    X,
+}
+
+#[repr(u64)]
+enum ValueShiftedTag {
+    INT32        = ValueTag::INT32 as u64,
+    X,
+}
+
+fn main() {
+    println!("{}", ValueTag::INT32 as u32);
+}
diff --git a/src/test/ui/issues/issue-23304-2.rs b/src/test/ui/issues/issue-23304-2.rs
new file mode 100644
index 00000000000..6376fdb6545
--- /dev/null
+++ b/src/test/ui/issues/issue-23304-2.rs
@@ -0,0 +1,13 @@
+// run-pass
+#![allow(dead_code)]
+
+enum X { A = 42 as isize }
+
+enum Y { A = X::A as isize }
+
+fn main() {
+    let x = X::A;
+    let x = x as isize;
+    assert_eq!(x, 42);
+    assert_eq!(Y::A as isize, 42);
+}
diff --git a/src/test/ui/issues/issue-23311.rs b/src/test/ui/issues/issue-23311.rs
new file mode 100644
index 00000000000..f275c6338b1
--- /dev/null
+++ b/src/test/ui/issues/issue-23311.rs
@@ -0,0 +1,12 @@
+// run-pass
+// Test that we do not ICE when pattern matching an array against a slice.
+
+#![feature(slice_patterns)]
+
+fn main() {
+    match "foo".as_bytes() {
+        b"food" => (),
+        &[b'f', ..] => (),
+        _ => ()
+    }
+}
diff --git a/src/test/ui/issues/issue-23336.rs b/src/test/ui/issues/issue-23336.rs
new file mode 100644
index 00000000000..cd71d7eed89
--- /dev/null
+++ b/src/test/ui/issues/issue-23336.rs
@@ -0,0 +1,11 @@
+// run-pass
+pub trait Data { fn doit(&self) {} }
+impl<T> Data for T {}
+pub trait UnaryLogic { type D: Data; }
+impl UnaryLogic for () { type D = i32; }
+
+pub fn crashes<T: UnaryLogic>(t: T::D) {
+    t.doit();
+}
+
+fn main() { crashes::<()>(0); }
diff --git a/src/test/ui/issues/issue-23338-ensure-param-drop-order.rs b/src/test/ui/issues/issue-23338-ensure-param-drop-order.rs
new file mode 100644
index 00000000000..823be8c832d
--- /dev/null
+++ b/src/test/ui/issues/issue-23338-ensure-param-drop-order.rs
@@ -0,0 +1,164 @@
+// run-pass
+#![allow(non_upper_case_globals)]
+
+// ignore-pretty issue #37201
+
+// This test is ensuring that parameters are indeed dropped after
+// temporaries in a fn body.
+
+use std::cell::RefCell;
+
+use self::d::D;
+
+pub fn main() {
+    let log = RefCell::new(vec![]);
+    d::println("created empty log");
+    test(&log);
+
+    assert_eq!(&log.borrow()[..],
+               [
+                   //                                    created empty log
+                   //    +-- Make D(da_0, 0)
+                   //    | +-- Make D(de_1, 1)
+                   //    | |                             calling foo
+                   //    | |                             entered foo
+                   //    | | +-- Make D(de_2, 2)
+                   //    | | | +-- Make D(da_1, 3)
+                   //    | | | | +-- Make D(de_3, 4)
+                   //    | | | | | +-- Make D(de_4, 5)
+                   3, // | | | +-- Drop D(da_1, 3)
+                   //    | | |   | |
+                   4, // | | |   +-- Drop D(de_3, 4)
+                   //    | | |     |
+                   //    | | |     |                     eval tail of foo
+                   //    | | | +-- Make D(de_5, 6)
+                   //    | | | | +-- Make D(de_6, 7)
+                   5, // | | | | | +-- Drop D(de_4, 5)
+                   //    | | | | |
+                   2, // | | +-- Drop D(de_2, 2)
+                   //    | |   | |
+                   6, // | |   +-- Drop D(de_5, 6)
+                   //    | |     |
+                   1, // | +-- Drop D(de_1, 1)
+                   //    |       |
+                   0, // +-- Drop D(da_0, 0)
+                   //            |
+                   //            |                       result D(de_6, 7)
+                   7 //          +-- Drop D(de_6, 7)
+
+                       ]);
+}
+
+fn test<'a>(log: d::Log<'a>) {
+    let da = D::new("da", 0, log);
+    let de = D::new("de", 1, log);
+    d::println("calling foo");
+    let result = foo(da, de);
+    d::println(&format!("result {}", result));
+}
+
+fn foo<'a>(da0: D<'a>, de1: D<'a>) -> D<'a> {
+    d::println("entered foo");
+    let de2 = de1.incr();      // creates D(de_2, 2)
+    let de4 = {
+        let _da1 = da0.incr(); // creates D(da_1, 3)
+        de2.incr().incr()      // creates D(de_3, 4) and D(de_4, 5)
+    };
+    d::println("eval tail of foo");
+    de4.incr().incr()          // creates D(de_5, 6) and D(de_6, 7)
+}
+
+// This module provides simultaneous printouts of the dynamic extents
+// of all of the D values, in addition to logging the order that each
+// is dropped.
+
+const PREF_INDENT: u32 = 16;
+
+pub mod d {
+    #![allow(unused_parens)]
+    use std::fmt;
+    use std::mem;
+    use std::cell::RefCell;
+
+    static mut counter: u32 = 0;
+    static mut trails: u64 = 0;
+
+    pub type Log<'a> = &'a RefCell<Vec<u32>>;
+
+    pub fn current_width() -> u32 {
+        unsafe { max_width() - trails.leading_zeros() }
+    }
+
+    pub fn max_width() -> u32 {
+        unsafe {
+            (mem::size_of_val(&trails)*8) as u32
+        }
+    }
+
+    pub fn indent_println(my_trails: u32, s: &str) {
+        let mut indent: String = String::new();
+        for i in 0..my_trails {
+            unsafe {
+                if trails & (1 << i) != 0 {
+                    indent = indent + "| ";
+                } else {
+                    indent = indent + "  ";
+                }
+            }
+        }
+        println!("{}{}", indent, s);
+    }
+
+    pub fn println(s: &str) {
+        indent_println(super::PREF_INDENT, s);
+    }
+
+    fn first_avail() -> u32 {
+        unsafe {
+            for i in 0..64 {
+                if trails & (1 << i) == 0 {
+                    return i;
+                }
+            }
+        }
+        panic!("exhausted trails");
+    }
+
+    pub struct D<'a> {
+        name: &'static str, i: u32, uid: u32, trail: u32, log: Log<'a>
+    }
+
+    impl<'a> fmt::Display for D<'a> {
+        fn fmt(&self, w: &mut fmt::Formatter) -> fmt::Result {
+            write!(w, "D({}_{}, {})", self.name, self.i, self.uid)
+        }
+    }
+
+    impl<'a> D<'a> {
+        pub fn new(name: &'static str, i: u32, log: Log<'a>) -> D<'a> {
+            unsafe {
+                let trail = first_avail();
+                let ctr = counter;
+                counter += 1;
+                trails |= (1 << trail);
+                let ret = D {
+                    name: name, i: i, log: log, uid: ctr, trail: trail
+                };
+                indent_println(trail, &format!("+-- Make {}", ret));
+                ret
+            }
+        }
+        pub fn incr(&self) -> D<'a> {
+            D::new(self.name, self.i + 1, self.log)
+        }
+    }
+
+    impl<'a> Drop for D<'a> {
+        fn drop(&mut self) {
+            unsafe { trails &= !(1 << self.trail); };
+            self.log.borrow_mut().push(self.uid);
+            indent_println(self.trail, &format!("+-- Drop {}", self));
+            indent_println(::PREF_INDENT, "");
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-23338-params-outlive-temps-of-body.rs b/src/test/ui/issues/issue-23338-params-outlive-temps-of-body.rs
new file mode 100644
index 00000000000..d45aaa843fb
--- /dev/null
+++ b/src/test/ui/issues/issue-23338-params-outlive-temps-of-body.rs
@@ -0,0 +1,30 @@
+// run-pass
+// This is largely checking that we now accept code where temp values
+// are borrowing from the input parameters (the `foo` case below).
+//
+// Compare to run-pass/issue-23338-params-outlive-temps-of-body.rs
+//
+// (The `foo2` case is just for parity with the above test, which
+//  shows what happens when you move the `y`-binding to the inside of
+//  the inner block.)
+
+use std::cell::RefCell;
+
+fn foo(x: RefCell<String>) -> String {
+    x.borrow().clone()
+}
+
+fn foo2(x: RefCell<String>) -> String {
+    let y = x;
+    let ret = {
+        y.borrow().clone()
+    };
+    ret
+}
+
+pub fn main() {
+    let r = RefCell::new(format!("data"));
+    assert_eq!(foo(r), "data");
+    let r = RefCell::new(format!("data"));
+    assert_eq!(foo2(r), "data");
+}
diff --git a/src/test/ui/issues/issue-23433.rs b/src/test/ui/issues/issue-23433.rs
new file mode 100644
index 00000000000..d4fbbde62ff
--- /dev/null
+++ b/src/test/ui/issues/issue-23433.rs
@@ -0,0 +1,13 @@
+// run-pass
+// Don't fail if we encounter a NonNull<T> where T is an unsized type
+
+use std::ptr::NonNull;
+
+fn main() {
+    let mut a = [0u8; 5];
+    let b: Option<NonNull<[u8]>> = Some(NonNull::from(&mut a));
+    match b {
+        Some(_) => println!("Got `Some`"),
+        None => panic!("Unexpected `None`"),
+    }
+}
diff --git a/src/test/ui/issues/issue-23485.rs b/src/test/ui/issues/issue-23485.rs
new file mode 100644
index 00000000000..1dd3d9293bc
--- /dev/null
+++ b/src/test/ui/issues/issue-23485.rs
@@ -0,0 +1,50 @@
+// run-pass
+#![allow(unused_imports)]
+// Test for an ICE that occurred when a default method implementation
+// was applied to a type that did not meet the prerequisites. The
+// problem occurred specifically because normalizing
+// `Self::Item::Target` was impossible in this case.
+
+use std::boxed::Box;
+use std::marker::Sized;
+use std::clone::Clone;
+use std::ops::Deref;
+use std::option::Option;
+use std::option::Option::{Some,None};
+
+trait Iterator {
+    type Item;
+
+    fn next(&mut self) -> Option<Self::Item>;
+
+    fn clone_first(mut self) -> Option<<Self::Item as Deref>::Target> where
+        Self: Sized,
+        Self::Item: Deref,
+        <Self::Item as Deref>::Target: Clone,
+    {
+        self.next().map(|x| x.clone())
+    }
+}
+
+struct Counter {
+    value: i32
+}
+
+struct Token {
+    value: i32
+}
+
+impl Iterator for Counter {
+    type Item = Token;
+
+    fn next(&mut self) -> Option<Token> {
+        let x = self.value;
+        self.value += 1;
+        Some(Token { value: x })
+    }
+}
+
+fn main() {
+    let mut x: Box<dyn Iterator<Item=Token>> = Box::new(Counter { value: 22 });
+    assert_eq!(x.next().unwrap().value, 22);
+}
diff --git a/src/test/ui/issues/issue-23491.rs b/src/test/ui/issues/issue-23491.rs
new file mode 100644
index 00000000000..d2ded88aeff
--- /dev/null
+++ b/src/test/ui/issues/issue-23491.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(unused_variables)]
+#![feature(box_syntax)]
+
+struct Node<T: ?Sized>(T);
+
+fn main() {
+    let x: Box<Node<[isize]>> = box Node([]);
+}
diff --git a/src/test/ui/issues/issue-23611-enum-swap-in-drop.rs b/src/test/ui/issues/issue-23611-enum-swap-in-drop.rs
new file mode 100644
index 00000000000..6ef7fd42ec6
--- /dev/null
+++ b/src/test/ui/issues/issue-23611-enum-swap-in-drop.rs
@@ -0,0 +1,258 @@
+// run-pass
+#![allow(non_upper_case_globals)]
+
+// Issue 23611: this test is ensuring that, for an instance `X` of the
+// enum `E`, if you swap in a different variant during the execution
+// of the `<E as Drop>::drop`, then the appropriate substructure will
+// be torn down after the `<E as Drop>::drop` method returns.
+
+use std::cell::RefCell;
+use std::mem;
+
+use self::d::D;
+
+pub fn main() {
+    let log = RefCell::new(vec![]);
+    d::println("created empty log");
+    test(&log);
+
+    // println!("log: {:?}", &log.borrow()[..]);
+    assert_eq!(
+        &log.borrow()[..],
+        [
+            //                                         created empty log
+            // +-- Make D(test_1, 10000000)
+            // | +-- Make D(g_b_5, 50000001)
+            // | |                                     in g_B(b2b0) from E::drop, b=b4b0
+            // | +-- Drop D(g_b_5, 50000001)
+            50000001,
+            // |
+            // | +-- Make D(drop_6, 60000002)
+            // | | +-- Make D(g_b_5, 50000003)
+            // | | |                                   in g_B(b2b0) from E::drop, b=b4b1
+            // | | +-- Drop D(g_b_5, 50000003)
+            50000003,
+            // | |
+            // | | +-- Make D(GaspB::drop_3, 30000004)
+            // | | | +-- Make D(g_b_5, 50000005)
+            // | | | |                                 in g_B(b4b2) from GaspB::drop
+            // | | | +-- Drop D(g_b_5, 50000005)
+            50000005,
+            // | | |
+            // | | +-- Drop D(GaspB::drop_3, 30000004)
+            30000004,
+            // | |
+            // +-- Drop D(test_1, 10000000)
+            10000000,
+            //   |
+            // +-- Make D(GaspA::drop_2, 20000006)
+            // | | +-- Make D(f_a_4, 40000007)
+            // | | |                                   in f_A(a3a0) from GaspA::drop
+            // | | +-- Drop D(f_a_4, 40000007)
+            40000007,
+            // | |
+            // +-- Drop D(GaspA::drop_2, 20000006)
+            20000006,
+            //   |
+            //   +-- Drop D(drop_6, 60000002)
+            60000002
+            //
+                ]);
+
+    // For reference purposes, the old (incorrect) behavior would produce the following
+    // output, which you can compare to the above:
+    //
+    //                                             created empty log
+    // +-- Make D(test_1, 10000000)
+    // | +-- Make D(g_b_5, 50000001)
+    // | |                                     in g_B(b2b0) from E::drop, b=b4b0
+    // | +-- Drop D(g_b_5, 50000001)
+    // |
+    // | +-- Make D(drop_6, 60000002)
+    // | | +-- Make D(g_b_5, 50000003)
+    // | | |                                   in g_B(b2b0) from E::drop, b=b4b1
+    // | | +-- Drop D(g_b_5, 50000003)
+    // | |
+    // | | +-- Make D(GaspB::drop_3, 30000004)
+    // | | | +-- Make D(g_b_5, 50000005)
+    // | | | |                                 in g_B(b4b2) from GaspB::drop
+    // | | | +-- Drop D(g_b_5, 50000005)
+    // | | |
+    // | | +-- Drop D(GaspB::drop_3, 30000004)
+    // | |
+    // +-- Drop D(test_1, 10000000)
+    //   |
+    // +-- Make D(GaspB::drop_3, 30000006)
+    // | | +-- Make D(f_a_4, 40000007)
+    // | | |                                   in f_A(a3a0) from GaspB::drop
+    // | | +-- Drop D(f_a_4, 40000007)
+    // | |
+    // +-- Drop D(GaspB::drop_3, 30000006)
+    //   |
+    //   +-- Drop D(drop_6, 60000002)
+
+    // Note that this calls f_A from GaspB::drop (and thus creates a D
+    // with a uid incorporating the origin of GaspB's drop that
+    // surrounds the f_A invocation), but the code as written only
+    // ever hands f_A off to instances of GaspA, and thus one should
+    // be able to prove the invariant that f_A is *only* invoked from
+    // from an instance of GaspA (either via the GaspA drop
+    // implementation or the E drop implementaton). Yet the old (bad)
+    // behavior allowed a call to f_A to leak in while we are tearing
+    // down a value of type GaspB.
+}
+
+fn test<'a>(log: d::Log<'a>) {
+    let _e = E::B(GaspB(g_b, 0xB4B0, log, D::new("test", 1, log)), true);
+}
+
+struct GaspA<'a>(for <'b> fn(u32, &'b str, d::Log<'a>), u32, d::Log<'a>, d::D<'a>);
+struct GaspB<'a>(for <'b> fn(u32, &'b str, d::Log<'a>), u32, d::Log<'a>, d::D<'a>);
+
+impl<'a> Drop for GaspA<'a> {
+    fn drop(&mut self) {
+        let _d = d::D::new("GaspA::drop", 2, self.2);
+        (self.0)(self.1, "GaspA::drop", self.2);
+    }
+}
+
+impl<'a> Drop for GaspB<'a> {
+    fn drop(&mut self) {
+        let _d = d::D::new("GaspB::drop", 3, self.2);
+        (self.0)(self.1, "GaspB::drop", self.2);
+    }
+}
+
+enum E<'a> {
+    A(GaspA<'a>, bool), B(GaspB<'a>, bool),
+}
+
+fn f_a(x: u32, ctxt: &str, log: d::Log) {
+    let _d = d::D::new("f_a", 4, log);
+    d::println(&format!("in f_A({:x}) from {}", x, ctxt));
+}
+fn g_b(y: u32, ctxt: &str, log: d::Log) {
+    let _d = d::D::new("g_b", 5, log);
+    d::println(&format!("in g_B({:x}) from {}", y, ctxt));
+}
+
+impl<'a> Drop for E<'a> {
+    fn drop(&mut self) {
+        let (do_drop, log) = match *self {
+            E::A(GaspA(ref f, ref mut val_a, log, ref _d_a), ref mut do_drop) => {
+                f(0xA1A0, &format!("E::drop, a={:x}", val_a), log);
+                *val_a += 1;
+                // swap in do_drop := false to avoid infinite dtor regress
+                (mem::replace(do_drop, false), log)
+            }
+            E::B(GaspB(ref g, ref mut val_b, log, ref _d_b), ref mut do_drop) => {
+                g(0xB2B0, &format!("E::drop, b={:x}", val_b), log);
+                *val_b += 1;
+                // swap in do_drop := false to avoid infinite dtor regress
+                (mem::replace(do_drop, false), log)
+            }
+        };
+
+        if do_drop {
+            mem::replace(self, E::A(GaspA(f_a, 0xA3A0, log, D::new("drop", 6, log)), true));
+        }
+    }
+}
+
+// This module provides simultaneous printouts of the dynamic extents
+// of all of the D values, in addition to logging the order that each
+// is dropped.
+//
+// This code is similar to a support code module embedded within
+// test/run-pass/issue-123338-ensure-param-drop-order.rs; however,
+// that (slightly simpler) code only identifies objects in the log via
+// (creation) time-stamps; this incorporates both timestamping and the
+// point of origin within the source code into the unique ID (uid).
+
+const PREF_INDENT: u32 = 20;
+
+pub mod d {
+    #![allow(unused_parens)]
+    use std::fmt;
+    use std::mem;
+    use std::cell::RefCell;
+
+    static mut counter: u16 = 0;
+    static mut trails: u64 = 0;
+
+    pub type Log<'a> = &'a RefCell<Vec<u32>>;
+
+    pub fn current_width() -> u32 {
+        unsafe { max_width() - trails.leading_zeros() }
+    }
+
+    pub fn max_width() -> u32 {
+        unsafe {
+            (mem::size_of_val(&trails)*8) as u32
+        }
+    }
+
+    pub fn indent_println(my_trails: u32, s: &str) {
+        let mut indent: String = String::new();
+        for i in 0..my_trails {
+            unsafe {
+                if trails & (1 << i) != 0 {
+                    indent = indent + "| ";
+                } else {
+                    indent = indent + "  ";
+                }
+            }
+        }
+        println!("{}{}", indent, s);
+    }
+
+    pub fn println(s: &str) {
+        indent_println(super::PREF_INDENT, s);
+    }
+
+    fn first_avail() -> u32 {
+        unsafe {
+            for i in 0..64 {
+                if trails & (1 << i) == 0 {
+                    return i;
+                }
+            }
+        }
+        panic!("exhausted trails");
+    }
+
+    pub struct D<'a> {
+        name: &'static str, i: u8, uid: u32, trail: u32, log: Log<'a>
+    }
+
+    impl<'a> fmt::Display for D<'a> {
+        fn fmt(&self, w: &mut fmt::Formatter) -> fmt::Result {
+            write!(w, "D({}_{}, {})", self.name, self.i, self.uid)
+        }
+    }
+
+    impl<'a> D<'a> {
+        pub fn new(name: &'static str, i: u8, log: Log<'a>) -> D<'a> {
+            unsafe {
+                let trail = first_avail();
+                let ctr = ((i as u32) * 10_000_000) + (counter as u32);
+                counter += 1;
+                trails |= (1 << trail);
+                let ret = D {
+                    name: name, i: i, log: log, uid: ctr, trail: trail
+                };
+                indent_println(trail, &format!("+-- Make {}", ret));
+                ret
+            }
+        }
+    }
+
+    impl<'a> Drop for D<'a> {
+        fn drop(&mut self) {
+            unsafe { trails &= !(1 << self.trail); };
+            self.log.borrow_mut().push(self.uid);
+            indent_println(self.trail, &format!("+-- Drop {}", self));
+            indent_println(::PREF_INDENT, "");
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-23649-1.rs b/src/test/ui/issues/issue-23649-1.rs
new file mode 100644
index 00000000000..fc0c9a605fa
--- /dev/null
+++ b/src/test/ui/issues/issue-23649-1.rs
@@ -0,0 +1,12 @@
+// run-pass
+use std::mem;
+
+pub struct X([u8]);
+
+fn _f(x: &X) -> usize { match *x { X(ref x) =>  { x.len() } } }
+
+fn main() {
+    let b: &[u8] = &[11; 42];
+    let v: &X = unsafe { mem::transmute(b) };
+    assert_eq!(_f(v), 42);
+}
diff --git a/src/test/ui/issues/issue-23649-2.rs b/src/test/ui/issues/issue-23649-2.rs
new file mode 100644
index 00000000000..f5fb8b65020
--- /dev/null
+++ b/src/test/ui/issues/issue-23649-2.rs
@@ -0,0 +1,11 @@
+// run-pass
+// ignore-cloudabi no std::path
+
+use std::collections::HashMap;
+use std::path::{Path, PathBuf};
+
+fn main() {
+    let m: HashMap<PathBuf, ()> = HashMap::new();
+    let k = Path::new("foo");
+    println!("{:?}", m.get(k));
+}
diff --git a/src/test/ui/issues/issue-23699.rs b/src/test/ui/issues/issue-23699.rs
new file mode 100644
index 00000000000..952548837e4
--- /dev/null
+++ b/src/test/ui/issues/issue-23699.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![allow(unused_variables)]
+fn gimme_a_raw_pointer<T>(_: *const T) { }
+
+fn test<T>(t: T) { }
+
+fn main() {
+    // Clearly `pointer` must be of type `*const ()`.
+    let pointer = &() as *const _;
+    gimme_a_raw_pointer(pointer);
+
+    let t = test as fn (i32);
+    t(0i32);
+}
diff --git a/src/test/ui/issues/issue-23781.rs b/src/test/ui/issues/issue-23781.rs
new file mode 100644
index 00000000000..220ebdb1872
--- /dev/null
+++ b/src/test/ui/issues/issue-23781.rs
@@ -0,0 +1,29 @@
+// run-pass
+use std::fmt;
+
+struct Foo;
+impl fmt::Debug for Foo {
+    fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
+        println!("<Foo as Debug>::fmt()");
+
+        write!(fmt, "")
+    }
+}
+
+fn test1() {
+    let foo_str = format!("{:?}", Foo);
+
+    println!("{}", foo_str);
+}
+
+fn test2() {
+    println!("{:?}", Foo);
+}
+
+fn main() {
+    // This works fine
+    test1();
+
+    // This fails
+    test2();
+}
diff --git a/src/test/ui/issues/issue-2380-b.rs b/src/test/ui/issues/issue-2380-b.rs
new file mode 100644
index 00000000000..d708c7b4213
--- /dev/null
+++ b/src/test/ui/issues/issue-2380-b.rs
@@ -0,0 +1,10 @@
+// run-pass
+// aux-build:issue-2380.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate a;
+
+pub fn main() {
+    a::f::<()>();
+}
diff --git a/src/test/ui/issues/issue-23808.rs b/src/test/ui/issues/issue-23808.rs
new file mode 100644
index 00000000000..0988b09fce9
--- /dev/null
+++ b/src/test/ui/issues/issue-23808.rs
@@ -0,0 +1,59 @@
+// run-pass
+
+#![deny(dead_code)]
+
+// use different types / traits to test all combinations
+
+trait Const {
+    const C: ();
+}
+
+trait StaticFn {
+    fn sfn();
+}
+
+struct ConstStruct;
+struct StaticFnStruct;
+
+enum ConstEnum {}
+enum StaticFnEnum {}
+
+struct AliasedConstStruct;
+struct AliasedStaticFnStruct;
+
+enum AliasedConstEnum {}
+enum AliasedStaticFnEnum {}
+
+type AliasConstStruct    = AliasedConstStruct;
+type AliasStaticFnStruct = AliasedStaticFnStruct;
+type AliasConstEnum      = AliasedConstEnum;
+type AliasStaticFnEnum   = AliasedStaticFnEnum;
+
+macro_rules! impl_Const {($($T:ident),*) => {$(
+    impl Const for $T {
+        const C: () = ();
+    }
+)*}}
+
+macro_rules! impl_StaticFn {($($T:ident),*) => {$(
+    impl StaticFn for $T {
+        fn sfn() {}
+    }
+)*}}
+
+impl_Const!(ConstStruct, ConstEnum, AliasedConstStruct, AliasedConstEnum);
+impl_StaticFn!(StaticFnStruct, StaticFnEnum, AliasedStaticFnStruct, AliasedStaticFnEnum);
+
+fn main() {
+    let _ = ConstStruct::C;
+    let _ = ConstEnum::C;
+
+    StaticFnStruct::sfn();
+    StaticFnEnum::sfn();
+
+    let _ = AliasConstStruct::C;
+    let _ = AliasConstEnum::C;
+
+    AliasStaticFnStruct::sfn();
+    AliasStaticFnEnum::sfn();
+}
diff --git a/src/test/ui/issues/issue-23825.rs b/src/test/ui/issues/issue-23825.rs
new file mode 100644
index 00000000000..a9f0095d2e2
--- /dev/null
+++ b/src/test/ui/issues/issue-23825.rs
@@ -0,0 +1,21 @@
+// run-pass
+trait Stringify {
+    fn to_string(&self) -> String;
+}
+
+impl Stringify for u32 {
+    fn to_string(&self) -> String { format!("u32: {}", *self) }
+}
+
+impl Stringify for f32 {
+    fn to_string(&self) -> String { format!("f32: {}", *self) }
+}
+
+fn print<T: Stringify>(x: T) -> String {
+    x.to_string()
+}
+
+fn main() {
+    assert_eq!(&print(5), "u32: 5");
+    assert_eq!(&print(5.0), "f32: 5");
+}
diff --git a/src/test/ui/issues/issue-2383.rs b/src/test/ui/issues/issue-2383.rs
new file mode 100644
index 00000000000..06e61ce680b
--- /dev/null
+++ b/src/test/ui/issues/issue-2383.rs
@@ -0,0 +1,9 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+use std::collections::VecDeque;
+
+pub fn main() {
+    let mut q = VecDeque::new();
+    q.push_front(10);
+}
diff --git a/src/test/ui/issues/issue-23833.rs b/src/test/ui/issues/issue-23833.rs
new file mode 100644
index 00000000000..77dc5c50d7a
--- /dev/null
+++ b/src/test/ui/issues/issue-23833.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(unused_imports)]
+use std::fmt;
+use std::{i8, i16, i32, i64, isize};
+use std::{u8, u16, u32, u64, usize};
+
+const A_I8_T
+    : [u32; (i8::MAX as i8 - 1i8) as usize]
+    = [0; (i8::MAX as usize) - 1];
+
+fn main() {
+    foo(&A_I8_T[..]);
+}
+
+fn foo<T:fmt::Debug>(x: T) {
+    println!("{:?}", x);
+}
diff --git a/src/test/ui/issues/issue-23891.rs b/src/test/ui/issues/issue-23891.rs
new file mode 100644
index 00000000000..73467f715cb
--- /dev/null
+++ b/src/test/ui/issues/issue-23891.rs
@@ -0,0 +1,11 @@
+// run-pass
+macro_rules! id {
+    ($s: pat) => ($s);
+}
+
+fn main() {
+    match (Some(123), Some(456)) {
+        (id!(Some(a)), _) | (_, id!(Some(a))) => println!("{}", a),
+        _ => (),
+    }
+}
diff --git a/src/test/ui/issues/issue-23898.rs b/src/test/ui/issues/issue-23898.rs
new file mode 100644
index 00000000000..a8787f279b7
--- /dev/null
+++ b/src/test/ui/issues/issue-23898.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+// Note: This test was used to demonstrate #5873 (now #23898).
+
+enum State { ST_NULL, ST_WHITESPACE }
+
+fn main() {
+    [State::ST_NULL; (State::ST_WHITESPACE as usize)];
+}
diff --git a/src/test/ui/issues/issue-23958.rs b/src/test/ui/issues/issue-23958.rs
new file mode 100644
index 00000000000..7e90d758600
--- /dev/null
+++ b/src/test/ui/issues/issue-23958.rs
@@ -0,0 +1,13 @@
+// run-pass
+trait Collection where for<'a> &'a Self: IntoIterator {
+    fn my_iter(&self) -> <&Self as IntoIterator>::IntoIter {
+        self.into_iter()
+    }
+}
+
+impl<T> Collection for [T] { }
+
+fn main() {
+    let v = [0usize];
+    let _ = v.my_iter();
+}
diff --git a/src/test/ui/issues/issue-23968-const-not-overflow.rs b/src/test/ui/issues/issue-23968-const-not-overflow.rs
new file mode 100644
index 00000000000..b9593021235
--- /dev/null
+++ b/src/test/ui/issues/issue-23968-const-not-overflow.rs
@@ -0,0 +1,12 @@
+// run-pass
+const U8_MAX_HALF: u8 = !0u8 / 2;
+const U16_MAX_HALF: u16 = !0u16 / 2;
+const U32_MAX_HALF: u32 = !0u32 / 2;
+const U64_MAX_HALF: u64 = !0u64 / 2;
+
+fn main() {
+    assert_eq!(U8_MAX_HALF, 0x7f);
+    assert_eq!(U16_MAX_HALF, 0x7fff);
+    assert_eq!(U32_MAX_HALF, 0x7fff_ffff);
+    assert_eq!(U64_MAX_HALF, 0x7fff_ffff_ffff_ffff);
+}
diff --git a/src/test/ui/issues/issue-23992.rs b/src/test/ui/issues/issue-23992.rs
new file mode 100644
index 00000000000..1ff44bd7f2d
--- /dev/null
+++ b/src/test/ui/issues/issue-23992.rs
@@ -0,0 +1,19 @@
+// run-pass
+pub struct Outer<T: Trait>(T);
+pub struct Inner<'a> { value: &'a bool }
+
+pub trait Trait {
+    type Error;
+    fn ready(self) -> Self::Error;
+}
+
+impl<'a> Trait for Inner<'a> {
+    type Error = Outer<Inner<'a>>;
+    fn ready(self) -> Outer<Inner<'a>> { Outer(self) }
+}
+
+fn main() {
+    let value = true;
+    let inner = Inner { value: &value };
+    assert_eq!(inner.ready().0.value, &value);
+}
diff --git a/src/test/ui/issues/issue-24010.rs b/src/test/ui/issues/issue-24010.rs
new file mode 100644
index 00000000000..f1818533487
--- /dev/null
+++ b/src/test/ui/issues/issue-24010.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+trait Foo: Fn(i32) -> i32 + Send {}
+
+impl<T: ?Sized + Fn(i32) -> i32 + Send> Foo for T {}
+
+fn wants_foo(f: Box<dyn Foo>) -> i32 {
+    f(42)
+}
+
+fn main() {
+    let f = Box::new(|x| x);
+    assert_eq!(wants_foo(f), 42);
+}
diff --git a/src/test/ui/issues/issue-24086.rs b/src/test/ui/issues/issue-24086.rs
new file mode 100644
index 00000000000..54622afbcfc
--- /dev/null
+++ b/src/test/ui/issues/issue-24086.rs
@@ -0,0 +1,23 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_mut)]
+#![allow(unused_variables)]
+pub struct Registry<'a> {
+    listener: &'a mut (),
+}
+
+pub struct Listener<'a> {
+    pub announce: Option<Box<dyn FnMut(&mut Registry) + 'a>>,
+    pub remove: Option<Box<dyn FnMut(&mut Registry) + 'a>>,
+}
+
+impl<'a> Drop for Registry<'a> {
+    fn drop(&mut self) {}
+}
+
+fn main() {
+    let mut registry_listener = Listener {
+        announce: None,
+        remove: None,
+    };
+}
diff --git a/src/test/ui/issues/issue-2414-c.rs b/src/test/ui/issues/issue-2414-c.rs
new file mode 100644
index 00000000000..f6fe9798067
--- /dev/null
+++ b/src/test/ui/issues/issue-2414-c.rs
@@ -0,0 +1,9 @@
+// run-pass
+// aux-build:issue-2414-a.rs
+// aux-build:issue-2414-b.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate b;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-2428.rs b/src/test/ui/issues/issue-2428.rs
new file mode 100644
index 00000000000..94b830de3e6
--- /dev/null
+++ b/src/test/ui/issues/issue-2428.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![allow(non_upper_case_globals)]
+
+
+pub fn main() {
+    let _foo = 100;
+    const quux: isize = 5;
+
+    enum Stuff {
+        Bar = quux
+    }
+
+    assert_eq!(Stuff::Bar as isize, quux);
+}
diff --git a/src/test/ui/issues/issue-24308.rs b/src/test/ui/issues/issue-24308.rs
new file mode 100644
index 00000000000..9c39a5d2238
--- /dev/null
+++ b/src/test/ui/issues/issue-24308.rs
@@ -0,0 +1,17 @@
+// run-pass
+pub trait Foo {
+    fn method1() {}
+    fn method2();
+}
+
+struct Slice<'a, T: 'a>(&'a [T]);
+
+impl<'a, T: 'a> Foo for Slice<'a, T> {
+    fn method2() {
+        <Self as Foo>::method1();
+    }
+}
+
+fn main() {
+    <Slice<()> as Foo>::method2();
+}
diff --git a/src/test/ui/issues/issue-24313.rs b/src/test/ui/issues/issue-24313.rs
new file mode 100644
index 00000000000..2c420dc056f
--- /dev/null
+++ b/src/test/ui/issues/issue-24313.rs
@@ -0,0 +1,33 @@
+// run-pass
+// ignore-cloudabi no processes
+// ignore-emscripten no threads
+// ignore-sgx no processes
+
+use std::thread;
+use std::env;
+use std::process::Command;
+
+struct Handle(i32);
+
+impl Drop for Handle {
+    fn drop(&mut self) { panic!(); }
+}
+
+thread_local!(static HANDLE: Handle = Handle(0));
+
+fn main() {
+    let args = env::args().collect::<Vec<_>>();
+    if args.len() == 1 {
+        let out = Command::new(&args[0]).arg("test").output().unwrap();
+        let stderr = std::str::from_utf8(&out.stderr).unwrap();
+        assert!(stderr.contains("panicked at 'explicit panic'"),
+                "bad failure message:\n{}\n", stderr);
+    } else {
+        // TLS dtors are not always run on process exit
+        thread::spawn(|| {
+            HANDLE.with(|h| {
+                println!("{}", h.0);
+            });
+        }).join().unwrap();
+    }
+}
diff --git a/src/test/ui/issues/issue-24353.rs b/src/test/ui/issues/issue-24353.rs
new file mode 100644
index 00000000000..f78255b7e2b
--- /dev/null
+++ b/src/test/ui/issues/issue-24353.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![allow(unreachable_code)]
+fn main() {
+    return ();
+
+    let x = ();
+    x
+}
diff --git a/src/test/ui/issues/issue-2445-b.rs b/src/test/ui/issues/issue-2445-b.rs
new file mode 100644
index 00000000000..f369eae3af3
--- /dev/null
+++ b/src/test/ui/issues/issue-2445-b.rs
@@ -0,0 +1,31 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+// pretty-expanded FIXME #23616
+
+struct c1<T> {
+    x: T,
+}
+
+impl<T> c1<T> {
+    pub fn f1(&self, _x: isize) {
+    }
+}
+
+fn c1<T>(x: T) -> c1<T> {
+    c1 {
+        x: x
+    }
+}
+
+impl<T> c1<T> {
+    pub fn f2(&self, _x: isize) {
+    }
+}
+
+
+pub fn main() {
+    c1::<isize>(3).f1(4);
+    c1::<isize>(3).f2(4);
+}
diff --git a/src/test/ui/issues/issue-2445.rs b/src/test/ui/issues/issue-2445.rs
new file mode 100644
index 00000000000..5730ce16574
--- /dev/null
+++ b/src/test/ui/issues/issue-2445.rs
@@ -0,0 +1,29 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+// pretty-expanded FIXME #23616
+
+struct c1<T> {
+    x: T,
+}
+
+impl<T> c1<T> {
+    pub fn f1(&self, _x: T) {}
+}
+
+fn c1<T>(x: T) -> c1<T> {
+    c1 {
+        x: x
+    }
+}
+
+impl<T> c1<T> {
+    pub fn f2(&self, _x: T) {}
+}
+
+
+pub fn main() {
+    c1::<isize>(3).f1(4);
+    c1::<isize>(3).f2(4);
+}
diff --git a/src/test/ui/issues/issue-24533.rs b/src/test/ui/issues/issue-24533.rs
new file mode 100644
index 00000000000..8592bf43072
--- /dev/null
+++ b/src/test/ui/issues/issue-24533.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(unused_must_use)]
+use std::slice::Iter;
+use std::io::{Error, ErrorKind, Result};
+use std::vec::*;
+
+fn foo(it: &mut Iter<u8>) -> Result<u8> {
+    Ok(*it.next().unwrap())
+}
+
+fn bar() -> Result<u8> {
+    let data: Vec<u8> = Vec::new();
+
+    if true {
+        return Err(Error::new(ErrorKind::NotFound, "msg"));
+    }
+
+    let mut it = data.iter();
+    foo(&mut it)
+}
+
+fn main() {
+    bar();
+}
diff --git a/src/test/ui/issues/issue-24535-allow-mutable-borrow-in-match-guard.rs b/src/test/ui/issues/issue-24535-allow-mutable-borrow-in-match-guard.rs
new file mode 100644
index 00000000000..48362d0bb62
--- /dev/null
+++ b/src/test/ui/issues/issue-24535-allow-mutable-borrow-in-match-guard.rs
@@ -0,0 +1,57 @@
+// run-pass
+// This test illustrates that under NLL, we can remove our overly
+// conservative approach for disallowing mutations of match inputs.
+
+// See further discussion on rust-lang/rust#24535,
+// rust-lang/rfcs#1006, and rust-lang/rfcs#107
+
+#![feature(bind_by_move_pattern_guards)]
+
+fn main() {
+    rust_issue_24535();
+    rfcs_issue_1006_1();
+    rfcs_issue_1006_2();
+}
+
+fn rust_issue_24535() {
+    fn compare(a: &u8, b: &mut u8) -> bool {
+        a == b
+    }
+
+    let a = 3u8;
+
+    match a {
+        0 => panic!("nope"),
+        3 if compare(&a, &mut 3) => (),
+        _ => panic!("nope"),
+    }
+}
+
+fn rfcs_issue_1006_1() {
+    let v = vec!["1".to_string(), "2".to_string(), "3".to_string()];
+    match Some(&v) {
+        Some(iv) if iv.iter().any(|x| &x[..]=="2") => true,
+        _ => panic!("nope"),
+    };
+}
+
+fn rfcs_issue_1006_2() {
+    #[inline(always)]
+    fn check<'a, I: Iterator<Item=&'a i32>>(mut i: I) -> bool {
+        i.any(|&x| x == 2)
+    }
+
+    let slice = [1, 2, 3];
+
+    match 42 {
+        _ if slice.iter().any(|&x| x == 2) => { true },
+        _ => { panic!("nope"); }
+    };
+
+    // (This match is just illustrating how easy it was to circumvent
+    // the checking performed for the previous `match`.)
+    match 42 {
+        _ if check(slice.iter()) => { true },
+        _ => { panic!("nope"); }
+    };
+}
diff --git a/src/test/ui/issues/issue-24589.rs b/src/test/ui/issues/issue-24589.rs
new file mode 100644
index 00000000000..6b03e14f961
--- /dev/null
+++ b/src/test/ui/issues/issue-24589.rs
@@ -0,0 +1,17 @@
+// run-pass
+pub struct _X([u8]);
+
+impl std::ops::Deref for _X {
+    type Target = [u8];
+
+    fn deref(&self) -> &[u8] {
+        &self.0
+    }
+}
+
+pub fn _g(x: &_X) -> &[u8] {
+    x
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-2463.rs b/src/test/ui/issues/issue-2463.rs
new file mode 100644
index 00000000000..d24a47c53d9
--- /dev/null
+++ b/src/test/ui/issues/issue-2463.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+struct Pair { f: isize, g: isize }
+
+pub fn main() {
+
+    let x = Pair {
+        f: 0,
+        g: 0,
+    };
+
+    let _y = Pair {
+        f: 1,
+        g: 1,
+        .. x
+    };
+
+    let _z = Pair {
+        f: 1,
+        .. x
+    };
+
+}
diff --git a/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs b/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs
new file mode 100644
index 00000000000..5b1b1389ceb
--- /dev/null
+++ b/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-lib.rs
@@ -0,0 +1,10 @@
+#![crate_type="lib"]
+
+// This is a file that pulls in a separate file as a submodule, where
+// that separate file has many multi-byte characters, to try to
+// encourage the compiler to trip on them.
+
+#[path = "issue-24687-mbcs-in-comments.rs"]
+mod issue_24687_mbcs_in_comments;
+
+pub use issue_24687_mbcs_in_comments::D;
diff --git a/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs b/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs
new file mode 100644
index 00000000000..215145a64b1
--- /dev/null
+++ b/src/test/ui/issues/issue-24687-embed-debuginfo/auxiliary/issue-24687-mbcs-in-comments.rs
@@ -0,0 +1,27 @@
+use std::fmt;
+
+// This ia file with many multi-byte characters, to try to encourage
+// the compiler to trip on them.  The Drop implementation below will
+// need to have its source location embedded into the debug info for
+// the output file.
+
+// αααααααααααααααααααααααααααααααααααααααααααααααααααααααααααααααααααααα
+// ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
+// γγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγγ
+// δδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδδ
+// εεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεεε
+
+// ζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζζ
+// ηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηηη
+// θθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθθ
+// ιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιιι
+// κκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκκ
+
+pub struct D<X:fmt::Debug>(pub X);
+
+impl<X:fmt::Debug> Drop for D<X> {
+    fn drop(&mut self) {
+        // λλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλλ
+        println!("Dropping D({:?})", self.0);
+    }
+}
diff --git a/src/test/ui/issues/issue-24687-embed-debuginfo/main.rs b/src/test/ui/issues/issue-24687-embed-debuginfo/main.rs
new file mode 100644
index 00000000000..773792c7a3f
--- /dev/null
+++ b/src/test/ui/issues/issue-24687-embed-debuginfo/main.rs
@@ -0,0 +1,13 @@
+// run-pass
+// aux-build:issue-24687-lib.rs
+// compile-flags:-g
+
+extern crate issue_24687_lib as d;
+
+fn main() {
+    // Create a `D`, which has a destructor whose body will be codegen'ed
+    // into the generated code here, and thus the local debuginfo will
+    // need references into the original source locations from
+    // `importer` above.
+    let _d = d::D("Hi");
+}
diff --git a/src/test/ui/issues/issue-2472.rs b/src/test/ui/issues/issue-2472.rs
new file mode 100644
index 00000000000..c790bc2d095
--- /dev/null
+++ b/src/test/ui/issues/issue-2472.rs
@@ -0,0 +1,14 @@
+// run-pass
+// aux-build:issue-2472-b.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_2472_b;
+
+use issue_2472_b::{S, T};
+
+pub fn main() {
+    let s = S(());
+    s.foo();
+    s.bar();
+}
diff --git a/src/test/ui/issues/issue-24779.rs b/src/test/ui/issues/issue-24779.rs
new file mode 100644
index 00000000000..f1283d0dcf5
--- /dev/null
+++ b/src/test/ui/issues/issue-24779.rs
@@ -0,0 +1,4 @@
+// run-pass
+fn main() {
+    assert_eq!((||||42)()(), 42);
+}
diff --git a/src/test/ui/issues/issue-24805-dropck-itemless.rs b/src/test/ui/issues/issue-24805-dropck-itemless.rs
new file mode 100644
index 00000000000..555eefeb3a1
--- /dev/null
+++ b/src/test/ui/issues/issue-24805-dropck-itemless.rs
@@ -0,0 +1,77 @@
+// run-pass
+
+// Check that item-less traits do not cause dropck to inject extra
+// region constraints.
+
+#![allow(non_camel_case_types)]
+
+#![feature(dropck_eyepatch)]
+
+trait UserDefined { }
+
+impl UserDefined for i32 { }
+impl<'a, T> UserDefined for &'a T { }
+
+// e.g., `impl_drop!(Send, D_Send)` expands to:
+//   ```rust
+//   struct D_Send<T:Send>(T);
+//   impl<T:Send> Drop for D_Send<T> { fn drop(&mut self) { } }
+//   ```
+macro_rules! impl_drop {
+    ($Bound:ident, $Id:ident) => {
+        struct $Id<T: $Bound>(T);
+        unsafe impl <#[may_dangle] T: $Bound> Drop for $Id<T> {
+            fn drop(&mut self) { }
+        }
+    }
+}
+
+impl_drop!{Send,         D_Send}
+impl_drop!{Sized,        D_Sized}
+
+// See note below regarding Issue 24895
+// impl_drop!{Copy,         D_Copy}
+
+impl_drop!{Sync,         D_Sync}
+impl_drop!{UserDefined,  D_UserDefined}
+
+macro_rules! body {
+    ($id:ident) => { {
+        // `_d` and `d1` are assigned the *same* lifetime by region inference ...
+        let (_d, d1);
+
+        d1 = $id(1);
+        // ... we store a reference to `d1` within `_d` ...
+        _d = $id(&d1);
+
+        // ... a *conservative* dropck will thus complain, because it
+        // thinks Drop of _d could access the already dropped `d1`.
+    } }
+}
+
+fn f_send() { body!(D_Send) }
+fn f_sized() { body!(D_Sized) }
+fn f_sync() { body!(D_Sync) }
+
+// Issue 24895: Copy: Clone implies `impl<T:Copy> Drop for ...` can
+// access a user-defined clone() method, which causes this test case
+// to fail.
+//
+// If 24895 is resolved by removing the `Copy: Clone` relationship,
+// then this definition and the call below should be uncommented. If
+// it is resolved by deciding to keep the `Copy: Clone` relationship,
+// then this comment and the associated bits of code can all be
+// removed.
+
+// fn f_copy() { body!(D_Copy) }
+
+fn f_userdefined() { body!(D_UserDefined) }
+
+fn main() {
+    f_send();
+    f_sized();
+    // See note above regarding Issue 24895.
+    // f_copy();
+    f_sync();
+    f_userdefined();
+}
diff --git a/src/test/ui/issues/issue-24945-repeat-dash-opts.rs b/src/test/ui/issues/issue-24945-repeat-dash-opts.rs
new file mode 100644
index 00000000000..cf3834952c6
--- /dev/null
+++ b/src/test/ui/issues/issue-24945-repeat-dash-opts.rs
@@ -0,0 +1,9 @@
+// run-pass
+// This test is just checking that we continue to accept `-g -g -O -O`
+// as options to the compiler.
+
+// compile-flags:-g -g -O -O
+
+fn main() {
+    assert_eq!(1, 1);
+}
diff --git a/src/test/ui/issues/issue-24947.rs b/src/test/ui/issues/issue-24947.rs
new file mode 100644
index 00000000000..23705b4c9e7
--- /dev/null
+++ b/src/test/ui/issues/issue-24947.rs
@@ -0,0 +1,25 @@
+// run-pass
+// #24947 ICE using a trait-associated const in an array size
+
+
+struct Foo;
+
+impl Foo {
+    const SIZE: usize = 8;
+}
+
+trait Bar {
+    const BAR_SIZE: usize;
+}
+
+impl Bar for Foo {
+    const BAR_SIZE: usize = 12;
+}
+
+#[allow(unused_variables)]
+fn main() {
+    let w: [u8; 12] = [0u8; <Foo as Bar>::BAR_SIZE];
+    let x: [u8; 12] = [0u8; <Foo>::BAR_SIZE];
+    let y: [u8; 8] = [0u8; <Foo>::SIZE];
+    let z: [u8; 8] = [0u8; Foo::SIZE];
+}
diff --git a/src/test/ui/issues/issue-24954.rs b/src/test/ui/issues/issue-24954.rs
new file mode 100644
index 00000000000..0177dd4eae5
--- /dev/null
+++ b/src/test/ui/issues/issue-24954.rs
@@ -0,0 +1,13 @@
+// run-pass
+macro_rules! foo {
+    ($y:expr) => ({
+        $y = 2;
+    })
+}
+
+#[allow(unused_variables)]
+#[allow(unused_assignments)]
+fn main() {
+    let mut x = 1;
+    foo!(x);
+}
diff --git a/src/test/ui/issues/issue-25089.rs b/src/test/ui/issues/issue-25089.rs
new file mode 100644
index 00000000000..cf261d43c55
--- /dev/null
+++ b/src/test/ui/issues/issue-25089.rs
@@ -0,0 +1,33 @@
+// run-pass
+// ignore-emscripten no threads support
+
+use std::thread;
+
+struct Foo(i32);
+
+impl Drop for Foo {
+    fn drop(&mut self) {
+        static mut DROPPED: bool = false;
+        unsafe {
+            assert!(!DROPPED);
+            DROPPED = true;
+        }
+    }
+}
+
+struct Empty;
+
+fn empty() -> Empty { Empty }
+
+fn should_panic(_: Foo, _: Empty) {
+    panic!("test panic");
+}
+
+fn test() {
+    should_panic(Foo(1), empty());
+}
+
+fn main() {
+    let ret = thread::spawn(test).join();
+    assert!(ret.is_err());
+}
diff --git a/src/test/ui/issues/issue-25145.rs b/src/test/ui/issues/issue-25145.rs
new file mode 100644
index 00000000000..f5ae28fbbab
--- /dev/null
+++ b/src/test/ui/issues/issue-25145.rs
@@ -0,0 +1,13 @@
+// run-pass
+
+struct S;
+
+impl S {
+    const N: usize = 3;
+}
+
+static STUFF: [u8; S::N] = [0; S::N];
+
+fn main() {
+    assert_eq!(STUFF, [0; 3]);
+}
diff --git a/src/test/ui/issues/issue-25185.rs b/src/test/ui/issues/issue-25185.rs
new file mode 100644
index 00000000000..383c9a1e9c4
--- /dev/null
+++ b/src/test/ui/issues/issue-25185.rs
@@ -0,0 +1,13 @@
+// run-pass
+// aux-build:issue-25185-1.rs
+// aux-build:issue-25185-2.rs
+// ignore-wasm32-bare no libc for ffi testing
+
+extern crate issue_25185_2;
+
+fn main() {
+    let x = unsafe {
+        issue_25185_2::rust_dbg_extern_identity_u32(1)
+    };
+    assert_eq!(x, 1);
+}
diff --git a/src/test/ui/issues/issue-2526-a.rs b/src/test/ui/issues/issue-2526-a.rs
new file mode 100644
index 00000000000..f3fdc0bd377
--- /dev/null
+++ b/src/test/ui/issues/issue-2526-a.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-2526.rs
+
+// pretty-expanded FIXME #23616
+
+#![allow(unused_imports)]
+
+extern crate issue_2526;
+use issue_2526::*;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-25279.rs b/src/test/ui/issues/issue-25279.rs
new file mode 100644
index 00000000000..fdc516d3761
--- /dev/null
+++ b/src/test/ui/issues/issue-25279.rs
@@ -0,0 +1,16 @@
+// run-pass
+struct S<'a>(&'a ());
+
+impl<'a> S<'a> {
+    fn foo(self) -> &'a () {
+        <Self>::bar(self)
+    }
+
+    fn bar(self) -> &'a () {
+        self.0
+    }
+}
+
+fn main() {
+    S(&()).foo();
+}
diff --git a/src/test/ui/issues/issue-25339.rs b/src/test/ui/issues/issue-25339.rs
new file mode 100644
index 00000000000..6f8ec700951
--- /dev/null
+++ b/src/test/ui/issues/issue-25339.rs
@@ -0,0 +1,31 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![feature(associated_type_defaults)]
+
+use std::marker::PhantomData;
+
+pub trait Routing<I> {
+    type Output;
+    fn resolve(&self, input: I);
+}
+
+pub trait ToRouting {
+    type Input;
+    type Routing : ?Sized = dyn Routing<Self::Input, Output=()>;
+    fn to_routing(self) -> Self::Routing;
+}
+
+pub struct Mount<I, R: Routing<I>> {
+    action: R,
+    _marker: PhantomData<I>
+}
+
+impl<I, R: Routing<I>> Mount<I, R> {
+    pub fn create<T: ToRouting<Routing=R>>(mount: &str, input: T) {
+        input.to_routing();
+    }
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-25343.rs b/src/test/ui/issues/issue-25343.rs
new file mode 100644
index 00000000000..95a0bd9155d
--- /dev/null
+++ b/src/test/ui/issues/issue-25343.rs
@@ -0,0 +1,22 @@
+// run-pass
+#[allow(unused)]
+fn main() {
+    || {
+        'label: loop {
+        }
+    };
+
+    // More cases added from issue 31754
+
+    'label2: loop {
+        break;
+    }
+
+    let closure = || {
+        'label2: loop {}
+    };
+
+    fn inner_fn() {
+        'label2: loop {}
+    }
+}
diff --git a/src/test/ui/issues/issue-25467.rs b/src/test/ui/issues/issue-25467.rs
new file mode 100644
index 00000000000..31ac5f0f34b
--- /dev/null
+++ b/src/test/ui/issues/issue-25467.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(unused_variables)]
+// aux-build:issue-25467.rs
+
+pub type Issue25467BarT = ();
+pub type Issue25467FooT = ();
+
+extern crate issue_25467 as aux;
+
+fn main() {
+    let o: aux::Object = None;
+}
diff --git a/src/test/ui/issues/issue-25497.rs b/src/test/ui/issues/issue-25497.rs
new file mode 100644
index 00000000000..25f5ab90f7f
--- /dev/null
+++ b/src/test/ui/issues/issue-25497.rs
@@ -0,0 +1,19 @@
+// run-pass
+#[derive(Clone, Debug, PartialEq)]
+enum Expression {
+    Dummy,
+    Add(Box<Expression>),
+}
+
+use Expression::*;
+
+fn simplify(exp: Expression) -> Expression {
+    match exp {
+        Add(n) => *n.clone(),
+        _ => Dummy
+    }
+}
+
+fn main() {
+    assert_eq!(simplify(Add(Box::new(Dummy))), Dummy);
+}
diff --git a/src/test/ui/issues/issue-2550.rs b/src/test/ui/issues/issue-2550.rs
new file mode 100644
index 00000000000..04ec66b80d7
--- /dev/null
+++ b/src/test/ui/issues/issue-2550.rs
@@ -0,0 +1,22 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_snake_case)]
+
+// pretty-expanded FIXME #23616
+
+struct C {
+    x: usize,
+}
+
+fn C(x: usize) -> C {
+    C {
+        x: x
+    }
+}
+
+fn f<T>(_x: T) {
+}
+
+pub fn main() {
+    f(C(1));
+}
diff --git a/src/test/ui/issues/issue-25515.rs b/src/test/ui/issues/issue-25515.rs
new file mode 100644
index 00000000000..e7b9ea3acfc
--- /dev/null
+++ b/src/test/ui/issues/issue-25515.rs
@@ -0,0 +1,20 @@
+// run-pass
+use std::rc::Rc;
+
+struct Foo<'r>(&'r mut i32);
+
+impl<'r> Drop for Foo<'r> {
+    fn drop(&mut self) {
+        *self.0 += 1;
+    }
+}
+
+fn main() {
+    let mut drops = 0;
+
+    {
+        let _: Rc<dyn Send> = Rc::new(Foo(&mut drops));
+    }
+
+    assert_eq!(1, drops);
+}
diff --git a/src/test/ui/issues/issue-25549-multiple-drop.rs b/src/test/ui/issues/issue-25549-multiple-drop.rs
new file mode 100644
index 00000000000..25a2da707dc
--- /dev/null
+++ b/src/test/ui/issues/issue-25549-multiple-drop.rs
@@ -0,0 +1,33 @@
+// run-pass
+#![allow(unused_variables)]
+struct Foo<'r>(&'r mut i32);
+
+impl<'r> Drop for Foo<'r> {
+    fn drop(&mut self) {
+        *self.0 += 1;
+    }
+}
+
+trait Trait {}
+impl<'r> Trait for Foo<'r> {}
+
+struct Holder<T: ?Sized>(T);
+
+fn main() {
+    let mut drops = 0;
+
+    {
+        let y = &Holder([Foo(&mut drops)]) as &Holder<[Foo]>;
+        // this used to cause an extra drop of the Foo instance
+        let x = &y.0;
+    }
+    assert_eq!(1, drops);
+
+    drops = 0;
+    {
+        let y = &Holder(Foo(&mut drops)) as &Holder<dyn Trait>;
+        // this used to cause an extra drop of the Foo instance
+        let x = &y.0;
+    }
+    assert_eq!(1, drops);
+}
diff --git a/src/test/ui/issues/issue-25679.rs b/src/test/ui/issues/issue-25679.rs
new file mode 100644
index 00000000000..89544c9eb88
--- /dev/null
+++ b/src/test/ui/issues/issue-25679.rs
@@ -0,0 +1,19 @@
+// run-pass
+trait Device {
+    type Resources;
+}
+struct Foo<D, R>(D, R);
+
+impl<D: Device> Foo<D, D::Resources> {
+    fn present(&self) {}
+}
+
+struct Res;
+struct Dev;
+
+impl Device for Dev { type Resources = Res; }
+
+fn main() {
+    let foo = Foo(Dev, Res);
+    foo.present();
+}
diff --git a/src/test/ui/issues/issue-25693.rs b/src/test/ui/issues/issue-25693.rs
new file mode 100644
index 00000000000..9af0ba100e8
--- /dev/null
+++ b/src/test/ui/issues/issue-25693.rs
@@ -0,0 +1,22 @@
+// run-pass
+#![allow(unused_variables)]
+pub trait Parameters { type SelfRef; }
+
+struct RP<'a> { _marker: std::marker::PhantomData<&'a ()> }
+struct BP;
+
+impl<'a> Parameters for RP<'a> { type SelfRef = &'a X<RP<'a>>; }
+impl Parameters for BP { type SelfRef = Box<X<BP>>; }
+
+pub struct Y;
+pub enum X<P: Parameters> {
+    Nothing,
+    SameAgain(P::SelfRef, Y)
+}
+
+fn main() {
+    let bnil: Box<X<BP>> = Box::new(X::Nothing);
+    let bx: Box<X<BP>> = Box::new(X::SameAgain(bnil, Y));
+    let rnil: X<RP> = X::Nothing;
+    let rx: X<RP> = X::SameAgain(&rnil, Y);
+}
diff --git a/src/test/ui/issues/issue-25700-1.rs b/src/test/ui/issues/issue-25700-1.rs
new file mode 100644
index 00000000000..7bc9673a5be
--- /dev/null
+++ b/src/test/ui/issues/issue-25700-1.rs
@@ -0,0 +1,13 @@
+// run-pass
+struct S<T: 'static>(Option<&'static T>);
+
+trait Tr { type Out; }
+impl<T> Tr for T { type Out = T; }
+
+impl<T: 'static> Copy for S<T> where S<T>: Tr<Out=T> {}
+impl<T: 'static> Clone for S<T> where S<T>: Tr<Out=T> {
+    fn clone(&self) -> Self { *self }
+}
+fn main() {
+    S::<()>(None);
+}
diff --git a/src/test/ui/issues/issue-25700-2.rs b/src/test/ui/issues/issue-25700-2.rs
new file mode 100644
index 00000000000..b161e68abaf
--- /dev/null
+++ b/src/test/ui/issues/issue-25700-2.rs
@@ -0,0 +1,22 @@
+// run-pass
+pub trait Parser {
+    type Input;
+}
+
+pub struct Iter<P: Parser>(P, P::Input);
+
+pub struct Map<P, F>(P, F);
+impl<P, F> Parser for Map<P, F> where F: FnMut(P) {
+    type Input = u8;
+}
+
+trait AstId { type Untyped; }
+impl AstId for u32 { type Untyped = u32; }
+
+fn record_type<Id: AstId>(i: Id::Untyped) -> u8 {
+    Iter(Map(i, |_: Id::Untyped| {}), 42).1
+}
+
+pub fn main() {
+    assert_eq!(record_type::<u32>(3), 42);
+}
diff --git a/src/test/ui/issues/issue-25746-bool-transmute.rs b/src/test/ui/issues/issue-25746-bool-transmute.rs
new file mode 100644
index 00000000000..bc2f4a7c1b7
--- /dev/null
+++ b/src/test/ui/issues/issue-25746-bool-transmute.rs
@@ -0,0 +1,11 @@
+// run-pass
+use std::mem::transmute;
+
+fn main() {
+    unsafe {
+        let _: i8 = transmute(false);
+        let _: i8 = transmute(true);
+        let _: bool = transmute(0u8);
+        let _: bool = transmute(1u8);
+    }
+}
diff --git a/src/test/ui/issues/issue-25757.rs b/src/test/ui/issues/issue-25757.rs
new file mode 100644
index 00000000000..ec1864d7deb
--- /dev/null
+++ b/src/test/ui/issues/issue-25757.rs
@@ -0,0 +1,18 @@
+// run-pass
+struct Foo {
+    a: u32
+}
+
+impl Foo {
+    fn x(&mut self) {
+        self.a = 5;
+    }
+}
+
+const FUNC: &'static dyn Fn(&mut Foo) -> () = &Foo::x;
+
+fn main() {
+    let mut foo = Foo { a: 137 };
+    FUNC(&mut foo);
+    assert_eq!(foo.a, 5);
+}
diff --git a/src/test/ui/issues/issue-25810.rs b/src/test/ui/issues/issue-25810.rs
new file mode 100644
index 00000000000..f32216f3254
--- /dev/null
+++ b/src/test/ui/issues/issue-25810.rs
@@ -0,0 +1,28 @@
+// run-pass
+fn main() {
+    let x = X(15);
+    let y = x.foo();
+    println!("{:?}",y);
+}
+
+trait Foo
+    where for<'a> &'a Self: Bar
+{
+    fn foo<'a>(&'a self) -> <&'a Self as Bar>::Output;
+}
+
+trait Bar {
+    type Output;
+}
+
+struct X(i32);
+
+impl<'a> Bar for &'a X {
+    type Output = &'a i32;
+}
+
+impl Foo for X {
+    fn foo<'a>(&'a self) -> <&'a Self as Bar>::Output {
+        &self.0
+    }
+}
diff --git a/src/test/ui/issues/issue-25916.rs b/src/test/ui/issues/issue-25916.rs
new file mode 100644
index 00000000000..0b415947965
--- /dev/null
+++ b/src/test/ui/issues/issue-25916.rs
@@ -0,0 +1,28 @@
+// run-pass
+#![allow(unused_must_use)]
+
+fn main() {
+    macro_rules! f {
+        () => { 0 + 0 }
+    }
+    // 16 per line
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+    f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();f!();
+}
diff --git a/src/test/ui/issues/issue-26127.rs b/src/test/ui/issues/issue-26127.rs
new file mode 100644
index 00000000000..cb479a23085
--- /dev/null
+++ b/src/test/ui/issues/issue-26127.rs
@@ -0,0 +1,12 @@
+// run-pass
+trait Tr { type T; }
+impl Tr for u8 { type T=(); }
+struct S<I: Tr>(I::T);
+
+fn foo<I: Tr>(i: I::T) {
+    S::<I>(i);
+}
+
+fn main() {
+    foo::<u8>(());
+}
diff --git a/src/test/ui/issues/issue-26251.rs b/src/test/ui/issues/issue-26251.rs
new file mode 100644
index 00000000000..0434ef9e5a9
--- /dev/null
+++ b/src/test/ui/issues/issue-26251.rs
@@ -0,0 +1,13 @@
+// run-pass
+fn main() {
+    let x = 'a';
+
+    let y = match x {
+        'a'..='b' if false => "one",
+        'a' => "two",
+        'a'..='b' => "three",
+        _ => panic!("what?"),
+    };
+
+    assert_eq!(y, "two");
+}
diff --git a/src/test/ui/issues/issue-2631-b.rs b/src/test/ui/issues/issue-2631-b.rs
new file mode 100644
index 00000000000..c7f6728e3f2
--- /dev/null
+++ b/src/test/ui/issues/issue-2631-b.rs
@@ -0,0 +1,17 @@
+// run-pass
+
+// aux-build:issue-2631-a.rs
+
+extern crate req;
+
+use req::request;
+use std::cell::RefCell;
+use std::collections::HashMap;
+use std::rc::Rc;
+
+pub fn main() {
+  let v = vec![Rc::new("hi".to_string())];
+  let mut m: req::header_map = HashMap::new();
+  m.insert("METHOD".to_string(), Rc::new(RefCell::new(v)));
+  request::<isize>(&m);
+}
diff --git a/src/test/ui/issues/issue-26322.rs b/src/test/ui/issues/issue-26322.rs
new file mode 100644
index 00000000000..c1dc80eb7c5
--- /dev/null
+++ b/src/test/ui/issues/issue-26322.rs
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+
+macro_rules! columnline {
+    () => (
+        (column!(), line!())
+    )
+}
+
+macro_rules! indirectcolumnline {
+    () => (
+        (||{ columnline!() })()
+    )
+}
+
+fn main() {
+    let closure = || {
+        columnline!()
+    };
+    let iflet = if let Some(_) = Some(0) {
+        columnline!()
+    } else { (0, 0) };
+    let cl = columnline!();
+    assert_eq!(closure(), (9, 19));
+    assert_eq!(iflet, (9, 22));
+    assert_eq!(cl, (14, 24));
+    let indirect = indirectcolumnline!();
+    assert_eq!(indirect, (20, 28));
+}
diff --git a/src/test/ui/issues/issue-2633-2.rs b/src/test/ui/issues/issue-2633-2.rs
new file mode 100644
index 00000000000..02c1a166301
--- /dev/null
+++ b/src/test/ui/issues/issue-2633-2.rs
@@ -0,0 +1,14 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+
+fn a_val(x: Box<isize>, y: Box<isize>) -> isize {
+    *x + *y
+}
+
+pub fn main() {
+    let z: Box<_> = box 22;
+    a_val(z.clone(), z.clone());
+}
diff --git a/src/test/ui/issues/issue-2633.rs b/src/test/ui/issues/issue-2633.rs
new file mode 100644
index 00000000000..7e8cea75fc8
--- /dev/null
+++ b/src/test/ui/issues/issue-2633.rs
@@ -0,0 +1,31 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+#[derive(Copy, Clone)]
+struct cat {
+    meow: extern "Rust" fn(),
+}
+
+fn meow() {
+    println!("meow")
+}
+
+fn cat() -> cat {
+    cat {
+        meow: meow,
+    }
+}
+
+#[derive(Copy, Clone)]
+struct KittyInfo {kitty: cat}
+
+// Code compiles and runs successfully if we add a + before the first arg
+fn nyan(kitty: cat, _kitty_info: KittyInfo) {
+    (kitty.meow)();
+}
+
+pub fn main() {
+    let kitty = cat();
+    nyan(kitty, KittyInfo {kitty: kitty});
+}
diff --git a/src/test/ui/issues/issue-2642.rs b/src/test/ui/issues/issue-2642.rs
new file mode 100644
index 00000000000..95c5632258e
--- /dev/null
+++ b/src/test/ui/issues/issue-2642.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+fn f() {
+   let _x: usize = loop { loop { break; } };
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-26468.rs b/src/test/ui/issues/issue-26468.rs
new file mode 100644
index 00000000000..71cc90e8bd1
--- /dev/null
+++ b/src/test/ui/issues/issue-26468.rs
@@ -0,0 +1,29 @@
+// run-pass
+#![allow(dead_code)]
+
+enum FooMode {
+    Check = 0x1001,
+}
+
+enum BarMode {
+    Check = 0x2001,
+}
+
+enum Mode {
+    Foo(FooMode),
+    Bar(BarMode),
+}
+
+#[inline(never)]
+fn broken(mode: &Mode) -> u32 {
+    for _ in 0..1 {
+        if let Mode::Foo(FooMode::Check) = *mode { return 17 }
+        if let Mode::Bar(BarMode::Check) = *mode { return 19 }
+    }
+    return 42;
+}
+
+fn main() {
+    let mode = Mode::Bar(BarMode::Check);
+    assert_eq!(broken(&mode), 19);
+}
diff --git a/src/test/ui/issues/issue-26484.rs b/src/test/ui/issues/issue-26484.rs
new file mode 100644
index 00000000000..3b40b3dd8f0
--- /dev/null
+++ b/src/test/ui/issues/issue-26484.rs
@@ -0,0 +1,11 @@
+// run-pass
+// compile-flags:-g
+
+fn helper<F: FnOnce(usize) -> bool>(_f: F) {
+    print!("");
+}
+
+fn main() {
+    let cond = 0;
+    helper(|v| v == cond)
+}
diff --git a/src/test/ui/issues/issue-26641.rs b/src/test/ui/issues/issue-26641.rs
new file mode 100644
index 00000000000..4b6f2c2b3bc
--- /dev/null
+++ b/src/test/ui/issues/issue-26641.rs
@@ -0,0 +1,6 @@
+// run-pass
+struct Parser<'a>(Box<dyn FnMut(Parser) + 'a>);
+
+fn main() {
+    let _x = Parser(Box::new(|_|{}));
+}
diff --git a/src/test/ui/issues/issue-26655.rs b/src/test/ui/issues/issue-26655.rs
new file mode 100644
index 00000000000..4c01183a440
--- /dev/null
+++ b/src/test/ui/issues/issue-26655.rs
@@ -0,0 +1,25 @@
+// run-pass
+// ignore-emscripten no threads support
+
+// Check that the destructors of simple enums are run on unwinding
+
+use std::sync::atomic::{Ordering, AtomicUsize};
+use std::thread;
+
+static LOG: AtomicUsize = AtomicUsize::new(0);
+
+enum WithDtor { Val }
+impl Drop for WithDtor {
+    fn drop(&mut self) {
+        LOG.store(LOG.load(Ordering::SeqCst)+1,Ordering::SeqCst);
+    }
+}
+
+pub fn main() {
+    thread::spawn(move|| {
+        let _e: WithDtor = WithDtor::Val;
+        panic!("fail");
+    }).join().unwrap_err();
+
+    assert_eq!(LOG.load(Ordering::SeqCst), 1);
+}
diff --git a/src/test/ui/issues/issue-26709.rs b/src/test/ui/issues/issue-26709.rs
new file mode 100644
index 00000000000..281ae13399d
--- /dev/null
+++ b/src/test/ui/issues/issue-26709.rs
@@ -0,0 +1,17 @@
+// run-pass
+struct Wrapper<'a, T: ?Sized>(&'a mut i32, T);
+
+impl<'a, T: ?Sized> Drop for Wrapper<'a, T> {
+    fn drop(&mut self) {
+        *self.0 = 432;
+    }
+}
+
+fn main() {
+    let mut x = 0;
+    {
+        let wrapper = Box::new(Wrapper(&mut x, 123));
+        let _: Box<Wrapper<dyn Send>> = wrapper;
+    }
+    assert_eq!(432, x)
+}
diff --git a/src/test/ui/issues/issue-26802.rs b/src/test/ui/issues/issue-26802.rs
new file mode 100644
index 00000000000..307a6716098
--- /dev/null
+++ b/src/test/ui/issues/issue-26802.rs
@@ -0,0 +1,14 @@
+// run-pass
+trait Foo<'a> {
+    fn bar<'b>(&self, x: &'b u8) -> u8 where 'a: 'b { *x+7 }
+}
+
+pub struct FooBar;
+impl Foo<'static> for FooBar {}
+fn test(foobar: FooBar) -> Box<dyn Foo<'static>> {
+    Box::new(foobar)
+}
+
+fn main() {
+    assert_eq!(test(FooBar).bar(&4), 11);
+}
diff --git a/src/test/ui/issues/issue-26805.rs b/src/test/ui/issues/issue-26805.rs
new file mode 100644
index 00000000000..bcf8a673191
--- /dev/null
+++ b/src/test/ui/issues/issue-26805.rs
@@ -0,0 +1,6 @@
+// run-pass
+struct NonOrd;
+
+fn main() {
+    let _: Box<dyn Iterator<Item = _>> = Box::new(vec![NonOrd].into_iter());
+}
diff --git a/src/test/ui/issues/issue-26873-multifile.rs b/src/test/ui/issues/issue-26873-multifile.rs
new file mode 100644
index 00000000000..da2acf6c9f7
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-multifile.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_imports)]
+#![allow(non_snake_case)]
+
+// ignore-pretty issue #37195
+
+#[path = "issue-26873-multifile/mod.rs"]
+mod multifile;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-26873-multifile/A/B.rs b/src/test/ui/issues/issue-26873-multifile/A/B.rs
new file mode 100644
index 00000000000..ab7b0d81605
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-multifile/A/B.rs
@@ -0,0 +1,4 @@
+// run-pass
+use super::*;
+
+pub struct S;
diff --git a/src/test/ui/issues/issue-26873-multifile/A/C.rs b/src/test/ui/issues/issue-26873-multifile/A/C.rs
new file mode 100644
index 00000000000..b287283df53
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-multifile/A/C.rs
@@ -0,0 +1,6 @@
+// run-pass
+use super::*;
+
+use super::B::S;
+
+pub struct T { i: i32 }
diff --git a/src/test/ui/issues/issue-26873-multifile/A/mod.rs b/src/test/ui/issues/issue-26873-multifile/A/mod.rs
new file mode 100644
index 00000000000..0f18772bf1b
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-multifile/A/mod.rs
@@ -0,0 +1,5 @@
+// run-pass
+pub mod B;
+pub mod C;
+
+pub use self::C::T;
diff --git a/src/test/ui/issues/issue-26873-multifile/compiletest-ignore-dir b/src/test/ui/issues/issue-26873-multifile/compiletest-ignore-dir
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-multifile/compiletest-ignore-dir
diff --git a/src/test/ui/issues/issue-26873-multifile/mod.rs b/src/test/ui/issues/issue-26873-multifile/mod.rs
new file mode 100644
index 00000000000..a1ba53f9191
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-multifile/mod.rs
@@ -0,0 +1,4 @@
+// run-pass
+mod A;
+
+use self::A::*;
diff --git a/src/test/ui/issues/issue-26873-onefile.rs b/src/test/ui/issues/issue-26873-onefile.rs
new file mode 100644
index 00000000000..f06c6499eb0
--- /dev/null
+++ b/src/test/ui/issues/issue-26873-onefile.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_imports)]
+#![allow(non_snake_case)]
+
+mod A {
+    pub mod B {
+        use super::*;
+
+        pub struct S;
+    }
+
+    pub mod C {
+        use super::*;
+        use super::B::S;
+
+        pub struct T;
+    }
+
+    pub use self::C::T;
+}
+
+use A::*;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-26996.rs b/src/test/ui/issues/issue-26996.rs
new file mode 100644
index 00000000000..04382be27d7
--- /dev/null
+++ b/src/test/ui/issues/issue-26996.rs
@@ -0,0 +1,24 @@
+// run-pass
+
+// This test is bogus (i.e., should be compile-fail) during the period
+// where #54986 is implemented and #54987 is *not* implemented. For
+// now: just ignore it
+//
+// ignore-test
+
+// This test is checking that the write to `c.0` (which has been moved out of)
+// won't overwrite the state in `c2`.
+//
+// That's a fine thing to test when this code is accepted by the
+// compiler, and this code is being transcribed accordingly into
+// the ui test issue-21232-partial-init-and-use.rs
+
+fn main() {
+    let mut c = (1, "".to_owned());
+    match c {
+        c2 => {
+            c.0 = 2;
+            assert_eq!(c2.0, 1);
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-27021.rs b/src/test/ui/issues/issue-27021.rs
new file mode 100644
index 00000000000..30551375450
--- /dev/null
+++ b/src/test/ui/issues/issue-27021.rs
@@ -0,0 +1,28 @@
+// run-pass
+
+// This test is bogus (i.e., should be compile-fail) during the period
+// where #54986 is implemented and #54987 is *not* implemented. For
+// now: just ignore it
+//
+// ignore-test
+
+// These are variants of issue-26996.rs. In all cases we are writing
+// into a record field that has been moved out of, and ensuring that
+// such a write won't overwrite the state of the thing it was moved
+// into.
+//
+// That's a fine thing to test when this code is accepted by the
+// compiler, and this code is being transcribed accordingly into
+// the ui test issue-21232-partial-init-and-use.rs
+
+fn main() {
+    let mut c = (1, (1, "".to_owned()));
+    match c {
+        c2 => { (c.1).0 = 2; assert_eq!((c2.1).0, 1); }
+    }
+
+    let mut c = (1, (1, (1, "".to_owned())));
+    match c.1 {
+        c2 => { ((c.1).1).0 = 3; assert_eq!((c2.1).0, 1); }
+    }
+}
diff --git a/src/test/ui/issues/issue-27054-primitive-binary-ops.rs b/src/test/ui/issues/issue-27054-primitive-binary-ops.rs
new file mode 100644
index 00000000000..c6f925de5d7
--- /dev/null
+++ b/src/test/ui/issues/issue-27054-primitive-binary-ops.rs
@@ -0,0 +1,5 @@
+// run-pass
+fn main() {
+    let x = &mut 1;
+    assert_eq!(*x + { *x=2; 1 }, 2);
+}
diff --git a/src/test/ui/issues/issue-2708.rs b/src/test/ui/issues/issue-2708.rs
new file mode 100644
index 00000000000..abd5e9507f8
--- /dev/null
+++ b/src/test/ui/issues/issue-2708.rs
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_snake_case)]
+
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+struct Font {
+    fontbuf: usize,
+    cairo_font: usize,
+    font_dtor: usize,
+
+}
+
+impl Drop for Font {
+    fn drop(&mut self) {}
+}
+
+fn Font() -> Font {
+    Font {
+        fontbuf: 0,
+        cairo_font: 0,
+        font_dtor: 0
+    }
+}
+
+pub fn main() {
+    let _f: Box<_> = box Font();
+}
diff --git a/src/test/ui/issues/issue-2718.rs b/src/test/ui/issues/issue-2718.rs
new file mode 100644
index 00000000000..6449337eea4
--- /dev/null
+++ b/src/test/ui/issues/issue-2718.rs
@@ -0,0 +1,327 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_unsafe)]
+#![allow(unused_imports)]
+#![allow(non_camel_case_types)]
+
+pub type Task = isize;
+
+// tjc: I don't know why
+pub mod pipes {
+    use self::state::{empty, full, blocked, terminated};
+    use super::Task;
+    use std::mem::{forget, transmute};
+    use std::mem::{replace, swap};
+    use std::mem;
+    use std::thread;
+    use std::marker::Send;
+
+    pub struct Stuff<T> {
+        state: state,
+        blocked_task: Option<Task>,
+        payload: Option<T>
+    }
+
+    #[derive(PartialEq, Debug)]
+    #[repr(isize)]
+    pub enum state {
+        empty,
+        full,
+        blocked,
+        terminated
+    }
+
+    pub struct packet<T> {
+        state: state,
+        blocked_task: Option<Task>,
+        payload: Option<T>
+    }
+
+    unsafe impl<T:Send> Send for packet<T> {}
+
+    pub fn packet<T:Send>() -> *const packet<T> {
+        unsafe {
+            let p: *const packet<T> = mem::transmute(Box::new(Stuff{
+                state: empty,
+                blocked_task: None::<Task>,
+                payload: None::<T>
+            }));
+            p
+        }
+    }
+
+    mod rusti {
+      pub fn atomic_xchg(_dst: &mut isize, _src: isize) -> isize { panic!(); }
+      pub fn atomic_xchg_acq(_dst: &mut isize, _src: isize) -> isize { panic!(); }
+      pub fn atomic_xchg_rel(_dst: &mut isize, _src: isize) -> isize { panic!(); }
+    }
+
+    // We should consider moving this to ::std::unsafe, although I
+    // suspect graydon would want us to use void pointers instead.
+    pub unsafe fn uniquify<T>(x: *const T) -> Box<T> {
+        mem::transmute(x)
+    }
+
+    pub fn swap_state_acq(dst: &mut state, src: state) -> state {
+        unsafe {
+            transmute(rusti::atomic_xchg_acq(transmute(dst), src as isize))
+        }
+    }
+
+    pub fn swap_state_rel(dst: &mut state, src: state) -> state {
+        unsafe {
+            transmute(rusti::atomic_xchg_rel(transmute(dst), src as isize))
+        }
+    }
+
+    pub fn send<T:Send>(mut p: send_packet<T>, payload: T) {
+        let p = p.unwrap();
+        let mut p = unsafe { uniquify(p) };
+        assert!((*p).payload.is_none());
+        (*p).payload = Some(payload);
+        let old_state = swap_state_rel(&mut (*p).state, full);
+        match old_state {
+          empty => {
+            // Yay, fastpath.
+
+            // The receiver will eventually clean this up.
+            unsafe { forget(p); }
+          }
+          full => { panic!("duplicate send") }
+          blocked => {
+
+            // The receiver will eventually clean this up.
+            unsafe { forget(p); }
+          }
+          terminated => {
+            // The receiver will never receive this. Rely on drop_glue
+            // to clean everything up.
+          }
+        }
+    }
+
+    pub fn recv<T:Send>(mut p: recv_packet<T>) -> Option<T> {
+        let p = p.unwrap();
+        let mut p = unsafe { uniquify(p) };
+        loop {
+            let old_state = swap_state_acq(&mut (*p).state,
+                                           blocked);
+            match old_state {
+              empty | blocked => { thread::yield_now(); }
+              full => {
+                let payload = replace(&mut p.payload, None);
+                return Some(payload.unwrap())
+              }
+              terminated => {
+                assert_eq!(old_state, terminated);
+                return None;
+              }
+            }
+        }
+    }
+
+    pub fn sender_terminate<T:Send>(p: *const packet<T>) {
+        let mut p = unsafe { uniquify(p) };
+        match swap_state_rel(&mut (*p).state, terminated) {
+          empty | blocked => {
+            // The receiver will eventually clean up.
+            unsafe { forget(p) }
+          }
+          full => {
+            // This is impossible
+            panic!("you dun goofed")
+          }
+          terminated => {
+            // I have to clean up, use drop_glue
+          }
+        }
+    }
+
+    pub fn receiver_terminate<T:Send>(p: *const packet<T>) {
+        let mut p = unsafe { uniquify(p) };
+        match swap_state_rel(&mut (*p).state, terminated) {
+          empty => {
+            // the sender will clean up
+            unsafe { forget(p) }
+          }
+          blocked => {
+            // this shouldn't happen.
+            panic!("terminating a blocked packet")
+          }
+          terminated | full => {
+            // I have to clean up, use drop_glue
+          }
+        }
+    }
+
+    pub struct send_packet<T:Send> {
+        p: Option<*const packet<T>>,
+    }
+
+    impl<T:Send> Drop for send_packet<T> {
+        fn drop(&mut self) {
+            unsafe {
+                if self.p != None {
+                    let self_p: &mut Option<*const packet<T>> =
+                        mem::transmute(&mut self.p);
+                    let p = replace(self_p, None);
+                    sender_terminate(p.unwrap())
+                }
+            }
+        }
+    }
+
+    impl<T:Send> send_packet<T> {
+        pub fn unwrap(&mut self) -> *const packet<T> {
+            replace(&mut self.p, None).unwrap()
+        }
+    }
+
+    pub fn send_packet<T:Send>(p: *const packet<T>) -> send_packet<T> {
+        send_packet {
+            p: Some(p)
+        }
+    }
+
+    pub struct recv_packet<T:Send> {
+        p: Option<*const packet<T>>,
+    }
+
+    impl<T:Send> Drop for recv_packet<T> {
+        fn drop(&mut self) {
+            unsafe {
+                if self.p != None {
+                    let self_p: &mut Option<*const packet<T>> =
+                        mem::transmute(&mut self.p);
+                    let p = replace(self_p, None);
+                    receiver_terminate(p.unwrap())
+                }
+            }
+        }
+    }
+
+    impl<T:Send> recv_packet<T> {
+        pub fn unwrap(&mut self) -> *const packet<T> {
+            replace(&mut self.p, None).unwrap()
+        }
+    }
+
+    pub fn recv_packet<T:Send>(p: *const packet<T>) -> recv_packet<T> {
+        recv_packet {
+            p: Some(p)
+        }
+    }
+
+    pub fn entangle<T:Send>() -> (send_packet<T>, recv_packet<T>) {
+        let p = packet();
+        (send_packet(p), recv_packet(p))
+    }
+}
+
+pub mod pingpong {
+    use std::mem;
+
+    pub struct ping(::pipes::send_packet<pong>);
+
+    unsafe impl Send for ping {}
+
+    pub struct pong(::pipes::send_packet<ping>);
+
+    unsafe impl Send for pong {}
+
+    pub fn liberate_ping(p: ping) -> ::pipes::send_packet<pong> {
+        unsafe {
+            let _addr : *const ::pipes::send_packet<pong> = match &p {
+              &ping(ref x) => { mem::transmute(x) }
+            };
+            panic!()
+        }
+    }
+
+    pub fn liberate_pong(p: pong) -> ::pipes::send_packet<ping> {
+        unsafe {
+            let _addr : *const ::pipes::send_packet<ping> = match &p {
+              &pong(ref x) => { mem::transmute(x) }
+            };
+            panic!()
+        }
+    }
+
+    pub fn init() -> (client::ping, server::ping) {
+        ::pipes::entangle()
+    }
+
+    pub mod client {
+        use pingpong;
+
+        pub type ping = ::pipes::send_packet<pingpong::ping>;
+        pub type pong = ::pipes::recv_packet<pingpong::pong>;
+
+        pub fn do_ping(c: ping) -> pong {
+            let (sp, rp) = ::pipes::entangle();
+
+            ::pipes::send(c, pingpong::ping(sp));
+            rp
+        }
+
+        pub fn do_pong(c: pong) -> (ping, ()) {
+            let packet = ::pipes::recv(c);
+            if packet.is_none() {
+                panic!("sender closed the connection")
+            }
+            (pingpong::liberate_pong(packet.unwrap()), ())
+        }
+    }
+
+    pub mod server {
+        use pingpong;
+
+        pub type ping = ::pipes::recv_packet<pingpong::ping>;
+        pub type pong = ::pipes::send_packet<pingpong::pong>;
+
+        pub fn do_ping(c: ping) -> (pong, ()) {
+            let packet = ::pipes::recv(c);
+            if packet.is_none() {
+                panic!("sender closed the connection")
+            }
+            (pingpong::liberate_ping(packet.unwrap()), ())
+        }
+
+        pub fn do_pong(c: pong) -> ping {
+            let (sp, rp) = ::pipes::entangle();
+            ::pipes::send(c, pingpong::pong(sp));
+            rp
+        }
+    }
+}
+
+fn client(chan: pingpong::client::ping) {
+    let chan = pingpong::client::do_ping(chan);
+    println!("Sent ping");
+    let (_chan, _data) = pingpong::client::do_pong(chan);
+    println!("Received pong");
+}
+
+fn server(chan: pingpong::server::ping) {
+    let (chan, _data) = pingpong::server::do_ping(chan);
+    println!("Received ping");
+    let _chan = pingpong::server::do_pong(chan);
+    println!("Sent pong");
+}
+
+pub fn main() {
+  /*
+//    Commented out because of option::get error
+
+    let (client_, server_) = pingpong::init();
+
+    task::spawn {|client_|
+        let client__ = client_.take();
+        client(client__);
+    };
+    task::spawn {|server_|
+        let server__ = server_.take();
+        server(server_ËŠ);
+    };
+  */
+}
diff --git a/src/test/ui/issues/issue-2723-b.rs b/src/test/ui/issues/issue-2723-b.rs
new file mode 100644
index 00000000000..1910561d0ba
--- /dev/null
+++ b/src/test/ui/issues/issue-2723-b.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-2723-a.rs
+
+extern crate issue_2723_a;
+use issue_2723_a::f;
+
+pub fn main() {
+    unsafe {
+        f(vec![2]);
+    }
+}
diff --git a/src/test/ui/issues/issue-27240.rs b/src/test/ui/issues/issue-27240.rs
new file mode 100644
index 00000000000..a22db76b9bc
--- /dev/null
+++ b/src/test/ui/issues/issue-27240.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(unused_assignments)]
+#![allow(unused_variables)]
+use std::fmt;
+struct NoisyDrop<T: fmt::Debug>(T);
+impl<T: fmt::Debug> Drop for NoisyDrop<T> {
+    fn drop(&mut self) {}
+}
+
+struct Bar<T: fmt::Debug>([*const NoisyDrop<T>; 2]);
+
+fn fine() {
+    let (u,b);
+    u = vec![43];
+    b = Bar([&NoisyDrop(&u), &NoisyDrop(&u)]);
+}
+
+struct Bar2<T: fmt::Debug>(*const NoisyDrop<T>, *const NoisyDrop<T>);
+
+fn lolwut() {
+    let (u,v);
+    u = vec![43];
+    v = Bar2(&NoisyDrop(&u), &NoisyDrop(&u));
+}
+
+fn main() { fine(); lolwut() }
diff --git a/src/test/ui/issues/issue-27268.rs b/src/test/ui/issues/issue-27268.rs
new file mode 100644
index 00000000000..161e2d4d204
--- /dev/null
+++ b/src/test/ui/issues/issue-27268.rs
@@ -0,0 +1,4 @@
+// run-pass
+fn main() {
+    const _C: &'static dyn Fn() = &||{};
+}
diff --git a/src/test/ui/issues/issue-27320.rs b/src/test/ui/issues/issue-27320.rs
new file mode 100644
index 00000000000..d1aa56b915b
--- /dev/null
+++ b/src/test/ui/issues/issue-27320.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(unused_variables)]
+#![allow(dead_code)]
+
+macro_rules! piece(
+    ($piece:pat) => ($piece);
+);
+
+enum Piece {A, B}
+
+fn main() {
+    match Piece::A {
+        piece!(pt@ Piece::A) | piece!(pt@ Piece::B) => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-2734.rs b/src/test/ui/issues/issue-2734.rs
new file mode 100644
index 00000000000..d449f6449aa
--- /dev/null
+++ b/src/test/ui/issues/issue-2734.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+trait hax {
+    fn dummy(&self) { }
+}
+impl<A> hax for A { }
+
+fn perform_hax<T: 'static>(x: Box<T>) -> Box<dyn hax+'static> {
+    box x as Box<dyn hax+'static>
+}
+
+fn deadcode() {
+    perform_hax(box "deadcode".to_string());
+}
+
+pub fn main() {
+    let _ = perform_hax(box 42);
+}
diff --git a/src/test/ui/issues/issue-2735-2.rs b/src/test/ui/issues/issue-2735-2.rs
new file mode 100644
index 00000000000..70ebce9d35a
--- /dev/null
+++ b/src/test/ui/issues/issue-2735-2.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+use std::cell::Cell;
+
+// This test should behave exactly like issue-2735-3
+struct defer<'a> {
+    b: &'a Cell<bool>,
+}
+
+impl<'a> Drop for defer<'a> {
+    fn drop(&mut self) {
+        self.b.set(true);
+    }
+}
+
+fn defer(b: &Cell<bool>) -> defer {
+    defer {
+        b: b
+    }
+}
+
+pub fn main() {
+    let dtor_ran = &Cell::new(false);
+    let _  = defer(dtor_ran);
+    assert!(dtor_ran.get());
+}
diff --git a/src/test/ui/issues/issue-2735-3.rs b/src/test/ui/issues/issue-2735-3.rs
new file mode 100644
index 00000000000..23301537835
--- /dev/null
+++ b/src/test/ui/issues/issue-2735-3.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+use std::cell::Cell;
+
+// This test should behave exactly like issue-2735-2
+struct defer<'a> {
+    b: &'a Cell<bool>,
+}
+
+impl<'a> Drop for defer<'a> {
+    fn drop(&mut self) {
+        self.b.set(true);
+    }
+}
+
+fn defer(b: &Cell<bool>) -> defer {
+    defer {
+        b: b
+    }
+}
+
+pub fn main() {
+    let dtor_ran = &Cell::new(false);
+    defer(dtor_ran);
+    assert!(dtor_ran.get());
+}
diff --git a/src/test/ui/issues/issue-2735.rs b/src/test/ui/issues/issue-2735.rs
new file mode 100644
index 00000000000..794c7d4edaa
--- /dev/null
+++ b/src/test/ui/issues/issue-2735.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+trait hax {
+    fn dummy(&self) { }
+}
+impl<A> hax for A { }
+
+fn perform_hax<T: 'static>(x: Box<T>) -> Box<dyn hax+'static> {
+    box x as Box<dyn hax+'static>
+}
+
+fn deadcode() {
+    perform_hax(box "deadcode".to_string());
+}
+
+pub fn main() {
+    perform_hax(box 42);
+}
diff --git a/src/test/ui/issues/issue-27401-dropflag-reinit.rs b/src/test/ui/issues/issue-27401-dropflag-reinit.rs
new file mode 100644
index 00000000000..e137575c2f8
--- /dev/null
+++ b/src/test/ui/issues/issue-27401-dropflag-reinit.rs
@@ -0,0 +1,27 @@
+// run-pass
+// ignore-pretty issue #37201
+
+// Check that when a `let`-binding occurs in a loop, its associated
+// drop-flag is reinitialized (to indicate "needs-drop" at the end of
+// the owning variable's scope).
+
+struct A<'a>(&'a mut i32);
+
+impl<'a> Drop for A<'a> {
+    fn drop(&mut self) {
+        *self.0 += 1;
+    }
+}
+
+fn main() {
+    let mut cnt = 0;
+    for i in 0..2 {
+        let a = A(&mut cnt);
+        if i == 1 { // Note that
+            break;  //  both this break
+        }           //   and also
+        drop(a);    //    this move of `a`
+        // are necessary to expose the bug
+    }
+    assert_eq!(cnt, 2);
+}
diff --git a/src/test/ui/issues/issue-2748-b.rs b/src/test/ui/issues/issue-2748-b.rs
new file mode 100644
index 00000000000..8df735ac88e
--- /dev/null
+++ b/src/test/ui/issues/issue-2748-b.rs
@@ -0,0 +1,11 @@
+// run-pass
+
+fn thing<'r>(x: &'r [isize]) -> &'r [isize] { x }
+
+pub fn main() {
+    let x = &[1,2,3];
+    let y = x;
+    let z = thing(x);
+    assert_eq!(z[2], x[2]);
+    assert_eq!(z[1], y[1]);
+}
diff --git a/src/test/ui/issues/issue-27639.rs b/src/test/ui/issues/issue-27639.rs
new file mode 100644
index 00000000000..945fbad91f6
--- /dev/null
+++ b/src/test/ui/issues/issue-27639.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_upper_case_globals)]
+
+fn main() {
+    const iter: i32 = 0;
+
+    for i in 1..10 {
+        println!("{}", i);
+    }
+}
diff --git a/src/test/ui/issues/issue-27859.rs b/src/test/ui/issues/issue-27859.rs
new file mode 100644
index 00000000000..259d706fa2a
--- /dev/null
+++ b/src/test/ui/issues/issue-27859.rs
@@ -0,0 +1,21 @@
+// run-pass
+// ignore-cloudabi no std::env
+// ignore-wasm32 issue 42629
+
+#[inline(never)]
+fn foo(a: f32, b: f32) -> f32 {
+    a % b
+}
+
+#[inline(never)]
+fn bar(a: f32, b: f32) -> f32 {
+    ((a as f64) % (b as f64)) as f32
+}
+
+fn main() {
+    let unknown_float = std::env::args().len();
+    println!("{}", foo(4.0, unknown_float as f32));
+    println!("{}", foo(5.0, (unknown_float as f32) + 1.0));
+    println!("{}", bar(6.0, (unknown_float as f32) + 2.0));
+    println!("{}", bar(7.0, (unknown_float as f32) + 3.0));
+}
diff --git a/src/test/ui/issues/issue-27890.rs b/src/test/ui/issues/issue-27890.rs
new file mode 100644
index 00000000000..9f85473380f
--- /dev/null
+++ b/src/test/ui/issues/issue-27890.rs
@@ -0,0 +1,7 @@
+// run-pass
+static PLUS_ONE: &'static (dyn Fn(i32) -> i32 + Sync) = (&|x: i32| { x + 1 })
+    as &'static (dyn Fn(i32) -> i32 + Sync);
+
+fn main() {
+    assert_eq!(PLUS_ONE(2), 3);
+}
diff --git a/src/test/ui/issues/issue-27901.rs b/src/test/ui/issues/issue-27901.rs
new file mode 100644
index 00000000000..ffd90b68983
--- /dev/null
+++ b/src/test/ui/issues/issue-27901.rs
@@ -0,0 +1,11 @@
+// run-pass
+trait Stream { type Item; }
+impl<'a> Stream for &'a str { type Item = u8; }
+fn f<'s>(s: &'s str) -> (&'s str, <&'s str as Stream>::Item) {
+    (s, 42)
+}
+
+fn main() {
+    let fx = f as for<'t> fn(&'t str) -> (&'t str, <&'t str as Stream>::Item);
+    assert_eq!(fx("hi"), ("hi", 42));
+}
diff --git a/src/test/ui/issues/issue-27949.rs b/src/test/ui/issues/issue-27949.rs
new file mode 100644
index 00000000000..e905da72aad
--- /dev/null
+++ b/src/test/ui/issues/issue-27949.rs
@@ -0,0 +1,41 @@
+// run-pass
+//
+// At one time, the `==` operator (and other binary operators) did not
+// support subtyping during type checking, and would therefore require
+// LHS and RHS to be exactly identical--i.e. to have the same lifetimes.
+//
+// This was fixed in 1a7fb7dc78439a704f024609ce3dc0beb1386552.
+
+#[derive(Copy, Clone)]
+struct Input<'a> {
+    foo: &'a u32
+}
+
+impl <'a> std::cmp::PartialEq<Input<'a>> for Input<'a> {
+    fn eq(&self, other: &Input<'a>) -> bool {
+        self.foo == other.foo
+    }
+
+    fn ne(&self, other: &Input<'a>) -> bool {
+        self.foo != other.foo
+    }
+}
+
+
+fn check_equal<'a, 'b>(x: Input<'a>, y: Input<'b>) -> bool {
+    // Type checking error due to 'a != 'b prior to 1a7fb7dc78
+    x == y
+}
+
+fn main() {
+    let i = 1u32;
+    let j = 1u32;
+    let k = 2u32;
+
+    let input_i = Input { foo: &i };
+    let input_j = Input { foo: &j };
+    let input_k = Input { foo: &k };
+    assert!(check_equal(input_i, input_i));
+    assert!(check_equal(input_i, input_j));
+    assert!(!check_equal(input_i, input_k));
+}
diff --git a/src/test/ui/issues/issue-27997.rs b/src/test/ui/issues/issue-27997.rs
new file mode 100644
index 00000000000..dd74cf75249
--- /dev/null
+++ b/src/test/ui/issues/issue-27997.rs
@@ -0,0 +1,37 @@
+// run-pass
+use std::sync::atomic::{Ordering, AtomicUsize};
+
+use std::mem;
+struct S<U,V> {
+    _u: U,
+    size_of_u: usize,
+    _v: V,
+    size_of_v: usize
+}
+
+impl<U, V> S<U, V> {
+    fn new(u: U, v: V) -> Self {
+        S {
+            _u: u,
+            size_of_u: mem::size_of::<U>(),
+            _v: v,
+            size_of_v: mem::size_of::<V>()
+        }
+    }
+}
+
+static COUNT: AtomicUsize = AtomicUsize::new(0);
+
+impl<V, U> Drop for S<U, V> {
+    fn drop(&mut self) {
+        assert_eq!(mem::size_of::<U>(), self.size_of_u);
+        assert_eq!(mem::size_of::<V>(), self.size_of_v);
+        COUNT.store(COUNT.load(Ordering::SeqCst)+1, Ordering::SeqCst);
+    }
+}
+
+fn main() {
+    assert_eq!(COUNT.load(Ordering::SeqCst), 0);
+    { S::new(0u8, 1u16); }
+    assert_eq!(COUNT.load(Ordering::SeqCst), 1);
+}
diff --git a/src/test/ui/issues/issue-28181.rs b/src/test/ui/issues/issue-28181.rs
new file mode 100644
index 00000000000..c46e131c6ac
--- /dev/null
+++ b/src/test/ui/issues/issue-28181.rs
@@ -0,0 +1,6 @@
+// run-pass
+fn bar<F>(f: F) -> usize where F: Fn([usize; 1]) -> usize { f([2]) }
+
+fn main() {
+    bar(|u| { u[0] });
+}
diff --git a/src/test/ui/issues/issue-28498-must-work-ex1.rs b/src/test/ui/issues/issue-28498-must-work-ex1.rs
new file mode 100644
index 00000000000..4699d3352ad
--- /dev/null
+++ b/src/test/ui/issues/issue-28498-must-work-ex1.rs
@@ -0,0 +1,18 @@
+// run-pass
+// Example taken from RFC 1238 text
+
+// https://github.com/rust-lang/rfcs/blob/master/text/1238-nonparametric-dropck.md
+//     #examples-of-code-that-must-continue-to-work
+
+use std::cell::Cell;
+
+struct Concrete<'a>(u32, Cell<Option<&'a Concrete<'a>>>);
+
+fn main() {
+    let mut data = Vec::new();
+    data.push(Concrete(0, Cell::new(None)));
+    data.push(Concrete(0, Cell::new(None)));
+
+    data[0].1.set(Some(&data[1]));
+    data[1].1.set(Some(&data[0]));
+}
diff --git a/src/test/ui/issues/issue-28498-must-work-ex2.rs b/src/test/ui/issues/issue-28498-must-work-ex2.rs
new file mode 100644
index 00000000000..cadf62461fd
--- /dev/null
+++ b/src/test/ui/issues/issue-28498-must-work-ex2.rs
@@ -0,0 +1,20 @@
+// run-pass
+// Example taken from RFC 1238 text
+
+// https://github.com/rust-lang/rfcs/blob/master/text/1238-nonparametric-dropck.md
+//     #examples-of-code-that-must-continue-to-work
+
+use std::cell::Cell;
+
+struct Concrete<'a>(u32, Cell<Option<&'a Concrete<'a>>>);
+
+struct Foo<T> { data: Vec<T> }
+
+fn main() {
+    let mut foo = Foo {  data: Vec::new() };
+    foo.data.push(Concrete(0, Cell::new(None)));
+    foo.data.push(Concrete(0, Cell::new(None)));
+
+    foo.data[0].1.set(Some(&foo.data[1]));
+    foo.data[1].1.set(Some(&foo.data[0]));
+}
diff --git a/src/test/ui/issues/issue-28498-ugeh-ex1.rs b/src/test/ui/issues/issue-28498-ugeh-ex1.rs
new file mode 100644
index 00000000000..90cf2cddcf0
--- /dev/null
+++ b/src/test/ui/issues/issue-28498-ugeh-ex1.rs
@@ -0,0 +1,27 @@
+// run-pass
+
+// Example taken from RFC 1238 text
+
+// https://github.com/rust-lang/rfcs/blob/master/text/1238-nonparametric-dropck.md
+//     #example-of-the-unguarded-escape-hatch
+
+#![feature(dropck_eyepatch)]
+use std::cell::Cell;
+
+struct Concrete<'a>(u32, Cell<Option<&'a Concrete<'a>>>);
+
+struct Foo<T> { data: Vec<T> }
+
+// Below is the UGEH attribute
+unsafe impl<#[may_dangle] T> Drop for Foo<T> {
+    fn drop(&mut self) { }
+}
+
+fn main() {
+    let mut foo = Foo {  data: Vec::new() };
+    foo.data.push(Concrete(0, Cell::new(None)));
+    foo.data.push(Concrete(0, Cell::new(None)));
+
+    foo.data[0].1.set(Some(&foo.data[1]));
+    foo.data[1].1.set(Some(&foo.data[0]));
+}
diff --git a/src/test/ui/issues/issue-28498-ugeh-with-lifetime-param.rs b/src/test/ui/issues/issue-28498-ugeh-with-lifetime-param.rs
new file mode 100644
index 00000000000..aea9fde5309
--- /dev/null
+++ b/src/test/ui/issues/issue-28498-ugeh-with-lifetime-param.rs
@@ -0,0 +1,38 @@
+// run-pass
+
+// Demonstrate the use of the unguarded escape hatch with a lifetime param
+// to assert that destructor will not access any dead data.
+//
+// Compare with compile-fail/issue28498-reject-lifetime-param.rs
+
+#![feature(dropck_eyepatch)]
+
+#[derive(Debug)]
+struct ScribbleOnDrop(String);
+
+impl Drop for ScribbleOnDrop {
+    fn drop(&mut self) {
+        self.0 = format!("DROPPED");
+    }
+}
+
+struct Foo<'a>(u32, &'a ScribbleOnDrop);
+
+unsafe impl<#[may_dangle] 'a> Drop for Foo<'a> {
+    fn drop(&mut self) {
+        // Use of `may_dangle` is sound, because destructor never accesses `self.1`.
+        println!("Dropping Foo({}, _)", self.0);
+    }
+}
+
+fn main() {
+    let (last_dropped, foo0);
+    let (foo1, first_dropped);
+
+    last_dropped = ScribbleOnDrop(format!("last"));
+    first_dropped = ScribbleOnDrop(format!("first"));
+    foo0 = Foo(0, &last_dropped);
+    foo1 = Foo(1, &first_dropped);
+
+    println!("foo0.1: {:?} foo1.1: {:?}", foo0.1, foo1.1);
+}
diff --git a/src/test/ui/issues/issue-28498-ugeh-with-passed-to-fn.rs b/src/test/ui/issues/issue-28498-ugeh-with-passed-to-fn.rs
new file mode 100644
index 00000000000..91ef5a7c98d
--- /dev/null
+++ b/src/test/ui/issues/issue-28498-ugeh-with-passed-to-fn.rs
@@ -0,0 +1,46 @@
+// run-pass
+
+// Demonstrate the use of the unguarded escape hatch with a type param in negative position
+// to assert that destructor will not access any dead data.
+//
+// Compare with compile-fail/issue28498-reject-lifetime-param.rs
+
+// Demonstrate that a type param in negative position causes dropck to reject code
+// that might indirectly access previously dropped value.
+//
+// Compare with run-pass/issue28498-ugeh-with-passed-to-fn.rs
+
+#![feature(dropck_eyepatch)]
+
+#[derive(Debug)]
+struct ScribbleOnDrop(String);
+
+impl Drop for ScribbleOnDrop {
+    fn drop(&mut self) {
+        self.0 = format!("DROPPED");
+    }
+}
+
+struct Foo<T>(u32, T, Box<for <'r> fn(&'r T) -> String>);
+
+unsafe impl<#[may_dangle] T> Drop for Foo<T> {
+    fn drop(&mut self) {
+        // Use of `may_dangle` is sound, because destructor never passes a `self.1`
+        // to the callback (in `self.2`) despite having it available.
+        println!("Dropping Foo({}, _)", self.0);
+    }
+}
+
+fn callback(s: & &ScribbleOnDrop) -> String { format!("{:?}", s) }
+
+fn main() {
+    let (last_dropped, foo0);
+    let (foo1, first_dropped);
+
+    last_dropped = ScribbleOnDrop(format!("last"));
+    first_dropped = ScribbleOnDrop(format!("first"));
+    foo0 = Foo(0, &last_dropped, Box::new(callback));
+    foo1 = Foo(1, &first_dropped, Box::new(callback));
+
+    println!("foo0.1: {:?} foo1.1: {:?}", foo0.1, foo1.1);
+}
diff --git a/src/test/ui/issues/issue-28498-ugeh-with-trait-bound.rs b/src/test/ui/issues/issue-28498-ugeh-with-trait-bound.rs
new file mode 100644
index 00000000000..808f3b6e81e
--- /dev/null
+++ b/src/test/ui/issues/issue-28498-ugeh-with-trait-bound.rs
@@ -0,0 +1,41 @@
+// run-pass
+
+// Demonstrate the use of the unguarded escape hatch with a trait bound
+// to assert that destructor will not access any dead data.
+//
+// Compare with compile-fail/issue28498-reject-trait-bound.rs
+
+#![feature(dropck_eyepatch)]
+
+use std::fmt;
+
+#[derive(Debug)]
+struct ScribbleOnDrop(String);
+
+impl Drop for ScribbleOnDrop {
+    fn drop(&mut self) {
+        self.0 = format!("DROPPED");
+    }
+}
+
+struct Foo<T: fmt::Debug>(u32, T);
+
+unsafe impl<#[may_dangle] T: fmt::Debug> Drop for Foo<T> {
+    fn drop(&mut self) {
+        // Use of `may_dangle` is sound, because destructor never accesses
+        // the `Debug::fmt` method of `T`, despite having it available.
+        println!("Dropping Foo({}, _)", self.0);
+    }
+}
+
+fn main() {
+    let (last_dropped, foo0);
+    let (foo1, first_dropped);
+
+    last_dropped = ScribbleOnDrop(format!("last"));
+    first_dropped = ScribbleOnDrop(format!("first"));
+    foo0 = Foo(0, &last_dropped);
+    foo1 = Foo(1, &first_dropped);
+
+    println!("foo0.1: {:?} foo1.1: {:?}", foo0.1, foo1.1);
+}
diff --git a/src/test/ui/issues/issue-28550.rs b/src/test/ui/issues/issue-28550.rs
new file mode 100644
index 00000000000..95583f80515
--- /dev/null
+++ b/src/test/ui/issues/issue-28550.rs
@@ -0,0 +1,16 @@
+// run-pass
+struct A<F: FnOnce()->T,T>(F::Output);
+struct B<F: FnOnce()->T,T>(A<F,T>);
+
+// Removing Option causes it to compile.
+fn foo<T,F: FnOnce()->T>(f: F) -> Option<B<F,T>> {
+    Some(B(A(f())))
+}
+
+fn main() {
+    let v = (|| foo(||4))();
+    match v {
+        Some(B(A(4))) => {},
+        _ => unreachable!()
+    }
+}
diff --git a/src/test/ui/issues/issue-28676.rs b/src/test/ui/issues/issue-28676.rs
new file mode 100644
index 00000000000..2b83478ca61
--- /dev/null
+++ b/src/test/ui/issues/issue-28676.rs
@@ -0,0 +1,35 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(improper_ctypes)]
+
+// ignore-wasm32-bare no libc to test ffi with
+
+#[derive(Copy, Clone)]
+pub struct Quad { a: u64, b: u64, c: u64, d: u64 }
+
+mod rustrt {
+    use super::Quad;
+
+    #[link(name = "rust_test_helpers", kind = "static")]
+    extern {
+        pub fn get_c_many_params(_: *const (), _: *const (),
+                                 _: *const (), _: *const (), f: Quad) -> u64;
+    }
+}
+
+fn test() {
+    unsafe {
+        let null = std::ptr::null();
+        let q = Quad {
+            a: 1,
+            b: 2,
+            c: 3,
+            d: 4
+        };
+        assert_eq!(rustrt::get_c_many_params(null, null, null, null, q), q.c);
+    }
+}
+
+pub fn main() {
+    test();
+}
diff --git a/src/test/ui/issues/issue-28777.rs b/src/test/ui/issues/issue-28777.rs
new file mode 100644
index 00000000000..74de00adadb
--- /dev/null
+++ b/src/test/ui/issues/issue-28777.rs
@@ -0,0 +1,21 @@
+// run-pass
+fn main() {
+    let v1 = { 1 + {2} * {3} };
+    let v2 =   1 + {2} * {3}  ;
+
+    assert_eq!(7, v1);
+    assert_eq!(7, v2);
+
+    let v3;
+    v3 = { 1 + {2} * {3} };
+    let v4;
+    v4 = 1 + {2} * {3};
+    assert_eq!(7, v3);
+    assert_eq!(7, v4);
+
+    let v5 = { 1 + {2} * 3 };
+    assert_eq!(7, v5);
+
+    let v9 = { 1 + if 1 > 2 {1} else {2} * {3} };
+    assert_eq!(7, v9);
+}
diff --git a/src/test/ui/issues/issue-28828.rs b/src/test/ui/issues/issue-28828.rs
new file mode 100644
index 00000000000..03968809eb7
--- /dev/null
+++ b/src/test/ui/issues/issue-28828.rs
@@ -0,0 +1,18 @@
+// run-pass
+pub trait Foo {
+    type Out;
+}
+
+impl Foo for () {
+    type Out = bool;
+}
+
+fn main() {
+    type Bool = <() as Foo>::Out;
+
+    let x: Bool = true;
+    assert!(x);
+
+    let y: Option<Bool> = None;
+    assert_eq!(y, None);
+}
diff --git a/src/test/ui/issues/issue-28839.rs b/src/test/ui/issues/issue-28839.rs
new file mode 100644
index 00000000000..73be87a0c1e
--- /dev/null
+++ b/src/test/ui/issues/issue-28839.rs
@@ -0,0 +1,15 @@
+// run-pass
+// ignore-pretty issue #37199
+
+pub struct Foo;
+
+pub fn get_foo2<'a>(foo: &'a mut Option<&'a mut Foo>) -> &'a mut Foo {
+    match foo {
+        // Ensure that this is not considered a move, but rather a reborrow.
+        &mut Some(ref mut x) => *x,
+        &mut None => panic!(),
+    }
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-2895.rs b/src/test/ui/issues/issue-2895.rs
new file mode 100644
index 00000000000..d8c08996bc3
--- /dev/null
+++ b/src/test/ui/issues/issue-2895.rs
@@ -0,0 +1,28 @@
+// run-pass
+#![allow(dead_code)]
+
+use std::mem;
+
+struct Cat {
+    x: isize
+}
+
+struct Kitty {
+    x: isize,
+}
+
+impl Drop for Kitty {
+    fn drop(&mut self) {}
+}
+
+#[cfg(target_pointer_width = "64")]
+pub fn main() {
+    assert_eq!(mem::size_of::<Cat>(), 8 as usize);
+    assert_eq!(mem::size_of::<Kitty>(), 8 as usize);
+}
+
+#[cfg(target_pointer_width = "32")]
+pub fn main() {
+    assert_eq!(mem::size_of::<Cat>(), 4 as usize);
+    assert_eq!(mem::size_of::<Kitty>(), 4 as usize);
+}
diff --git a/src/test/ui/issues/issue-28950.rs b/src/test/ui/issues/issue-28950.rs
new file mode 100644
index 00000000000..8b55f42f3f4
--- /dev/null
+++ b/src/test/ui/issues/issue-28950.rs
@@ -0,0 +1,22 @@
+// run-pass
+// ignore-emscripten no threads
+// compile-flags: -O
+
+// Tests that the `vec!` macro does not overflow the stack when it is
+// given data larger than the stack.
+
+// FIXME(eddyb) Improve unoptimized codegen to avoid the temporary,
+// and thus run successfully even when compiled at -C opt-level=0.
+
+const LEN: usize = 1 << 15;
+
+use std::thread::Builder;
+
+fn main() {
+    assert!(Builder::new().stack_size(LEN / 2).spawn(|| {
+        // FIXME(eddyb) this can be vec![[0: LEN]] pending
+        // https://llvm.org/bugs/show_bug.cgi?id=28987
+        let vec = vec![unsafe { std::mem::zeroed::<[u8; LEN]>() }];
+        assert_eq!(vec.len(), 1);
+    }).unwrap().join().is_ok());
+}
diff --git a/src/test/ui/issues/issue-28983.rs b/src/test/ui/issues/issue-28983.rs
new file mode 100644
index 00000000000..3db26a1ee5f
--- /dev/null
+++ b/src/test/ui/issues/issue-28983.rs
@@ -0,0 +1,22 @@
+// run-pass
+pub trait Test { type T; }
+
+impl Test for u32 {
+    type T = i32;
+}
+
+pub mod export {
+    #[no_mangle]
+    pub extern "C" fn issue_28983(t: <u32 as ::Test>::T) -> i32 { t*3 }
+}
+
+// to test both exporting and importing functions, import
+// a function from ourselves.
+extern "C" {
+    fn issue_28983(t: <u32 as Test>::T) -> i32;
+}
+
+fn main() {
+    assert_eq!(export::issue_28983(2), 6);
+    assert_eq!(unsafe { issue_28983(3) }, 9);
+}
diff --git a/src/test/ui/issues/issue-29053.rs b/src/test/ui/issues/issue-29053.rs
new file mode 100644
index 00000000000..34c4a0f8f3e
--- /dev/null
+++ b/src/test/ui/issues/issue-29053.rs
@@ -0,0 +1,12 @@
+// run-pass
+fn main() {
+    let x: &'static str = "x";
+
+    {
+        let y = "y".to_string();
+        let ref mut x = &*x;
+        *x = &*y;
+    }
+
+    assert_eq!(x, "x");
+}
diff --git a/src/test/ui/issues/issue-29071-2.rs b/src/test/ui/issues/issue-29071-2.rs
new file mode 100644
index 00000000000..f27bf0261db
--- /dev/null
+++ b/src/test/ui/issues/issue-29071-2.rs
@@ -0,0 +1,32 @@
+// run-pass
+#![allow(dead_code)]
+fn t1() -> u32 {
+    let x;
+    x = if true { [1, 2, 3] } else { [2, 3, 4] }[0];
+    x
+}
+
+fn t2() -> [u32; 1] {
+    if true { [1, 2, 3]; } else { [2, 3, 4]; }
+    [0]
+}
+
+fn t3() -> u32 {
+    let x;
+    x = if true { i1 as F } else { i2 as F }();
+    x
+}
+
+fn t4() -> () {
+    if true { i1 as F; } else { i2 as F; }
+    ()
+}
+
+type F = fn() -> u32;
+fn i1() -> u32 { 1 }
+fn i2() -> u32 { 2 }
+
+fn main() {
+    assert_eq!(t1(), 1);
+    assert_eq!(t3(), 1);
+}
diff --git a/src/test/ui/issues/issue-29092.rs b/src/test/ui/issues/issue-29092.rs
new file mode 100644
index 00000000000..f20d2a424b0
--- /dev/null
+++ b/src/test/ui/issues/issue-29092.rs
@@ -0,0 +1,26 @@
+// run-pass
+// Regression test for Issue #29092.
+//
+// (Possibly redundant with regression test run-pass/issue-30530.rs)
+
+use self::Term::*;
+
+#[derive(Clone)]
+pub enum Term {
+    Dummy,
+    A(Box<Term>),
+    B(Box<Term>),
+}
+
+// a small-step evaluator
+pub fn small_eval(v: Term) -> Term {
+    match v {
+        A(t) => *t.clone(),
+        B(t) => *t.clone(),
+        _ => Dummy,
+    }
+}
+
+fn main() {
+    small_eval(Dummy);
+}
diff --git a/src/test/ui/issues/issue-29166.rs b/src/test/ui/issues/issue-29166.rs
new file mode 100644
index 00000000000..ca819ba39a2
--- /dev/null
+++ b/src/test/ui/issues/issue-29166.rs
@@ -0,0 +1,21 @@
+// run-pass
+// This test ensures that vec.into_iter does not overconstrain element lifetime.
+
+pub fn main() {
+    original_report();
+    revision_1();
+    revision_2();
+}
+
+fn original_report() {
+    drop(vec![&()].into_iter())
+}
+
+fn revision_1() {
+    // below is what above `vec!` expands into at time of this writing.
+    drop(<[_]>::into_vec(::std::boxed::Box::new([&()])).into_iter())
+}
+
+fn revision_2() {
+    drop((match (Vec::new(), &()) { (mut v, b) => { v.push(b); v } }).into_iter())
+}
diff --git a/src/test/ui/issues/issue-29227.rs b/src/test/ui/issues/issue-29227.rs
new file mode 100644
index 00000000000..e9dfc2840e5
--- /dev/null
+++ b/src/test/ui/issues/issue-29227.rs
@@ -0,0 +1,142 @@
+// run-pass
+// ignore-tidy-linelength
+
+// Regression test for #29227. The problem here was that MIR
+// construction for these gigantic match expressions was very
+// inefficient.
+
+pub trait CharExt : Sized + Copy {
+    fn is_unicode_uppercase_letter(self) -> bool { false }
+    fn is_unicode_lowercase_letter(self) -> bool { false }
+    fn is_unicode_titlecase_letter(self) -> bool { false }
+    fn is_unicode_modifier_letter(self) -> bool { false }
+    fn is_unicode_other_letter(self) -> bool { false }
+    fn is_unicode_letter_number(self) -> bool { false }
+    fn is_unicode_nonspacing_mark(self) -> bool { false }
+    fn is_unicode_combining_spacing_mark(self) -> bool { false }
+    fn is_unicode_decimal_number(self) -> bool{ false }
+    fn is_unicode_connector_punctiation(self) -> bool { false }
+    fn is_unicode_space_separator(self) -> bool { false }
+
+    fn is_es_identifier_start(self) -> bool { false }
+    fn is_es_identifier_part(self) -> bool { false }
+    fn is_es_whitespace(self) -> bool { false }
+    fn is_es_line_terminator(self) -> bool { false }
+
+    fn is_unicode_letter(self) -> bool {
+        self.is_unicode_uppercase_letter()
+        || self.is_unicode_lowercase_letter()
+        || self.is_unicode_titlecase_letter()
+        || self.is_unicode_modifier_letter()
+        || self.is_unicode_modifier_letter()
+        || self.is_unicode_letter_number()
+    }
+
+}
+
+
+macro_rules! match_char_class {
+    ($thing:expr, $($c:expr),*) => {
+        match $thing {
+            $($c)|* => true,
+            _ => false
+        }
+    }
+}
+
+impl CharExt for char {
+    fn is_unicode_uppercase_letter(self) -> bool {
+        match_char_class!(self,
+            '\u{0041}', '\u{0042}', '\u{0043}', '\u{0044}', '\u{0045}', '\u{0046}', '\u{0047}', '\u{0048}', '\u{0049}', '\u{004A}', '\u{004B}', '\u{004C}', '\u{004D}', '\u{004E}', '\u{004F}', '\u{0050}', '\u{0051}', '\u{0052}', '\u{0053}', '\u{0054}', '\u{0055}', '\u{0056}', '\u{0057}', '\u{0058}', '\u{0059}', '\u{005A}', '\u{00C0}', '\u{00C1}', '\u{00C2}', '\u{00C3}', '\u{00C4}', '\u{00C5}', '\u{00C6}', '\u{00C7}', '\u{00C8}', '\u{00C9}', '\u{00CA}', '\u{00CB}', '\u{00CC}', '\u{00CD}', '\u{00CE}', '\u{00CF}', '\u{00D0}', '\u{00D1}', '\u{00D2}', '\u{00D3}', '\u{00D4}', '\u{00D5}', '\u{00D6}', '\u{00D8}', '\u{00D9}', '\u{00DA}', '\u{00DB}', '\u{00DC}', '\u{00DD}', '\u{00DE}', '\u{0100}', '\u{0102}', '\u{0104}', '\u{0106}', '\u{0108}', '\u{010A}', '\u{010C}', '\u{010E}', '\u{0110}', '\u{0112}', '\u{0114}', '\u{0116}', '\u{0118}', '\u{011A}', '\u{011C}', '\u{011E}', '\u{0120}', '\u{0122}', '\u{0124}', '\u{0126}', '\u{0128}', '\u{012A}', '\u{012C}', '\u{012E}', '\u{0130}', '\u{0132}', '\u{0134}', '\u{0136}', '\u{0139}', '\u{013B}', '\u{013D}', '\u{013F}', '\u{0141}', '\u{0143}', '\u{0145}', '\u{0147}', '\u{014A}', '\u{014C}', '\u{014E}', '\u{0150}', '\u{0152}', '\u{0154}', '\u{0156}', '\u{0158}', '\u{015A}', '\u{015C}', '\u{015E}', '\u{0160}', '\u{0162}', '\u{0164}', '\u{0166}', '\u{0168}', '\u{016A}', '\u{016C}', '\u{016E}', '\u{0170}', '\u{0172}', '\u{0174}', '\u{0176}', '\u{0178}', '\u{0179}', '\u{017B}', '\u{017D}', '\u{0181}', '\u{0182}', '\u{0184}', '\u{0186}', '\u{0187}', '\u{0189}', '\u{018A}', '\u{018B}', '\u{018E}', '\u{018F}', '\u{0190}', '\u{0191}', '\u{0193}', '\u{0194}', '\u{0196}', '\u{0197}', '\u{0198}', '\u{019C}', '\u{019D}', '\u{019F}', '\u{01A0}', '\u{01A2}', '\u{01A4}', '\u{01A6}', '\u{01A7}', '\u{01A9}', '\u{01AC}', '\u{01AE}', '\u{01AF}', '\u{01B1}', '\u{01B2}', '\u{01B3}', '\u{01B5}', '\u{01B7}', '\u{01B8}', '\u{01BC}', '\u{01C4}', '\u{01C7}', '\u{01CA}', '\u{01CD}', '\u{01CF}', '\u{01D1}', '\u{01D3}', '\u{01D5}', '\u{01D7}', '\u{01D9}', '\u{01DB}', '\u{01DE}', '\u{01E0}', '\u{01E2}', '\u{01E4}', '\u{01E6}', '\u{01E8}', '\u{01EA}', '\u{01EC}', '\u{01EE}', '\u{01F1}', '\u{01F4}', '\u{01F6}', '\u{01F7}', '\u{01F8}', '\u{01FA}', '\u{01FC}', '\u{01FE}', '\u{0200}', '\u{0202}', '\u{0204}', '\u{0206}', '\u{0208}', '\u{020A}', '\u{020C}', '\u{020E}', '\u{0210}', '\u{0212}', '\u{0214}', '\u{0216}', '\u{0218}', '\u{021A}', '\u{021C}', '\u{021E}', '\u{0220}', '\u{0222}', '\u{0224}', '\u{0226}', '\u{0228}', '\u{022A}', '\u{022C}', '\u{022E}', '\u{0230}', '\u{0232}', '\u{023A}', '\u{023B}', '\u{023D}', '\u{023E}', '\u{0241}', '\u{0243}', '\u{0244}', '\u{0245}', '\u{0246}', '\u{0248}', '\u{024A}', '\u{024C}', '\u{024E}', '\u{0370}', '\u{0372}', '\u{0376}', '\u{0386}', '\u{0388}', '\u{0389}', '\u{038A}', '\u{038C}', '\u{038E}', '\u{038F}', '\u{0391}', '\u{0392}', '\u{0393}', '\u{0394}', '\u{0395}', '\u{0396}', '\u{0397}', '\u{0398}', '\u{0399}', '\u{039A}', '\u{039B}', '\u{039C}', '\u{039D}', '\u{039E}', '\u{039F}', '\u{03A0}', '\u{03A1}', '\u{03A3}', '\u{03A4}', '\u{03A5}', '\u{03A6}', '\u{03A7}', '\u{03A8}', '\u{03A9}', '\u{03AA}', '\u{03AB}', '\u{03CF}', '\u{03D2}', '\u{03D3}', '\u{03D4}', '\u{03D8}', '\u{03DA}', '\u{03DC}', '\u{03DE}', '\u{03E0}', '\u{03E2}', '\u{03E4}', '\u{03E6}', '\u{03E8}', '\u{03EA}', '\u{03EC}', '\u{03EE}', '\u{03F4}', '\u{03F7}', '\u{03F9}', '\u{03FA}', '\u{03FD}', '\u{03FE}', '\u{03FF}', '\u{0400}', '\u{0401}', '\u{0402}', '\u{0403}', '\u{0404}', '\u{0405}', '\u{0406}', '\u{0407}', '\u{0408}', '\u{0409}', '\u{040A}', '\u{040B}', '\u{040C}', '\u{040D}', '\u{040E}', '\u{040F}', '\u{0410}', '\u{0411}', '\u{0412}', '\u{0413}', '\u{0414}', '\u{0415}', '\u{0416}', '\u{0417}', '\u{0418}', '\u{0419}', '\u{041A}', '\u{041B}', '\u{041C}', '\u{041D}', '\u{041E}', '\u{041F}', '\u{0420}', '\u{0421}', '\u{0422}', '\u{0423}', '\u{0424}', '\u{0425}', '\u{0426}', '\u{0427}', '\u{0428}', '\u{0429}', '\u{042A}', '\u{042B}', '\u{042C}', '\u{042D}', '\u{042E}', '\u{042F}', '\u{0460}', '\u{0462}', '\u{0464}', '\u{0466}', '\u{0468}', '\u{046A}', '\u{046C}', '\u{046E}', '\u{0470}', '\u{0472}', '\u{0474}', '\u{0476}', '\u{0478}', '\u{047A}', '\u{047C}', '\u{047E}', '\u{0480}', '\u{048A}', '\u{048C}', '\u{048E}', '\u{0490}', '\u{0492}', '\u{0494}', '\u{0496}', '\u{0498}', '\u{049A}', '\u{049C}', '\u{049E}', '\u{04A0}', '\u{04A2}', '\u{04A4}', '\u{04A6}', '\u{04A8}', '\u{04AA}', '\u{04AC}', '\u{04AE}', '\u{04B0}', '\u{04B2}', '\u{04B4}', '\u{04B6}', '\u{04B8}', '\u{04BA}', '\u{04BC}', '\u{04BE}', '\u{04C0}', '\u{04C1}', '\u{04C3}', '\u{04C5}', '\u{04C7}', '\u{04C9}', '\u{04CB}', '\u{04CD}', '\u{04D0}', '\u{04D2}', '\u{04D4}', '\u{04D6}', '\u{04D8}', '\u{04DA}', '\u{04DC}', '\u{04DE}', '\u{04E0}', '\u{04E2}', '\u{04E4}', '\u{04E6}', '\u{04E8}', '\u{04EA}', '\u{04EC}', '\u{04EE}', '\u{04F0}', '\u{04F2}', '\u{04F4}', '\u{04F6}', '\u{04F8}', '\u{04FA}', '\u{04FC}', '\u{04FE}', '\u{0500}', '\u{0502}', '\u{0504}', '\u{0506}', '\u{0508}', '\u{050A}', '\u{050C}', '\u{050E}', '\u{0510}', '\u{0512}', '\u{0514}', '\u{0516}', '\u{0518}', '\u{051A}', '\u{051C}', '\u{051E}', '\u{0520}', '\u{0522}', '\u{0531}', '\u{0532}', '\u{0533}', '\u{0534}', '\u{0535}', '\u{0536}', '\u{0537}', '\u{0538}', '\u{0539}', '\u{053A}', '\u{053B}', '\u{053C}', '\u{053D}', '\u{053E}', '\u{053F}', '\u{0540}', '\u{0541}', '\u{0542}', '\u{0543}', '\u{0544}', '\u{0545}', '\u{0546}', '\u{0547}', '\u{0548}', '\u{0549}', '\u{054A}', '\u{054B}', '\u{054C}', '\u{054D}', '\u{054E}', '\u{054F}', '\u{0550}', '\u{0551}', '\u{0552}', '\u{0553}', '\u{0554}', '\u{0555}', '\u{0556}', '\u{10A0}', '\u{10A1}', '\u{10A2}', '\u{10A3}', '\u{10A4}', '\u{10A5}', '\u{10A6}', '\u{10A7}', '\u{10A8}', '\u{10A9}', '\u{10AA}', '\u{10AB}', '\u{10AC}', '\u{10AD}', '\u{10AE}', '\u{10AF}', '\u{10B0}', '\u{10B1}', '\u{10B2}', '\u{10B3}', '\u{10B4}', '\u{10B5}', '\u{10B6}', '\u{10B7}', '\u{10B8}', '\u{10B9}', '\u{10BA}', '\u{10BB}', '\u{10BC}', '\u{10BD}', '\u{10BE}', '\u{10BF}', '\u{10C0}', '\u{10C1}', '\u{10C2}', '\u{10C3}', '\u{10C4}', '\u{10C5}', '\u{1E00}', '\u{1E02}', '\u{1E04}', '\u{1E06}', '\u{1E08}', '\u{1E0A}', '\u{1E0C}', '\u{1E0E}', '\u{1E10}', '\u{1E12}', '\u{1E14}', '\u{1E16}', '\u{1E18}', '\u{1E1A}', '\u{1E1C}', '\u{1E1E}', '\u{1E20}', '\u{1E22}', '\u{1E24}', '\u{1E26}', '\u{1E28}', '\u{1E2A}', '\u{1E2C}', '\u{1E2E}', '\u{1E30}', '\u{1E32}', '\u{1E34}', '\u{1E36}', '\u{1E38}', '\u{1E3A}', '\u{1E3C}', '\u{1E3E}', '\u{1E40}', '\u{1E42}', '\u{1E44}', '\u{1E46}', '\u{1E48}', '\u{1E4A}', '\u{1E4C}', '\u{1E4E}', '\u{1E50}', '\u{1E52}', '\u{1E54}', '\u{1E56}', '\u{1E58}', '\u{1E5A}', '\u{1E5C}', '\u{1E5E}', '\u{1E60}', '\u{1E62}', '\u{1E64}', '\u{1E66}', '\u{1E68}', '\u{1E6A}', '\u{1E6C}', '\u{1E6E}', '\u{1E70}', '\u{1E72}', '\u{1E74}', '\u{1E76}', '\u{1E78}', '\u{1E7A}', '\u{1E7C}', '\u{1E7E}', '\u{1E80}', '\u{1E82}', '\u{1E84}', '\u{1E86}', '\u{1E88}', '\u{1E8A}', '\u{1E8C}', '\u{1E8E}', '\u{1E90}', '\u{1E92}', '\u{1E94}', '\u{1E9E}', '\u{1EA0}', '\u{1EA2}', '\u{1EA4}', '\u{1EA6}', '\u{1EA8}', '\u{1EAA}', '\u{1EAC}', '\u{1EAE}', '\u{1EB0}', '\u{1EB2}', '\u{1EB4}', '\u{1EB6}', '\u{1EB8}', '\u{1EBA}', '\u{1EBC}', '\u{1EBE}', '\u{1EC0}', '\u{1EC2}', '\u{1EC4}', '\u{1EC6}', '\u{1EC8}', '\u{1ECA}', '\u{1ECC}', '\u{1ECE}', '\u{1ED0}', '\u{1ED2}', '\u{1ED4}', '\u{1ED6}', '\u{1ED8}', '\u{1EDA}', '\u{1EDC}', '\u{1EDE}', '\u{1EE0}', '\u{1EE2}', '\u{1EE4}', '\u{1EE6}', '\u{1EE8}', '\u{1EEA}', '\u{1EEC}', '\u{1EEE}', '\u{1EF0}', '\u{1EF2}', '\u{1EF4}', '\u{1EF6}', '\u{1EF8}', '\u{1EFA}', '\u{1EFC}', '\u{1EFE}', '\u{1F08}', '\u{1F09}', '\u{1F0A}', '\u{1F0B}', '\u{1F0C}', '\u{1F0D}', '\u{1F0E}', '\u{1F0F}', '\u{1F18}', '\u{1F19}', '\u{1F1A}', '\u{1F1B}', '\u{1F1C}', '\u{1F1D}', '\u{1F28}', '\u{1F29}', '\u{1F2A}', '\u{1F2B}', '\u{1F2C}', '\u{1F2D}', '\u{1F2E}', '\u{1F2F}', '\u{1F38}', '\u{1F39}', '\u{1F3A}', '\u{1F3B}', '\u{1F3C}', '\u{1F3D}', '\u{1F3E}', '\u{1F3F}', '\u{1F48}', '\u{1F49}', '\u{1F4A}', '\u{1F4B}', '\u{1F4C}', '\u{1F4D}', '\u{1F59}', '\u{1F5B}', '\u{1F5D}', '\u{1F5F}', '\u{1F68}', '\u{1F69}', '\u{1F6A}', '\u{1F6B}', '\u{1F6C}', '\u{1F6D}', '\u{1F6E}', '\u{1F6F}', '\u{1FB8}', '\u{1FB9}', '\u{1FBA}', '\u{1FBB}', '\u{1FC8}', '\u{1FC9}', '\u{1FCA}', '\u{1FCB}', '\u{1FD8}', '\u{1FD9}', '\u{1FDA}', '\u{1FDB}', '\u{1FE8}', '\u{1FE9}', '\u{1FEA}', '\u{1FEB}', '\u{1FEC}', '\u{1FF8}', '\u{1FF9}', '\u{1FFA}', '\u{1FFB}', '\u{2102}', '\u{2107}', '\u{210B}', '\u{210C}', '\u{210D}', '\u{2110}', '\u{2111}', '\u{2112}', '\u{2115}', '\u{2119}', '\u{211A}', '\u{211B}', '\u{211C}', '\u{211D}', '\u{2124}', '\u{2126}', '\u{2128}', '\u{212A}', '\u{212B}', '\u{212C}', '\u{212D}', '\u{2130}', '\u{2131}', '\u{2132}', '\u{2133}', '\u{213E}', '\u{213F}', '\u{2145}', '\u{2183}', '\u{2C00}', '\u{2C01}', '\u{2C02}', '\u{2C03}', '\u{2C04}', '\u{2C05}', '\u{2C06}', '\u{2C07}', '\u{2C08}', '\u{2C09}', '\u{2C0A}', '\u{2C0B}', '\u{2C0C}', '\u{2C0D}', '\u{2C0E}', '\u{2C0F}', '\u{2C10}', '\u{2C11}', '\u{2C12}', '\u{2C13}', '\u{2C14}', '\u{2C15}', '\u{2C16}', '\u{2C17}', '\u{2C18}', '\u{2C19}', '\u{2C1A}', '\u{2C1B}', '\u{2C1C}', '\u{2C1D}', '\u{2C1E}', '\u{2C1F}', '\u{2C20}', '\u{2C21}', '\u{2C22}', '\u{2C23}', '\u{2C24}', '\u{2C25}', '\u{2C26}', '\u{2C27}', '\u{2C28}', '\u{2C29}', '\u{2C2A}', '\u{2C2B}', '\u{2C2C}', '\u{2C2D}', '\u{2C2E}', '\u{2C60}', '\u{2C62}', '\u{2C63}', '\u{2C64}', '\u{2C67}', '\u{2C69}', '\u{2C6B}', '\u{2C6D}', '\u{2C6E}', '\u{2C6F}', '\u{2C72}', '\u{2C75}', '\u{2C80}', '\u{2C82}', '\u{2C84}', '\u{2C86}', '\u{2C88}', '\u{2C8A}', '\u{2C8C}', '\u{2C8E}', '\u{2C90}', '\u{2C92}', '\u{2C94}', '\u{2C96}', '\u{2C98}', '\u{2C9A}', '\u{2C9C}', '\u{2C9E}', '\u{2CA0}', '\u{2CA2}', '\u{2CA4}', '\u{2CA6}', '\u{2CA8}', '\u{2CAA}', '\u{2CAC}', '\u{2CAE}', '\u{2CB0}', '\u{2CB2}', '\u{2CB4}', '\u{2CB6}', '\u{2CB8}', '\u{2CBA}', '\u{2CBC}', '\u{2CBE}', '\u{2CC0}', '\u{2CC2}', '\u{2CC4}', '\u{2CC6}', '\u{2CC8}', '\u{2CCA}', '\u{2CCC}', '\u{2CCE}', '\u{2CD0}', '\u{2CD2}', '\u{2CD4}', '\u{2CD6}', '\u{2CD8}', '\u{2CDA}', '\u{2CDC}', '\u{2CDE}', '\u{2CE0}', '\u{2CE2}', '\u{A640}', '\u{A642}', '\u{A644}', '\u{A646}', '\u{A648}', '\u{A64A}', '\u{A64C}', '\u{A64E}', '\u{A650}', '\u{A652}', '\u{A654}', '\u{A656}', '\u{A658}', '\u{A65A}', '\u{A65C}', '\u{A65E}', '\u{A662}', '\u{A664}', '\u{A666}', '\u{A668}', '\u{A66A}', '\u{A66C}', '\u{A680}', '\u{A682}', '\u{A684}', '\u{A686}', '\u{A688}', '\u{A68A}', '\u{A68C}', '\u{A68E}', '\u{A690}', '\u{A692}', '\u{A694}', '\u{A696}', '\u{A722}', '\u{A724}', '\u{A726}', '\u{A728}', '\u{A72A}', '\u{A72C}', '\u{A72E}', '\u{A732}', '\u{A734}', '\u{A736}', '\u{A738}', '\u{A73A}', '\u{A73C}', '\u{A73E}', '\u{A740}', '\u{A742}', '\u{A744}', '\u{A746}', '\u{A748}', '\u{A74A}', '\u{A74C}', '\u{A74E}', '\u{A750}', '\u{A752}', '\u{A754}', '\u{A756}', '\u{A758}', '\u{A75A}', '\u{A75C}', '\u{A75E}', '\u{A760}', '\u{A762}', '\u{A764}', '\u{A766}', '\u{A768}', '\u{A76A}', '\u{A76C}', '\u{A76E}', '\u{A779}', '\u{A77B}', '\u{A77D}', '\u{A77E}', '\u{A780}', '\u{A782}', '\u{A784}', '\u{A786}', '\u{A78B}', '\u{FF21}', '\u{FF22}', '\u{FF23}', '\u{FF24}', '\u{FF25}', '\u{FF26}', '\u{FF27}', '\u{FF28}', '\u{FF29}', '\u{FF2A}', '\u{FF2B}', '\u{FF2C}', '\u{FF2D}', '\u{FF2E}', '\u{FF2F}', '\u{FF30}', '\u{FF31}', '\u{FF32}', '\u{FF33}', '\u{FF34}', '\u{FF35}', '\u{FF36}', '\u{FF37}', '\u{FF38}', '\u{FF39}', '\u{FF3A}')
+    }
+
+    fn is_unicode_lowercase_letter(self) -> bool {
+        match_char_class!(self,
+            '\u{0061}', '\u{0062}', '\u{0063}', '\u{0064}', '\u{0065}', '\u{0066}', '\u{0067}', '\u{0068}', '\u{0069}', '\u{006A}', '\u{006B}', '\u{006C}', '\u{006D}', '\u{006E}', '\u{006F}', '\u{0070}', '\u{0071}', '\u{0072}', '\u{0073}', '\u{0074}', '\u{0075}', '\u{0076}', '\u{0077}', '\u{0078}', '\u{0079}', '\u{007A}', '\u{00AA}', '\u{00B5}', '\u{00BA}', '\u{00DF}', '\u{00E0}', '\u{00E1}', '\u{00E2}', '\u{00E3}', '\u{00E4}', '\u{00E5}', '\u{00E6}', '\u{00E7}', '\u{00E8}', '\u{00E9}', '\u{00EA}', '\u{00EB}', '\u{00EC}', '\u{00ED}', '\u{00EE}', '\u{00EF}', '\u{00F0}', '\u{00F1}', '\u{00F2}', '\u{00F3}', '\u{00F4}', '\u{00F5}', '\u{00F6}', '\u{00F8}', '\u{00F9}', '\u{00FA}', '\u{00FB}', '\u{00FC}', '\u{00FD}', '\u{00FE}', '\u{00FF}', '\u{0101}', '\u{0103}', '\u{0105}', '\u{0107}', '\u{0109}', '\u{010B}', '\u{010D}', '\u{010F}', '\u{0111}', '\u{0113}', '\u{0115}', '\u{0117}', '\u{0119}', '\u{011B}', '\u{011D}', '\u{011F}', '\u{0121}', '\u{0123}', '\u{0125}', '\u{0127}', '\u{0129}', '\u{012B}', '\u{012D}', '\u{012F}', '\u{0131}', '\u{0133}', '\u{0135}', '\u{0137}', '\u{0138}', '\u{013A}', '\u{013C}', '\u{013E}', '\u{0140}', '\u{0142}', '\u{0144}', '\u{0146}', '\u{0148}', '\u{0149}', '\u{014B}', '\u{014D}', '\u{014F}', '\u{0151}', '\u{0153}', '\u{0155}', '\u{0157}', '\u{0159}', '\u{015B}', '\u{015D}', '\u{015F}', '\u{0161}', '\u{0163}', '\u{0165}', '\u{0167}', '\u{0169}', '\u{016B}', '\u{016D}', '\u{016F}', '\u{0171}', '\u{0173}', '\u{0175}', '\u{0177}', '\u{017A}', '\u{017C}', '\u{017E}', '\u{017F}', '\u{0180}', '\u{0183}', '\u{0185}', '\u{0188}', '\u{018C}', '\u{018D}', '\u{0192}', '\u{0195}', '\u{0199}', '\u{019A}', '\u{019B}', '\u{019E}', '\u{01A1}', '\u{01A3}', '\u{01A5}', '\u{01A8}', '\u{01AA}', '\u{01AB}', '\u{01AD}', '\u{01B0}', '\u{01B4}', '\u{01B6}', '\u{01B9}', '\u{01BA}', '\u{01BD}', '\u{01BE}', '\u{01BF}', '\u{01C6}', '\u{01C9}', '\u{01CC}', '\u{01CE}', '\u{01D0}', '\u{01D2}', '\u{01D4}', '\u{01D6}', '\u{01D8}', '\u{01DA}', '\u{01DC}', '\u{01DD}', '\u{01DF}', '\u{01E1}', '\u{01E3}', '\u{01E5}', '\u{01E7}', '\u{01E9}', '\u{01EB}', '\u{01ED}', '\u{01EF}', '\u{01F0}', '\u{01F3}', '\u{01F5}', '\u{01F9}', '\u{01FB}', '\u{01FD}', '\u{01FF}', '\u{0201}', '\u{0203}', '\u{0205}', '\u{0207}', '\u{0209}', '\u{020B}', '\u{020D}', '\u{020F}', '\u{0211}', '\u{0213}', '\u{0215}', '\u{0217}', '\u{0219}', '\u{021B}', '\u{021D}', '\u{021F}', '\u{0221}', '\u{0223}', '\u{0225}', '\u{0227}', '\u{0229}', '\u{022B}', '\u{022D}', '\u{022F}', '\u{0231}', '\u{0233}', '\u{0234}', '\u{0235}', '\u{0236}', '\u{0237}', '\u{0238}', '\u{0239}', '\u{023C}', '\u{023F}', '\u{0240}', '\u{0242}', '\u{0247}', '\u{0249}', '\u{024B}', '\u{024D}', '\u{024F}', '\u{0250}', '\u{0251}', '\u{0252}', '\u{0253}', '\u{0254}', '\u{0255}', '\u{0256}', '\u{0257}', '\u{0258}', '\u{0259}', '\u{025A}', '\u{025B}', '\u{025C}', '\u{025D}', '\u{025E}', '\u{025F}', '\u{0260}', '\u{0261}', '\u{0262}', '\u{0263}', '\u{0264}', '\u{0265}', '\u{0266}', '\u{0267}', '\u{0268}', '\u{0269}', '\u{026A}', '\u{026B}', '\u{026C}', '\u{026D}', '\u{026E}', '\u{026F}', '\u{0270}', '\u{0271}', '\u{0272}', '\u{0273}', '\u{0274}', '\u{0275}', '\u{0276}', '\u{0277}', '\u{0278}', '\u{0279}', '\u{027A}', '\u{027B}', '\u{027C}', '\u{027D}', '\u{027E}', '\u{027F}', '\u{0280}', '\u{0281}', '\u{0282}', '\u{0283}', '\u{0284}', '\u{0285}', '\u{0286}', '\u{0287}', '\u{0288}', '\u{0289}', '\u{028A}', '\u{028B}', '\u{028C}', '\u{028D}', '\u{028E}', '\u{028F}', '\u{0290}', '\u{0291}', '\u{0292}', '\u{0293}', '\u{0295}', '\u{0296}', '\u{0297}', '\u{0298}', '\u{0299}', '\u{029A}', '\u{029B}', '\u{029C}', '\u{029D}', '\u{029E}', '\u{029F}', '\u{02A0}', '\u{02A1}', '\u{02A2}', '\u{02A3}', '\u{02A4}', '\u{02A5}', '\u{02A6}', '\u{02A7}', '\u{02A8}', '\u{02A9}', '\u{02AA}', '\u{02AB}', '\u{02AC}', '\u{02AD}', '\u{02AE}', '\u{02AF}', '\u{0371}', '\u{0373}', '\u{0377}', '\u{037B}', '\u{037C}', '\u{037D}', '\u{0390}', '\u{03AC}', '\u{03AD}', '\u{03AE}', '\u{03AF}', '\u{03B0}', '\u{03B1}', '\u{03B2}', '\u{03B3}', '\u{03B4}', '\u{03B5}', '\u{03B6}', '\u{03B7}', '\u{03B8}', '\u{03B9}', '\u{03BA}', '\u{03BB}', '\u{03BC}', '\u{03BD}', '\u{03BE}', '\u{03BF}', '\u{03C0}', '\u{03C1}', '\u{03C2}', '\u{03C3}', '\u{03C4}', '\u{03C5}', '\u{03C6}', '\u{03C7}', '\u{03C8}', '\u{03C9}', '\u{03CA}', '\u{03CB}', '\u{03CC}', '\u{03CD}', '\u{03CE}', '\u{03D0}', '\u{03D1}', '\u{03D5}', '\u{03D6}', '\u{03D7}', '\u{03D9}', '\u{03DB}', '\u{03DD}', '\u{03DF}', '\u{03E1}', '\u{03E3}', '\u{03E5}', '\u{03E7}', '\u{03E9}', '\u{03EB}', '\u{03ED}', '\u{03EF}', '\u{03F0}', '\u{03F1}', '\u{03F2}', '\u{03F3}', '\u{03F5}', '\u{03F8}', '\u{03FB}', '\u{03FC}', '\u{0430}', '\u{0431}', '\u{0432}', '\u{0433}', '\u{0434}', '\u{0435}', '\u{0436}', '\u{0437}', '\u{0438}', '\u{0439}', '\u{043A}', '\u{043B}', '\u{043C}', '\u{043D}', '\u{043E}', '\u{043F}', '\u{0440}', '\u{0441}', '\u{0442}', '\u{0443}', '\u{0444}', '\u{0445}', '\u{0446}', '\u{0447}', '\u{0448}', '\u{0449}', '\u{044A}', '\u{044B}', '\u{044C}', '\u{044D}', '\u{044E}', '\u{044F}', '\u{0450}', '\u{0451}', '\u{0452}', '\u{0453}', '\u{0454}', '\u{0455}', '\u{0456}', '\u{0457}', '\u{0458}', '\u{0459}', '\u{045A}', '\u{045B}', '\u{045C}', '\u{045D}', '\u{045E}', '\u{045F}', '\u{0461}', '\u{0463}', '\u{0465}', '\u{0467}', '\u{0469}', '\u{046B}', '\u{046D}', '\u{046F}', '\u{0471}', '\u{0473}', '\u{0475}', '\u{0477}', '\u{0479}', '\u{047B}', '\u{047D}', '\u{047F}', '\u{0481}', '\u{048B}', '\u{048D}', '\u{048F}', '\u{0491}', '\u{0493}', '\u{0495}', '\u{0497}', '\u{0499}', '\u{049B}', '\u{049D}', '\u{049F}', '\u{04A1}', '\u{04A3}', '\u{04A5}', '\u{04A7}', '\u{04A9}', '\u{04AB}', '\u{04AD}', '\u{04AF}', '\u{04B1}', '\u{04B3}', '\u{04B5}', '\u{04B7}', '\u{04B9}', '\u{04BB}', '\u{04BD}', '\u{04BF}', '\u{04C2}', '\u{04C4}', '\u{04C6}', '\u{04C8}', '\u{04CA}', '\u{04CC}', '\u{04CE}', '\u{04CF}', '\u{04D1}', '\u{04D3}', '\u{04D5}', '\u{04D7}', '\u{04D9}', '\u{04DB}', '\u{04DD}', '\u{04DF}', '\u{04E1}', '\u{04E3}', '\u{04E5}', '\u{04E7}', '\u{04E9}', '\u{04EB}', '\u{04ED}', '\u{04EF}', '\u{04F1}', '\u{04F3}', '\u{04F5}', '\u{04F7}', '\u{04F9}', '\u{04FB}', '\u{04FD}', '\u{04FF}', '\u{0501}', '\u{0503}', '\u{0505}', '\u{0507}', '\u{0509}', '\u{050B}', '\u{050D}', '\u{050F}', '\u{0511}', '\u{0513}', '\u{0515}', '\u{0517}', '\u{0519}', '\u{051B}', '\u{051D}', '\u{051F}', '\u{0521}', '\u{0523}', '\u{0561}', '\u{0562}', '\u{0563}', '\u{0564}', '\u{0565}', '\u{0566}', '\u{0567}', '\u{0568}', '\u{0569}', '\u{056A}', '\u{056B}', '\u{056C}', '\u{056D}', '\u{056E}', '\u{056F}', '\u{0570}', '\u{0571}', '\u{0572}', '\u{0573}', '\u{0574}', '\u{0575}', '\u{0576}', '\u{0577}', '\u{0578}', '\u{0579}', '\u{057A}', '\u{057B}', '\u{057C}', '\u{057D}', '\u{057E}', '\u{057F}', '\u{0580}', '\u{0581}', '\u{0582}', '\u{0583}', '\u{0584}', '\u{0585}', '\u{0586}', '\u{0587}', '\u{1D00}', '\u{1D01}', '\u{1D02}', '\u{1D03}', '\u{1D04}', '\u{1D05}', '\u{1D06}', '\u{1D07}', '\u{1D08}', '\u{1D09}', '\u{1D0A}', '\u{1D0B}', '\u{1D0C}', '\u{1D0D}', '\u{1D0E}', '\u{1D0F}', '\u{1D10}', '\u{1D11}', '\u{1D12}', '\u{1D13}', '\u{1D14}', '\u{1D15}', '\u{1D16}', '\u{1D17}', '\u{1D18}', '\u{1D19}', '\u{1D1A}', '\u{1D1B}', '\u{1D1C}', '\u{1D1D}', '\u{1D1E}', '\u{1D1F}', '\u{1D20}', '\u{1D21}', '\u{1D22}', '\u{1D23}', '\u{1D24}', '\u{1D25}', '\u{1D26}', '\u{1D27}', '\u{1D28}', '\u{1D29}', '\u{1D2A}', '\u{1D2B}', '\u{1D62}', '\u{1D63}', '\u{1D64}', '\u{1D65}', '\u{1D66}', '\u{1D67}', '\u{1D68}', '\u{1D69}', '\u{1D6A}', '\u{1D6B}', '\u{1D6C}', '\u{1D6D}', '\u{1D6E}', '\u{1D6F}', '\u{1D70}', '\u{1D71}', '\u{1D72}', '\u{1D73}', '\u{1D74}', '\u{1D75}', '\u{1D76}', '\u{1D77}', '\u{1D79}', '\u{1D7A}', '\u{1D7B}', '\u{1D7C}', '\u{1D7D}', '\u{1D7E}', '\u{1D7F}', '\u{1D80}', '\u{1D81}', '\u{1D82}', '\u{1D83}', '\u{1D84}', '\u{1D85}', '\u{1D86}', '\u{1D87}', '\u{1D88}', '\u{1D89}', '\u{1D8A}', '\u{1D8B}', '\u{1D8C}', '\u{1D8D}', '\u{1D8E}', '\u{1D8F}', '\u{1D90}', '\u{1D91}', '\u{1D92}', '\u{1D93}', '\u{1D94}', '\u{1D95}', '\u{1D96}', '\u{1D97}', '\u{1D98}', '\u{1D99}', '\u{1D9A}', '\u{1E01}', '\u{1E03}', '\u{1E05}', '\u{1E07}', '\u{1E09}', '\u{1E0B}', '\u{1E0D}', '\u{1E0F}', '\u{1E11}', '\u{1E13}', '\u{1E15}', '\u{1E17}', '\u{1E19}', '\u{1E1B}', '\u{1E1D}', '\u{1E1F}', '\u{1E21}', '\u{1E23}', '\u{1E25}', '\u{1E27}', '\u{1E29}', '\u{1E2B}', '\u{1E2D}', '\u{1E2F}', '\u{1E31}', '\u{1E33}', '\u{1E35}', '\u{1E37}', '\u{1E39}', '\u{1E3B}', '\u{1E3D}', '\u{1E3F}', '\u{1E41}', '\u{1E43}', '\u{1E45}', '\u{1E47}', '\u{1E49}', '\u{1E4B}', '\u{1E4D}', '\u{1E4F}', '\u{1E51}', '\u{1E53}', '\u{1E55}', '\u{1E57}', '\u{1E59}', '\u{1E5B}', '\u{1E5D}', '\u{1E5F}', '\u{1E61}', '\u{1E63}', '\u{1E65}', '\u{1E67}', '\u{1E69}', '\u{1E6B}', '\u{1E6D}', '\u{1E6F}', '\u{1E71}', '\u{1E73}', '\u{1E75}', '\u{1E77}', '\u{1E79}', '\u{1E7B}', '\u{1E7D}', '\u{1E7F}', '\u{1E81}', '\u{1E83}', '\u{1E85}', '\u{1E87}', '\u{1E89}', '\u{1E8B}', '\u{1E8D}', '\u{1E8F}', '\u{1E91}', '\u{1E93}', '\u{1E95}', '\u{1E96}', '\u{1E97}', '\u{1E98}', '\u{1E99}', '\u{1E9A}', '\u{1E9B}', '\u{1E9C}', '\u{1E9D}', '\u{1E9F}', '\u{1EA1}', '\u{1EA3}', '\u{1EA5}', '\u{1EA7}', '\u{1EA9}', '\u{1EAB}', '\u{1EAD}', '\u{1EAF}', '\u{1EB1}', '\u{1EB3}', '\u{1EB5}', '\u{1EB7}', '\u{1EB9}', '\u{1EBB}', '\u{1EBD}', '\u{1EBF}', '\u{1EC1}', '\u{1EC3}', '\u{1EC5}', '\u{1EC7}', '\u{1EC9}', '\u{1ECB}', '\u{1ECD}', '\u{1ECF}', '\u{1ED1}', '\u{1ED3}', '\u{1ED5}', '\u{1ED7}', '\u{1ED9}', '\u{1EDB}', '\u{1EDD}', '\u{1EDF}', '\u{1EE1}', '\u{1EE3}', '\u{1EE5}', '\u{1EE7}', '\u{1EE9}', '\u{1EEB}', '\u{1EED}', '\u{1EEF}', '\u{1EF1}', '\u{1EF3}', '\u{1EF5}', '\u{1EF7}', '\u{1EF9}', '\u{1EFB}', '\u{1EFD}', '\u{1EFF}', '\u{1F00}', '\u{1F01}', '\u{1F02}', '\u{1F03}', '\u{1F04}', '\u{1F05}', '\u{1F06}', '\u{1F07}', '\u{1F10}', '\u{1F11}', '\u{1F12}', '\u{1F13}', '\u{1F14}', '\u{1F15}', '\u{1F20}', '\u{1F21}', '\u{1F22}', '\u{1F23}', '\u{1F24}', '\u{1F25}', '\u{1F26}', '\u{1F27}', '\u{1F30}', '\u{1F31}', '\u{1F32}', '\u{1F33}', '\u{1F34}', '\u{1F35}', '\u{1F36}', '\u{1F37}', '\u{1F40}', '\u{1F41}', '\u{1F42}', '\u{1F43}', '\u{1F44}', '\u{1F45}', '\u{1F50}', '\u{1F51}', '\u{1F52}', '\u{1F53}', '\u{1F54}', '\u{1F55}', '\u{1F56}', '\u{1F57}', '\u{1F60}', '\u{1F61}', '\u{1F62}', '\u{1F63}', '\u{1F64}', '\u{1F65}', '\u{1F66}', '\u{1F67}', '\u{1F70}', '\u{1F71}', '\u{1F72}', '\u{1F73}', '\u{1F74}', '\u{1F75}', '\u{1F76}', '\u{1F77}', '\u{1F78}', '\u{1F79}', '\u{1F7A}', '\u{1F7B}', '\u{1F7C}', '\u{1F7D}', '\u{1F80}', '\u{1F81}', '\u{1F82}', '\u{1F83}', '\u{1F84}', '\u{1F85}', '\u{1F86}', '\u{1F87}', '\u{1F90}', '\u{1F91}', '\u{1F92}', '\u{1F93}', '\u{1F94}', '\u{1F95}', '\u{1F96}', '\u{1F97}', '\u{1FA0}', '\u{1FA1}', '\u{1FA2}', '\u{1FA3}', '\u{1FA4}', '\u{1FA5}', '\u{1FA6}', '\u{1FA7}', '\u{1FB0}', '\u{1FB1}', '\u{1FB2}', '\u{1FB3}', '\u{1FB4}', '\u{1FB6}', '\u{1FB7}', '\u{1FBE}', '\u{1FC2}', '\u{1FC3}', '\u{1FC4}', '\u{1FC6}', '\u{1FC7}', '\u{1FD0}', '\u{1FD1}', '\u{1FD2}', '\u{1FD3}', '\u{1FD6}', '\u{1FD7}', '\u{1FE0}', '\u{1FE1}', '\u{1FE2}', '\u{1FE3}', '\u{1FE4}', '\u{1FE5}', '\u{1FE6}', '\u{1FE7}', '\u{1FF2}', '\u{1FF3}', '\u{1FF4}', '\u{1FF6}', '\u{1FF7}', '\u{2071}', '\u{207F}', '\u{210A}', '\u{210E}', '\u{210F}', '\u{2113}', '\u{212F}', '\u{2134}', '\u{2139}', '\u{213C}', '\u{213D}', '\u{2146}', '\u{2147}', '\u{2148}', '\u{2149}', '\u{214E}', '\u{2184}', '\u{2C30}', '\u{2C31}', '\u{2C32}', '\u{2C33}', '\u{2C34}', '\u{2C35}', '\u{2C36}', '\u{2C37}', '\u{2C38}', '\u{2C39}', '\u{2C3A}', '\u{2C3B}', '\u{2C3C}', '\u{2C3D}', '\u{2C3E}', '\u{2C3F}', '\u{2C40}', '\u{2C41}', '\u{2C42}', '\u{2C43}', '\u{2C44}', '\u{2C45}', '\u{2C46}', '\u{2C47}', '\u{2C48}', '\u{2C49}', '\u{2C4A}', '\u{2C4B}', '\u{2C4C}', '\u{2C4D}', '\u{2C4E}', '\u{2C4F}', '\u{2C50}', '\u{2C51}', '\u{2C52}', '\u{2C53}', '\u{2C54}', '\u{2C55}', '\u{2C56}', '\u{2C57}', '\u{2C58}', '\u{2C59}', '\u{2C5A}', '\u{2C5B}', '\u{2C5C}', '\u{2C5D}', '\u{2C5E}', '\u{2C61}', '\u{2C65}', '\u{2C66}', '\u{2C68}', '\u{2C6A}', '\u{2C6C}', '\u{2C71}', '\u{2C73}', '\u{2C74}', '\u{2C76}', '\u{2C77}', '\u{2C78}', '\u{2C79}', '\u{2C7A}', '\u{2C7B}', '\u{2C7C}', '\u{2C81}', '\u{2C83}', '\u{2C85}', '\u{2C87}', '\u{2C89}', '\u{2C8B}', '\u{2C8D}', '\u{2C8F}', '\u{2C91}', '\u{2C93}', '\u{2C95}', '\u{2C97}', '\u{2C99}', '\u{2C9B}', '\u{2C9D}', '\u{2C9F}', '\u{2CA1}', '\u{2CA3}', '\u{2CA5}', '\u{2CA7}', '\u{2CA9}', '\u{2CAB}', '\u{2CAD}', '\u{2CAF}', '\u{2CB1}', '\u{2CB3}', '\u{2CB5}', '\u{2CB7}', '\u{2CB9}', '\u{2CBB}', '\u{2CBD}', '\u{2CBF}', '\u{2CC1}', '\u{2CC3}', '\u{2CC5}', '\u{2CC7}', '\u{2CC9}', '\u{2CCB}', '\u{2CCD}', '\u{2CCF}', '\u{2CD1}', '\u{2CD3}', '\u{2CD5}', '\u{2CD7}', '\u{2CD9}', '\u{2CDB}', '\u{2CDD}', '\u{2CDF}', '\u{2CE1}', '\u{2CE3}', '\u{2CE4}', '\u{2D00}', '\u{2D01}', '\u{2D02}', '\u{2D03}', '\u{2D04}', '\u{2D05}', '\u{2D06}', '\u{2D07}', '\u{2D08}', '\u{2D09}', '\u{2D0A}', '\u{2D0B}', '\u{2D0C}', '\u{2D0D}', '\u{2D0E}', '\u{2D0F}', '\u{2D10}', '\u{2D11}', '\u{2D12}', '\u{2D13}', '\u{2D14}', '\u{2D15}', '\u{2D16}', '\u{2D17}', '\u{2D18}', '\u{2D19}', '\u{2D1A}', '\u{2D1B}', '\u{2D1C}', '\u{2D1D}', '\u{2D1E}', '\u{2D1F}', '\u{2D20}', '\u{2D21}', '\u{2D22}', '\u{2D23}', '\u{2D24}', '\u{2D25}', '\u{A641}', '\u{A643}', '\u{A645}', '\u{A647}', '\u{A649}', '\u{A64B}', '\u{A64D}', '\u{A64F}', '\u{A651}', '\u{A653}', '\u{A655}', '\u{A657}', '\u{A659}', '\u{A65B}', '\u{A65D}', '\u{A65F}', '\u{A663}', '\u{A665}', '\u{A667}', '\u{A669}', '\u{A66B}', '\u{A66D}', '\u{A681}', '\u{A683}', '\u{A685}', '\u{A687}', '\u{A689}', '\u{A68B}', '\u{A68D}', '\u{A68F}', '\u{A691}', '\u{A693}', '\u{A695}', '\u{A697}', '\u{A723}', '\u{A725}', '\u{A727}', '\u{A729}', '\u{A72B}', '\u{A72D}', '\u{A72F}', '\u{A730}', '\u{A731}', '\u{A733}', '\u{A735}', '\u{A737}', '\u{A739}', '\u{A73B}', '\u{A73D}', '\u{A73F}', '\u{A741}', '\u{A743}', '\u{A745}', '\u{A747}', '\u{A749}', '\u{A74B}', '\u{A74D}', '\u{A74F}', '\u{A751}', '\u{A753}', '\u{A755}', '\u{A757}', '\u{A759}', '\u{A75B}', '\u{A75D}', '\u{A75F}', '\u{A761}', '\u{A763}', '\u{A765}', '\u{A767}', '\u{A769}', '\u{A76B}', '\u{A76D}', '\u{A76F}', '\u{A771}', '\u{A772}', '\u{A773}', '\u{A774}', '\u{A775}', '\u{A776}', '\u{A777}', '\u{A778}', '\u{A77A}', '\u{A77C}', '\u{A77F}', '\u{A781}', '\u{A783}', '\u{A785}', '\u{A787}', '\u{A78C}', '\u{FB00}', '\u{FB01}', '\u{FB02}', '\u{FB03}', '\u{FB04}', '\u{FB05}', '\u{FB06}', '\u{FB13}', '\u{FB14}', '\u{FB15}', '\u{FB16}', '\u{FB17}', '\u{FF41}', '\u{FF42}', '\u{FF43}', '\u{FF44}', '\u{FF45}', '\u{FF46}', '\u{FF47}', '\u{FF48}', '\u{FF49}', '\u{FF4A}', '\u{FF4B}', '\u{FF4C}', '\u{FF4D}', '\u{FF4E}', '\u{FF4F}', '\u{FF50}', '\u{FF51}', '\u{FF52}', '\u{FF53}', '\u{FF54}', '\u{FF55}', '\u{FF56}', '\u{FF57}', '\u{FF58}', '\u{FF59}', '\u{FF5A}')
+
+    }
+
+    fn is_unicode_titlecase_letter(self) -> bool {
+        match_char_class!(self,
+            '\u{01C5}', '\u{01C8}', '\u{01CB}', '\u{01F2}', '\u{1F88}', '\u{1F89}', '\u{1F8A}', '\u{1F8B}', '\u{1F8C}', '\u{1F8D}', '\u{1F8E}', '\u{1F8F}', '\u{1F98}', '\u{1F99}', '\u{1F9A}', '\u{1F9B}', '\u{1F9C}', '\u{1F9D}', '\u{1F9E}', '\u{1F9F}', '\u{1FA8}', '\u{1FA9}', '\u{1FAA}', '\u{1FAB}', '\u{1FAC}', '\u{1FAD}', '\u{1FAE}', '\u{1FAF}', '\u{1FBC}', '\u{1FCC}')
+    }
+
+    fn is_unicode_modifier_letter(self) -> bool {
+        match_char_class!(self,
+            '\u{02B0}', '\u{02B1}', '\u{02B2}', '\u{02B3}', '\u{02B4}', '\u{02B5}', '\u{02B6}', '\u{02B7}', '\u{02B8}', '\u{02B9}', '\u{02BA}', '\u{02BB}', '\u{02BC}', '\u{02BD}', '\u{02BE}', '\u{02BF}', '\u{02C0}', '\u{02C1}', '\u{02C6}', '\u{02C7}', '\u{02C8}', '\u{02C9}', '\u{02CA}', '\u{02CB}', '\u{02CC}', '\u{02CD}', '\u{02CE}', '\u{02CF}', '\u{02D0}', '\u{02D1}', '\u{02E0}', '\u{02E1}', '\u{02E2}', '\u{02E3}', '\u{02E4}', '\u{02EC}', '\u{02EE}', '\u{0374}', '\u{037A}', '\u{0559}', '\u{0640}', '\u{06E5}', '\u{06E6}', '\u{07F4}', '\u{07F5}', '\u{07FA}', '\u{0971}', '\u{0E46}', '\u{0EC6}', '\u{10FC}', '\u{17D7}', '\u{1843}', '\u{1C78}', '\u{1C79}', '\u{1C7A}', '\u{1C7B}', '\u{1C7C}', '\u{1C7D}', '\u{1D2C}', '\u{1D2D}', '\u{1D2E}', '\u{1D2F}', '\u{1D30}', '\u{1D31}', '\u{1D32}', '\u{1D33}', '\u{1D34}', '\u{1D35}', '\u{1D36}', '\u{1D37}', '\u{1D38}', '\u{1D39}', '\u{1D3A}', '\u{1D3B}', '\u{1D3C}', '\u{1D3D}', '\u{1D3E}', '\u{1D3F}', '\u{1D40}', '\u{1D41}', '\u{1D42}', '\u{1D43}', '\u{1D44}', '\u{1D45}', '\u{1D46}', '\u{1D47}', '\u{1D48}', '\u{1D49}', '\u{1D4A}', '\u{1D4B}', '\u{1D4C}', '\u{1D4D}', '\u{1D4E}', '\u{1D4F}', '\u{1D50}', '\u{1D51}', '\u{1D52}', '\u{1D53}', '\u{1D54}', '\u{1D55}', '\u{1D56}', '\u{1D57}', '\u{1D58}', '\u{1D59}', '\u{1D5A}', '\u{1D5B}', '\u{1D5C}', '\u{1D5D}', '\u{1D5E}', '\u{1D5F}', '\u{1D60}', '\u{1D61}', '\u{1D78}', '\u{1D9B}', '\u{1D9C}', '\u{1D9D}', '\u{1D9E}', '\u{1D9F}', '\u{1DA0}', '\u{1DA1}', '\u{1DA2}', '\u{1DA3}', '\u{1DA4}', '\u{1DA5}', '\u{1DA6}', '\u{1DA7}', '\u{1DA8}', '\u{1DA9}', '\u{1DAA}', '\u{1DAB}', '\u{1DAC}', '\u{1DAD}', '\u{1DAE}', '\u{1DAF}', '\u{1DB0}', '\u{1DB1}', '\u{1DB2}', '\u{1DB3}', '\u{1DB4}', '\u{1DB5}', '\u{1DB6}', '\u{1DB7}', '\u{1DB8}', '\u{1DB9}', '\u{1DBA}', '\u{1DBB}', '\u{1DBC}', '\u{1DBD}', '\u{1DBE}', '\u{1DBF}', '\u{2090}', '\u{2091}', '\u{2092}', '\u{2093}', '\u{2094}', '\u{2C7D}', '\u{2D6F}', '\u{2E2F}', '\u{3005}', '\u{3031}', '\u{3032}', '\u{3033}', '\u{3034}', '\u{3035}', '\u{303B}', '\u{309D}', '\u{309E}', '\u{30FC}', '\u{30FD}', '\u{30FE}', '\u{A015}', '\u{A60C}', '\u{A67F}', '\u{A717}', '\u{A718}', '\u{A719}', '\u{A71A}', '\u{A71B}', '\u{A71C}', '\u{A71D}', '\u{A71E}', '\u{A71F}', '\u{A770}', '\u{A788}', '\u{FF70}', '\u{FF9E}', '\u{FF9F}')
+    }
+
+    fn is_unicode_other_letter(self) -> bool {
+        match_char_class!(self,
+             '\u{01BB}', '\u{01C0}', '\u{01C1}', '\u{01C2}', '\u{01C3}', '\u{0294}', '\u{05D0}', '\u{05D1}', '\u{05D2}', '\u{05D3}', '\u{05D4}', '\u{05D5}', '\u{05D6}', '\u{05D7}', '\u{05D8}', '\u{05D9}', '\u{05DA}', '\u{05DB}', '\u{05DC}', '\u{05DD}', '\u{05DE}', '\u{05DF}', '\u{05E0}', '\u{05E1}', '\u{05E2}', '\u{05E3}', '\u{05E4}', '\u{05E5}', '\u{05E6}', '\u{05E7}', '\u{05E8}', '\u{05E9}', '\u{05EA}', '\u{05F0}', '\u{05F1}', '\u{05F2}', '\u{0621}', '\u{0622}', '\u{0623}', '\u{0624}', '\u{0625}', '\u{0626}', '\u{0627}', '\u{0628}', '\u{0629}', '\u{062A}', '\u{062B}', '\u{062C}', '\u{062D}', '\u{062E}', '\u{062F}', '\u{0630}', '\u{0631}', '\u{0632}', '\u{0633}', '\u{0634}', '\u{0635}', '\u{0636}', '\u{0637}', '\u{0638}', '\u{0639}', '\u{063A}', '\u{063B}', '\u{063C}', '\u{063D}', '\u{063E}', '\u{063F}', '\u{0641}', '\u{0642}', '\u{0643}', '\u{0644}', '\u{0645}', '\u{0646}', '\u{0647}', '\u{0648}', '\u{0649}', '\u{064A}', '\u{066E}', '\u{066F}', '\u{0671}', '\u{0672}', '\u{0673}', '\u{0674}', '\u{0675}', '\u{0676}', '\u{0677}', '\u{0678}', '\u{0679}', '\u{067A}', '\u{067B}', '\u{067C}', '\u{067D}', '\u{067E}', '\u{067F}', '\u{0680}', '\u{0681}', '\u{0682}', '\u{0683}', '\u{0684}', '\u{0685}', '\u{0686}', '\u{0687}', '\u{0688}', '\u{0689}', '\u{068A}', '\u{068B}', '\u{068C}', '\u{068D}', '\u{068E}', '\u{068F}', '\u{0690}', '\u{0691}', '\u{0692}', '\u{0693}', '\u{0694}', '\u{0695}', '\u{0696}', '\u{0697}', '\u{0698}', '\u{0699}', '\u{069A}', '\u{069B}', '\u{069C}', '\u{069D}', '\u{069E}', '\u{069F}', '\u{06A0}', '\u{06A1}', '\u{06A2}', '\u{06A3}', '\u{06A4}', '\u{06A5}', '\u{06A6}', '\u{06A7}', '\u{06A8}', '\u{06A9}', '\u{06AA}', '\u{06AB}', '\u{06AC}', '\u{06AD}', '\u{06AE}', '\u{06AF}', '\u{06B0}', '\u{06B1}', '\u{06B2}', '\u{06B3}', '\u{06B4}', '\u{06B5}', '\u{06B6}', '\u{06B7}', '\u{06B8}', '\u{06B9}', '\u{06BA}', '\u{06BB}', '\u{06BC}', '\u{06BD}', '\u{06BE}', '\u{06BF}', '\u{06C0}', '\u{06C1}', '\u{06C2}', '\u{06C3}', '\u{06C4}', '\u{06C5}', '\u{06C6}', '\u{06C7}', '\u{06C8}', '\u{06C9}', '\u{06CA}', '\u{06CB}', '\u{06CC}', '\u{06CD}', '\u{06CE}', '\u{06CF}', '\u{06D0}', '\u{06D1}', '\u{06D2}', '\u{06D3}', '\u{06D5}', '\u{06EE}', '\u{06EF}', '\u{06FA}', '\u{06FB}', '\u{06FC}', '\u{06FF}', '\u{0710}', '\u{0712}', '\u{0713}', '\u{0714}', '\u{0715}', '\u{0716}', '\u{0717}', '\u{0718}', '\u{0719}', '\u{071A}', '\u{071B}', '\u{071C}', '\u{071D}', '\u{071E}', '\u{071F}', '\u{0720}', '\u{0721}', '\u{0722}', '\u{0723}', '\u{0724}', '\u{0725}', '\u{0726}', '\u{0727}', '\u{0728}', '\u{0729}', '\u{072A}', '\u{072B}', '\u{072C}', '\u{072D}', '\u{072E}', '\u{072F}', '\u{074D}', '\u{074E}', '\u{074F}', '\u{0750}', '\u{0751}', '\u{0752}', '\u{0753}', '\u{0754}', '\u{0755}', '\u{0756}', '\u{0757}', '\u{0758}', '\u{0759}', '\u{075A}', '\u{075B}', '\u{075C}', '\u{075D}', '\u{075E}', '\u{075F}', '\u{0760}', '\u{0761}', '\u{0762}', '\u{0763}', '\u{0764}', '\u{0765}', '\u{0766}', '\u{0767}', '\u{0768}', '\u{0769}', '\u{076A}', '\u{076B}', '\u{076C}', '\u{076D}', '\u{076E}', '\u{076F}', '\u{0770}', '\u{0771}', '\u{0772}', '\u{0773}', '\u{0774}', '\u{0775}', '\u{0776}', '\u{0777}', '\u{0778}', '\u{0779}', '\u{077A}', '\u{077B}', '\u{077C}', '\u{077D}', '\u{077E}', '\u{077F}', '\u{0780}', '\u{0781}', '\u{0782}', '\u{0783}', '\u{0784}', '\u{0785}', '\u{0786}', '\u{0787}', '\u{0788}', '\u{0789}', '\u{078A}', '\u{078B}', '\u{078C}', '\u{078D}', '\u{078E}', '\u{078F}', '\u{0790}', '\u{0791}', '\u{0792}', '\u{0793}', '\u{0794}', '\u{0795}', '\u{0796}', '\u{0797}', '\u{0798}', '\u{0799}', '\u{079A}', '\u{079B}', '\u{079C}', '\u{079D}', '\u{079E}', '\u{079F}', '\u{07A0}', '\u{07A1}', '\u{07A2}', '\u{07A3}', '\u{07A4}', '\u{07A5}', '\u{07B1}', '\u{07CA}', '\u{07CB}', '\u{07CC}', '\u{07CD}', '\u{07CE}', '\u{07CF}', '\u{07D0}', '\u{07D1}', '\u{07D2}', '\u{07D3}', '\u{07D4}', '\u{07D5}', '\u{07D6}', '\u{07D7}', '\u{07D8}', '\u{07D9}', '\u{07DA}', '\u{07DB}', '\u{07DC}', '\u{07DD}', '\u{07DE}', '\u{07DF}', '\u{07E0}', '\u{07E1}', '\u{07E2}', '\u{07E3}', '\u{07E4}', '\u{07E5}', '\u{07E6}', '\u{07E7}', '\u{07E8}', '\u{07E9}', '\u{07EA}', '\u{0904}', '\u{0905}', '\u{0906}', '\u{0907}', '\u{0908}', '\u{0909}', '\u{090A}', '\u{090B}', '\u{090C}', '\u{090D}', '\u{090E}', '\u{090F}', '\u{0910}', '\u{0911}', '\u{0912}', '\u{0913}', '\u{0914}', '\u{0915}', '\u{0916}', '\u{0917}', '\u{0918}', '\u{0919}', '\u{091A}', '\u{091B}', '\u{091C}', '\u{091D}', '\u{091E}', '\u{091F}', '\u{0920}', '\u{0921}', '\u{0922}', '\u{0923}', '\u{0924}', '\u{0925}', '\u{0926}', '\u{0927}', '\u{0928}', '\u{0929}', '\u{092A}', '\u{092B}', '\u{092C}', '\u{092D}', '\u{092E}', '\u{092F}', '\u{0930}', '\u{0931}', '\u{0932}', '\u{0933}', '\u{0934}', '\u{0935}', '\u{0936}', '\u{0937}', '\u{0938}', '\u{0939}', '\u{093D}', '\u{0950}', '\u{0958}', '\u{0959}', '\u{095A}', '\u{095B}', '\u{095C}', '\u{095D}', '\u{095E}', '\u{095F}', '\u{0960}', '\u{0961}', '\u{0972}', '\u{097B}', '\u{097C}', '\u{097D}', '\u{097E}', '\u{097F}', '\u{0985}', '\u{0986}', '\u{0987}', '\u{0988}', '\u{0989}', '\u{098A}', '\u{098B}', '\u{098C}', '\u{098F}', '\u{0990}', '\u{0993}', '\u{0994}', '\u{0995}', '\u{0996}', '\u{0997}', '\u{0998}', '\u{0999}', '\u{099A}', '\u{099B}', '\u{099C}', '\u{099D}', '\u{099E}', '\u{099F}', '\u{09A0}', '\u{09A1}', '\u{09A2}', '\u{09A3}', '\u{09A4}', '\u{09A5}', '\u{09A6}', '\u{09A7}', '\u{09A8}', '\u{09AA}', '\u{09AB}', '\u{09AC}', '\u{09AD}', '\u{09AE}', '\u{09AF}', '\u{09B0}', '\u{09B2}', '\u{09B6}', '\u{09B7}', '\u{09B8}', '\u{09B9}', '\u{09BD}', '\u{09CE}', '\u{09DC}', '\u{09DD}', '\u{09DF}', '\u{09E0}', '\u{09E1}', '\u{09F0}', '\u{09F1}', '\u{0A05}', '\u{0A06}', '\u{0A07}', '\u{0A08}', '\u{0A09}', '\u{0A0A}', '\u{0A0F}', '\u{0A10}', '\u{0A13}', '\u{0A14}', '\u{0A15}', '\u{0A16}', '\u{0A17}', '\u{0A18}', '\u{0A19}', '\u{0A1A}', '\u{0A1B}', '\u{0A1C}', '\u{0A1D}', '\u{0A1E}', '\u{0A1F}', '\u{0A20}', '\u{0A21}', '\u{0A22}', '\u{0A23}', '\u{0A24}', '\u{0A25}', '\u{0A26}', '\u{0A27}', '\u{0A28}', '\u{0A2A}', '\u{0A2B}', '\u{0A2C}', '\u{0A2D}', '\u{0A2E}', '\u{0A2F}', '\u{0A30}', '\u{0A32}', '\u{0A33}', '\u{0A35}', '\u{0A36}', '\u{0A38}', '\u{0A39}', '\u{0A59}', '\u{0A5A}', '\u{0A5B}', '\u{0A5C}', '\u{0A5E}', '\u{0A72}', '\u{0A73}', '\u{0A74}', '\u{0A85}', '\u{0A86}', '\u{0A87}', '\u{0A88}', '\u{0A89}', '\u{0A8A}', '\u{0A8B}', '\u{0A8C}', '\u{0A8D}', '\u{0A8F}', '\u{0A90}', '\u{0A91}', '\u{0A93}', '\u{0A94}', '\u{0A95}', '\u{0A96}', '\u{0A97}', '\u{0A98}', '\u{0A99}', '\u{0A9A}', '\u{0A9B}', '\u{0A9C}', '\u{0A9D}', '\u{0A9E}', '\u{0A9F}', '\u{0AA0}', '\u{0AA1}', '\u{0AA2}', '\u{0AA3}', '\u{0AA4}', '\u{0AA5}', '\u{0AA6}', '\u{0AA7}', '\u{0AA8}', '\u{0AAA}', '\u{0AAB}', '\u{0AAC}', '\u{0AAD}', '\u{0AAE}', '\u{0AAF}', '\u{0AB0}', '\u{0AB2}', '\u{0AB3}', '\u{0AB5}', '\u{0AB6}', '\u{0AB7}', '\u{0AB8}', '\u{0AB9}', '\u{0ABD}', '\u{0AD0}', '\u{0AE0}', '\u{0AE1}', '\u{0B05}', '\u{0B06}', '\u{0B07}', '\u{0B08}', '\u{0B09}', '\u{0B0A}', '\u{0B0B}', '\u{0B0C}', '\u{0B0F}', '\u{0B10}', '\u{0B13}', '\u{0B14}', '\u{0B15}', '\u{0B16}', '\u{0B17}', '\u{0B18}', '\u{0B19}', '\u{0B1A}', '\u{0B1B}', '\u{0B1C}', '\u{0B1D}', '\u{0B1E}', '\u{0B1F}', '\u{0B20}', '\u{0B21}', '\u{0B22}', '\u{0B23}', '\u{0B24}', '\u{0B25}', '\u{0B26}', '\u{0B27}', '\u{0B28}', '\u{0B2A}', '\u{0B2B}', '\u{0B2C}', '\u{0B2D}', '\u{0B2E}', '\u{0B2F}', '\u{0B30}', '\u{0B32}', '\u{0B33}', '\u{0B35}', '\u{0B36}', '\u{0B37}', '\u{0B38}', '\u{0B39}', '\u{0B3D}', '\u{0B5C}', '\u{0B5D}', '\u{0B5F}', '\u{0B60}', '\u{0B61}', '\u{0B71}', '\u{0B83}', '\u{0B85}', '\u{0B86}', '\u{0B87}', '\u{0B88}', '\u{0B89}', '\u{0B8A}', '\u{0B8E}', '\u{0B8F}', '\u{0B90}', '\u{0B92}', '\u{0B93}', '\u{0B94}', '\u{0B95}', '\u{0B99}', '\u{0B9A}', '\u{0B9C}', '\u{0B9E}', '\u{0B9F}', '\u{0BA3}', '\u{0BA4}', '\u{0BA8}', '\u{0BA9}', '\u{0BAA}', '\u{0BAE}', '\u{0BAF}', '\u{0BB0}', '\u{0BB1}', '\u{0BB2}', '\u{0BB3}', '\u{0BB4}', '\u{0BB5}', '\u{0BB6}', '\u{0BB7}', '\u{0BB8}', '\u{0BB9}', '\u{0BD0}', '\u{0C05}', '\u{0C06}', '\u{0C07}', '\u{0C08}', '\u{0C09}', '\u{0C0A}', '\u{0C0B}', '\u{0C0C}', '\u{0C0E}', '\u{0C0F}', '\u{0C10}', '\u{0C12}', '\u{0C13}', '\u{0C14}', '\u{0C15}', '\u{0C16}', '\u{0C17}', '\u{0C18}', '\u{0C19}', '\u{0C1A}', '\u{0C1B}', '\u{0C1C}', '\u{0C1D}', '\u{0C1E}', '\u{0C1F}', '\u{0C20}', '\u{0C21}', '\u{0C22}', '\u{0C23}', '\u{0C24}', '\u{0C25}', '\u{0C26}', '\u{0C27}', '\u{0C28}', '\u{0C2A}', '\u{0C2B}', '\u{0C2C}', '\u{0C2D}', '\u{0C2E}', '\u{0C2F}', '\u{0C30}', '\u{0C31}', '\u{0C32}', '\u{0C33}', '\u{0C35}', '\u{0C36}', '\u{0C37}', '\u{0C38}', '\u{0C39}', '\u{0C3D}', '\u{0C58}', '\u{0C59}', '\u{0C60}', '\u{0C61}', '\u{0C85}', '\u{0C86}', '\u{0C87}', '\u{0C88}', '\u{0C89}', '\u{0C8A}', '\u{0C8B}', '\u{0C8C}', '\u{0C8E}', '\u{0C8F}', '\u{0C90}', '\u{0C92}', '\u{0C93}', '\u{0C94}', '\u{0C95}', '\u{0C96}', '\u{0C97}', '\u{0C98}', '\u{0C99}', '\u{0C9A}', '\u{0C9B}', '\u{0C9C}', '\u{0C9D}', '\u{0C9E}', '\u{0C9F}', '\u{0CA0}', '\u{0CA1}', '\u{0CA2}', '\u{0CA3}', '\u{0CA4}', '\u{0CA5}', '\u{0CA6}', '\u{0CA7}', '\u{0CA8}', '\u{0CAA}', '\u{0CAB}', '\u{0CAC}', '\u{0CAD}', '\u{0CAE}', '\u{0CAF}', '\u{0CB0}', '\u{0CB1}', '\u{0CB2}', '\u{0CB3}', '\u{0CB5}', '\u{0CB6}', '\u{0CB7}', '\u{0CB8}', '\u{0CB9}', '\u{0CBD}', '\u{0CDE}', '\u{0CE0}', '\u{0CE1}', '\u{0D05}', '\u{0D06}', '\u{0D07}', '\u{0D08}', '\u{0D09}', '\u{0D0A}', '\u{0D0B}', '\u{0D0C}', '\u{0D0E}', '\u{0D0F}', '\u{0D10}', '\u{0D12}', '\u{0D13}', '\u{0D14}', '\u{0D15}', '\u{0D16}', '\u{0D17}', '\u{0D18}', '\u{0D19}', '\u{0D1A}', '\u{0D1B}', '\u{0D1C}', '\u{0D1D}', '\u{0D1E}', '\u{0D1F}', '\u{0D20}', '\u{0D21}', '\u{0D22}', '\u{0D23}', '\u{0D24}', '\u{0D25}', '\u{0D26}', '\u{0D27}', '\u{0D28}', '\u{0D2A}', '\u{0D2B}', '\u{0D2C}', '\u{0D2D}', '\u{0D2E}', '\u{0D2F}', '\u{0D30}', '\u{0D31}', '\u{0D32}', '\u{0D33}', '\u{0D34}', '\u{0D35}', '\u{0D36}', '\u{0D37}', '\u{0D38}', '\u{0D39}', '\u{0D3D}', '\u{0D60}', '\u{0D61}', '\u{0D7A}', '\u{0D7B}', '\u{0D7C}', '\u{0D7D}', '\u{0D7E}', '\u{0D7F}', '\u{0D85}', '\u{0D86}', '\u{0D87}', '\u{0D88}', '\u{0D89}', '\u{0D8A}', '\u{0D8B}', '\u{0D8C}', '\u{0D8D}', '\u{0D8E}', '\u{0D8F}', '\u{0D90}', '\u{0D91}', '\u{0D92}', '\u{0D93}', '\u{0D94}', '\u{0D95}', '\u{0D96}', '\u{0D9A}', '\u{0D9B}', '\u{0D9C}', '\u{0D9D}', '\u{0D9E}', '\u{0D9F}', '\u{0DA0}', '\u{0DA1}', '\u{0DA2}', '\u{0DA3}', '\u{0DA4}', '\u{0DA5}', '\u{0DA6}', '\u{0DA7}', '\u{0DA8}', '\u{0DA9}', '\u{0DAA}', '\u{0DAB}', '\u{0DAC}', '\u{0DAD}', '\u{0DAE}', '\u{0DAF}', '\u{0DB0}', '\u{0DB1}', '\u{0DB3}', '\u{0DB4}', '\u{0DB5}', '\u{0DB6}', '\u{0DB7}', '\u{0DB8}', '\u{0DB9}', '\u{0DBA}', '\u{0DBB}', '\u{0DBD}', '\u{0DC0}', '\u{0DC1}', '\u{0DC2}', '\u{0DC3}', '\u{0DC4}', '\u{0DC5}', '\u{0DC6}', '\u{0E01}', '\u{0E02}', '\u{0E03}', '\u{0E04}', '\u{0E05}', '\u{0E06}', '\u{0E07}', '\u{0E08}', '\u{0E09}', '\u{0E0A}', '\u{0E0B}', '\u{0E0C}', '\u{0E0D}', '\u{0E0E}', '\u{0E0F}', '\u{0E10}', '\u{0E11}', '\u{0E12}', '\u{0E13}', '\u{0E14}', '\u{0E15}', '\u{0E16}', '\u{0E17}', '\u{0E18}', '\u{0E19}', '\u{0E1A}', '\u{0E1B}', '\u{0E1C}', '\u{0E1D}', '\u{0E1E}', '\u{0E1F}', '\u{0E20}', '\u{0E21}', '\u{0E22}', '\u{0E23}', '\u{0E24}', '\u{0E25}', '\u{0E26}', '\u{0E27}', '\u{0E28}', '\u{0E29}', '\u{0E2A}', '\u{0E2B}', '\u{0E2C}', '\u{0E2D}', '\u{0E2E}', '\u{0E2F}', '\u{0E30}', '\u{0E32}', '\u{0E33}', '\u{0E40}', '\u{0E41}', '\u{0E42}', '\u{0E43}', '\u{0E44}', '\u{0E45}', '\u{0E81}', '\u{0E82}', '\u{0E84}', '\u{0E87}', '\u{0E88}', '\u{0E8A}', '\u{0E8D}', '\u{0E94}', '\u{0E95}', '\u{0E96}', '\u{0E97}', '\u{0E99}', '\u{0E9A}', '\u{0E9B}', '\u{0E9C}', '\u{0E9D}', '\u{0E9E}', '\u{0E9F}', '\u{0EA1}', '\u{0EA2}', '\u{0EA3}', '\u{0EA5}', '\u{0EA7}', '\u{0EAA}', '\u{0EAB}', '\u{0EAD}', '\u{0EAE}', '\u{0EAF}', '\u{0EB0}', '\u{0EB2}', '\u{0EB3}', '\u{0EBD}', '\u{0EC0}', '\u{0EC1}', '\u{0EC2}', '\u{0EC3}', '\u{0EC4}', '\u{0EDC}', '\u{0EDD}', '\u{0F00}', '\u{0F40}', '\u{0F41}', '\u{0F42}', '\u{0F43}', '\u{0F44}', '\u{0F45}', '\u{0F46}', '\u{0F47}', '\u{0F49}', '\u{0F4A}', '\u{0F4B}', '\u{0F4C}', '\u{0F4D}', '\u{0F4E}', '\u{0F4F}', '\u{0F50}', '\u{0F51}', '\u{0F52}', '\u{0F53}', '\u{0F54}', '\u{0F55}', '\u{0F56}', '\u{0F57}', '\u{0F58}', '\u{0F59}', '\u{0F5A}', '\u{0F5B}', '\u{0F5C}', '\u{0F5D}', '\u{0F5E}', '\u{0F5F}', '\u{0F60}', '\u{0F61}', '\u{0F62}', '\u{0F63}', '\u{0F64}', '\u{0F65}', '\u{0F66}', '\u{0F67}', '\u{0F68}', '\u{0F69}', '\u{0F6A}', '\u{0F6B}', '\u{0F6C}', '\u{0F88}', '\u{0F89}', '\u{0F8A}', '\u{0F8B}', '\u{1000}', '\u{1001}', '\u{1002}', '\u{1003}', '\u{1004}', '\u{1005}', '\u{1006}', '\u{1007}', '\u{1008}', '\u{1009}', '\u{100A}', '\u{100B}', '\u{100C}', '\u{100D}', '\u{100E}', '\u{100F}', '\u{1010}', '\u{1011}', '\u{1012}', '\u{1013}', '\u{1014}', '\u{1015}', '\u{1016}', '\u{1017}', '\u{1018}', '\u{1019}', '\u{101A}', '\u{101B}', '\u{101C}', '\u{101D}', '\u{101E}', '\u{101F}', '\u{1020}', '\u{1021}', '\u{1022}', '\u{1023}', '\u{1024}', '\u{1025}', '\u{1026}', '\u{1027}', '\u{1028}', '\u{1029}', '\u{102A}', '\u{103F}', '\u{1050}', '\u{1051}', '\u{1052}', '\u{1053}', '\u{1054}', '\u{1055}', '\u{105A}', '\u{105B}', '\u{105C}', '\u{105D}', '\u{1061}', '\u{1065}', '\u{1066}', '\u{106E}', '\u{106F}', '\u{1070}', '\u{1075}', '\u{1076}', '\u{1077}', '\u{1078}', '\u{1079}', '\u{107A}', '\u{107B}', '\u{107C}', '\u{107D}', '\u{107E}', '\u{107F}', '\u{1080}', '\u{1081}', '\u{108E}', '\u{10D0}', '\u{10D1}', '\u{10D2}', '\u{10D3}', '\u{10D4}', '\u{10D5}', '\u{10D6}', '\u{10D7}', '\u{10D8}', '\u{10D9}', '\u{10DA}', '\u{10DB}', '\u{10DC}', '\u{10DD}', '\u{10DE}', '\u{10DF}', '\u{10E0}', '\u{10E1}', '\u{10E2}', '\u{10E3}', '\u{10E4}', '\u{10E5}', '\u{10E6}', '\u{10E7}', '\u{10E8}', '\u{10E9}', '\u{10EA}', '\u{10EB}', '\u{10EC}', '\u{10ED}', '\u{10EE}', '\u{10EF}', '\u{10F0}', '\u{10F1}', '\u{10F2}', '\u{10F3}', '\u{10F4}', '\u{10F5}', '\u{10F6}', '\u{10F7}', '\u{10F8}', '\u{10F9}', '\u{10FA}', '\u{1100}', '\u{1101}', '\u{1102}', '\u{1103}', '\u{1104}', '\u{1105}', '\u{1106}', '\u{1107}', '\u{1108}', '\u{1109}', '\u{110A}', '\u{110B}', '\u{110C}', '\u{110D}', '\u{110E}', '\u{110F}', '\u{1110}', '\u{1111}', '\u{1112}', '\u{1113}', '\u{1114}', '\u{1115}', '\u{1116}', '\u{1117}', '\u{1118}', '\u{1119}', '\u{111A}', '\u{111B}', '\u{111C}', '\u{111D}', '\u{111E}', '\u{111F}', '\u{1120}', '\u{1121}', '\u{1122}', '\u{1123}', '\u{1124}', '\u{1125}', '\u{1126}', '\u{1127}', '\u{1128}', '\u{1129}', '\u{112A}', '\u{112B}', '\u{112C}', '\u{112D}', '\u{112E}', '\u{112F}', '\u{1130}', '\u{1131}', '\u{1132}', '\u{1133}', '\u{1134}', '\u{1135}', '\u{1136}', '\u{1137}', '\u{1138}', '\u{1139}', '\u{113A}', '\u{113B}', '\u{113C}', '\u{113D}', '\u{113E}', '\u{113F}', '\u{1140}', '\u{1141}', '\u{1142}', '\u{1143}', '\u{1144}', '\u{1145}', '\u{1146}', '\u{1147}', '\u{1148}', '\u{1149}', '\u{114A}', '\u{114B}', '\u{114C}', '\u{114D}', '\u{114E}', '\u{114F}', '\u{1150}', '\u{1151}', '\u{1152}', '\u{1153}', '\u{1154}', '\u{1155}', '\u{1156}', '\u{1157}', '\u{1158}', '\u{1159}', '\u{115F}', '\u{1160}', '\u{1161}', '\u{1162}', '\u{1163}', '\u{1164}', '\u{1165}', '\u{1166}', '\u{1167}', '\u{1168}', '\u{1169}', '\u{116A}', '\u{116B}', '\u{116C}', '\u{116D}', '\u{116E}', '\u{116F}', '\u{1170}', '\u{1171}', '\u{1172}', '\u{1173}', '\u{1174}', '\u{1175}', '\u{1176}', '\u{1177}', '\u{1178}', '\u{1179}', '\u{117A}', '\u{117B}', '\u{117C}', '\u{117D}', '\u{117E}', '\u{117F}', '\u{1180}', '\u{1181}', '\u{1182}', '\u{1183}', '\u{1184}', '\u{1185}', '\u{1186}', '\u{1187}', '\u{1188}', '\u{1189}', '\u{118A}', '\u{118B}', '\u{118C}', '\u{118D}', '\u{118E}', '\u{118F}', '\u{1190}', '\u{1191}', '\u{1192}', '\u{1193}', '\u{1194}', '\u{1195}', '\u{1196}', '\u{1197}', '\u{1198}', '\u{1199}', '\u{119A}', '\u{119B}', '\u{119C}', '\u{119D}', '\u{119E}', '\u{119F}', '\u{11A0}', '\u{11A1}', '\u{11A2}', '\u{11A8}', '\u{11A9}', '\u{11AA}', '\u{11AB}', '\u{11AC}', '\u{11AD}', '\u{11AE}', '\u{11AF}', '\u{11B0}', '\u{11B1}', '\u{11B2}', '\u{11B3}', '\u{11B4}', '\u{11B5}', '\u{11B6}', '\u{11B7}', '\u{11B8}', '\u{11B9}', '\u{11BA}', '\u{11BB}', '\u{11BC}', '\u{11BD}', '\u{11BE}', '\u{11BF}', '\u{11C0}', '\u{11C1}', '\u{11C2}', '\u{11C3}', '\u{11C4}', '\u{11C5}', '\u{11C6}', '\u{11C7}', '\u{11C8}', '\u{11C9}', '\u{11CA}', '\u{11CB}', '\u{11CC}', '\u{11CD}', '\u{11CE}', '\u{11CF}', '\u{11D0}', '\u{11D1}', '\u{11D2}', '\u{11D3}', '\u{11D4}', '\u{11D5}', '\u{11D6}', '\u{11D7}', '\u{11D8}', '\u{11D9}', '\u{11DA}', '\u{11DB}', '\u{11DC}', '\u{11DD}', '\u{11DE}', '\u{11DF}', '\u{11E0}', '\u{11E1}', '\u{11E2}', '\u{11E3}', '\u{11E4}', '\u{11E5}', '\u{11E6}', '\u{11E7}', '\u{11E8}', '\u{11E9}', '\u{11EA}', '\u{11EB}', '\u{11EC}', '\u{11ED}', '\u{11EE}', '\u{11EF}', '\u{11F0}', '\u{11F1}', '\u{11F2}', '\u{11F3}', '\u{11F4}', '\u{11F5}', '\u{11F6}', '\u{11F7}', '\u{11F8}', '\u{11F9}', '\u{1200}', '\u{1201}', '\u{1202}', '\u{1203}', '\u{1204}', '\u{1205}', '\u{1206}', '\u{1207}', '\u{1208}', '\u{1209}', '\u{120A}', '\u{120B}', '\u{120C}', '\u{120D}', '\u{120E}', '\u{120F}', '\u{1210}', '\u{1211}', '\u{1212}', '\u{1213}', '\u{1214}', '\u{1215}', '\u{1216}', '\u{1217}', '\u{1218}', '\u{1219}', '\u{121A}', '\u{121B}', '\u{121C}', '\u{121D}', '\u{121E}', '\u{121F}', '\u{1220}', '\u{1221}', '\u{1222}', '\u{1223}', '\u{1224}', '\u{1225}', '\u{1226}', '\u{1227}', '\u{1228}', '\u{1229}', '\u{122A}', '\u{122B}', '\u{122C}', '\u{122D}', '\u{122E}', '\u{122F}', '\u{1230}', '\u{1231}', '\u{1232}', '\u{1233}', '\u{1234}', '\u{1235}', '\u{1236}', '\u{1237}', '\u{1238}', '\u{1239}', '\u{123A}', '\u{123B}', '\u{123C}', '\u{123D}', '\u{123E}', '\u{123F}', '\u{1240}', '\u{1241}', '\u{1242}', '\u{1243}', '\u{1244}', '\u{1245}', '\u{1246}', '\u{1247}', '\u{1248}', '\u{124A}', '\u{124B}', '\u{124C}', '\u{124D}', '\u{1250}', '\u{1251}', '\u{1252}', '\u{1253}', '\u{1254}', '\u{1255}', '\u{1256}', '\u{1258}', '\u{125A}', '\u{125B}', '\u{125C}', '\u{125D}', '\u{1260}', '\u{1261}', '\u{1262}', '\u{1263}', '\u{1264}', '\u{1265}', '\u{1266}', '\u{1267}', '\u{1268}', '\u{1269}', '\u{126A}', '\u{126B}', '\u{126C}', '\u{126D}', '\u{126E}', '\u{126F}', '\u{1270}', '\u{1271}', '\u{1272}', '\u{1273}', '\u{1274}', '\u{1275}', '\u{1276}', '\u{1277}', '\u{1278}', '\u{1279}', '\u{127A}', '\u{127B}', '\u{127C}', '\u{127D}', '\u{127E}', '\u{127F}', '\u{1280}', '\u{1281}', '\u{1282}', '\u{1283}', '\u{1284}', '\u{1285}', '\u{1286}', '\u{1287}', '\u{1288}', '\u{128A}', '\u{128B}', '\u{128C}', '\u{128D}', '\u{1290}', '\u{1291}', '\u{1292}', '\u{1293}', '\u{1294}', '\u{1295}', '\u{1296}', '\u{1297}', '\u{1298}', '\u{1299}', '\u{129A}', '\u{129B}', '\u{129C}', '\u{129D}', '\u{129E}', '\u{129F}', '\u{12A0}', '\u{12A1}', '\u{12A2}', '\u{12A3}', '\u{12A4}', '\u{12A5}', '\u{12A6}', '\u{12A7}', '\u{12A8}', '\u{12A9}', '\u{12AA}', '\u{12AB}', '\u{12AC}', '\u{12AD}', '\u{12AE}', '\u{12AF}', '\u{12B0}', '\u{12B2}', '\u{12B3}', '\u{12B4}', '\u{12B5}', '\u{12B8}', '\u{12B9}', '\u{12BA}', '\u{12BB}', '\u{12BC}', '\u{12BD}', '\u{12BE}', '\u{12C0}', '\u{12C2}', '\u{12C3}', '\u{12C4}', '\u{12C5}', '\u{12C8}', '\u{12C9}', '\u{12CA}', '\u{12CB}', '\u{12CC}', '\u{12CD}', '\u{12CE}', '\u{12CF}', '\u{12D0}', '\u{12D1}', '\u{12D2}', '\u{12D3}', '\u{12D4}', '\u{12D5}', '\u{12D6}', '\u{12D8}', '\u{12D9}', '\u{12DA}', '\u{12DB}', '\u{12DC}', '\u{12DD}', '\u{12DE}', '\u{12DF}', '\u{12E0}', '\u{12E1}', '\u{12E2}', '\u{12E3}', '\u{12E4}', '\u{12E5}', '\u{12E6}', '\u{12E7}', '\u{12E8}', '\u{12E9}', '\u{12EA}', '\u{12EB}', '\u{12EC}', '\u{12ED}', '\u{12EE}', '\u{12EF}', '\u{12F0}', '\u{12F1}', '\u{12F2}', '\u{12F3}', '\u{12F4}', '\u{12F5}', '\u{12F6}', '\u{12F7}', '\u{12F8}', '\u{12F9}', '\u{12FA}', '\u{12FB}', '\u{12FC}', '\u{12FD}', '\u{12FE}', '\u{12FF}', '\u{1300}', '\u{1301}', '\u{1302}', '\u{1303}', '\u{1304}', '\u{1305}', '\u{1306}', '\u{1307}', '\u{1308}', '\u{1309}', '\u{130A}', '\u{130B}', '\u{130C}', '\u{130D}', '\u{130E}', '\u{130F}', '\u{1310}', '\u{1312}', '\u{1313}', '\u{1314}', '\u{1315}', '\u{1318}', '\u{1319}', '\u{131A}', '\u{131B}', '\u{131C}', '\u{131D}', '\u{131E}', '\u{131F}', '\u{1320}', '\u{1321}', '\u{1322}', '\u{1323}', '\u{1324}', '\u{1325}', '\u{1326}', '\u{1327}', '\u{1328}', '\u{1329}', '\u{132A}', '\u{132B}', '\u{132C}', '\u{132D}', '\u{132E}', '\u{132F}', '\u{1330}', '\u{1331}', '\u{1332}', '\u{1333}', '\u{1334}', '\u{1335}', '\u{1336}', '\u{1337}', '\u{1338}', '\u{1339}', '\u{133A}', '\u{133B}', '\u{133C}', '\u{133D}', '\u{133E}', '\u{133F}', '\u{1340}', '\u{1341}', '\u{1342}', '\u{1343}', '\u{1344}', '\u{1345}', '\u{1346}', '\u{1347}', '\u{1348}', '\u{1349}', '\u{134A}', '\u{134B}', '\u{134C}', '\u{134D}', '\u{134E}', '\u{134F}', '\u{1350}', '\u{1351}', '\u{1352}', '\u{1353}', '\u{1354}', '\u{1355}', '\u{1356}', '\u{1357}', '\u{1358}', '\u{1359}', '\u{135A}', '\u{1380}', '\u{1381}', '\u{1382}', '\u{1383}', '\u{1384}', '\u{1385}', '\u{1386}', '\u{1387}', '\u{1388}', '\u{1389}', '\u{138A}', '\u{138B}', '\u{138C}', '\u{138D}', '\u{138E}', '\u{138F}', '\u{13A0}', '\u{13A1}', '\u{13A2}', '\u{13A3}', '\u{13A4}', '\u{13A5}', '\u{13A6}', '\u{13A7}', '\u{13A8}', '\u{13A9}', '\u{13AA}', '\u{13AB}', '\u{13AC}', '\u{13AD}', '\u{13AE}', '\u{13AF}', '\u{13B0}', '\u{13B1}', '\u{13B2}', '\u{13B3}', '\u{13B4}', '\u{13B5}', '\u{13B6}', '\u{13B7}', '\u{13B8}', '\u{13B9}', '\u{13BA}', '\u{13BB}', '\u{13BC}', '\u{13BD}', '\u{13BE}', '\u{13BF}', '\u{13C0}', '\u{13C1}', '\u{13C2}', '\u{13C3}', '\u{13C4}', '\u{13C5}', '\u{13C6}', '\u{13C7}', '\u{13C8}', '\u{13C9}', '\u{13CA}', '\u{13CB}', '\u{13CC}', '\u{13CD}', '\u{13CE}', '\u{13CF}', '\u{13D0}', '\u{13D1}', '\u{13D2}', '\u{13D3}', '\u{13D4}', '\u{13D5}', '\u{13D6}', '\u{13D7}', '\u{13D8}', '\u{13D9}', '\u{13DA}', '\u{13DB}', '\u{13DC}', '\u{13DD}', '\u{13DE}', '\u{13DF}', '\u{13E0}', '\u{13E1}', '\u{13E2}', '\u{13E3}', '\u{13E4}', '\u{13E5}', '\u{13E6}', '\u{13E7}', '\u{13E8}', '\u{13E9}', '\u{13EA}', '\u{13EB}', '\u{13EC}', '\u{13ED}', '\u{13EE}', '\u{13EF}', '\u{13F0}', '\u{13F1}', '\u{13F2}', '\u{13F3}', '\u{13F4}', '\u{1401}', '\u{1402}', '\u{1403}', '\u{1404}', '\u{1405}', '\u{1406}', '\u{1407}', '\u{1408}', '\u{1409}', '\u{140A}', '\u{140B}', '\u{140C}', '\u{140D}', '\u{140E}', '\u{140F}', '\u{1410}', '\u{1411}', '\u{1412}', '\u{1413}', '\u{1414}', '\u{1415}', '\u{1416}', '\u{1417}', '\u{1418}', '\u{1419}', '\u{141A}', '\u{141B}', '\u{141C}', '\u{141D}', '\u{141E}', '\u{141F}', '\u{1420}', '\u{1421}', '\u{1422}', '\u{1423}', '\u{1424}', '\u{1425}', '\u{1426}', '\u{1427}', '\u{1428}', '\u{1429}', '\u{142A}', '\u{142B}', '\u{142C}', '\u{142D}', '\u{142E}', '\u{142F}', '\u{1430}', '\u{1431}', '\u{1432}', '\u{1433}', '\u{1434}', '\u{1435}', '\u{1436}', '\u{1437}', '\u{1438}', '\u{1439}', '\u{143A}', '\u{143B}', '\u{143C}', '\u{143D}', '\u{143E}', '\u{143F}', '\u{1440}', '\u{1441}', '\u{1442}', '\u{1443}', '\u{1444}', '\u{1445}', '\u{1446}', '\u{1447}', '\u{1448}', '\u{1449}', '\u{144A}', '\u{144B}', '\u{144C}', '\u{144D}', '\u{144E}', '\u{144F}', '\u{1450}', '\u{1451}', '\u{1452}', '\u{1453}', '\u{1454}', '\u{1455}', '\u{1456}', '\u{1457}', '\u{1458}', '\u{1459}', '\u{145A}', '\u{145B}', '\u{145C}', '\u{145D}', '\u{145E}', '\u{145F}', '\u{1460}', '\u{1461}', '\u{1462}', '\u{1463}', '\u{1464}', '\u{1465}', '\u{1466}', '\u{1467}', '\u{1468}', '\u{1469}', '\u{146A}', '\u{146B}', '\u{146C}', '\u{146D}', '\u{146E}', '\u{146F}', '\u{1470}', '\u{1471}', '\u{1472}', '\u{1473}', '\u{1474}', '\u{1475}', '\u{1476}', '\u{1477}', '\u{1478}', '\u{1479}', '\u{147A}', '\u{147B}', '\u{147C}', '\u{147D}', '\u{147E}', '\u{147F}', '\u{1480}', '\u{1481}', '\u{1482}', '\u{1483}', '\u{1484}', '\u{1485}', '\u{1486}', '\u{1487}', '\u{1488}', '\u{1489}', '\u{148A}', '\u{148B}', '\u{148C}', '\u{148D}', '\u{148E}', '\u{148F}', '\u{1490}', '\u{1491}', '\u{1492}', '\u{1493}', '\u{1494}', '\u{1495}', '\u{1496}', '\u{1497}', '\u{1498}', '\u{1499}', '\u{149A}', '\u{149B}', '\u{149C}', '\u{149D}', '\u{149E}', '\u{149F}', '\u{14A0}', '\u{14A1}', '\u{14A2}', '\u{14A3}', '\u{14A4}', '\u{14A5}', '\u{14A6}', '\u{14A7}', '\u{14A8}', '\u{14A9}', '\u{14AA}', '\u{14AB}', '\u{14AC}', '\u{14AD}', '\u{14AE}', '\u{14AF}', '\u{14B0}', '\u{14B1}', '\u{14B2}', '\u{14B3}', '\u{14B4}', '\u{14B5}', '\u{14B6}', '\u{14B7}', '\u{14B8}', '\u{14B9}', '\u{14BA}', '\u{14BB}', '\u{14BC}', '\u{14BD}', '\u{14BE}', '\u{14BF}', '\u{14C0}', '\u{14C1}', '\u{14C2}', '\u{14C3}', '\u{14C4}', '\u{14C5}', '\u{14C6}', '\u{14C7}', '\u{14C8}', '\u{14C9}', '\u{14CA}', '\u{14CB}', '\u{14CC}', '\u{14CD}', '\u{14CE}', '\u{14CF}', '\u{14D0}', '\u{14D1}', '\u{14D2}', '\u{14D3}', '\u{14D4}', '\u{14D5}', '\u{14D6}', '\u{14D7}', '\u{14D8}', '\u{14D9}', '\u{14DA}', '\u{14DB}', '\u{14DC}', '\u{14DD}', '\u{14DE}', '\u{14DF}', '\u{14E0}', '\u{14E1}', '\u{14E2}', '\u{14E3}', '\u{14E4}', '\u{14E5}', '\u{14E6}', '\u{14E7}', '\u{14E8}', '\u{14E9}', '\u{14EA}', '\u{14EB}', '\u{14EC}', '\u{14ED}', '\u{14EE}', '\u{14EF}', '\u{14F0}', '\u{14F1}', '\u{14F2}', '\u{14F3}', '\u{14F4}', '\u{14F5}', '\u{14F6}', '\u{14F7}', '\u{14F8}', '\u{14F9}', '\u{14FA}', '\u{14FB}', '\u{14FC}', '\u{14FD}', '\u{14FE}', '\u{14FF}', '\u{1500}', '\u{1501}', '\u{1502}', '\u{1503}', '\u{1504}', '\u{1505}', '\u{1506}', '\u{1507}', '\u{1508}', '\u{1509}', '\u{150A}', '\u{150B}', '\u{150C}', '\u{150D}', '\u{150E}', '\u{150F}', '\u{1510}', '\u{1511}', '\u{1512}', '\u{1513}', '\u{1514}', '\u{1515}', '\u{1516}', '\u{1517}', '\u{1518}', '\u{1519}', '\u{151A}', '\u{151B}', '\u{151C}', '\u{151D}', '\u{151E}', '\u{151F}', '\u{1520}', '\u{1521}', '\u{1522}', '\u{1523}', '\u{1524}', '\u{1525}', '\u{1526}', '\u{1527}', '\u{1528}', '\u{1529}', '\u{152A}', '\u{152B}', '\u{152C}', '\u{152D}', '\u{152E}', '\u{152F}', '\u{1530}', '\u{1531}', '\u{1532}', '\u{1533}', '\u{1534}', '\u{1535}', '\u{1536}', '\u{1537}', '\u{1538}', '\u{1539}', '\u{153A}', '\u{153B}', '\u{153C}', '\u{153D}', '\u{153E}', '\u{153F}', '\u{1540}', '\u{1541}', '\u{1542}', '\u{1543}', '\u{1544}', '\u{1545}', '\u{1546}', '\u{1547}', '\u{1548}', '\u{1549}', '\u{154A}', '\u{154B}', '\u{154C}', '\u{154D}', '\u{154E}', '\u{154F}', '\u{1550}', '\u{1551}', '\u{1552}', '\u{1553}', '\u{1554}', '\u{1555}', '\u{1556}', '\u{1557}', '\u{1558}', '\u{1559}', '\u{155A}', '\u{155B}', '\u{155C}', '\u{155D}', '\u{155E}', '\u{155F}', '\u{1560}', '\u{1561}', '\u{1562}', '\u{1563}', '\u{1564}', '\u{1565}', '\u{1566}', '\u{1567}', '\u{1568}', '\u{1569}', '\u{156A}', '\u{156B}', '\u{156C}', '\u{156D}', '\u{156E}', '\u{156F}', '\u{1570}', '\u{1571}', '\u{1572}', '\u{1573}', '\u{1574}', '\u{1575}', '\u{1576}', '\u{1577}', '\u{1578}', '\u{1579}', '\u{157A}', '\u{157B}', '\u{157C}', '\u{157D}', '\u{157E}', '\u{157F}', '\u{1580}', '\u{1581}', '\u{1582}', '\u{1583}', '\u{1584}', '\u{1585}', '\u{1586}', '\u{1587}', '\u{1588}', '\u{1589}', '\u{158A}', '\u{158B}', '\u{158C}', '\u{158D}', '\u{158E}', '\u{158F}', '\u{1590}', '\u{1591}', '\u{1592}', '\u{1593}', '\u{1594}', '\u{1595}', '\u{1596}', '\u{1597}', '\u{1598}', '\u{1599}', '\u{159A}', '\u{159B}', '\u{159C}', '\u{159D}', '\u{159E}', '\u{159F}', '\u{15A0}', '\u{15A1}', '\u{15A2}', '\u{15A3}', '\u{15A4}', '\u{15A5}', '\u{15A6}', '\u{15A7}', '\u{15A8}', '\u{15A9}', '\u{15AA}', '\u{15AB}', '\u{15AC}', '\u{15AD}', '\u{15AE}', '\u{15AF}', '\u{15B0}', '\u{15B1}', '\u{15B2}', '\u{15B3}', '\u{15B4}', '\u{15B5}', '\u{15B6}', '\u{15B7}', '\u{15B8}', '\u{15B9}', '\u{15BA}', '\u{15BB}', '\u{15BC}', '\u{15BD}', '\u{15BE}', '\u{15BF}', '\u{15C0}', '\u{15C1}', '\u{15C2}', '\u{15C3}', '\u{15C4}', '\u{15C5}', '\u{15C6}', '\u{15C7}', '\u{15C8}', '\u{15C9}', '\u{15CA}', '\u{15CB}', '\u{15CC}', '\u{15CD}', '\u{15CE}', '\u{15CF}', '\u{15D0}', '\u{15D1}', '\u{15D2}', '\u{15D3}', '\u{15D4}', '\u{15D5}', '\u{15D6}', '\u{15D7}', '\u{15D8}', '\u{15D9}', '\u{15DA}', '\u{15DB}', '\u{15DC}', '\u{15DD}', '\u{15DE}', '\u{15DF}', '\u{15E0}', '\u{15E1}', '\u{15E2}', '\u{15E3}', '\u{15E4}', '\u{15E5}', '\u{15E6}', '\u{15E7}', '\u{15E8}', '\u{15E9}', '\u{15EA}', '\u{15EB}', '\u{15EC}', '\u{15ED}', '\u{15EE}', '\u{15EF}', '\u{15F0}', '\u{15F1}', '\u{15F2}', '\u{15F3}', '\u{15F4}', '\u{15F5}', '\u{15F6}', '\u{15F7}', '\u{15F8}', '\u{15F9}', '\u{15FA}', '\u{15FB}', '\u{15FC}', '\u{15FD}', '\u{15FE}', '\u{15FF}', '\u{1600}', '\u{1601}', '\u{1602}', '\u{1603}', '\u{1604}', '\u{1605}', '\u{1606}', '\u{1607}', '\u{1608}', '\u{1609}', '\u{160A}', '\u{160B}', '\u{160C}', '\u{160D}', '\u{160E}', '\u{160F}', '\u{1610}', '\u{1611}', '\u{1612}', '\u{1613}', '\u{1614}', '\u{1615}', '\u{1616}', '\u{1617}', '\u{1618}', '\u{1619}', '\u{161A}', '\u{161B}', '\u{161C}', '\u{161D}', '\u{161E}', '\u{161F}', '\u{1620}', '\u{1621}', '\u{1622}', '\u{1623}', '\u{1624}', '\u{1625}', '\u{1626}', '\u{1627}', '\u{1628}', '\u{1629}', '\u{162A}', '\u{162B}', '\u{162C}', '\u{162D}', '\u{162E}', '\u{162F}', '\u{1630}', '\u{1631}', '\u{1632}', '\u{1633}', '\u{1634}', '\u{1635}', '\u{1636}', '\u{1637}', '\u{1638}', '\u{1639}', '\u{163A}', '\u{163B}', '\u{163C}', '\u{163D}', '\u{163E}', '\u{163F}', '\u{1640}', '\u{1641}', '\u{1642}', '\u{1643}', '\u{1644}', '\u{1645}', '\u{1646}', '\u{1647}', '\u{1648}', '\u{1649}', '\u{164A}', '\u{164B}', '\u{164C}', '\u{164D}', '\u{164E}', '\u{164F}', '\u{1650}', '\u{1651}', '\u{1652}', '\u{1653}', '\u{1654}', '\u{1655}', '\u{1656}', '\u{1657}', '\u{1658}', '\u{1659}', '\u{165A}', '\u{165B}', '\u{165C}', '\u{165D}', '\u{165E}', '\u{165F}', '\u{1660}', '\u{1661}', '\u{1662}', '\u{1663}', '\u{1664}', '\u{1665}', '\u{1666}', '\u{1667}', '\u{1668}', '\u{1669}', '\u{166A}', '\u{166B}', '\u{166C}', '\u{166F}', '\u{1670}', '\u{1671}', '\u{1672}', '\u{1673}', '\u{1674}', '\u{1675}', '\u{1676}', '\u{1681}', '\u{1682}', '\u{1683}', '\u{1684}', '\u{1685}', '\u{1686}', '\u{1687}', '\u{1688}', '\u{1689}', '\u{168A}', '\u{168B}', '\u{168C}', '\u{168D}', '\u{168E}', '\u{168F}', '\u{1690}', '\u{1691}', '\u{1692}', '\u{1693}', '\u{1694}', '\u{1695}', '\u{1696}', '\u{1697}', '\u{1698}', '\u{1699}', '\u{169A}', '\u{16A0}', '\u{16A1}', '\u{16A2}', '\u{16A3}', '\u{16A4}', '\u{16A5}', '\u{16A6}', '\u{16A7}', '\u{16A8}', '\u{16A9}', '\u{16AA}', '\u{16AB}', '\u{16AC}', '\u{16AD}', '\u{16AE}', '\u{16AF}', '\u{16B0}', '\u{16B1}', '\u{16B2}', '\u{16B3}', '\u{16B4}', '\u{16B5}', '\u{16B6}', '\u{16B7}', '\u{16B8}', '\u{16B9}', '\u{16BA}', '\u{16BB}', '\u{16BC}', '\u{16BD}', '\u{16BE}', '\u{16BF}', '\u{16C0}', '\u{16C1}', '\u{16C2}', '\u{16C3}', '\u{16C4}', '\u{16C5}', '\u{16C6}', '\u{16C7}', '\u{16C8}', '\u{16C9}', '\u{16CA}', '\u{16CB}', '\u{16CC}', '\u{16CD}', '\u{16CE}', '\u{16CF}', '\u{16D0}', '\u{16D1}', '\u{16D2}', '\u{16D3}', '\u{16D4}', '\u{16D5}', '\u{16D6}', '\u{16D7}', '\u{16D8}', '\u{16D9}', '\u{16DA}', '\u{16DB}', '\u{16DC}', '\u{16DD}', '\u{16DE}', '\u{16DF}', '\u{16E0}', '\u{16E1}', '\u{16E2}', '\u{16E3}', '\u{16E4}', '\u{16E5}', '\u{16E6}', '\u{16E7}', '\u{16E8}', '\u{16E9}', '\u{16EA}', '\u{1700}', '\u{1701}', '\u{1702}', '\u{1703}', '\u{1704}', '\u{1705}', '\u{1706}', '\u{1707}', '\u{1708}', '\u{1709}', '\u{170A}', '\u{170B}', '\u{170C}', '\u{170E}', '\u{170F}', '\u{1710}', '\u{1711}', '\u{1720}', '\u{1721}', '\u{1722}', '\u{1723}', '\u{1724}', '\u{1725}', '\u{1726}', '\u{1727}', '\u{1728}', '\u{1729}', '\u{172A}', '\u{172B}', '\u{172C}', '\u{172D}', '\u{172E}', '\u{172F}', '\u{1730}', '\u{1731}', '\u{1740}', '\u{1741}', '\u{1742}', '\u{1743}', '\u{1744}', '\u{1745}', '\u{1746}', '\u{1747}', '\u{1748}', '\u{1749}', '\u{174A}', '\u{174B}', '\u{174C}', '\u{174D}', '\u{174E}', '\u{174F}', '\u{1750}', '\u{1751}', '\u{1760}', '\u{1761}', '\u{1762}', '\u{1763}', '\u{1764}', '\u{1765}', '\u{1766}', '\u{1767}', '\u{1768}', '\u{1769}', '\u{176A}', '\u{176B}', '\u{176C}', '\u{176E}', '\u{176F}', '\u{1770}', '\u{1780}', '\u{1781}', '\u{1782}', '\u{1783}', '\u{1784}', '\u{1785}', '\u{1786}', '\u{1787}', '\u{1788}', '\u{1789}', '\u{178A}', '\u{178B}', '\u{178C}', '\u{178D}', '\u{178E}', '\u{178F}', '\u{1790}', '\u{1791}', '\u{1792}', '\u{1793}', '\u{1794}', '\u{1795}', '\u{1796}', '\u{1797}', '\u{1798}', '\u{1799}', '\u{179A}', '\u{179B}', '\u{179C}', '\u{179D}', '\u{179E}', '\u{179F}', '\u{17A0}', '\u{17A1}', '\u{17A2}', '\u{17A3}', '\u{17A4}', '\u{17A5}', '\u{17A6}', '\u{17A7}', '\u{17A8}', '\u{17A9}', '\u{17AA}', '\u{17AB}', '\u{17AC}', '\u{17AD}', '\u{17AE}', '\u{17AF}', '\u{17B0}', '\u{17B1}', '\u{17B2}', '\u{17B3}', '\u{17DC}', '\u{1820}', '\u{1821}', '\u{1822}', '\u{1823}', '\u{1824}', '\u{1825}', '\u{1826}', '\u{1827}', '\u{1828}', '\u{1829}', '\u{182A}', '\u{182B}', '\u{182C}', '\u{182D}', '\u{182E}', '\u{182F}', '\u{1830}', '\u{1831}', '\u{1832}', '\u{1833}', '\u{1834}', '\u{1835}', '\u{1836}', '\u{1837}', '\u{1838}', '\u{1839}', '\u{183A}', '\u{183B}', '\u{183C}', '\u{183D}', '\u{183E}', '\u{183F}', '\u{1840}', '\u{1841}', '\u{1842}', '\u{1844}', '\u{1845}', '\u{1846}', '\u{1847}', '\u{1848}', '\u{1849}', '\u{184A}', '\u{184B}', '\u{184C}', '\u{184D}', '\u{184E}', '\u{184F}', '\u{1850}', '\u{1851}', '\u{1852}', '\u{1853}', '\u{1854}', '\u{1855}', '\u{1856}', '\u{1857}', '\u{1858}', '\u{1859}', '\u{185A}', '\u{185B}', '\u{185C}', '\u{185D}', '\u{185E}', '\u{185F}', '\u{1860}', '\u{1861}', '\u{1862}', '\u{1863}', '\u{1864}', '\u{1865}', '\u{1866}', '\u{1867}', '\u{1868}', '\u{1869}', '\u{186A}', '\u{186B}', '\u{186C}', '\u{186D}', '\u{186E}', '\u{186F}', '\u{1870}', '\u{1871}', '\u{1872}', '\u{1873}', '\u{1874}', '\u{1875}', '\u{1876}', '\u{1877}', '\u{1880}', '\u{1881}', '\u{1882}', '\u{1883}', '\u{1884}', '\u{1885}', '\u{1886}', '\u{1887}', '\u{1888}', '\u{1889}', '\u{188A}', '\u{188B}', '\u{188C}', '\u{188D}', '\u{188E}', '\u{188F}', '\u{1890}', '\u{1891}', '\u{1892}', '\u{1893}', '\u{1894}', '\u{1895}', '\u{1896}', '\u{1897}', '\u{1898}', '\u{1899}', '\u{189A}', '\u{189B}', '\u{189C}', '\u{189D}', '\u{189E}', '\u{189F}', '\u{18A0}', '\u{18A1}', '\u{18A2}', '\u{18A3}', '\u{18A4}', '\u{18A5}', '\u{18A6}', '\u{18A7}', '\u{18A8}', '\u{18AA}', '\u{1900}', '\u{1901}', '\u{1902}', '\u{1903}', '\u{1904}', '\u{1905}', '\u{1906}', '\u{1907}', '\u{1908}', '\u{1909}', '\u{190A}', '\u{190B}', '\u{190C}', '\u{190D}', '\u{190E}', '\u{190F}', '\u{1910}', '\u{1911}', '\u{1912}', '\u{1913}', '\u{1914}', '\u{1915}', '\u{1916}', '\u{1917}', '\u{1918}', '\u{1919}', '\u{191A}', '\u{191B}', '\u{191C}', '\u{1950}', '\u{1951}', '\u{1952}', '\u{1953}', '\u{1954}', '\u{1955}', '\u{1956}', '\u{1957}', '\u{1958}', '\u{1959}', '\u{195A}', '\u{195B}', '\u{195C}', '\u{195D}', '\u{195E}', '\u{195F}', '\u{1960}', '\u{1961}', '\u{1962}', '\u{1963}', '\u{1964}', '\u{1965}', '\u{1966}', '\u{1967}', '\u{1968}', '\u{1969}', '\u{196A}', '\u{196B}', '\u{196C}', '\u{196D}', '\u{1970}', '\u{1971}', '\u{1972}', '\u{1973}', '\u{1974}', '\u{1980}', '\u{1981}', '\u{1982}', '\u{1983}', '\u{1984}', '\u{1985}', '\u{1986}', '\u{1987}', '\u{1988}', '\u{1989}', '\u{198A}', '\u{198B}', '\u{198C}', '\u{198D}', '\u{198E}', '\u{198F}', '\u{1990}', '\u{1991}', '\u{1992}', '\u{1993}', '\u{1994}', '\u{1995}', '\u{1996}', '\u{1997}', '\u{1998}', '\u{1999}', '\u{199A}', '\u{199B}', '\u{199C}', '\u{199D}', '\u{199E}', '\u{199F}', '\u{19A0}', '\u{19A1}', '\u{19A2}', '\u{19A3}', '\u{19A4}', '\u{19A5}', '\u{19A6}', '\u{19A7}', '\u{19A8}', '\u{19A9}', '\u{19C1}', '\u{19C2}', '\u{19C3}', '\u{19C4}', '\u{19C5}', '\u{19C6}', '\u{19C7}', '\u{1A00}', '\u{1A01}', '\u{1A02}', '\u{1A03}', '\u{1A04}', '\u{1A05}', '\u{1A06}', '\u{1A07}', '\u{1A08}', '\u{1A09}', '\u{1A0A}', '\u{1A0B}', '\u{1A0C}', '\u{1A0D}', '\u{1A0E}', '\u{1A0F}', '\u{1A10}', '\u{1A11}', '\u{1A12}', '\u{1A13}', '\u{1A14}', '\u{1A15}', '\u{1A16}', '\u{1B05}', '\u{1B06}', '\u{1B07}', '\u{1B08}', '\u{1B09}', '\u{1B0A}', '\u{1B0B}', '\u{1B0C}', '\u{1B0D}', '\u{1B0E}', '\u{1B0F}', '\u{1B10}', '\u{1B11}', '\u{1B12}', '\u{1B13}', '\u{1B14}', '\u{1B15}', '\u{1B16}', '\u{1B17}', '\u{1B18}', '\u{1B19}', '\u{1B1A}', '\u{1B1B}', '\u{1B1C}', '\u{1B1D}', '\u{1B1E}', '\u{1B1F}', '\u{1B20}', '\u{1B21}', '\u{1B22}', '\u{1B23}', '\u{1B24}', '\u{1B25}', '\u{1B26}', '\u{1B27}', '\u{1B28}', '\u{1B29}', '\u{1B2A}', '\u{1B2B}', '\u{1B2C}', '\u{1B2D}', '\u{1B2E}', '\u{1B2F}', '\u{1B30}', '\u{1B31}', '\u{1B32}', '\u{1B33}', '\u{1B45}', '\u{1B46}', '\u{1B47}', '\u{1B48}', '\u{1B49}', '\u{1B4A}', '\u{1B4B}', '\u{1B83}', '\u{1B84}', '\u{1B85}', '\u{1B86}', '\u{1B87}', '\u{1B88}', '\u{1B89}', '\u{1B8A}', '\u{1B8B}', '\u{1B8C}', '\u{1B8D}', '\u{1B8E}', '\u{1B8F}', '\u{1B90}', '\u{1B91}', '\u{1B92}', '\u{1B93}', '\u{1B94}', '\u{1B95}', '\u{1B96}', '\u{1B97}', '\u{1B98}', '\u{1B99}', '\u{1B9A}', '\u{1B9B}', '\u{1B9C}', '\u{1B9D}', '\u{1B9E}', '\u{1B9F}', '\u{1BA0}', '\u{1BAE}', '\u{1BAF}', '\u{1C00}', '\u{1C01}', '\u{1C02}', '\u{1C03}', '\u{1C04}', '\u{1C05}', '\u{1C06}', '\u{1C07}', '\u{1C08}', '\u{1C09}', '\u{1C0A}', '\u{1C0B}', '\u{1C0C}', '\u{1C0D}', '\u{1C0E}', '\u{1C0F}', '\u{1C10}', '\u{1C11}', '\u{1C12}', '\u{1C13}', '\u{1C14}', '\u{1C15}', '\u{1C16}', '\u{1C17}', '\u{1C18}', '\u{1C19}', '\u{1C1A}', '\u{1C1B}', '\u{1C1C}', '\u{1C1D}', '\u{1C1E}', '\u{1C1F}', '\u{1C20}', '\u{1C21}', '\u{1C22}', '\u{1C23}', '\u{1C4D}', '\u{1C4E}', '\u{1C4F}', '\u{1C5A}', '\u{1C5B}', '\u{1C5C}', '\u{1C5D}', '\u{1C5E}', '\u{1C5F}', '\u{1C60}', '\u{1C61}', '\u{1C62}', '\u{1C63}', '\u{1C64}', '\u{1C65}', '\u{1C66}', '\u{1C67}', '\u{1C68}', '\u{1C69}', '\u{1C6A}', '\u{1C6B}', '\u{1C6C}', '\u{1C6D}', '\u{1C6E}', '\u{1C6F}', '\u{1C70}', '\u{1C71}', '\u{1C72}', '\u{1C73}', '\u{1C74}', '\u{1C75}', '\u{1C76}', '\u{1C77}', '\u{2135}', '\u{2136}', '\u{2137}', '\u{2138}', '\u{2D30}', '\u{2D31}', '\u{2D32}', '\u{2D33}', '\u{2D34}', '\u{2D35}', '\u{2D36}', '\u{2D37}', '\u{2D38}', '\u{2D39}', '\u{2D3A}', '\u{2D3B}', '\u{2D3C}', '\u{2D3D}', '\u{2D3E}', '\u{2D3F}', '\u{2D40}', '\u{2D41}', '\u{2D42}', '\u{2D43}', '\u{2D44}', '\u{2D45}', '\u{2D46}', '\u{2D47}', '\u{2D48}', '\u{2D49}', '\u{2D4A}', '\u{2D4B}', '\u{2D4C}', '\u{2D4D}', '\u{2D4E}', '\u{2D4F}', '\u{2D50}', '\u{2D51}', '\u{2D52}', '\u{2D53}', '\u{2D54}', '\u{2D55}', '\u{2D56}', '\u{2D57}', '\u{2D58}', '\u{2D59}', '\u{2D5A}', '\u{2D5B}', '\u{2D5C}', '\u{2D5D}', '\u{2D5E}', '\u{2D5F}', '\u{2D60}', '\u{2D61}', '\u{2D62}', '\u{2D63}', '\u{2D64}', '\u{2D65}', '\u{2D80}', '\u{2D81}', '\u{2D82}', '\u{2D83}', '\u{2D84}', '\u{2D85}', '\u{2D86}', '\u{2D87}', '\u{2D88}', '\u{2D89}', '\u{2D8A}', '\u{2D8B}', '\u{2D8C}', '\u{2D8D}', '\u{2D8E}', '\u{2D8F}', '\u{2D90}', '\u{2D91}', '\u{2D92}', '\u{2D93}', '\u{2D94}', '\u{2D95}', '\u{2D96}', '\u{2DA0}', '\u{2DA1}', '\u{2DA2}', '\u{2DA3}', '\u{2DA4}', '\u{2DA5}', '\u{2DA6}', '\u{2DA8}', '\u{2DA9}', '\u{2DAA}', '\u{2DAB}', '\u{2DAC}', '\u{2DAD}', '\u{2DAE}', '\u{2DB0}', '\u{2DB1}', '\u{2DB2}', '\u{2DB3}', '\u{2DB4}', '\u{2DB5}', '\u{2DB6}', '\u{2DB8}', '\u{2DB9}', '\u{2DBA}', '\u{2DBB}', '\u{2DBC}', '\u{2DBD}', '\u{2DBE}', '\u{2DC0}', '\u{2DC1}', '\u{2DC2}', '\u{2DC3}', '\u{2DC4}', '\u{2DC5}', '\u{2DC6}', '\u{2DC8}', '\u{2DC9}', '\u{2DCA}', '\u{2DCB}', '\u{2DCC}', '\u{2DCD}', '\u{2DCE}', '\u{2DD0}', '\u{2DD1}', '\u{2DD2}', '\u{2DD3}', '\u{2DD4}', '\u{2DD5}', '\u{2DD6}', '\u{2DD8}', '\u{2DD9}', '\u{2DDA}', '\u{2DDB}', '\u{2DDC}', '\u{2DDD}', '\u{2DDE}', '\u{3006}', '\u{303C}', '\u{3041}', '\u{3042}', '\u{3043}', '\u{3044}', '\u{3045}', '\u{3046}', '\u{3047}', '\u{3048}', '\u{3049}', '\u{304A}', '\u{304B}', '\u{304C}', '\u{304D}', '\u{304E}', '\u{304F}', '\u{3050}', '\u{3051}', '\u{3052}', '\u{3053}', '\u{3054}', '\u{3055}', '\u{3056}', '\u{3057}', '\u{3058}', '\u{3059}', '\u{305A}', '\u{305B}', '\u{305C}', '\u{305D}', '\u{305E}', '\u{305F}', '\u{3060}', '\u{3061}', '\u{3062}', '\u{3063}', '\u{3064}', '\u{3065}', '\u{3066}', '\u{3067}', '\u{3068}', '\u{3069}', '\u{306A}', '\u{306B}', '\u{306C}', '\u{306D}', '\u{306E}', '\u{306F}', '\u{3070}', '\u{3071}', '\u{3072}', '\u{3073}', '\u{3074}', '\u{3075}', '\u{3076}', '\u{3077}', '\u{3078}', '\u{3079}', '\u{307A}', '\u{307B}', '\u{307C}', '\u{307D}', '\u{307E}', '\u{307F}', '\u{3080}', '\u{3081}', '\u{3082}', '\u{3083}', '\u{3084}', '\u{3085}', '\u{3086}', '\u{3087}', '\u{3088}', '\u{3089}', '\u{308A}', '\u{308B}', '\u{308C}', '\u{308D}', '\u{308E}', '\u{308F}', '\u{3090}', '\u{3091}', '\u{3092}', '\u{3093}', '\u{3094}', '\u{3095}', '\u{3096}', '\u{309F}', '\u{30A1}', '\u{30A2}', '\u{30A3}', '\u{30A4}', '\u{30A5}', '\u{30A6}', '\u{30A7}', '\u{30A8}', '\u{30A9}', '\u{30AA}', '\u{30AB}', '\u{30AC}', '\u{30AD}', '\u{30AE}', '\u{30AF}', '\u{30B0}', '\u{30B1}', '\u{30B2}', '\u{30B3}', '\u{30B4}', '\u{30B5}', '\u{30B6}', '\u{30B7}', '\u{30B8}', '\u{30B9}', '\u{30BA}', '\u{30BB}', '\u{30BC}', '\u{30BD}', '\u{30BE}', '\u{30BF}', '\u{30C0}', '\u{30C1}', '\u{30C2}', '\u{30C3}', '\u{30C4}', '\u{30C5}', '\u{30C6}', '\u{30C7}', '\u{30C8}', '\u{30C9}', '\u{30CA}', '\u{30CB}', '\u{30CC}', '\u{30CD}', '\u{30CE}', '\u{30CF}', '\u{30D0}', '\u{30D1}', '\u{30D2}', '\u{30D3}', '\u{30D4}', '\u{30D5}', '\u{30D6}', '\u{30D7}', '\u{30D8}', '\u{30D9}', '\u{30DA}', '\u{30DB}', '\u{30DC}', '\u{30DD}', '\u{30DE}', '\u{30DF}', '\u{30E0}', '\u{30E1}', '\u{30E2}', '\u{30E3}', '\u{30E4}', '\u{30E5}', '\u{30E6}', '\u{30E7}', '\u{30E8}', '\u{30E9}', '\u{30EA}', '\u{30EB}', '\u{30EC}', '\u{30ED}', '\u{30EE}', '\u{30EF}', '\u{30F0}', '\u{30F1}', '\u{30F2}', '\u{30F3}', '\u{30F4}', '\u{30F5}', '\u{30F6}', '\u{30F7}', '\u{30F8}', '\u{30F9}', '\u{30FA}', '\u{30FF}', '\u{3105}', '\u{3106}', '\u{3107}', '\u{3108}', '\u{3109}', '\u{310A}', '\u{310B}', '\u{310C}', '\u{310D}', '\u{310E}', '\u{310F}', '\u{3110}', '\u{3111}', '\u{3112}', '\u{3113}', '\u{3114}', '\u{3115}', '\u{3116}', '\u{3117}', '\u{3118}', '\u{3119}', '\u{311A}', '\u{311B}', '\u{311C}', '\u{311D}', '\u{311E}', '\u{311F}', '\u{3120}', '\u{3121}', '\u{3122}', '\u{3123}', '\u{3124}', '\u{3125}', '\u{3126}', '\u{3127}', '\u{3128}', '\u{3129}', '\u{312A}', '\u{312B}', '\u{312C}', '\u{312D}', '\u{3131}', '\u{3132}', '\u{3133}', '\u{3134}', '\u{3135}', '\u{3136}', '\u{3137}', '\u{3138}', '\u{3139}', '\u{313A}', '\u{313B}', '\u{313C}', '\u{313D}', '\u{313E}', '\u{313F}', '\u{3140}', '\u{3141}', '\u{3142}', '\u{3143}', '\u{3144}', '\u{3145}', '\u{3146}', '\u{3147}', '\u{3148}', '\u{3149}', '\u{314A}', '\u{314B}', '\u{314C}', '\u{314D}', '\u{314E}', '\u{314F}', '\u{3150}', '\u{3151}', '\u{3152}', '\u{3153}', '\u{3154}', '\u{3155}', '\u{3156}', '\u{3157}', '\u{3158}', '\u{3159}', '\u{315A}', '\u{315B}', '\u{315C}', '\u{315D}', '\u{315E}', '\u{315F}', '\u{3160}', '\u{3161}', '\u{3162}', '\u{3163}', '\u{3164}', '\u{3165}', '\u{3166}', '\u{3167}', '\u{3168}', '\u{3169}', '\u{316A}', '\u{316B}', '\u{316C}', '\u{316D}', '\u{316E}', '\u{316F}', '\u{3170}', '\u{3171}', '\u{3172}', '\u{3173}', '\u{3174}', '\u{3175}', '\u{3176}', '\u{3177}', '\u{3178}', '\u{3179}', '\u{317A}', '\u{317B}', '\u{317C}', '\u{317D}', '\u{317E}', '\u{317F}', '\u{3180}', '\u{3181}', '\u{3182}', '\u{3183}', '\u{3184}', '\u{3185}', '\u{3186}', '\u{3187}', '\u{3188}', '\u{3189}', '\u{318A}', '\u{318B}', '\u{318C}', '\u{318D}', '\u{318E}', '\u{31A0}', '\u{31A1}', '\u{31A2}', '\u{31A3}', '\u{31A4}', '\u{31A5}', '\u{31A6}', '\u{31A7}', '\u{31A8}', '\u{31A9}', '\u{31AA}', '\u{31AB}', '\u{31AC}', '\u{31AD}', '\u{31AE}', '\u{31AF}', '\u{31B0}', '\u{31B1}', '\u{31B2}', '\u{31B3}', '\u{31B4}', '\u{31B5}', '\u{31B6}', '\u{31B7}', '\u{31F0}', '\u{31F1}', '\u{31F2}', '\u{31F3}', '\u{31F4}', '\u{31F5}', '\u{31F6}', '\u{31F7}', '\u{31F8}', '\u{31F9}', '\u{31FA}', '\u{31FB}', '\u{31FC}', '\u{31FD}', '\u{31FE}', '\u{31FF}', '\u{3400}', '\u{4DB5}', '\u{4E00}', '\u{9FC3}', '\u{A000}', '\u{A001}', '\u{A002}', '\u{A003}', '\u{A004}', '\u{A005}', '\u{A006}', '\u{A007}', '\u{A008}', '\u{A009}', '\u{A00A}', '\u{A00B}', '\u{A00C}', '\u{A00D}', '\u{A00E}', '\u{A00F}', '\u{A010}', '\u{A011}', '\u{A012}', '\u{A013}', '\u{A014}', '\u{A016}', '\u{A017}', '\u{A018}', '\u{A019}', '\u{A01A}', '\u{A01B}', '\u{A01C}', '\u{A01D}', '\u{A01E}', '\u{A01F}', '\u{A020}', '\u{A021}', '\u{A022}', '\u{A023}', '\u{A024}', '\u{A025}', '\u{A026}', '\u{A027}', '\u{A028}', '\u{A029}', '\u{A02A}', '\u{A02B}', '\u{A02C}', '\u{A02D}', '\u{A02E}', '\u{A02F}', '\u{A030}', '\u{A031}', '\u{A032}', '\u{A033}', '\u{A034}', '\u{A035}', '\u{A036}', '\u{A037}', '\u{A038}', '\u{A039}', '\u{A03A}', '\u{A03B}', '\u{A03C}', '\u{A03D}', '\u{A03E}', '\u{A03F}', '\u{A040}', '\u{A041}', '\u{A042}', '\u{A043}', '\u{A044}', '\u{A045}', '\u{A046}', '\u{A047}', '\u{A048}', '\u{A049}', '\u{A04A}', '\u{A04B}', '\u{A04C}', '\u{A04D}', '\u{A04E}', '\u{A04F}', '\u{A050}', '\u{A051}', '\u{A052}', '\u{A053}', '\u{A054}', '\u{A055}', '\u{A056}', '\u{A057}', '\u{A058}', '\u{A059}', '\u{A05A}', '\u{A05B}', '\u{A05C}', '\u{A05D}', '\u{A05E}', '\u{A05F}', '\u{A060}', '\u{A061}', '\u{A062}', '\u{A063}', '\u{A064}', '\u{A065}', '\u{A066}', '\u{A067}', '\u{A068}', '\u{A069}', '\u{A06A}', '\u{A06B}', '\u{A06C}', '\u{A06D}', '\u{A06E}', '\u{A06F}', '\u{A070}', '\u{A071}', '\u{A072}', '\u{A073}', '\u{A074}', '\u{A075}', '\u{A076}', '\u{A077}', '\u{A078}', '\u{A079}', '\u{A07A}', '\u{A07B}', '\u{A07C}', '\u{A07D}', '\u{A07E}', '\u{A07F}', '\u{A080}', '\u{A081}', '\u{A082}', '\u{A083}', '\u{A084}', '\u{A085}', '\u{A086}', '\u{A087}', '\u{A088}', '\u{A089}', '\u{A08A}', '\u{A08B}', '\u{A08C}', '\u{A08D}', '\u{A08E}', '\u{A08F}', '\u{A090}', '\u{A091}', '\u{A092}', '\u{A093}', '\u{A094}', '\u{A095}', '\u{A096}', '\u{A097}', '\u{A098}', '\u{A099}', '\u{A09A}', '\u{A09B}', '\u{A09C}', '\u{A09D}', '\u{A09E}', '\u{A09F}', '\u{A0A0}', '\u{A0A1}', '\u{A0A2}', '\u{A0A3}', '\u{A0A4}', '\u{A0A5}', '\u{A0A6}', '\u{A0A7}', '\u{A0A8}', '\u{A0A9}', '\u{A0AA}', '\u{A0AB}', '\u{A0AC}', '\u{A0AD}', '\u{A0AE}', '\u{A0AF}', '\u{A0B0}', '\u{A0B1}', '\u{A0B2}', '\u{A0B3}', '\u{A0B4}', '\u{A0B5}', '\u{A0B6}', '\u{A0B7}', '\u{A0B8}', '\u{A0B9}', '\u{A0BA}', '\u{A0BB}', '\u{A0BC}', '\u{A0BD}', '\u{A0BE}', '\u{A0BF}', '\u{A0C0}', '\u{A0C1}', '\u{A0C2}', '\u{A0C3}', '\u{A0C4}', '\u{A0C5}', '\u{A0C6}', '\u{A0C7}', '\u{A0C8}', '\u{A0C9}', '\u{A0CA}', '\u{A0CB}', '\u{A0CC}', '\u{A0CD}', '\u{A0CE}', '\u{A0CF}', '\u{A0D0}', '\u{A0D1}', '\u{A0D2}', '\u{A0D3}', '\u{A0D4}', '\u{A0D5}', '\u{A0D6}', '\u{A0D7}', '\u{A0D8}', '\u{A0D9}', '\u{A0DA}', '\u{A0DB}', '\u{A0DC}', '\u{A0DD}', '\u{A0DE}', '\u{A0DF}', '\u{A0E0}', '\u{A0E1}', '\u{A0E2}', '\u{A0E3}', '\u{A0E4}', '\u{A0E5}', '\u{A0E6}', '\u{A0E7}', '\u{A0E8}', '\u{A0E9}', '\u{A0EA}', '\u{A0EB}', '\u{A0EC}', '\u{A0ED}', '\u{A0EE}', '\u{A0EF}', '\u{A0F0}', '\u{A0F1}', '\u{A0F2}', '\u{A0F3}', '\u{A0F4}', '\u{A0F5}', '\u{A0F6}', '\u{A0F7}', '\u{A0F8}', '\u{A0F9}', '\u{A0FA}', '\u{A0FB}', '\u{A0FC}', '\u{A0FD}', '\u{A0FE}', '\u{A0FF}', '\u{A100}', '\u{A101}', '\u{A102}', '\u{A103}', '\u{A104}', '\u{A105}', '\u{A106}', '\u{A107}', '\u{A108}', '\u{A109}', '\u{A10A}', '\u{A10B}', '\u{A10C}', '\u{A10D}', '\u{A10E}', '\u{A10F}', '\u{A110}', '\u{A111}', '\u{A112}', '\u{A113}', '\u{A114}', '\u{A115}', '\u{A116}', '\u{A117}', '\u{A118}', '\u{A119}', '\u{A11A}', '\u{A11B}', '\u{A11C}', '\u{A11D}', '\u{A11E}', '\u{A11F}', '\u{A120}', '\u{A121}', '\u{A122}', '\u{A123}', '\u{A124}', '\u{A125}', '\u{A126}', '\u{A127}', '\u{A128}', '\u{A129}', '\u{A12A}', '\u{A12B}', '\u{A12C}', '\u{A12D}', '\u{A12E}', '\u{A12F}', '\u{A130}', '\u{A131}', '\u{A132}', '\u{A133}', '\u{A134}', '\u{A135}', '\u{A136}', '\u{A137}', '\u{A138}', '\u{A139}', '\u{A13A}', '\u{A13B}', '\u{A13C}', '\u{A13D}', '\u{A13E}', '\u{A13F}', '\u{A140}', '\u{A141}', '\u{A142}', '\u{A143}', '\u{A144}', '\u{A145}', '\u{A146}', '\u{A147}', '\u{A148}', '\u{A149}', '\u{A14A}', '\u{A14B}', '\u{A14C}', '\u{A14D}', '\u{A14E}', '\u{A14F}', '\u{A150}', '\u{A151}', '\u{A152}', '\u{A153}', '\u{A154}', '\u{A155}', '\u{A156}', '\u{A157}', '\u{A158}', '\u{A159}', '\u{A15A}', '\u{A15B}', '\u{A15C}', '\u{A15D}', '\u{A15E}', '\u{A15F}', '\u{A160}', '\u{A161}', '\u{A162}', '\u{A163}', '\u{A164}', '\u{A165}', '\u{A166}', '\u{A167}', '\u{A168}', '\u{A169}', '\u{A16A}', '\u{A16B}', '\u{A16C}', '\u{A16D}', '\u{A16E}', '\u{A16F}', '\u{A170}', '\u{A171}', '\u{A172}', '\u{A173}', '\u{A174}', '\u{A175}', '\u{A176}', '\u{A177}', '\u{A178}', '\u{A179}', '\u{A17A}', '\u{A17B}', '\u{A17C}', '\u{A17D}', '\u{A17E}', '\u{A17F}', '\u{A180}', '\u{A181}', '\u{A182}', '\u{A183}', '\u{A184}', '\u{A185}', '\u{A186}', '\u{A187}', '\u{A188}', '\u{A189}', '\u{A18A}', '\u{A18B}', '\u{A18C}', '\u{A18D}', '\u{A18E}', '\u{A18F}', '\u{A190}', '\u{A191}', '\u{A192}', '\u{A193}', '\u{A194}', '\u{A195}', '\u{A196}', '\u{A197}', '\u{A198}', '\u{A199}', '\u{A19A}', '\u{A19B}', '\u{A19C}', '\u{A19D}', '\u{A19E}', '\u{A19F}', '\u{A1A0}', '\u{A1A1}', '\u{A1A2}', '\u{A1A3}', '\u{A1A4}', '\u{A1A5}', '\u{A1A6}', '\u{A1A7}', '\u{A1A8}', '\u{A1A9}', '\u{A1AA}', '\u{A1AB}', '\u{A1AC}', '\u{A1AD}', '\u{A1AE}', '\u{A1AF}')
+    }
+
+    fn is_unicode_letter_number(self) -> bool {
+        match_char_class!(self,
+            '\u{16EE}', '\u{16EF}', '\u{16F0}', '\u{2160}', '\u{2161}', '\u{2162}', '\u{2163}', '\u{2164}', '\u{2165}', '\u{2166}', '\u{2167}', '\u{2168}', '\u{2169}', '\u{216A}', '\u{216B}', '\u{216C}', '\u{216D}', '\u{216E}', '\u{216F}', '\u{2170}', '\u{2171}', '\u{2172}', '\u{2173}', '\u{2174}', '\u{2175}', '\u{2176}', '\u{2177}', '\u{2178}', '\u{2179}', '\u{217A}', '\u{217B}', '\u{217C}', '\u{217D}', '\u{217E}', '\u{217F}', '\u{2180}', '\u{2181}', '\u{2182}', '\u{2185}', '\u{2186}', '\u{2187}', '\u{2188}', '\u{3007}', '\u{3021}', '\u{3022}', '\u{3023}', '\u{3024}', '\u{3025}', '\u{3026}', '\u{3027}', '\u{3028}', '\u{3029}', '\u{3038}', '\u{3039}', '\u{303A}')
+    }
+
+    fn is_unicode_nonspacing_mark(self) -> bool {
+        match_char_class!(self,
+            '\u{0300}', '\u{0301}', '\u{0302}', '\u{0303}', '\u{0304}', '\u{0305}', '\u{0306}', '\u{0307}', '\u{0308}', '\u{0309}', '\u{030A}', '\u{030B}', '\u{030C}', '\u{030D}', '\u{030E}', '\u{030F}', '\u{0310}', '\u{0311}', '\u{0312}', '\u{0313}', '\u{0314}', '\u{0315}', '\u{0316}', '\u{0317}', '\u{0318}', '\u{0319}', '\u{031A}', '\u{031B}', '\u{031C}', '\u{031D}', '\u{031E}', '\u{031F}', '\u{0320}', '\u{0321}', '\u{0322}', '\u{0323}', '\u{0324}', '\u{0325}', '\u{0326}', '\u{0327}', '\u{0328}', '\u{0329}', '\u{032A}', '\u{032B}', '\u{032C}', '\u{032D}', '\u{032E}', '\u{032F}', '\u{0330}', '\u{0331}', '\u{0332}', '\u{0333}', '\u{0334}', '\u{0335}', '\u{0336}', '\u{0337}', '\u{0338}', '\u{0339}', '\u{033A}', '\u{033B}', '\u{033C}', '\u{033D}', '\u{033E}', '\u{033F}', '\u{0340}', '\u{0341}', '\u{0342}', '\u{0343}', '\u{0344}', '\u{0345}', '\u{0346}', '\u{0347}', '\u{0348}', '\u{0349}', '\u{034A}', '\u{034B}', '\u{034C}', '\u{034D}', '\u{034E}', '\u{034F}', '\u{0350}', '\u{0351}', '\u{0352}', '\u{0353}', '\u{0354}', '\u{0355}', '\u{0356}', '\u{0357}', '\u{0358}', '\u{0359}', '\u{035A}', '\u{035B}', '\u{035C}', '\u{035D}', '\u{035E}', '\u{035F}', '\u{0360}', '\u{0361}', '\u{0362}', '\u{0363}', '\u{0364}', '\u{0365}', '\u{0366}', '\u{0367}', '\u{0368}', '\u{0369}', '\u{036A}', '\u{036B}', '\u{036C}', '\u{036D}', '\u{036E}', '\u{036F}', '\u{0483}', '\u{0484}', '\u{0485}', '\u{0486}', '\u{0487}', '\u{0591}', '\u{0592}', '\u{0593}', '\u{0594}', '\u{0595}', '\u{0596}', '\u{0597}', '\u{0598}', '\u{0599}', '\u{059A}', '\u{059B}', '\u{059C}', '\u{059D}', '\u{059E}', '\u{059F}', '\u{05A0}', '\u{05A1}', '\u{05A2}', '\u{05A3}', '\u{05A4}', '\u{05A5}', '\u{05A6}', '\u{05A7}', '\u{05A8}', '\u{05A9}', '\u{05AA}', '\u{05AB}', '\u{05AC}', '\u{05AD}', '\u{05AE}', '\u{05AF}', '\u{05B0}', '\u{05B1}', '\u{05B2}', '\u{05B3}', '\u{05B4}', '\u{05B5}', '\u{05B6}', '\u{05B7}', '\u{05B8}', '\u{05B9}', '\u{05BA}', '\u{05BB}', '\u{05BC}', '\u{05BD}', '\u{05BF}', '\u{05C1}', '\u{05C2}', '\u{05C4}', '\u{05C5}', '\u{05C7}', '\u{0610}', '\u{0611}', '\u{0612}', '\u{0613}', '\u{0614}', '\u{0615}', '\u{0616}', '\u{0617}', '\u{0618}', '\u{0619}', '\u{061A}', '\u{064B}', '\u{064C}', '\u{064D}', '\u{064E}', '\u{064F}', '\u{0650}', '\u{0651}', '\u{0652}', '\u{0653}', '\u{0654}', '\u{0655}', '\u{0656}', '\u{0657}', '\u{0658}', '\u{0659}', '\u{065A}', '\u{065B}', '\u{065C}', '\u{065D}', '\u{065E}', '\u{0670}', '\u{06D6}', '\u{06D7}', '\u{06D8}', '\u{06D9}', '\u{06DA}', '\u{06DB}', '\u{06DC}', '\u{06DF}', '\u{06E0}', '\u{06E1}', '\u{06E2}', '\u{06E3}', '\u{06E4}', '\u{06E7}', '\u{06E8}', '\u{06EA}', '\u{06EB}', '\u{06EC}', '\u{06ED}', '\u{0711}', '\u{0730}', '\u{0731}', '\u{0732}', '\u{0733}', '\u{0734}', '\u{0735}', '\u{0736}', '\u{0737}', '\u{0738}', '\u{0739}', '\u{073A}', '\u{073B}', '\u{073C}', '\u{073D}', '\u{073E}', '\u{073F}', '\u{0740}', '\u{0741}', '\u{0742}', '\u{0743}', '\u{0744}', '\u{0745}', '\u{0746}', '\u{0747}', '\u{0748}', '\u{0749}', '\u{074A}', '\u{07A6}', '\u{07A7}', '\u{07A8}', '\u{07A9}', '\u{07AA}', '\u{07AB}', '\u{07AC}', '\u{07AD}', '\u{07AE}', '\u{07AF}', '\u{07B0}', '\u{07EB}', '\u{07EC}', '\u{07ED}', '\u{07EE}', '\u{07EF}', '\u{07F0}', '\u{07F1}', '\u{07F2}', '\u{07F3}', '\u{0901}', '\u{0902}', '\u{093C}', '\u{0941}', '\u{0942}', '\u{0943}', '\u{0944}', '\u{0945}', '\u{0946}', '\u{0947}', '\u{0948}', '\u{094D}', '\u{0951}', '\u{0952}', '\u{0953}', '\u{0954}', '\u{0962}', '\u{0963}', '\u{0981}', '\u{09BC}', '\u{09C1}', '\u{09C2}', '\u{09C3}', '\u{09C4}', '\u{09CD}', '\u{09E2}', '\u{09E3}', '\u{0A01}', '\u{0A02}', '\u{0A3C}', '\u{0A41}', '\u{0A42}', '\u{0A47}', '\u{0A48}', '\u{0A4B}', '\u{0A4C}', '\u{0A4D}', '\u{0A51}', '\u{0A70}', '\u{0A71}', '\u{0A75}', '\u{0A81}', '\u{0A82}', '\u{0ABC}', '\u{0AC1}', '\u{0AC2}', '\u{0AC3}', '\u{0AC4}', '\u{0AC5}', '\u{0AC7}', '\u{0AC8}', '\u{0ACD}', '\u{0AE2}', '\u{0AE3}', '\u{0B01}', '\u{0B3C}', '\u{0B3F}', '\u{0B41}', '\u{0B42}', '\u{0B43}', '\u{0B44}', '\u{0B4D}', '\u{0B56}', '\u{0B62}', '\u{0B63}', '\u{0B82}', '\u{0BC0}', '\u{0BCD}', '\u{0C3E}', '\u{0C3F}', '\u{0C40}', '\u{0C46}', '\u{0C47}', '\u{0C48}', '\u{0C4A}', '\u{0C4B}', '\u{0C4C}', '\u{0C4D}', '\u{0C55}', '\u{0C56}', '\u{0C62}', '\u{0C63}', '\u{0CBC}', '\u{0CBF}', '\u{0CC6}', '\u{0CCC}', '\u{0CCD}', '\u{0CE2}', '\u{0CE3}', '\u{0D41}', '\u{0D42}', '\u{0D43}', '\u{0D44}', '\u{0D4D}', '\u{0D62}', '\u{0D63}', '\u{0DCA}', '\u{0DD2}', '\u{0DD3}', '\u{0DD4}', '\u{0DD6}', '\u{0E31}', '\u{0E34}', '\u{0E35}', '\u{0E36}', '\u{0E37}', '\u{0E38}', '\u{0E39}', '\u{0E3A}', '\u{0E47}', '\u{0E48}', '\u{0E49}', '\u{0E4A}', '\u{0E4B}', '\u{0E4C}', '\u{0E4D}', '\u{0E4E}', '\u{0EB1}', '\u{0EB4}', '\u{0EB5}', '\u{0EB6}', '\u{0EB7}', '\u{0EB8}', '\u{0EB9}', '\u{0EBB}', '\u{0EBC}', '\u{0EC8}', '\u{0EC9}', '\u{0ECA}', '\u{0ECB}', '\u{0ECC}', '\u{0ECD}', '\u{0F18}', '\u{0F19}', '\u{0F35}', '\u{0F37}', '\u{0F39}', '\u{0F71}', '\u{0F72}', '\u{0F73}', '\u{0F74}', '\u{0F75}', '\u{0F76}', '\u{0F77}', '\u{0F78}', '\u{0F79}', '\u{0F7A}', '\u{0F7B}', '\u{0F7C}', '\u{0F7D}', '\u{0F7E}', '\u{0F80}', '\u{0F81}', '\u{0F82}', '\u{0F83}', '\u{0F84}', '\u{0F86}', '\u{0F87}', '\u{0F90}', '\u{0F91}', '\u{0F92}', '\u{0F93}', '\u{0F94}', '\u{0F95}', '\u{0F96}', '\u{0F97}', '\u{0F99}', '\u{0F9A}', '\u{0F9B}', '\u{0F9C}', '\u{0F9D}', '\u{0F9E}', '\u{0F9F}', '\u{0FA0}', '\u{0FA1}', '\u{0FA2}', '\u{0FA3}', '\u{0FA4}', '\u{0FA5}', '\u{0FA6}', '\u{0FA7}', '\u{0FA8}', '\u{0FA9}', '\u{0FAA}', '\u{0FAB}', '\u{0FAC}', '\u{0FAD}', '\u{0FAE}', '\u{0FAF}', '\u{0FB0}', '\u{0FB1}', '\u{0FB2}', '\u{0FB3}', '\u{0FB4}', '\u{0FB5}', '\u{0FB6}', '\u{0FB7}', '\u{0FB8}', '\u{0FB9}', '\u{0FBA}', '\u{0FBB}', '\u{0FBC}', '\u{0FC6}', '\u{102D}', '\u{102E}', '\u{102F}', '\u{1030}', '\u{1032}', '\u{1033}', '\u{1034}', '\u{1035}', '\u{1036}', '\u{1037}', '\u{1039}', '\u{103A}', '\u{103D}', '\u{103E}', '\u{1058}', '\u{1059}', '\u{105E}', '\u{105F}', '\u{1060}', '\u{1071}', '\u{1072}', '\u{1073}', '\u{1074}', '\u{1082}', '\u{1085}', '\u{1086}', '\u{108D}', '\u{135F}', '\u{1712}', '\u{1713}', '\u{1714}', '\u{1732}', '\u{1733}', '\u{1734}', '\u{1752}', '\u{1753}', '\u{1772}', '\u{1773}', '\u{17B7}', '\u{17B8}', '\u{17B9}', '\u{17BA}', '\u{17BB}', '\u{17BC}', '\u{17BD}', '\u{17C6}', '\u{17C9}', '\u{17CA}', '\u{17CB}', '\u{17CC}', '\u{17CD}', '\u{17CE}', '\u{17CF}', '\u{17D0}', '\u{17D1}', '\u{17D2}', '\u{17D3}', '\u{17DD}', '\u{180B}', '\u{180C}', '\u{180D}', '\u{18A9}', '\u{1920}', '\u{1921}', '\u{1922}', '\u{1927}', '\u{1928}', '\u{1932}', '\u{1939}', '\u{193A}', '\u{193B}', '\u{1A17}', '\u{1A18}', '\u{1B00}', '\u{1B01}', '\u{1B02}', '\u{1B03}', '\u{1B34}', '\u{1B36}', '\u{1B37}', '\u{1B38}', '\u{1B39}', '\u{1B3A}', '\u{1B3C}', '\u{1B42}', '\u{1B6B}', '\u{1B6C}', '\u{1B6D}', '\u{1B6E}', '\u{1B6F}', '\u{1B70}', '\u{1B71}', '\u{1B72}', '\u{1B73}', '\u{1B80}', '\u{1B81}', '\u{1BA2}', '\u{1BA3}', '\u{1BA4}', '\u{1BA5}', '\u{1BA8}', '\u{1BA9}', '\u{1C2C}', '\u{1C2D}', '\u{1C2E}', '\u{1C2F}', '\u{1C30}', '\u{1C31}', '\u{1C32}', '\u{1C33}', '\u{1C36}', '\u{1C37}', '\u{1DC0}', '\u{1DC1}', '\u{1DC2}', '\u{1DC3}', '\u{1DC4}', '\u{1DC5}', '\u{1DC6}', '\u{1DC7}', '\u{1DC8}', '\u{1DC9}', '\u{1DCA}', '\u{1DCB}', '\u{1DCC}', '\u{1DCD}', '\u{1DCE}', '\u{1DCF}', '\u{1DD0}', '\u{1DD1}', '\u{1DD2}', '\u{1DD3}', '\u{1DD4}', '\u{1DD5}', '\u{1DD6}', '\u{1DD7}', '\u{1DD8}', '\u{1DD9}', '\u{1DDA}', '\u{1DDB}', '\u{1DDC}', '\u{1DDD}', '\u{1DDE}', '\u{1DDF}', '\u{1DE0}', '\u{1DE1}', '\u{1DE2}', '\u{1DE3}', '\u{1DE4}', '\u{1DE5}', '\u{1DE6}', '\u{1DFE}', '\u{1DFF}', '\u{20D0}', '\u{20D1}', '\u{20D2}', '\u{20D3}', '\u{20D4}', '\u{20D5}', '\u{20D6}', '\u{20D7}', '\u{20D8}', '\u{20D9}', '\u{20DA}', '\u{20DB}', '\u{20DC}', '\u{20E1}', '\u{20E5}', '\u{20E6}', '\u{20E7}', '\u{20E8}', '\u{20E9}', '\u{20EA}', '\u{20EB}', '\u{20EC}', '\u{20ED}', '\u{20EE}', '\u{20EF}', '\u{20F0}', '\u{2DE0}', '\u{2DE1}', '\u{2DE2}', '\u{2DE3}', '\u{2DE4}', '\u{2DE5}', '\u{2DE6}', '\u{2DE7}', '\u{2DE8}', '\u{2DE9}', '\u{2DEA}', '\u{2DEB}', '\u{2DEC}', '\u{2DED}', '\u{2DEE}', '\u{2DEF}', '\u{2DF0}', '\u{2DF1}', '\u{2DF2}', '\u{2DF3}', '\u{2DF4}', '\u{2DF5}', '\u{2DF6}', '\u{2DF7}', '\u{2DF8}', '\u{2DF9}', '\u{2DFA}', '\u{2DFB}', '\u{2DFC}', '\u{2DFD}', '\u{2DFE}', '\u{2DFF}', '\u{302A}', '\u{302B}', '\u{302C}', '\u{302D}', '\u{302E}', '\u{302F}', '\u{3099}', '\u{309A}', '\u{A66F}', '\u{A67C}', '\u{A67D}', '\u{A802}', '\u{A806}', '\u{A80B}', '\u{A825}', '\u{A826}', '\u{A8C4}', '\u{A926}', '\u{A927}', '\u{A928}', '\u{A929}', '\u{A92A}', '\u{A92B}', '\u{A92C}', '\u{A92D}', '\u{A947}', '\u{A948}', '\u{A949}', '\u{A94A}', '\u{A94B}', '\u{A94C}', '\u{A94D}', '\u{A94E}', '\u{A94F}', '\u{A950}', '\u{A951}', '\u{AA29}', '\u{AA2A}', '\u{AA2B}', '\u{AA2C}', '\u{AA2D}', '\u{AA2E}', '\u{AA31}', '\u{AA32}', '\u{AA35}', '\u{AA36}', '\u{AA43}', '\u{AA4C}', '\u{FB1E}', '\u{FE00}', '\u{FE01}', '\u{FE02}', '\u{FE03}', '\u{FE04}', '\u{FE05}', '\u{FE06}', '\u{FE07}', '\u{FE08}', '\u{FE09}', '\u{FE0A}', '\u{FE0B}', '\u{FE0C}', '\u{FE0D}', '\u{FE0E}', '\u{FE0F}', '\u{FE20}', '\u{FE21}', '\u{FE22}', '\u{FE23}', '\u{FE24}', '\u{FE25}', '\u{FE26}',              '\u{01BB}', '\u{01C0}', '\u{01C1}', '\u{01C2}', '\u{01C3}', '\u{0294}', '\u{05D0}', '\u{05D1}', '\u{05D2}', '\u{05D3}', '\u{05D4}', '\u{05D5}', '\u{05D6}', '\u{05D7}', '\u{05D8}', '\u{05D9}', '\u{05DA}', '\u{05DB}', '\u{05DC}', '\u{05DD}', '\u{05DE}', '\u{05DF}', '\u{05E0}', '\u{05E1}', '\u{05E2}', '\u{05E3}', '\u{05E4}', '\u{05E5}', '\u{05E6}', '\u{05E7}', '\u{05E8}', '\u{05E9}', '\u{05EA}', '\u{05F0}', '\u{05F1}', '\u{05F2}', '\u{0621}', '\u{0622}', '\u{0623}', '\u{0624}', '\u{0625}', '\u{0626}', '\u{0627}', '\u{0628}', '\u{0629}', '\u{062A}', '\u{062B}', '\u{062C}', '\u{062D}', '\u{062E}', '\u{062F}', '\u{0630}', '\u{0631}', '\u{0632}', '\u{0633}', '\u{0634}', '\u{0635}', '\u{0636}', '\u{0637}', '\u{0638}', '\u{0639}', '\u{063A}', '\u{063B}', '\u{063C}', '\u{063D}', '\u{063E}', '\u{063F}', '\u{0641}', '\u{0642}', '\u{0643}', '\u{0644}', '\u{0645}', '\u{0646}', '\u{0647}', '\u{0648}', '\u{0649}', '\u{064A}', '\u{066E}', '\u{066F}', '\u{0671}', '\u{0672}', '\u{0673}', '\u{0674}', '\u{0675}', '\u{0676}', '\u{0677}', '\u{0678}', '\u{0679}', '\u{067A}', '\u{067B}', '\u{067C}', '\u{067D}', '\u{067E}', '\u{067F}', '\u{0680}', '\u{0681}', '\u{0682}', '\u{0683}', '\u{0684}', '\u{0685}', '\u{0686}', '\u{0687}', '\u{0688}', '\u{0689}', '\u{068A}', '\u{068B}', '\u{068C}', '\u{068D}', '\u{068E}', '\u{068F}', '\u{0690}', '\u{0691}', '\u{0692}', '\u{0693}', '\u{0694}', '\u{0695}', '\u{0696}', '\u{0697}', '\u{0698}', '\u{0699}', '\u{069A}', '\u{069B}', '\u{069C}', '\u{069D}', '\u{069E}', '\u{069F}', '\u{06A0}', '\u{06A1}', '\u{06A2}', '\u{06A3}', '\u{06A4}', '\u{06A5}', '\u{06A6}', '\u{06A7}', '\u{06A8}', '\u{06A9}', '\u{06AA}', '\u{06AB}', '\u{06AC}', '\u{06AD}', '\u{06AE}', '\u{06AF}', '\u{06B0}', '\u{06B1}', '\u{06B2}', '\u{06B3}', '\u{06B4}', '\u{06B5}', '\u{06B6}', '\u{06B7}', '\u{06B8}', '\u{06B9}', '\u{06BA}', '\u{06BB}', '\u{06BC}', '\u{06BD}', '\u{06BE}', '\u{06BF}', '\u{06C0}', '\u{06C1}', '\u{06C2}', '\u{06C3}', '\u{06C4}', '\u{06C5}', '\u{06C6}', '\u{06C7}', '\u{06C8}', '\u{06C9}', '\u{06CA}', '\u{06CB}', '\u{06CC}', '\u{06CD}', '\u{06CE}', '\u{06CF}', '\u{06D0}', '\u{06D1}', '\u{06D2}', '\u{06D3}', '\u{06D5}', '\u{06EE}', '\u{06EF}', '\u{06FA}', '\u{06FB}', '\u{06FC}', '\u{06FF}', '\u{0710}', '\u{0712}', '\u{0713}', '\u{0714}', '\u{0715}', '\u{0716}', '\u{0717}', '\u{0718}', '\u{0719}', '\u{071A}', '\u{071B}', '\u{071C}', '\u{071D}', '\u{071E}', '\u{071F}', '\u{0720}', '\u{0721}', '\u{0722}', '\u{0723}', '\u{0724}', '\u{0725}', '\u{0726}', '\u{0727}', '\u{0728}', '\u{0729}', '\u{072A}', '\u{072B}', '\u{072C}', '\u{072D}', '\u{072E}', '\u{072F}', '\u{074D}', '\u{074E}', '\u{074F}', '\u{0750}', '\u{0751}', '\u{0752}', '\u{0753}', '\u{0754}', '\u{0755}', '\u{0756}', '\u{0757}', '\u{0758}', '\u{0759}', '\u{075A}', '\u{075B}', '\u{075C}', '\u{075D}', '\u{075E}', '\u{075F}', '\u{0760}', '\u{0761}', '\u{0762}', '\u{0763}', '\u{0764}', '\u{0765}', '\u{0766}', '\u{0767}', '\u{0768}', '\u{0769}', '\u{076A}', '\u{076B}', '\u{076C}', '\u{076D}', '\u{076E}', '\u{076F}', '\u{0770}', '\u{0771}', '\u{0772}', '\u{0773}', '\u{0774}', '\u{0775}', '\u{0776}', '\u{0777}', '\u{0778}', '\u{0779}', '\u{077A}', '\u{077B}', '\u{077C}', '\u{077D}', '\u{077E}', '\u{077F}', '\u{0780}', '\u{0781}', '\u{0782}', '\u{0783}', '\u{0784}', '\u{0785}', '\u{0786}', '\u{0787}', '\u{0788}', '\u{0789}', '\u{078A}', '\u{078B}', '\u{078C}', '\u{078D}', '\u{078E}', '\u{078F}', '\u{0790}', '\u{0791}', '\u{0792}', '\u{0793}', '\u{0794}', '\u{0795}', '\u{0796}', '\u{0797}', '\u{0798}', '\u{0799}', '\u{079A}', '\u{079B}', '\u{079C}', '\u{079D}', '\u{079E}', '\u{079F}', '\u{07A0}', '\u{07A1}', '\u{07A2}', '\u{07A3}', '\u{07A4}', '\u{07A5}', '\u{07B1}', '\u{07CA}', '\u{07CB}', '\u{07CC}', '\u{07CD}', '\u{07CE}', '\u{07CF}', '\u{07D0}', '\u{07D1}', '\u{07D2}', '\u{07D3}', '\u{07D4}', '\u{07D5}', '\u{07D6}', '\u{07D7}', '\u{07D8}', '\u{07D9}', '\u{07DA}', '\u{07DB}', '\u{07DC}', '\u{07DD}', '\u{07DE}', '\u{07DF}', '\u{07E0}', '\u{07E1}', '\u{07E2}', '\u{07E3}', '\u{07E4}', '\u{07E5}', '\u{07E6}', '\u{07E7}', '\u{07E8}', '\u{07E9}', '\u{07EA}', '\u{0904}', '\u{0905}', '\u{0906}', '\u{0907}', '\u{0908}', '\u{0909}', '\u{090A}', '\u{090B}', '\u{090C}', '\u{090D}', '\u{090E}', '\u{090F}', '\u{0910}', '\u{0911}', '\u{0912}', '\u{0913}', '\u{0914}', '\u{0915}', '\u{0916}', '\u{0917}', '\u{0918}', '\u{0919}', '\u{091A}', '\u{091B}', '\u{091C}', '\u{091D}', '\u{091E}', '\u{091F}', '\u{0920}', '\u{0921}', '\u{0922}', '\u{0923}', '\u{0924}', '\u{0925}', '\u{0926}', '\u{0927}', '\u{0928}', '\u{0929}', '\u{092A}', '\u{092B}', '\u{092C}', '\u{092D}', '\u{092E}', '\u{092F}', '\u{0930}', '\u{0931}', '\u{0932}', '\u{0933}', '\u{0934}', '\u{0935}', '\u{0936}', '\u{0937}', '\u{0938}', '\u{0939}', '\u{093D}', '\u{0950}', '\u{0958}', '\u{0959}', '\u{095A}', '\u{095B}', '\u{095C}', '\u{095D}', '\u{095E}', '\u{095F}', '\u{0960}', '\u{0961}', '\u{0972}', '\u{097B}', '\u{097C}', '\u{097D}', '\u{097E}', '\u{097F}', '\u{0985}', '\u{0986}', '\u{0987}', '\u{0988}', '\u{0989}', '\u{098A}', '\u{098B}', '\u{098C}', '\u{098F}', '\u{0990}', '\u{0993}', '\u{0994}', '\u{0995}', '\u{0996}', '\u{0997}', '\u{0998}', '\u{0999}', '\u{099A}', '\u{099B}', '\u{099C}', '\u{099D}', '\u{099E}', '\u{099F}', '\u{09A0}', '\u{09A1}', '\u{09A2}', '\u{09A3}', '\u{09A4}', '\u{09A5}', '\u{09A6}', '\u{09A7}', '\u{09A8}', '\u{09AA}', '\u{09AB}', '\u{09AC}', '\u{09AD}', '\u{09AE}', '\u{09AF}', '\u{09B0}', '\u{09B2}', '\u{09B6}', '\u{09B7}', '\u{09B8}', '\u{09B9}', '\u{09BD}', '\u{09CE}', '\u{09DC}', '\u{09DD}', '\u{09DF}', '\u{09E0}', '\u{09E1}', '\u{09F0}', '\u{09F1}', '\u{0A05}', '\u{0A06}', '\u{0A07}', '\u{0A08}', '\u{0A09}', '\u{0A0A}', '\u{0A0F}', '\u{0A10}', '\u{0A13}', '\u{0A14}', '\u{0A15}', '\u{0A16}', '\u{0A17}', '\u{0A18}', '\u{0A19}', '\u{0A1A}', '\u{0A1B}', '\u{0A1C}', '\u{0A1D}', '\u{0A1E}', '\u{0A1F}', '\u{0A20}', '\u{0A21}', '\u{0A22}', '\u{0A23}', '\u{0A24}', '\u{0A25}', '\u{0A26}', '\u{0A27}', '\u{0A28}', '\u{0A2A}', '\u{0A2B}', '\u{0A2C}', '\u{0A2D}', '\u{0A2E}', '\u{0A2F}', '\u{0A30}', '\u{0A32}', '\u{0A33}', '\u{0A35}', '\u{0A36}', '\u{0A38}', '\u{0A39}', '\u{0A59}', '\u{0A5A}', '\u{0A5B}', '\u{0A5C}', '\u{0A5E}', '\u{0A72}', '\u{0A73}', '\u{0A74}', '\u{0A85}', '\u{0A86}', '\u{0A87}', '\u{0A88}', '\u{0A89}', '\u{0A8A}', '\u{0A8B}', '\u{0A8C}', '\u{0A8D}', '\u{0A8F}', '\u{0A90}', '\u{0A91}', '\u{0A93}', '\u{0A94}', '\u{0A95}', '\u{0A96}', '\u{0A97}', '\u{0A98}', '\u{0A99}', '\u{0A9A}', '\u{0A9B}', '\u{0A9C}', '\u{0A9D}', '\u{0A9E}', '\u{0A9F}', '\u{0AA0}', '\u{0AA1}', '\u{0AA2}', '\u{0AA3}', '\u{0AA4}', '\u{0AA5}', '\u{0AA6}', '\u{0AA7}', '\u{0AA8}', '\u{0AAA}', '\u{0AAB}', '\u{0AAC}', '\u{0AAD}', '\u{0AAE}', '\u{0AAF}', '\u{0AB0}', '\u{0AB2}', '\u{0AB3}', '\u{0AB5}', '\u{0AB6}', '\u{0AB7}', '\u{0AB8}', '\u{0AB9}', '\u{0ABD}', '\u{0AD0}', '\u{0AE0}', '\u{0AE1}', '\u{0B05}', '\u{0B06}', '\u{0B07}', '\u{0B08}', '\u{0B09}', '\u{0B0A}', '\u{0B0B}', '\u{0B0C}', '\u{0B0F}', '\u{0B10}', '\u{0B13}', '\u{0B14}', '\u{0B15}', '\u{0B16}', '\u{0B17}', '\u{0B18}', '\u{0B19}', '\u{0B1A}', '\u{0B1B}', '\u{0B1C}', '\u{0B1D}', '\u{0B1E}', '\u{0B1F}', '\u{0B20}', '\u{0B21}', '\u{0B22}', '\u{0B23}', '\u{0B24}', '\u{0B25}', '\u{0B26}', '\u{0B27}', '\u{0B28}', '\u{0B2A}', '\u{0B2B}', '\u{0B2C}', '\u{0B2D}', '\u{0B2E}', '\u{0B2F}', '\u{0B30}', '\u{0B32}', '\u{0B33}', '\u{0B35}', '\u{0B36}', '\u{0B37}', '\u{0B38}', '\u{0B39}', '\u{0B3D}', '\u{0B5C}', '\u{0B5D}', '\u{0B5F}', '\u{0B60}', '\u{0B61}', '\u{0B71}', '\u{0B83}', '\u{0B85}', '\u{0B86}', '\u{0B87}', '\u{0B88}', '\u{0B89}', '\u{0B8A}', '\u{0B8E}', '\u{0B8F}', '\u{0B90}', '\u{0B92}', '\u{0B93}', '\u{0B94}', '\u{0B95}', '\u{0B99}', '\u{0B9A}', '\u{0B9C}', '\u{0B9E}', '\u{0B9F}', '\u{0BA3}', '\u{0BA4}', '\u{0BA8}', '\u{0BA9}', '\u{0BAA}', '\u{0BAE}', '\u{0BAF}', '\u{0BB0}', '\u{0BB1}', '\u{0BB2}', '\u{0BB3}', '\u{0BB4}', '\u{0BB5}', '\u{0BB6}', '\u{0BB7}', '\u{0BB8}', '\u{0BB9}', '\u{0BD0}', '\u{0C05}', '\u{0C06}', '\u{0C07}', '\u{0C08}', '\u{0C09}', '\u{0C0A}', '\u{0C0B}', '\u{0C0C}', '\u{0C0E}', '\u{0C0F}', '\u{0C10}', '\u{0C12}', '\u{0C13}', '\u{0C14}', '\u{0C15}', '\u{0C16}', '\u{0C17}', '\u{0C18}', '\u{0C19}', '\u{0C1A}', '\u{0C1B}', '\u{0C1C}', '\u{0C1D}', '\u{0C1E}', '\u{0C1F}', '\u{0C20}', '\u{0C21}', '\u{0C22}', '\u{0C23}', '\u{0C24}', '\u{0C25}', '\u{0C26}', '\u{0C27}', '\u{0C28}', '\u{0C2A}', '\u{0C2B}', '\u{0C2C}', '\u{0C2D}', '\u{0C2E}', '\u{0C2F}', '\u{0C30}', '\u{0C31}', '\u{0C32}', '\u{0C33}', '\u{0C35}', '\u{0C36}', '\u{0C37}', '\u{0C38}', '\u{0C39}', '\u{0C3D}', '\u{0C58}', '\u{0C59}', '\u{0C60}', '\u{0C61}', '\u{0C85}', '\u{0C86}', '\u{0C87}', '\u{0C88}', '\u{0C89}', '\u{0C8A}', '\u{0C8B}', '\u{0C8C}', '\u{0C8E}', '\u{0C8F}', '\u{0C90}', '\u{0C92}', '\u{0C93}', '\u{0C94}', '\u{0C95}', '\u{0C96}', '\u{0C97}', '\u{0C98}', '\u{0C99}', '\u{0C9A}', '\u{0C9B}', '\u{0C9C}', '\u{0C9D}', '\u{0C9E}', '\u{0C9F}', '\u{0CA0}', '\u{0CA1}', '\u{0CA2}', '\u{0CA3}', '\u{0CA4}', '\u{0CA5}', '\u{0CA6}', '\u{0CA7}', '\u{0CA8}', '\u{0CAA}', '\u{0CAB}', '\u{0CAC}', '\u{0CAD}', '\u{0CAE}', '\u{0CAF}', '\u{0CB0}', '\u{0CB1}', '\u{0CB2}', '\u{0CB3}', '\u{0CB5}', '\u{0CB6}', '\u{0CB7}', '\u{0CB8}', '\u{0CB9}', '\u{0CBD}', '\u{0CDE}', '\u{0CE0}', '\u{0CE1}', '\u{0D05}', '\u{0D06}', '\u{0D07}', '\u{0D08}', '\u{0D09}', '\u{0D0A}', '\u{0D0B}', '\u{0D0C}', '\u{0D0E}', '\u{0D0F}', '\u{0D10}', '\u{0D12}', '\u{0D13}', '\u{0D14}', '\u{0D15}', '\u{0D16}', '\u{0D17}', '\u{0D18}', '\u{0D19}', '\u{0D1A}', '\u{0D1B}', '\u{0D1C}', '\u{0D1D}', '\u{0D1E}', '\u{0D1F}', '\u{0D20}', '\u{0D21}', '\u{0D22}', '\u{0D23}', '\u{0D24}', '\u{0D25}', '\u{0D26}', '\u{0D27}', '\u{0D28}', '\u{0D2A}', '\u{0D2B}', '\u{0D2C}', '\u{0D2D}', '\u{0D2E}', '\u{0D2F}', '\u{0D30}', '\u{0D31}', '\u{0D32}', '\u{0D33}', '\u{0D34}', '\u{0D35}', '\u{0D36}', '\u{0D37}', '\u{0D38}', '\u{0D39}', '\u{0D3D}', '\u{0D60}', '\u{0D61}', '\u{0D7A}', '\u{0D7B}', '\u{0D7C}', '\u{0D7D}', '\u{0D7E}', '\u{0D7F}', '\u{0D85}', '\u{0D86}', '\u{0D87}', '\u{0D88}', '\u{0D89}', '\u{0D8A}', '\u{0D8B}', '\u{0D8C}', '\u{0D8D}', '\u{0D8E}', '\u{0D8F}', '\u{0D90}', '\u{0D91}', '\u{0D92}', '\u{0D93}', '\u{0D94}', '\u{0D95}', '\u{0D96}', '\u{0D9A}', '\u{0D9B}', '\u{0D9C}', '\u{0D9D}', '\u{0D9E}', '\u{0D9F}', '\u{0DA0}', '\u{0DA1}', '\u{0DA2}', '\u{0DA3}', '\u{0DA4}', '\u{0DA5}', '\u{0DA6}', '\u{0DA7}', '\u{0DA8}', '\u{0DA9}', '\u{0DAA}', '\u{0DAB}', '\u{0DAC}', '\u{0DAD}', '\u{0DAE}', '\u{0DAF}', '\u{0DB0}', '\u{0DB1}', '\u{0DB3}', '\u{0DB4}', '\u{0DB5}', '\u{0DB6}', '\u{0DB7}', '\u{0DB8}', '\u{0DB9}', '\u{0DBA}', '\u{0DBB}', '\u{0DBD}', '\u{0DC0}', '\u{0DC1}', '\u{0DC2}', '\u{0DC3}', '\u{0DC4}', '\u{0DC5}', '\u{0DC6}', '\u{0E01}', '\u{0E02}', '\u{0E03}', '\u{0E04}', '\u{0E05}', '\u{0E06}', '\u{0E07}', '\u{0E08}', '\u{0E09}', '\u{0E0A}', '\u{0E0B}', '\u{0E0C}', '\u{0E0D}', '\u{0E0E}', '\u{0E0F}', '\u{0E10}', '\u{0E11}', '\u{0E12}', '\u{0E13}', '\u{0E14}', '\u{0E15}', '\u{0E16}', '\u{0E17}', '\u{0E18}', '\u{0E19}', '\u{0E1A}', '\u{0E1B}', '\u{0E1C}', '\u{0E1D}', '\u{0E1E}', '\u{0E1F}', '\u{0E20}', '\u{0E21}', '\u{0E22}', '\u{0E23}', '\u{0E24}', '\u{0E25}', '\u{0E26}', '\u{0E27}', '\u{0E28}', '\u{0E29}', '\u{0E2A}', '\u{0E2B}', '\u{0E2C}', '\u{0E2D}', '\u{0E2E}', '\u{0E2F}', '\u{0E30}', '\u{0E32}', '\u{0E33}', '\u{0E40}', '\u{0E41}', '\u{0E42}', '\u{0E43}', '\u{0E44}', '\u{0E45}', '\u{0E81}', '\u{0E82}', '\u{0E84}', '\u{0E87}', '\u{0E88}', '\u{0E8A}', '\u{0E8D}', '\u{0E94}', '\u{0E95}', '\u{0E96}', '\u{0E97}', '\u{0E99}', '\u{0E9A}', '\u{0E9B}', '\u{0E9C}', '\u{0E9D}', '\u{0E9E}', '\u{0E9F}', '\u{0EA1}', '\u{0EA2}', '\u{0EA3}', '\u{0EA5}', '\u{0EA7}', '\u{0EAA}', '\u{0EAB}', '\u{0EAD}', '\u{0EAE}', '\u{0EAF}', '\u{0EB0}', '\u{0EB2}', '\u{0EB3}', '\u{0EBD}', '\u{0EC0}', '\u{0EC1}', '\u{0EC2}', '\u{0EC3}', '\u{0EC4}', '\u{0EDC}', '\u{0EDD}', '\u{0F00}', '\u{0F40}', '\u{0F41}', '\u{0F42}', '\u{0F43}', '\u{0F44}', '\u{0F45}', '\u{0F46}', '\u{0F47}', '\u{0F49}', '\u{0F4A}', '\u{0F4B}', '\u{0F4C}', '\u{0F4D}', '\u{0F4E}', '\u{0F4F}', '\u{0F50}', '\u{0F51}', '\u{0F52}', '\u{0F53}', '\u{0F54}', '\u{0F55}', '\u{0F56}', '\u{0F57}', '\u{0F58}', '\u{0F59}', '\u{0F5A}', '\u{0F5B}', '\u{0F5C}', '\u{0F5D}', '\u{0F5E}', '\u{0F5F}', '\u{0F60}', '\u{0F61}', '\u{0F62}', '\u{0F63}', '\u{0F64}', '\u{0F65}', '\u{0F66}', '\u{0F67}', '\u{0F68}', '\u{0F69}', '\u{0F6A}', '\u{0F6B}', '\u{0F6C}', '\u{0F88}', '\u{0F89}', '\u{0F8A}', '\u{0F8B}', '\u{1000}', '\u{1001}', '\u{1002}', '\u{1003}', '\u{1004}', '\u{1005}', '\u{1006}', '\u{1007}', '\u{1008}', '\u{1009}', '\u{100A}', '\u{100B}', '\u{100C}', '\u{100D}', '\u{100E}', '\u{100F}', '\u{1010}', '\u{1011}', '\u{1012}', '\u{1013}', '\u{1014}', '\u{1015}', '\u{1016}', '\u{1017}', '\u{1018}', '\u{1019}', '\u{101A}', '\u{101B}', '\u{101C}', '\u{101D}', '\u{101E}', '\u{101F}', '\u{1020}', '\u{1021}', '\u{1022}', '\u{1023}', '\u{1024}', '\u{1025}', '\u{1026}', '\u{1027}', '\u{1028}', '\u{1029}', '\u{102A}', '\u{103F}', '\u{1050}', '\u{1051}', '\u{1052}', '\u{1053}', '\u{1054}', '\u{1055}', '\u{105A}', '\u{105B}', '\u{105C}', '\u{105D}', '\u{1061}', '\u{1065}', '\u{1066}', '\u{106E}', '\u{106F}', '\u{1070}', '\u{1075}', '\u{1076}', '\u{1077}', '\u{1078}', '\u{1079}', '\u{107A}', '\u{107B}', '\u{107C}', '\u{107D}', '\u{107E}', '\u{107F}', '\u{1080}', '\u{1081}', '\u{108E}', '\u{10D0}', '\u{10D1}', '\u{10D2}', '\u{10D3}', '\u{10D4}', '\u{10D5}', '\u{10D6}', '\u{10D7}', '\u{10D8}', '\u{10D9}', '\u{10DA}', '\u{10DB}', '\u{10DC}', '\u{10DD}', '\u{10DE}', '\u{10DF}', '\u{10E0}', '\u{10E1}', '\u{10E2}', '\u{10E3}', '\u{10E4}', '\u{10E5}', '\u{10E6}', '\u{10E7}', '\u{10E8}', '\u{10E9}', '\u{10EA}', '\u{10EB}', '\u{10EC}', '\u{10ED}', '\u{10EE}', '\u{10EF}', '\u{10F0}', '\u{10F1}', '\u{10F2}', '\u{10F3}', '\u{10F4}', '\u{10F5}', '\u{10F6}', '\u{10F7}', '\u{10F8}', '\u{10F9}', '\u{10FA}', '\u{1100}', '\u{1101}', '\u{1102}', '\u{1103}', '\u{1104}', '\u{1105}', '\u{1106}', '\u{1107}', '\u{1108}', '\u{1109}', '\u{110A}', '\u{110B}', '\u{110C}', '\u{110D}', '\u{110E}', '\u{110F}', '\u{1110}', '\u{1111}', '\u{1112}', '\u{1113}', '\u{1114}', '\u{1115}', '\u{1116}', '\u{1117}', '\u{1118}', '\u{1119}', '\u{111A}', '\u{111B}', '\u{111C}', '\u{111D}', '\u{111E}', '\u{111F}', '\u{1120}', '\u{1121}', '\u{1122}', '\u{1123}', '\u{1124}', '\u{1125}', '\u{1126}', '\u{1127}', '\u{1128}', '\u{1129}', '\u{112A}', '\u{112B}', '\u{112C}', '\u{112D}', '\u{112E}', '\u{112F}', '\u{1130}', '\u{1131}', '\u{1132}', '\u{1133}', '\u{1134}', '\u{1135}', '\u{1136}', '\u{1137}', '\u{1138}', '\u{1139}', '\u{113A}', '\u{113B}', '\u{113C}', '\u{113D}', '\u{113E}', '\u{113F}', '\u{1140}', '\u{1141}', '\u{1142}', '\u{1143}', '\u{1144}', '\u{1145}', '\u{1146}', '\u{1147}', '\u{1148}', '\u{1149}', '\u{114A}', '\u{114B}', '\u{114C}', '\u{114D}', '\u{114E}', '\u{114F}', '\u{1150}', '\u{1151}', '\u{1152}', '\u{1153}', '\u{1154}', '\u{1155}', '\u{1156}', '\u{1157}', '\u{1158}', '\u{1159}', '\u{115F}', '\u{1160}', '\u{1161}', '\u{1162}', '\u{1163}', '\u{1164}', '\u{1165}', '\u{1166}', '\u{1167}', '\u{1168}', '\u{1169}', '\u{116A}', '\u{116B}', '\u{116C}', '\u{116D}', '\u{116E}', '\u{116F}', '\u{1170}', '\u{1171}', '\u{1172}', '\u{1173}', '\u{1174}', '\u{1175}', '\u{1176}', '\u{1177}', '\u{1178}', '\u{1179}', '\u{117A}', '\u{117B}', '\u{117C}', '\u{117D}', '\u{117E}', '\u{117F}', '\u{1180}', '\u{1181}', '\u{1182}', '\u{1183}', '\u{1184}', '\u{1185}', '\u{1186}', '\u{1187}', '\u{1188}', '\u{1189}', '\u{118A}', '\u{118B}', '\u{118C}', '\u{118D}', '\u{118E}', '\u{118F}', '\u{1190}', '\u{1191}', '\u{1192}', '\u{1193}', '\u{1194}', '\u{1195}', '\u{1196}', '\u{1197}', '\u{1198}', '\u{1199}', '\u{119A}', '\u{119B}', '\u{119C}', '\u{119D}', '\u{119E}', '\u{119F}', '\u{11A0}', '\u{11A1}', '\u{11A2}', '\u{11A8}', '\u{11A9}', '\u{11AA}', '\u{11AB}', '\u{11AC}', '\u{11AD}', '\u{11AE}', '\u{11AF}', '\u{11B0}', '\u{11B1}', '\u{11B2}', '\u{11B3}', '\u{11B4}', '\u{11B5}', '\u{11B6}', '\u{11B7}', '\u{11B8}', '\u{11B9}', '\u{11BA}', '\u{11BB}', '\u{11BC}', '\u{11BD}', '\u{11BE}', '\u{11BF}', '\u{11C0}', '\u{11C1}', '\u{11C2}', '\u{11C3}', '\u{11C4}', '\u{11C5}', '\u{11C6}', '\u{11C7}', '\u{11C8}', '\u{11C9}', '\u{11CA}', '\u{11CB}', '\u{11CC}', '\u{11CD}', '\u{11CE}', '\u{11CF}', '\u{11D0}', '\u{11D1}', '\u{11D2}', '\u{11D3}', '\u{11D4}', '\u{11D5}', '\u{11D6}', '\u{11D7}', '\u{11D8}', '\u{11D9}', '\u{11DA}', '\u{11DB}', '\u{11DC}', '\u{11DD}', '\u{11DE}', '\u{11DF}', '\u{11E0}', '\u{11E1}', '\u{11E2}', '\u{11E3}', '\u{11E4}', '\u{11E5}', '\u{11E6}', '\u{11E7}', '\u{11E8}', '\u{11E9}', '\u{11EA}', '\u{11EB}', '\u{11EC}', '\u{11ED}', '\u{11EE}', '\u{11EF}', '\u{11F0}', '\u{11F1}', '\u{11F2}', '\u{11F3}', '\u{11F4}', '\u{11F5}', '\u{11F6}', '\u{11F7}', '\u{11F8}', '\u{11F9}', '\u{1200}', '\u{1201}', '\u{1202}', '\u{1203}', '\u{1204}', '\u{1205}', '\u{1206}', '\u{1207}', '\u{1208}', '\u{1209}', '\u{120A}', '\u{120B}', '\u{120C}', '\u{120D}', '\u{120E}', '\u{120F}', '\u{1210}', '\u{1211}', '\u{1212}', '\u{1213}', '\u{1214}', '\u{1215}', '\u{1216}', '\u{1217}', '\u{1218}', '\u{1219}', '\u{121A}', '\u{121B}', '\u{121C}', '\u{121D}', '\u{121E}', '\u{121F}', '\u{1220}', '\u{1221}', '\u{1222}', '\u{1223}', '\u{1224}', '\u{1225}', '\u{1226}', '\u{1227}', '\u{1228}', '\u{1229}', '\u{122A}', '\u{122B}', '\u{122C}', '\u{122D}', '\u{122E}', '\u{122F}', '\u{1230}', '\u{1231}', '\u{1232}', '\u{1233}', '\u{1234}', '\u{1235}', '\u{1236}', '\u{1237}', '\u{1238}', '\u{1239}', '\u{123A}', '\u{123B}', '\u{123C}', '\u{123D}', '\u{123E}', '\u{123F}', '\u{1240}', '\u{1241}', '\u{1242}', '\u{1243}', '\u{1244}', '\u{1245}', '\u{1246}', '\u{1247}', '\u{1248}', '\u{124A}', '\u{124B}', '\u{124C}', '\u{124D}', '\u{1250}', '\u{1251}', '\u{1252}', '\u{1253}', '\u{1254}', '\u{1255}', '\u{1256}', '\u{1258}', '\u{125A}', '\u{125B}', '\u{125C}', '\u{125D}', '\u{1260}', '\u{1261}', '\u{1262}', '\u{1263}', '\u{1264}', '\u{1265}', '\u{1266}', '\u{1267}', '\u{1268}', '\u{1269}', '\u{126A}', '\u{126B}', '\u{126C}', '\u{126D}', '\u{126E}', '\u{126F}', '\u{1270}', '\u{1271}', '\u{1272}', '\u{1273}', '\u{1274}', '\u{1275}', '\u{1276}', '\u{1277}', '\u{1278}', '\u{1279}', '\u{127A}', '\u{127B}', '\u{127C}', '\u{127D}', '\u{127E}', '\u{127F}', '\u{1280}', '\u{1281}', '\u{1282}', '\u{1283}', '\u{1284}', '\u{1285}', '\u{1286}', '\u{1287}', '\u{1288}', '\u{128A}', '\u{128B}', '\u{128C}', '\u{128D}', '\u{1290}', '\u{1291}', '\u{1292}', '\u{1293}', '\u{1294}', '\u{1295}', '\u{1296}', '\u{1297}', '\u{1298}', '\u{1299}', '\u{129A}', '\u{129B}', '\u{129C}', '\u{129D}', '\u{129E}', '\u{129F}', '\u{12A0}', '\u{12A1}', '\u{12A2}', '\u{12A3}', '\u{12A4}', '\u{12A5}', '\u{12A6}', '\u{12A7}', '\u{12A8}', '\u{12A9}', '\u{12AA}', '\u{12AB}', '\u{12AC}', '\u{12AD}', '\u{12AE}', '\u{12AF}', '\u{12B0}', '\u{12B2}', '\u{12B3}', '\u{12B4}', '\u{12B5}', '\u{12B8}', '\u{12B9}', '\u{12BA}', '\u{12BB}', '\u{12BC}', '\u{12BD}', '\u{12BE}', '\u{12C0}', '\u{12C2}', '\u{12C3}', '\u{12C4}', '\u{12C5}', '\u{12C8}', '\u{12C9}', '\u{12CA}', '\u{12CB}', '\u{12CC}', '\u{12CD}', '\u{12CE}', '\u{12CF}', '\u{12D0}', '\u{12D1}', '\u{12D2}', '\u{12D3}', '\u{12D4}', '\u{12D5}', '\u{12D6}', '\u{12D8}', '\u{12D9}', '\u{12DA}', '\u{12DB}', '\u{12DC}', '\u{12DD}', '\u{12DE}', '\u{12DF}', '\u{12E0}', '\u{12E1}', '\u{12E2}', '\u{12E3}', '\u{12E4}', '\u{12E5}', '\u{12E6}', '\u{12E7}', '\u{12E8}', '\u{12E9}', '\u{12EA}', '\u{12EB}', '\u{12EC}', '\u{12ED}', '\u{12EE}', '\u{12EF}', '\u{12F0}', '\u{12F1}', '\u{12F2}', '\u{12F3}', '\u{12F4}', '\u{12F5}', '\u{12F6}', '\u{12F7}', '\u{12F8}', '\u{12F9}', '\u{12FA}', '\u{12FB}', '\u{12FC}', '\u{12FD}', '\u{12FE}', '\u{12FF}', '\u{1300}', '\u{1301}', '\u{1302}', '\u{1303}', '\u{1304}', '\u{1305}', '\u{1306}', '\u{1307}', '\u{1308}', '\u{1309}', '\u{130A}', '\u{130B}', '\u{130C}', '\u{130D}', '\u{130E}', '\u{130F}', '\u{1310}', '\u{1312}', '\u{1313}', '\u{1314}', '\u{1315}', '\u{1318}', '\u{1319}', '\u{131A}', '\u{131B}', '\u{131C}', '\u{131D}', '\u{131E}', '\u{131F}', '\u{1320}', '\u{1321}', '\u{1322}', '\u{1323}', '\u{1324}', '\u{1325}', '\u{1326}', '\u{1327}', '\u{1328}', '\u{1329}', '\u{132A}', '\u{132B}', '\u{132C}', '\u{132D}', '\u{132E}', '\u{132F}', '\u{1330}', '\u{1331}', '\u{1332}', '\u{1333}', '\u{1334}', '\u{1335}', '\u{1336}', '\u{1337}', '\u{1338}', '\u{1339}', '\u{133A}', '\u{133B}', '\u{133C}', '\u{133D}', '\u{133E}', '\u{133F}', '\u{1340}', '\u{1341}', '\u{1342}', '\u{1343}', '\u{1344}', '\u{1345}', '\u{1346}', '\u{1347}', '\u{1348}', '\u{1349}', '\u{134A}', '\u{134B}', '\u{134C}', '\u{134D}', '\u{134E}', '\u{134F}', '\u{1350}', '\u{1351}', '\u{1352}', '\u{1353}', '\u{1354}', '\u{1355}', '\u{1356}', '\u{1357}', '\u{1358}', '\u{1359}', '\u{135A}', '\u{1380}', '\u{1381}', '\u{1382}', '\u{1383}', '\u{1384}', '\u{1385}', '\u{1386}', '\u{1387}', '\u{1388}', '\u{1389}', '\u{138A}', '\u{138B}', '\u{138C}', '\u{138D}', '\u{138E}', '\u{138F}', '\u{13A0}', '\u{13A1}', '\u{13A2}', '\u{13A3}', '\u{13A4}', '\u{13A5}', '\u{13A6}', '\u{13A7}', '\u{13A8}', '\u{13A9}', '\u{13AA}', '\u{13AB}', '\u{13AC}', '\u{13AD}', '\u{13AE}', '\u{13AF}', '\u{13B0}', '\u{13B1}', '\u{13B2}', '\u{13B3}', '\u{13B4}', '\u{13B5}', '\u{13B6}', '\u{13B7}', '\u{13B8}', '\u{13B9}', '\u{13BA}', '\u{13BB}', '\u{13BC}', '\u{13BD}', '\u{13BE}', '\u{13BF}', '\u{13C0}', '\u{13C1}', '\u{13C2}', '\u{13C3}', '\u{13C4}', '\u{13C5}', '\u{13C6}', '\u{13C7}', '\u{13C8}', '\u{13C9}', '\u{13CA}', '\u{13CB}', '\u{13CC}', '\u{13CD}', '\u{13CE}', '\u{13CF}', '\u{13D0}', '\u{13D1}', '\u{13D2}', '\u{13D3}', '\u{13D4}', '\u{13D5}', '\u{13D6}', '\u{13D7}', '\u{13D8}', '\u{13D9}', '\u{13DA}', '\u{13DB}', '\u{13DC}', '\u{13DD}', '\u{13DE}', '\u{13DF}', '\u{13E0}', '\u{13E1}', '\u{13E2}', '\u{13E3}', '\u{13E4}', '\u{13E5}', '\u{13E6}', '\u{13E7}', '\u{13E8}', '\u{13E9}', '\u{13EA}', '\u{13EB}', '\u{13EC}', '\u{13ED}', '\u{13EE}', '\u{13EF}', '\u{13F0}', '\u{13F1}', '\u{13F2}', '\u{13F3}', '\u{13F4}', '\u{1401}', '\u{1402}', '\u{1403}', '\u{1404}', '\u{1405}', '\u{1406}', '\u{1407}', '\u{1408}', '\u{1409}', '\u{140A}', '\u{140B}', '\u{140C}', '\u{140D}', '\u{140E}', '\u{140F}', '\u{1410}', '\u{1411}', '\u{1412}', '\u{1413}', '\u{1414}', '\u{1415}', '\u{1416}', '\u{1417}', '\u{1418}', '\u{1419}', '\u{141A}', '\u{141B}', '\u{141C}', '\u{141D}', '\u{141E}', '\u{141F}', '\u{1420}', '\u{1421}', '\u{1422}', '\u{1423}', '\u{1424}', '\u{1425}', '\u{1426}', '\u{1427}', '\u{1428}', '\u{1429}', '\u{142A}', '\u{142B}', '\u{142C}', '\u{142D}', '\u{142E}', '\u{142F}', '\u{1430}', '\u{1431}', '\u{1432}', '\u{1433}', '\u{1434}', '\u{1435}', '\u{1436}', '\u{1437}', '\u{1438}', '\u{1439}', '\u{143A}', '\u{143B}', '\u{143C}', '\u{143D}', '\u{143E}', '\u{143F}', '\u{1440}', '\u{1441}', '\u{1442}', '\u{1443}', '\u{1444}', '\u{1445}', '\u{1446}', '\u{1447}', '\u{1448}', '\u{1449}', '\u{144A}', '\u{144B}', '\u{144C}', '\u{144D}', '\u{144E}', '\u{144F}', '\u{1450}', '\u{1451}', '\u{1452}', '\u{1453}', '\u{1454}', '\u{1455}', '\u{1456}', '\u{1457}', '\u{1458}', '\u{1459}', '\u{145A}', '\u{145B}', '\u{145C}', '\u{145D}', '\u{145E}', '\u{145F}', '\u{1460}', '\u{1461}', '\u{1462}', '\u{1463}', '\u{1464}', '\u{1465}', '\u{1466}', '\u{1467}', '\u{1468}', '\u{1469}', '\u{146A}', '\u{146B}', '\u{146C}', '\u{146D}', '\u{146E}', '\u{146F}', '\u{1470}', '\u{1471}', '\u{1472}', '\u{1473}', '\u{1474}', '\u{1475}', '\u{1476}', '\u{1477}', '\u{1478}', '\u{1479}', '\u{147A}', '\u{147B}', '\u{147C}', '\u{147D}', '\u{147E}', '\u{147F}', '\u{1480}', '\u{1481}', '\u{1482}', '\u{1483}', '\u{1484}', '\u{1485}', '\u{1486}', '\u{1487}', '\u{1488}', '\u{1489}', '\u{148A}', '\u{148B}', '\u{148C}', '\u{148D}', '\u{148E}', '\u{148F}', '\u{1490}', '\u{1491}', '\u{1492}', '\u{1493}', '\u{1494}', '\u{1495}', '\u{1496}', '\u{1497}', '\u{1498}', '\u{1499}', '\u{149A}', '\u{149B}', '\u{149C}', '\u{149D}', '\u{149E}', '\u{149F}', '\u{14A0}', '\u{14A1}', '\u{14A2}', '\u{14A3}', '\u{14A4}', '\u{14A5}', '\u{14A6}', '\u{14A7}', '\u{14A8}', '\u{14A9}', '\u{14AA}', '\u{14AB}', '\u{14AC}', '\u{14AD}', '\u{14AE}', '\u{14AF}', '\u{14B0}', '\u{14B1}', '\u{14B2}', '\u{14B3}', '\u{14B4}', '\u{14B5}', '\u{14B6}', '\u{14B7}', '\u{14B8}', '\u{14B9}', '\u{14BA}', '\u{14BB}', '\u{14BC}', '\u{14BD}', '\u{14BE}', '\u{14BF}', '\u{14C0}', '\u{14C1}', '\u{14C2}', '\u{14C3}', '\u{14C4}', '\u{14C5}', '\u{14C6}', '\u{14C7}', '\u{14C8}', '\u{14C9}', '\u{14CA}', '\u{14CB}', '\u{14CC}', '\u{14CD}', '\u{14CE}', '\u{14CF}', '\u{14D0}', '\u{14D1}', '\u{14D2}', '\u{14D3}', '\u{14D4}', '\u{14D5}', '\u{14D6}', '\u{14D7}', '\u{14D8}', '\u{14D9}', '\u{14DA}', '\u{14DB}', '\u{14DC}', '\u{14DD}', '\u{14DE}', '\u{14DF}', '\u{14E0}', '\u{14E1}', '\u{14E2}', '\u{14E3}', '\u{14E4}', '\u{14E5}', '\u{14E6}', '\u{14E7}', '\u{14E8}', '\u{14E9}', '\u{14EA}', '\u{14EB}', '\u{14EC}', '\u{14ED}', '\u{14EE}', '\u{14EF}', '\u{14F0}', '\u{14F1}', '\u{14F2}', '\u{14F3}', '\u{14F4}', '\u{14F5}', '\u{14F6}', '\u{14F7}', '\u{14F8}', '\u{14F9}', '\u{14FA}', '\u{14FB}', '\u{14FC}', '\u{14FD}', '\u{14FE}', '\u{14FF}', '\u{1500}', '\u{1501}', '\u{1502}', '\u{1503}', '\u{1504}', '\u{1505}', '\u{1506}', '\u{1507}', '\u{1508}', '\u{1509}', '\u{150A}', '\u{150B}', '\u{150C}', '\u{150D}', '\u{150E}', '\u{150F}', '\u{1510}', '\u{1511}', '\u{1512}', '\u{1513}', '\u{1514}', '\u{1515}', '\u{1516}', '\u{1517}', '\u{1518}', '\u{1519}', '\u{151A}', '\u{151B}', '\u{151C}', '\u{151D}', '\u{151E}', '\u{151F}', '\u{1520}', '\u{1521}', '\u{1522}', '\u{1523}', '\u{1524}', '\u{1525}', '\u{1526}', '\u{1527}', '\u{1528}', '\u{1529}', '\u{152A}', '\u{152B}', '\u{152C}', '\u{152D}', '\u{152E}', '\u{152F}', '\u{1530}', '\u{1531}', '\u{1532}', '\u{1533}', '\u{1534}', '\u{1535}', '\u{1536}', '\u{1537}', '\u{1538}', '\u{1539}', '\u{153A}', '\u{153B}', '\u{153C}', '\u{153D}', '\u{153E}', '\u{153F}', '\u{1540}', '\u{1541}', '\u{1542}', '\u{1543}', '\u{1544}', '\u{1545}', '\u{1546}', '\u{1547}', '\u{1548}', '\u{1549}', '\u{154A}', '\u{154B}', '\u{154C}', '\u{154D}', '\u{154E}', '\u{154F}', '\u{1550}', '\u{1551}', '\u{1552}', '\u{1553}', '\u{1554}', '\u{1555}', '\u{1556}', '\u{1557}', '\u{1558}', '\u{1559}', '\u{155A}', '\u{155B}', '\u{155C}', '\u{155D}', '\u{155E}', '\u{155F}', '\u{1560}', '\u{1561}', '\u{1562}', '\u{1563}', '\u{1564}', '\u{1565}', '\u{1566}', '\u{1567}', '\u{1568}', '\u{1569}', '\u{156A}', '\u{156B}', '\u{156C}', '\u{156D}', '\u{156E}', '\u{156F}', '\u{1570}', '\u{1571}', '\u{1572}', '\u{1573}', '\u{1574}', '\u{1575}', '\u{1576}', '\u{1577}', '\u{1578}', '\u{1579}', '\u{157A}', '\u{157B}', '\u{157C}', '\u{157D}', '\u{157E}', '\u{157F}', '\u{1580}', '\u{1581}', '\u{1582}', '\u{1583}', '\u{1584}', '\u{1585}', '\u{1586}', '\u{1587}', '\u{1588}', '\u{1589}', '\u{158A}', '\u{158B}', '\u{158C}', '\u{158D}', '\u{158E}', '\u{158F}', '\u{1590}', '\u{1591}', '\u{1592}', '\u{1593}', '\u{1594}', '\u{1595}', '\u{1596}', '\u{1597}', '\u{1598}', '\u{1599}', '\u{159A}', '\u{159B}', '\u{159C}', '\u{159D}', '\u{159E}', '\u{159F}', '\u{15A0}', '\u{15A1}', '\u{15A2}', '\u{15A3}', '\u{15A4}', '\u{15A5}', '\u{15A6}', '\u{15A7}', '\u{15A8}', '\u{15A9}', '\u{15AA}', '\u{15AB}', '\u{15AC}', '\u{15AD}', '\u{15AE}', '\u{15AF}', '\u{15B0}', '\u{15B1}', '\u{15B2}', '\u{15B3}', '\u{15B4}', '\u{15B5}', '\u{15B6}', '\u{15B7}', '\u{15B8}', '\u{15B9}', '\u{15BA}', '\u{15BB}', '\u{15BC}', '\u{15BD}', '\u{15BE}', '\u{15BF}', '\u{15C0}', '\u{15C1}', '\u{15C2}', '\u{15C3}', '\u{15C4}', '\u{15C5}', '\u{15C6}', '\u{15C7}', '\u{15C8}', '\u{15C9}', '\u{15CA}', '\u{15CB}', '\u{15CC}', '\u{15CD}', '\u{15CE}', '\u{15CF}', '\u{15D0}', '\u{15D1}', '\u{15D2}', '\u{15D3}', '\u{15D4}', '\u{15D5}', '\u{15D6}', '\u{15D7}', '\u{15D8}', '\u{15D9}', '\u{15DA}', '\u{15DB}', '\u{15DC}', '\u{15DD}', '\u{15DE}', '\u{15DF}', '\u{15E0}', '\u{15E1}', '\u{15E2}', '\u{15E3}', '\u{15E4}', '\u{15E5}', '\u{15E6}', '\u{15E7}', '\u{15E8}', '\u{15E9}', '\u{15EA}', '\u{15EB}', '\u{15EC}', '\u{15ED}', '\u{15EE}', '\u{15EF}', '\u{15F0}', '\u{15F1}', '\u{15F2}', '\u{15F3}', '\u{15F4}', '\u{15F5}', '\u{15F6}', '\u{15F7}', '\u{15F8}', '\u{15F9}', '\u{15FA}', '\u{15FB}', '\u{15FC}', '\u{15FD}', '\u{15FE}', '\u{15FF}', '\u{1600}', '\u{1601}', '\u{1602}', '\u{1603}', '\u{1604}', '\u{1605}', '\u{1606}', '\u{1607}', '\u{1608}', '\u{1609}', '\u{160A}', '\u{160B}', '\u{160C}', '\u{160D}', '\u{160E}', '\u{160F}', '\u{1610}', '\u{1611}', '\u{1612}', '\u{1613}', '\u{1614}', '\u{1615}', '\u{1616}', '\u{1617}', '\u{1618}', '\u{1619}', '\u{161A}', '\u{161B}', '\u{161C}', '\u{161D}', '\u{161E}', '\u{161F}', '\u{1620}', '\u{1621}', '\u{1622}', '\u{1623}', '\u{1624}', '\u{1625}', '\u{1626}', '\u{1627}', '\u{1628}', '\u{1629}', '\u{162A}', '\u{162B}', '\u{162C}', '\u{162D}', '\u{162E}', '\u{162F}', '\u{1630}', '\u{1631}', '\u{1632}', '\u{1633}', '\u{1634}', '\u{1635}', '\u{1636}', '\u{1637}', '\u{1638}', '\u{1639}', '\u{163A}', '\u{163B}', '\u{163C}', '\u{163D}', '\u{163E}', '\u{163F}', '\u{1640}', '\u{1641}', '\u{1642}', '\u{1643}', '\u{1644}', '\u{1645}', '\u{1646}', '\u{1647}', '\u{1648}', '\u{1649}', '\u{164A}', '\u{164B}', '\u{164C}', '\u{164D}', '\u{164E}', '\u{164F}', '\u{1650}', '\u{1651}', '\u{1652}', '\u{1653}', '\u{1654}', '\u{1655}', '\u{1656}', '\u{1657}', '\u{1658}', '\u{1659}', '\u{165A}', '\u{165B}', '\u{165C}', '\u{165D}', '\u{165E}', '\u{165F}', '\u{1660}', '\u{1661}', '\u{1662}', '\u{1663}', '\u{1664}', '\u{1665}', '\u{1666}', '\u{1667}', '\u{1668}', '\u{1669}', '\u{166A}', '\u{166B}', '\u{166C}', '\u{166F}', '\u{1670}', '\u{1671}', '\u{1672}', '\u{1673}', '\u{1674}', '\u{1675}', '\u{1676}', '\u{1681}', '\u{1682}', '\u{1683}', '\u{1684}', '\u{1685}', '\u{1686}', '\u{1687}', '\u{1688}', '\u{1689}', '\u{168A}', '\u{168B}', '\u{168C}', '\u{168D}', '\u{168E}', '\u{168F}', '\u{1690}', '\u{1691}', '\u{1692}', '\u{1693}', '\u{1694}', '\u{1695}', '\u{1696}', '\u{1697}', '\u{1698}', '\u{1699}', '\u{169A}', '\u{16A0}', '\u{16A1}', '\u{16A2}', '\u{16A3}', '\u{16A4}', '\u{16A5}', '\u{16A6}', '\u{16A7}', '\u{16A8}', '\u{16A9}', '\u{16AA}', '\u{16AB}', '\u{16AC}', '\u{16AD}', '\u{16AE}', '\u{16AF}', '\u{16B0}', '\u{16B1}', '\u{16B2}', '\u{16B3}', '\u{16B4}', '\u{16B5}', '\u{16B6}', '\u{16B7}', '\u{16B8}', '\u{16B9}', '\u{16BA}', '\u{16BB}', '\u{16BC}', '\u{16BD}', '\u{16BE}', '\u{16BF}', '\u{16C0}', '\u{16C1}', '\u{16C2}', '\u{16C3}', '\u{16C4}', '\u{16C5}', '\u{16C6}', '\u{16C7}', '\u{16C8}', '\u{16C9}', '\u{16CA}', '\u{16CB}', '\u{16CC}', '\u{16CD}', '\u{16CE}', '\u{16CF}', '\u{16D0}', '\u{16D1}', '\u{16D2}', '\u{16D3}', '\u{16D4}', '\u{16D5}', '\u{16D6}', '\u{16D7}', '\u{16D8}', '\u{16D9}', '\u{16DA}', '\u{16DB}', '\u{16DC}', '\u{16DD}', '\u{16DE}', '\u{16DF}', '\u{16E0}', '\u{16E1}', '\u{16E2}', '\u{16E3}', '\u{16E4}', '\u{16E5}', '\u{16E6}', '\u{16E7}', '\u{16E8}', '\u{16E9}', '\u{16EA}', '\u{1700}', '\u{1701}', '\u{1702}', '\u{1703}', '\u{1704}', '\u{1705}', '\u{1706}', '\u{1707}', '\u{1708}', '\u{1709}', '\u{170A}', '\u{170B}', '\u{170C}', '\u{170E}', '\u{170F}', '\u{1710}', '\u{1711}', '\u{1720}', '\u{1721}', '\u{1722}', '\u{1723}', '\u{1724}', '\u{1725}', '\u{1726}', '\u{1727}', '\u{1728}', '\u{1729}', '\u{172A}', '\u{172B}', '\u{172C}', '\u{172D}', '\u{172E}', '\u{172F}', '\u{1730}', '\u{1731}', '\u{1740}', '\u{1741}', '\u{1742}', '\u{1743}', '\u{1744}', '\u{1745}', '\u{1746}', '\u{1747}', '\u{1748}', '\u{1749}', '\u{174A}', '\u{174B}', '\u{174C}', '\u{174D}', '\u{174E}', '\u{174F}', '\u{1750}', '\u{1751}', '\u{1760}', '\u{1761}', '\u{1762}', '\u{1763}', '\u{1764}', '\u{1765}', '\u{1766}', '\u{1767}', '\u{1768}', '\u{1769}', '\u{176A}', '\u{176B}', '\u{176C}', '\u{176E}', '\u{176F}', '\u{1770}', '\u{1780}', '\u{1781}', '\u{1782}', '\u{1783}', '\u{1784}', '\u{1785}', '\u{1786}', '\u{1787}', '\u{1788}', '\u{1789}', '\u{178A}', '\u{178B}', '\u{178C}', '\u{178D}', '\u{178E}', '\u{178F}', '\u{1790}', '\u{1791}', '\u{1792}', '\u{1793}', '\u{1794}', '\u{1795}', '\u{1796}', '\u{1797}', '\u{1798}', '\u{1799}', '\u{179A}', '\u{179B}', '\u{179C}', '\u{179D}', '\u{179E}', '\u{179F}', '\u{17A0}', '\u{17A1}', '\u{17A2}', '\u{17A3}', '\u{17A4}', '\u{17A5}', '\u{17A6}', '\u{17A7}', '\u{17A8}', '\u{17A9}', '\u{17AA}', '\u{17AB}', '\u{17AC}', '\u{17AD}', '\u{17AE}', '\u{17AF}', '\u{17B0}', '\u{17B1}', '\u{17B2}', '\u{17B3}', '\u{17DC}', '\u{1820}', '\u{1821}', '\u{1822}', '\u{1823}', '\u{1824}', '\u{1825}', '\u{1826}', '\u{1827}', '\u{1828}', '\u{1829}', '\u{182A}', '\u{182B}', '\u{182C}', '\u{182D}', '\u{182E}', '\u{182F}', '\u{1830}', '\u{1831}', '\u{1832}', '\u{1833}', '\u{1834}', '\u{1835}', '\u{1836}', '\u{1837}', '\u{1838}', '\u{1839}', '\u{183A}', '\u{183B}', '\u{183C}', '\u{183D}', '\u{183E}', '\u{183F}', '\u{1840}', '\u{1841}', '\u{1842}', '\u{1844}', '\u{1845}', '\u{1846}', '\u{1847}', '\u{1848}', '\u{1849}', '\u{184A}', '\u{184B}', '\u{184C}', '\u{184D}', '\u{184E}', '\u{184F}', '\u{1850}', '\u{1851}', '\u{1852}', '\u{1853}', '\u{1854}', '\u{1855}', '\u{1856}', '\u{1857}', '\u{1858}', '\u{1859}', '\u{185A}', '\u{185B}', '\u{185C}', '\u{185D}', '\u{185E}', '\u{185F}', '\u{1860}', '\u{1861}', '\u{1862}', '\u{1863}', '\u{1864}', '\u{1865}', '\u{1866}', '\u{1867}', '\u{1868}', '\u{1869}', '\u{186A}', '\u{186B}', '\u{186C}', '\u{186D}', '\u{186E}', '\u{186F}', '\u{1870}', '\u{1871}', '\u{1872}', '\u{1873}', '\u{1874}', '\u{1875}', '\u{1876}', '\u{1877}', '\u{1880}', '\u{1881}', '\u{1882}', '\u{1883}', '\u{1884}', '\u{1885}', '\u{1886}', '\u{1887}', '\u{1888}', '\u{1889}', '\u{188A}', '\u{188B}', '\u{188C}', '\u{188D}', '\u{188E}', '\u{188F}', '\u{1890}', '\u{1891}', '\u{1892}', '\u{1893}', '\u{1894}', '\u{1895}', '\u{1896}', '\u{1897}', '\u{1898}', '\u{1899}', '\u{189A}', '\u{189B}', '\u{189C}', '\u{189D}', '\u{189E}', '\u{189F}', '\u{18A0}', '\u{18A1}', '\u{18A2}', '\u{18A3}', '\u{18A4}', '\u{18A5}', '\u{18A6}', '\u{18A7}', '\u{18A8}', '\u{18AA}', '\u{1900}', '\u{1901}', '\u{1902}', '\u{1903}', '\u{1904}', '\u{1905}', '\u{1906}', '\u{1907}', '\u{1908}', '\u{1909}', '\u{190A}', '\u{190B}', '\u{190C}', '\u{190D}', '\u{190E}', '\u{190F}', '\u{1910}', '\u{1911}', '\u{1912}', '\u{1913}', '\u{1914}', '\u{1915}', '\u{1916}', '\u{1917}', '\u{1918}', '\u{1919}', '\u{191A}', '\u{191B}', '\u{191C}', '\u{1950}', '\u{1951}', '\u{1952}', '\u{1953}', '\u{1954}', '\u{1955}', '\u{1956}', '\u{1957}', '\u{1958}', '\u{1959}', '\u{195A}', '\u{195B}', '\u{195C}', '\u{195D}', '\u{195E}', '\u{195F}', '\u{1960}', '\u{1961}', '\u{1962}', '\u{1963}', '\u{1964}', '\u{1965}', '\u{1966}', '\u{1967}', '\u{1968}', '\u{1969}', '\u{196A}', '\u{196B}', '\u{196C}', '\u{196D}', '\u{1970}', '\u{1971}', '\u{1972}', '\u{1973}', '\u{1974}', '\u{1980}', '\u{1981}', '\u{1982}', '\u{1983}', '\u{1984}', '\u{1985}', '\u{1986}', '\u{1987}', '\u{1988}', '\u{1989}', '\u{198A}', '\u{198B}', '\u{198C}', '\u{198D}', '\u{198E}', '\u{198F}', '\u{1990}', '\u{1991}', '\u{1992}', '\u{1993}', '\u{1994}', '\u{1995}', '\u{1996}', '\u{1997}', '\u{1998}', '\u{1999}', '\u{199A}', '\u{199B}', '\u{199C}', '\u{199D}', '\u{199E}', '\u{199F}', '\u{19A0}', '\u{19A1}', '\u{19A2}', '\u{19A3}', '\u{19A4}', '\u{19A5}', '\u{19A6}', '\u{19A7}', '\u{19A8}', '\u{19A9}', '\u{19C1}', '\u{19C2}', '\u{19C3}', '\u{19C4}', '\u{19C5}', '\u{19C6}', '\u{19C7}', '\u{1A00}', '\u{1A01}', '\u{1A02}', '\u{1A03}', '\u{1A04}', '\u{1A05}', '\u{1A06}', '\u{1A07}', '\u{1A08}', '\u{1A09}', '\u{1A0A}', '\u{1A0B}', '\u{1A0C}', '\u{1A0D}', '\u{1A0E}', '\u{1A0F}', '\u{1A10}', '\u{1A11}', '\u{1A12}', '\u{1A13}', '\u{1A14}', '\u{1A15}', '\u{1A16}', '\u{1B05}', '\u{1B06}', '\u{1B07}', '\u{1B08}', '\u{1B09}', '\u{1B0A}', '\u{1B0B}', '\u{1B0C}', '\u{1B0D}', '\u{1B0E}', '\u{1B0F}', '\u{1B10}', '\u{1B11}', '\u{1B12}', '\u{1B13}', '\u{1B14}', '\u{1B15}', '\u{1B16}', '\u{1B17}', '\u{1B18}', '\u{1B19}', '\u{1B1A}', '\u{1B1B}', '\u{1B1C}', '\u{1B1D}', '\u{1B1E}', '\u{1B1F}', '\u{1B20}', '\u{1B21}', '\u{1B22}', '\u{1B23}', '\u{1B24}', '\u{1B25}', '\u{1B26}', '\u{1B27}', '\u{1B28}', '\u{1B29}', '\u{1B2A}', '\u{1B2B}', '\u{1B2C}', '\u{1B2D}', '\u{1B2E}', '\u{1B2F}', '\u{1B30}', '\u{1B31}', '\u{1B32}', '\u{1B33}', '\u{1B45}', '\u{1B46}', '\u{1B47}', '\u{1B48}', '\u{1B49}', '\u{1B4A}', '\u{1B4B}', '\u{1B83}', '\u{1B84}', '\u{1B85}', '\u{1B86}', '\u{1B87}', '\u{1B88}', '\u{1B89}', '\u{1B8A}', '\u{1B8B}', '\u{1B8C}', '\u{1B8D}', '\u{1B8E}', '\u{1B8F}', '\u{1B90}', '\u{1B91}', '\u{1B92}', '\u{1B93}', '\u{1B94}', '\u{1B95}', '\u{1B96}', '\u{1B97}', '\u{1B98}', '\u{1B99}', '\u{1B9A}', '\u{1B9B}', '\u{1B9C}', '\u{1B9D}', '\u{1B9E}', '\u{1B9F}', '\u{1BA0}', '\u{1BAE}', '\u{1BAF}', '\u{1C00}', '\u{1C01}', '\u{1C02}', '\u{1C03}', '\u{1C04}', '\u{1C05}', '\u{1C06}', '\u{1C07}', '\u{1C08}', '\u{1C09}', '\u{1C0A}', '\u{1C0B}', '\u{1C0C}', '\u{1C0D}', '\u{1C0E}', '\u{1C0F}', '\u{1C10}', '\u{1C11}', '\u{1C12}', '\u{1C13}', '\u{1C14}', '\u{1C15}', '\u{1C16}', '\u{1C17}', '\u{1C18}', '\u{1C19}', '\u{1C1A}', '\u{1C1B}', '\u{1C1C}', '\u{1C1D}', '\u{1C1E}', '\u{1C1F}', '\u{1C20}', '\u{1C21}', '\u{1C22}', '\u{1C23}', '\u{1C4D}', '\u{1C4E}', '\u{1C4F}', '\u{1C5A}', '\u{1C5B}', '\u{1C5C}', '\u{1C5D}', '\u{1C5E}', '\u{1C5F}', '\u{1C60}', '\u{1C61}', '\u{1C62}', '\u{1C63}', '\u{1C64}', '\u{1C65}', '\u{1C66}', '\u{1C67}', '\u{1C68}', '\u{1C69}', '\u{1C6A}', '\u{1C6B}', '\u{1C6C}', '\u{1C6D}', '\u{1C6E}', '\u{1C6F}', '\u{1C70}', '\u{1C71}', '\u{1C72}', '\u{1C73}', '\u{1C74}', '\u{1C75}', '\u{1C76}', '\u{1C77}', '\u{2135}', '\u{2136}', '\u{2137}', '\u{2138}', '\u{2D30}', '\u{2D31}', '\u{2D32}', '\u{2D33}', '\u{2D34}', '\u{2D35}', '\u{2D36}', '\u{2D37}', '\u{2D38}', '\u{2D39}', '\u{2D3A}', '\u{2D3B}', '\u{2D3C}', '\u{2D3D}', '\u{2D3E}', '\u{2D3F}', '\u{2D40}', '\u{2D41}', '\u{2D42}', '\u{2D43}', '\u{2D44}', '\u{2D45}', '\u{2D46}', '\u{2D47}', '\u{2D48}', '\u{2D49}', '\u{2D4A}', '\u{2D4B}', '\u{2D4C}', '\u{2D4D}', '\u{2D4E}', '\u{2D4F}', '\u{2D50}', '\u{2D51}', '\u{2D52}', '\u{2D53}', '\u{2D54}', '\u{2D55}', '\u{2D56}', '\u{2D57}', '\u{2D58}', '\u{2D59}', '\u{2D5A}', '\u{2D5B}', '\u{2D5C}', '\u{2D5D}', '\u{2D5E}', '\u{2D5F}', '\u{2D60}', '\u{2D61}', '\u{2D62}', '\u{2D63}', '\u{2D64}', '\u{2D65}', '\u{2D80}', '\u{2D81}', '\u{2D82}', '\u{2D83}', '\u{2D84}', '\u{2D85}', '\u{2D86}', '\u{2D87}', '\u{2D88}', '\u{2D89}', '\u{2D8A}', '\u{2D8B}', '\u{2D8C}', '\u{2D8D}', '\u{2D8E}', '\u{2D8F}', '\u{2D90}', '\u{2D91}', '\u{2D92}', '\u{2D93}', '\u{2D94}', '\u{2D95}', '\u{2D96}', '\u{2DA0}', '\u{2DA1}', '\u{2DA2}', '\u{2DA3}', '\u{2DA4}', '\u{2DA5}', '\u{2DA6}', '\u{2DA8}', '\u{2DA9}', '\u{2DAA}', '\u{2DAB}', '\u{2DAC}', '\u{2DAD}', '\u{2DAE}', '\u{2DB0}', '\u{2DB1}', '\u{2DB2}', '\u{2DB3}', '\u{2DB4}', '\u{2DB5}', '\u{2DB6}', '\u{2DB8}', '\u{2DB9}', '\u{2DBA}', '\u{2DBB}', '\u{2DBC}', '\u{2DBD}', '\u{2DBE}', '\u{2DC0}', '\u{2DC1}', '\u{2DC2}', '\u{2DC3}', '\u{2DC4}', '\u{2DC5}', '\u{2DC6}', '\u{2DC8}', '\u{2DC9}', '\u{2DCA}', '\u{2DCB}', '\u{2DCC}', '\u{2DCD}', '\u{2DCE}', '\u{2DD0}', '\u{2DD1}', '\u{2DD2}', '\u{2DD3}', '\u{2DD4}', '\u{2DD5}', '\u{2DD6}', '\u{2DD8}', '\u{2DD9}', '\u{2DDA}', '\u{2DDB}', '\u{2DDC}', '\u{2DDD}', '\u{2DDE}', '\u{3006}', '\u{303C}', '\u{3041}', '\u{3042}', '\u{3043}', '\u{3044}', '\u{3045}', '\u{3046}', '\u{3047}', '\u{3048}', '\u{3049}', '\u{304A}', '\u{304B}', '\u{304C}', '\u{304D}', '\u{304E}', '\u{304F}', '\u{3050}', '\u{3051}', '\u{3052}', '\u{3053}', '\u{3054}', '\u{3055}', '\u{3056}', '\u{3057}', '\u{3058}', '\u{3059}', '\u{305A}', '\u{305B}', '\u{305C}', '\u{305D}', '\u{305E}', '\u{305F}', '\u{3060}', '\u{3061}', '\u{3062}', '\u{3063}', '\u{3064}', '\u{3065}', '\u{3066}', '\u{3067}', '\u{3068}', '\u{3069}', '\u{306A}', '\u{306B}', '\u{306C}', '\u{306D}', '\u{306E}', '\u{306F}', '\u{3070}', '\u{3071}', '\u{3072}', '\u{3073}', '\u{3074}', '\u{3075}', '\u{3076}', '\u{3077}', '\u{3078}', '\u{3079}', '\u{307A}', '\u{307B}', '\u{307C}', '\u{307D}', '\u{307E}', '\u{307F}', '\u{3080}', '\u{3081}', '\u{3082}', '\u{3083}', '\u{3084}', '\u{3085}', '\u{3086}', '\u{3087}', '\u{3088}', '\u{3089}', '\u{308A}', '\u{308B}', '\u{308C}', '\u{308D}', '\u{308E}', '\u{308F}', '\u{3090}', '\u{3091}', '\u{3092}', '\u{3093}', '\u{3094}', '\u{3095}', '\u{3096}', '\u{309F}', '\u{30A1}', '\u{30A2}', '\u{30A3}', '\u{30A4}', '\u{30A5}', '\u{30A6}', '\u{30A7}', '\u{30A8}', '\u{30A9}', '\u{30AA}', '\u{30AB}', '\u{30AC}', '\u{30AD}', '\u{30AE}', '\u{30AF}', '\u{30B0}', '\u{30B1}', '\u{30B2}', '\u{30B3}', '\u{30B4}', '\u{30B5}', '\u{30B6}', '\u{30B7}', '\u{30B8}', '\u{30B9}', '\u{30BA}', '\u{30BB}', '\u{30BC}', '\u{30BD}', '\u{30BE}', '\u{30BF}', '\u{30C0}', '\u{30C1}', '\u{30C2}', '\u{30C3}', '\u{30C4}', '\u{30C5}', '\u{30C6}', '\u{30C7}', '\u{30C8}', '\u{30C9}', '\u{30CA}', '\u{30CB}', '\u{30CC}', '\u{30CD}', '\u{30CE}', '\u{30CF}', '\u{30D0}', '\u{30D1}', '\u{30D2}', '\u{30D3}', '\u{30D4}', '\u{30D5}', '\u{30D6}', '\u{30D7}', '\u{30D8}', '\u{30D9}', '\u{30DA}', '\u{30DB}', '\u{30DC}', '\u{30DD}', '\u{30DE}', '\u{30DF}', '\u{30E0}', '\u{30E1}', '\u{30E2}', '\u{30E3}', '\u{30E4}', '\u{30E5}', '\u{30E6}', '\u{30E7}', '\u{30E8}', '\u{30E9}', '\u{30EA}', '\u{30EB}', '\u{30EC}', '\u{30ED}', '\u{30EE}', '\u{30EF}', '\u{30F0}', '\u{30F1}', '\u{30F2}', '\u{30F3}', '\u{30F4}', '\u{30F5}', '\u{30F6}', '\u{30F7}', '\u{30F8}', '\u{30F9}', '\u{30FA}', '\u{30FF}', '\u{3105}', '\u{3106}', '\u{3107}', '\u{3108}', '\u{3109}', '\u{310A}', '\u{310B}', '\u{310C}', '\u{310D}', '\u{310E}', '\u{310F}', '\u{3110}', '\u{3111}', '\u{3112}', '\u{3113}', '\u{3114}', '\u{3115}', '\u{3116}', '\u{3117}', '\u{3118}', '\u{3119}', '\u{311A}', '\u{311B}', '\u{311C}', '\u{311D}', '\u{311E}', '\u{311F}', '\u{3120}', '\u{3121}', '\u{3122}', '\u{3123}', '\u{3124}', '\u{3125}', '\u{3126}', '\u{3127}', '\u{3128}', '\u{3129}', '\u{312A}', '\u{312B}', '\u{312C}', '\u{312D}', '\u{3131}', '\u{3132}', '\u{3133}', '\u{3134}', '\u{3135}', '\u{3136}', '\u{3137}', '\u{3138}', '\u{3139}', '\u{313A}', '\u{313B}', '\u{313C}', '\u{313D}', '\u{313E}', '\u{313F}', '\u{3140}', '\u{3141}', '\u{3142}', '\u{3143}', '\u{3144}', '\u{3145}', '\u{3146}', '\u{3147}', '\u{3148}', '\u{3149}', '\u{314A}', '\u{314B}', '\u{314C}', '\u{314D}', '\u{314E}', '\u{314F}', '\u{3150}', '\u{3151}', '\u{3152}', '\u{3153}', '\u{3154}', '\u{3155}', '\u{3156}', '\u{3157}', '\u{3158}', '\u{3159}', '\u{315A}', '\u{315B}', '\u{315C}', '\u{315D}', '\u{315E}', '\u{315F}', '\u{3160}', '\u{3161}', '\u{3162}', '\u{3163}', '\u{3164}', '\u{3165}', '\u{3166}', '\u{3167}', '\u{3168}', '\u{3169}', '\u{316A}', '\u{316B}', '\u{316C}', '\u{316D}', '\u{316E}', '\u{316F}', '\u{3170}', '\u{3171}', '\u{3172}', '\u{3173}', '\u{3174}', '\u{3175}', '\u{3176}', '\u{3177}', '\u{3178}', '\u{3179}', '\u{317A}', '\u{317B}', '\u{317C}', '\u{317D}', '\u{317E}', '\u{317F}', '\u{3180}', '\u{3181}', '\u{3182}', '\u{3183}', '\u{3184}', '\u{3185}', '\u{3186}', '\u{3187}', '\u{3188}', '\u{3189}', '\u{318A}', '\u{318B}', '\u{318C}', '\u{318D}', '\u{318E}', '\u{31A0}', '\u{31A1}', '\u{31A2}', '\u{31A3}', '\u{31A4}', '\u{31A5}', '\u{31A6}', '\u{31A7}', '\u{31A8}', '\u{31A9}', '\u{31AA}', '\u{31AB}', '\u{31AC}', '\u{31AD}', '\u{31AE}', '\u{31AF}', '\u{31B0}', '\u{31B1}', '\u{31B2}', '\u{31B3}', '\u{31B4}', '\u{31B5}', '\u{31B6}', '\u{31B7}', '\u{31F0}', '\u{31F1}', '\u{31F2}', '\u{31F3}', '\u{31F4}', '\u{31F5}', '\u{31F6}', '\u{31F7}', '\u{31F8}', '\u{31F9}', '\u{31FA}', '\u{31FB}', '\u{31FC}', '\u{31FD}', '\u{31FE}', '\u{31FF}', '\u{3400}', '\u{4DB5}', '\u{4E00}', '\u{9FC3}', '\u{A000}', '\u{A001}', '\u{A002}', '\u{A003}', '\u{A004}', '\u{A005}', '\u{A006}', '\u{A007}', '\u{A008}', '\u{A009}', '\u{A00A}', '\u{A00B}', '\u{A00C}', '\u{A00D}', '\u{A00E}', '\u{A00F}', '\u{A010}', '\u{A011}', '\u{A012}', '\u{A013}', '\u{A014}', '\u{A016}', '\u{A017}', '\u{A018}', '\u{A019}', '\u{A01A}', '\u{A01B}', '\u{A01C}', '\u{A01D}', '\u{A01E}', '\u{A01F}', '\u{A020}', '\u{A021}', '\u{A022}', '\u{A023}', '\u{A024}', '\u{A025}', '\u{A026}', '\u{A027}', '\u{A028}', '\u{A029}', '\u{A02A}', '\u{A02B}', '\u{A02C}', '\u{A02D}', '\u{A02E}', '\u{A02F}', '\u{A030}', '\u{A031}', '\u{A032}', '\u{A033}', '\u{A034}', '\u{A035}', '\u{A036}', '\u{A037}', '\u{A038}', '\u{A039}', '\u{A03A}', '\u{A03B}', '\u{A03C}', '\u{A03D}', '\u{A03E}', '\u{A03F}', '\u{A040}', '\u{A041}', '\u{A042}', '\u{A043}', '\u{A044}', '\u{A045}', '\u{A046}', '\u{A047}', '\u{A048}', '\u{A049}', '\u{A04A}', '\u{A04B}', '\u{A04C}', '\u{A04D}', '\u{A04E}', '\u{A04F}', '\u{A050}', '\u{A051}', '\u{A052}', '\u{A053}', '\u{A054}', '\u{A055}', '\u{A056}', '\u{A057}', '\u{A058}', '\u{A059}', '\u{A05A}', '\u{A05B}', '\u{A05C}', '\u{A05D}', '\u{A05E}', '\u{A05F}', '\u{A060}', '\u{A061}', '\u{A062}', '\u{A063}', '\u{A064}', '\u{A065}', '\u{A066}', '\u{A067}', '\u{A068}', '\u{A069}', '\u{A06A}', '\u{A06B}', '\u{A06C}', '\u{A06D}', '\u{A06E}', '\u{A06F}', '\u{A070}', '\u{A071}', '\u{A072}', '\u{A073}', '\u{A074}', '\u{A075}', '\u{A076}', '\u{A077}', '\u{A078}', '\u{A079}', '\u{A07A}', '\u{A07B}', '\u{A07C}', '\u{A07D}', '\u{A07E}', '\u{A07F}', '\u{A080}', '\u{A081}', '\u{A082}', '\u{A083}', '\u{A084}', '\u{A085}', '\u{A086}', '\u{A087}', '\u{A088}', '\u{A089}', '\u{A08A}', '\u{A08B}', '\u{A08C}', '\u{A08D}', '\u{A08E}', '\u{A08F}', '\u{A090}', '\u{A091}', '\u{A092}', '\u{A093}', '\u{A094}', '\u{A095}', '\u{A096}', '\u{A097}', '\u{A098}', '\u{A099}', '\u{A09A}', '\u{A09B}', '\u{A09C}', '\u{A09D}', '\u{A09E}', '\u{A09F}', '\u{A0A0}', '\u{A0A1}', '\u{A0A2}', '\u{A0A3}', '\u{A0A4}', '\u{A0A5}', '\u{A0A6}', '\u{A0A7}', '\u{A0A8}', '\u{A0A9}', '\u{A0AA}', '\u{A0AB}', '\u{A0AC}', '\u{A0AD}', '\u{A0AE}', '\u{A0AF}', '\u{A0B0}', '\u{A0B1}', '\u{A0B2}', '\u{A0B3}', '\u{A0B4}', '\u{A0B5}', '\u{A0B6}', '\u{A0B7}', '\u{A0B8}', '\u{A0B9}', '\u{A0BA}', '\u{A0BB}', '\u{A0BC}', '\u{A0BD}', '\u{A0BE}', '\u{A0BF}', '\u{A0C0}', '\u{A0C1}', '\u{A0C2}', '\u{A0C3}', '\u{A0C4}', '\u{A0C5}', '\u{A0C6}', '\u{A0C7}', '\u{A0C8}', '\u{A0C9}', '\u{A0CA}', '\u{A0CB}', '\u{A0CC}', '\u{A0CD}', '\u{A0CE}', '\u{A0CF}', '\u{A0D0}', '\u{A0D1}', '\u{A0D2}', '\u{A0D3}', '\u{A0D4}', '\u{A0D5}', '\u{A0D6}', '\u{A0D7}', '\u{A0D8}', '\u{A0D9}', '\u{A0DA}', '\u{A0DB}', '\u{A0DC}', '\u{A0DD}', '\u{A0DE}', '\u{A0DF}', '\u{A0E0}', '\u{A0E1}', '\u{A0E2}', '\u{A0E3}', '\u{A0E4}', '\u{A0E5}', '\u{A0E6}', '\u{A0E7}', '\u{A0E8}', '\u{A0E9}', '\u{A0EA}', '\u{A0EB}', '\u{A0EC}', '\u{A0ED}', '\u{A0EE}', '\u{A0EF}', '\u{A0F0}', '\u{A0F1}', '\u{A0F2}', '\u{A0F3}', '\u{A0F4}', '\u{A0F5}', '\u{A0F6}', '\u{A0F7}', '\u{A0F8}', '\u{A0F9}', '\u{A0FA}', '\u{A0FB}', '\u{A0FC}', '\u{A0FD}', '\u{A0FE}', '\u{A0FF}', '\u{A100}', '\u{A101}', '\u{A102}', '\u{A103}', '\u{A104}', '\u{A105}', '\u{A106}', '\u{A107}', '\u{A108}', '\u{A109}', '\u{A10A}', '\u{A10B}', '\u{A10C}', '\u{A10D}', '\u{A10E}', '\u{A10F}', '\u{A110}', '\u{A111}', '\u{A112}', '\u{A113}', '\u{A114}', '\u{A115}', '\u{A116}', '\u{A117}', '\u{A118}', '\u{A119}', '\u{A11A}', '\u{A11B}', '\u{A11C}', '\u{A11D}', '\u{A11E}', '\u{A11F}', '\u{A120}', '\u{A121}', '\u{A122}', '\u{A123}', '\u{A124}', '\u{A125}', '\u{A126}', '\u{A127}', '\u{A128}', '\u{A129}', '\u{A12A}', '\u{A12B}', '\u{A12C}', '\u{A12D}', '\u{A12E}', '\u{A12F}', '\u{A130}', '\u{A131}', '\u{A132}', '\u{A133}', '\u{A134}', '\u{A135}', '\u{A136}', '\u{A137}', '\u{A138}', '\u{A139}', '\u{A13A}', '\u{A13B}', '\u{A13C}', '\u{A13D}', '\u{A13E}', '\u{A13F}', '\u{A140}', '\u{A141}', '\u{A142}', '\u{A143}', '\u{A144}', '\u{A145}', '\u{A146}', '\u{A147}', '\u{A148}', '\u{A149}', '\u{A14A}', '\u{A14B}', '\u{A14C}', '\u{A14D}', '\u{A14E}', '\u{A14F}', '\u{A150}', '\u{A151}', '\u{A152}', '\u{A153}', '\u{A154}', '\u{A155}', '\u{A156}', '\u{A157}', '\u{A158}', '\u{A159}', '\u{A15A}', '\u{A15B}', '\u{A15C}', '\u{A15D}', '\u{A15E}', '\u{A15F}', '\u{A160}', '\u{A161}', '\u{A162}', '\u{A163}', '\u{A164}', '\u{A165}', '\u{A166}', '\u{A167}', '\u{A168}', '\u{A169}', '\u{A16A}', '\u{A16B}', '\u{A16C}', '\u{A16D}', '\u{A16E}', '\u{A16F}', '\u{A170}', '\u{A171}', '\u{A172}', '\u{A173}', '\u{A174}', '\u{A175}', '\u{A176}', '\u{A177}', '\u{A178}', '\u{A179}', '\u{A17A}', '\u{A17B}', '\u{A17C}', '\u{A17D}', '\u{A17E}', '\u{A17F}', '\u{A180}', '\u{A181}', '\u{A182}', '\u{A183}', '\u{A184}', '\u{A185}', '\u{A186}', '\u{A187}', '\u{A188}', '\u{A189}', '\u{A18A}', '\u{A18B}', '\u{A18C}', '\u{A18D}', '\u{A18E}', '\u{A18F}', '\u{A190}', '\u{A191}', '\u{A192}', '\u{A193}', '\u{A194}', '\u{A195}', '\u{A196}', '\u{A197}', '\u{A198}', '\u{A199}', '\u{A19A}', '\u{A19B}', '\u{A19C}', '\u{A19D}', '\u{A19E}', '\u{A19F}', '\u{A1A0}', '\u{A1A1}', '\u{A1A2}', '\u{A1A3}', '\u{A1A4}', '\u{A1A5}', '\u{A1A6}', '\u{A1A7}', '\u{A1A8}', '\u{A1A9}', '\u{A1AA}', '\u{A1AB}', '\u{A1AC}', '\u{A1AD}', '\u{A1AE}', '\u{A1AF}')
+    }
+
+    fn is_unicode_combining_spacing_mark(self) -> bool {
+        match_char_class!(self,
+            '\u{0903}', '\u{093E}', '\u{093F}', '\u{0940}', '\u{0949}', '\u{094A}', '\u{094B}', '\u{094C}', '\u{0982}', '\u{0983}', '\u{09BE}', '\u{09BF}', '\u{09C0}', '\u{09C7}', '\u{09C8}', '\u{09CB}', '\u{09CC}', '\u{09D7}', '\u{0A03}', '\u{0A3E}', '\u{0A3F}', '\u{0A40}', '\u{0A83}', '\u{0ABE}', '\u{0ABF}', '\u{0AC0}', '\u{0AC9}', '\u{0ACB}', '\u{0ACC}', '\u{0B02}', '\u{0B03}', '\u{0B3E}', '\u{0B40}', '\u{0B47}', '\u{0B48}', '\u{0B4B}', '\u{0B4C}', '\u{0B57}', '\u{0BBE}', '\u{0BBF}', '\u{0BC1}', '\u{0BC2}', '\u{0BC6}', '\u{0BC7}', '\u{0BC8}', '\u{0BCA}', '\u{0BCB}', '\u{0BCC}', '\u{0BD7}', '\u{0C01}', '\u{0C02}', '\u{0C03}', '\u{0C41}', '\u{0C42}', '\u{0C43}', '\u{0C44}', '\u{0C82}', '\u{0C83}', '\u{0CBE}', '\u{0CC0}', '\u{0CC1}', '\u{0CC2}', '\u{0CC3}', '\u{0CC4}', '\u{0CC7}', '\u{0CC8}', '\u{0CCA}', '\u{0CCB}', '\u{0CD5}', '\u{0CD6}', '\u{0D02}', '\u{0D03}', '\u{0D3E}', '\u{0D3F}', '\u{0D40}', '\u{0D46}', '\u{0D47}', '\u{0D48}', '\u{0D4A}', '\u{0D4B}', '\u{0D4C}', '\u{0D57}', '\u{0D82}', '\u{0D83}', '\u{0DCF}', '\u{0DD0}', '\u{0DD1}', '\u{0DD8}', '\u{0DD9}', '\u{0DDA}', '\u{0DDB}', '\u{0DDC}', '\u{0DDD}', '\u{0DDE}', '\u{0DDF}', '\u{0DF2}', '\u{0DF3}', '\u{0F3E}', '\u{0F3F}', '\u{0F7F}', '\u{102B}', '\u{102C}', '\u{1031}', '\u{1038}', '\u{103B}', '\u{103C}', '\u{1056}', '\u{1057}', '\u{1062}', '\u{1063}', '\u{1064}', '\u{1067}', '\u{1068}', '\u{1069}', '\u{106A}', '\u{106B}', '\u{106C}', '\u{106D}', '\u{1083}', '\u{1084}', '\u{1087}', '\u{1088}', '\u{1089}', '\u{108A}', '\u{108B}', '\u{108C}', '\u{108F}', '\u{17B6}', '\u{17BE}', '\u{17BF}', '\u{17C0}', '\u{17C1}', '\u{17C2}', '\u{17C3}', '\u{17C4}', '\u{17C5}', '\u{17C7}', '\u{17C8}', '\u{1923}', '\u{1924}', '\u{1925}', '\u{1926}', '\u{1929}', '\u{192A}', '\u{192B}', '\u{1930}', '\u{1931}', '\u{1933}', '\u{1934}', '\u{1935}', '\u{1936}', '\u{1937}', '\u{1938}', '\u{19B0}', '\u{19B1}', '\u{19B2}', '\u{19B3}', '\u{19B4}', '\u{19B5}', '\u{19B6}', '\u{19B7}', '\u{19B8}', '\u{19B9}', '\u{19BA}', '\u{19BB}', '\u{19BC}', '\u{19BD}', '\u{19BE}', '\u{19BF}', '\u{19C0}', '\u{19C8}', '\u{19C9}', '\u{1A19}', '\u{1A1A}', '\u{1A1B}', '\u{1B04}', '\u{1B35}', '\u{1B3B}', '\u{1B3D}', '\u{1B3E}', '\u{1B3F}', '\u{1B40}', '\u{1B41}', '\u{1B43}', '\u{1B44}', '\u{1B82}', '\u{1BA1}', '\u{1BA6}', '\u{1BA7}', '\u{1BAA}', '\u{1C24}', '\u{1C25}', '\u{1C26}', '\u{1C27}', '\u{1C28}', '\u{1C29}', '\u{1C2A}', '\u{1C2B}', '\u{1C34}', '\u{1C35}', '\u{A823}', '\u{A824}', '\u{A827}', '\u{A880}', '\u{A881}', '\u{A8B4}', '\u{A8B5}', '\u{A8B6}', '\u{A8B7}', '\u{A8B8}', '\u{A8B9}', '\u{A8BA}', '\u{A8BB}', '\u{A8BC}', '\u{A8BD}', '\u{A8BE}', '\u{A8BF}', '\u{A8C0}', '\u{A8C1}', '\u{A8C2}', '\u{A8C3}', '\u{A952}', '\u{A953}', '\u{AA2F}', '\u{AA30}', '\u{AA33}', '\u{AA34}', '\u{AA4D}')
+    }
+
+    fn is_unicode_decimal_number(self) -> bool {
+        match_char_class!(self,
+            '\u{0030}', '\u{0031}', '\u{0032}', '\u{0033}', '\u{0034}', '\u{0035}', '\u{0036}', '\u{0037}', '\u{0038}', '\u{0039}', '\u{0660}', '\u{0661}', '\u{0662}', '\u{0663}', '\u{0664}', '\u{0665}', '\u{0666}', '\u{0667}', '\u{0668}', '\u{0669}', '\u{06F0}', '\u{06F1}', '\u{06F2}', '\u{06F3}', '\u{06F4}', '\u{06F5}', '\u{06F6}', '\u{06F7}', '\u{06F8}', '\u{06F9}', '\u{07C0}', '\u{07C1}', '\u{07C2}', '\u{07C3}', '\u{07C4}', '\u{07C5}', '\u{07C6}', '\u{07C7}', '\u{07C8}', '\u{07C9}', '\u{0966}', '\u{0967}', '\u{0968}', '\u{0969}', '\u{096A}', '\u{096B}', '\u{096C}', '\u{096D}', '\u{096E}', '\u{096F}', '\u{09E6}', '\u{09E7}', '\u{09E8}', '\u{09E9}', '\u{09EA}', '\u{09EB}', '\u{09EC}', '\u{09ED}', '\u{09EE}', '\u{09EF}', '\u{0A66}', '\u{0A67}', '\u{0A68}', '\u{0A69}', '\u{0A6A}', '\u{0A6B}', '\u{0A6C}', '\u{0A6D}', '\u{0A6E}', '\u{0A6F}', '\u{0AE6}', '\u{0AE7}', '\u{0AE8}', '\u{0AE9}', '\u{0AEA}', '\u{0AEB}', '\u{0AEC}', '\u{0AED}', '\u{0AEE}', '\u{0AEF}', '\u{0B66}', '\u{0B67}', '\u{0B68}', '\u{0B69}', '\u{0B6A}', '\u{0B6B}', '\u{0B6C}', '\u{0B6D}', '\u{0B6E}', '\u{0B6F}', '\u{0BE6}', '\u{0BE7}', '\u{0BE8}', '\u{0BE9}', '\u{0BEA}', '\u{0BEB}', '\u{0BEC}', '\u{0BED}', '\u{0BEE}', '\u{0BEF}', '\u{0C66}', '\u{0C67}', '\u{0C68}', '\u{0C69}', '\u{0C6A}', '\u{0C6B}', '\u{0C6C}', '\u{0C6D}', '\u{0C6E}', '\u{0C6F}', '\u{0CE6}', '\u{0CE7}', '\u{0CE8}', '\u{0CE9}', '\u{0CEA}', '\u{0CEB}', '\u{0CEC}', '\u{0CED}', '\u{0CEE}', '\u{0CEF}', '\u{0D66}', '\u{0D67}', '\u{0D68}', '\u{0D69}', '\u{0D6A}', '\u{0D6B}', '\u{0D6C}', '\u{0D6D}', '\u{0D6E}', '\u{0D6F}', '\u{0E50}', '\u{0E51}', '\u{0E52}', '\u{0E53}', '\u{0E54}', '\u{0E55}', '\u{0E56}', '\u{0E57}', '\u{0E58}', '\u{0E59}', '\u{0ED0}', '\u{0ED1}', '\u{0ED2}', '\u{0ED3}', '\u{0ED4}', '\u{0ED5}', '\u{0ED6}', '\u{0ED7}', '\u{0ED8}', '\u{0ED9}', '\u{0F20}', '\u{0F21}', '\u{0F22}', '\u{0F23}', '\u{0F24}', '\u{0F25}', '\u{0F26}', '\u{0F27}', '\u{0F28}', '\u{0F29}', '\u{1040}', '\u{1041}', '\u{1042}', '\u{1043}', '\u{1044}', '\u{1045}', '\u{1046}', '\u{1047}', '\u{1048}', '\u{1049}', '\u{1090}', '\u{1091}', '\u{1092}', '\u{1093}', '\u{1094}', '\u{1095}', '\u{1096}', '\u{1097}', '\u{1098}', '\u{1099}', '\u{17E0}', '\u{17E1}', '\u{17E2}', '\u{17E3}', '\u{17E4}', '\u{17E5}', '\u{17E6}', '\u{17E7}', '\u{17E8}', '\u{17E9}', '\u{1810}', '\u{1811}', '\u{1812}', '\u{1813}', '\u{1814}', '\u{1815}', '\u{1816}', '\u{1817}', '\u{1818}', '\u{1819}', '\u{1946}', '\u{1947}', '\u{1948}', '\u{1949}', '\u{194A}', '\u{194B}', '\u{194C}', '\u{194D}', '\u{194E}', '\u{194F}', '\u{19D0}', '\u{19D1}', '\u{19D2}', '\u{19D3}', '\u{19D4}', '\u{19D5}', '\u{19D6}', '\u{19D7}', '\u{19D8}', '\u{19D9}', '\u{1B50}', '\u{1B51}', '\u{1B52}', '\u{1B53}', '\u{1B54}', '\u{1B55}', '\u{1B56}', '\u{1B57}', '\u{1B58}', '\u{1B59}', '\u{1BB0}', '\u{1BB1}', '\u{1BB2}', '\u{1BB3}', '\u{1BB4}', '\u{1BB5}', '\u{1BB6}', '\u{1BB7}', '\u{1BB8}', '\u{1BB9}', '\u{1C40}', '\u{1C41}', '\u{1C42}', '\u{1C43}', '\u{1C44}', '\u{1C45}', '\u{1C46}', '\u{1C47}', '\u{1C48}', '\u{1C49}', '\u{1C50}', '\u{1C51}', '\u{1C52}', '\u{1C53}', '\u{1C54}', '\u{1C55}', '\u{1C56}', '\u{1C57}', '\u{1C58}', '\u{1C59}', '\u{A620}', '\u{A621}', '\u{A622}', '\u{A623}', '\u{A624}', '\u{A625}', '\u{A626}', '\u{A627}', '\u{A628}', '\u{A629}', '\u{A8D0}', '\u{A8D1}', '\u{A8D2}', '\u{A8D3}', '\u{A8D4}', '\u{A8D5}', '\u{A8D6}', '\u{A8D7}', '\u{A8D8}', '\u{A8D9}', '\u{A900}', '\u{A901}', '\u{A902}', '\u{A903}', '\u{A904}', '\u{A905}', '\u{A906}', '\u{A907}', '\u{A908}', '\u{A909}', '\u{AA50}', '\u{AA51}', '\u{AA52}', '\u{AA53}', '\u{AA54}', '\u{AA55}', '\u{AA56}', '\u{AA57}', '\u{AA58}', '\u{AA59}', '\u{FF10}', '\u{FF11}', '\u{FF12}', '\u{FF13}', '\u{FF14}', '\u{FF15}', '\u{FF16}', '\u{FF17}', '\u{FF18}', '\u{FF19}')
+    }
+
+    fn is_unicode_connector_punctiation(self) -> bool {
+        match_char_class!(self,
+            '\u{005F}', '\u{203F}', '\u{2040}', '\u{2054}', '\u{FE33}', '\u{FE34}', '\u{FE4D}', '\u{FE4E}', '\u{FE4F}', '\u{FF3F}')
+    }
+
+    fn is_unicode_space_separator(self) -> bool {
+        match_char_class!(self,
+            '\u{0020}', '\u{00A0}', '\u{1680}', '\u{2000}', '\u{2001}', '\u{2002}', '\u{2003}', '\u{2004}', '\u{2005}', '\u{2006}', '\u{2007}', '\u{2008}', '\u{2009}', '\u{200A}', '\u{202F}', '\u{205F}', '\u{3000}')
+    }
+
+    fn is_es_identifier_start(self) -> bool {
+        match self {
+            '$' | '_' | '\\' => true,
+            c if c.is_unicode_letter() => true,
+            _ => false
+        }
+    }
+
+    // see section 7.6
+    fn is_es_identifier_part(self) -> bool {
+        match self {
+            '\u{200C}' | '\u{200D}' => true,
+            c if c.is_es_identifier_start() => true,
+            c if c.is_unicode_combining_spacing_mark() => true,
+            c if c.is_unicode_nonspacing_mark() => true,
+            c if c.is_unicode_decimal_number() => true,
+            c if c.is_unicode_connector_punctiation() => true,
+            _ => false
+        }
+    }
+
+    fn is_es_whitespace(self) -> bool {
+        match self {
+            '\t' | '\u{000B}' | '\u{000C}' | '\u{0020}' | '\u{00A0}' | '\u{FEFF}' => true,
+            c => c.is_unicode_space_separator()
+        }
+    }
+
+    fn is_es_line_terminator(self) -> bool {
+        match self {
+            '\n' | '\r' | '\u{2028}' | '\u{2029}' => true,
+            _ => false
+        }
+    }
+}
+
+fn main() {
+
+}
diff --git a/src/test/ui/issues/issue-2935.rs b/src/test/ui/issues/issue-2935.rs
new file mode 100644
index 00000000000..11641ca7380
--- /dev/null
+++ b/src/test/ui/issues/issue-2935.rs
@@ -0,0 +1,29 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+#![feature(box_syntax)]
+
+//type t = { a: isize };
+// type t = { a: bool };
+type t = bool;
+
+trait it {
+    fn f(&self);
+}
+
+impl it for t {
+    fn f(&self) { }
+}
+
+pub fn main() {
+  //    let x = ({a: 4} as it);
+  //   let y = box ({a: 4});
+  //    let z = box ({a: 4} as it);
+  //    let z = box ({a: true} as it);
+    let z: Box<_> = box (box true as Box<dyn it>);
+    //  x.f();
+    // y.f();
+    // (*z).f();
+    println!("ok so far...");
+    z.f(); //segfault
+}
diff --git a/src/test/ui/issues/issue-2936.rs b/src/test/ui/issues/issue-2936.rs
new file mode 100644
index 00000000000..6b932d01d55
--- /dev/null
+++ b/src/test/ui/issues/issue-2936.rs
@@ -0,0 +1,31 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+trait bar<T> {
+    fn get_bar(&self) -> T;
+}
+
+fn foo<T, U: bar<T>>(b: U) -> T {
+    b.get_bar()
+}
+
+struct cbar {
+    x: isize,
+}
+
+impl bar<isize> for cbar {
+    fn get_bar(&self) -> isize {
+        self.x
+    }
+}
+
+fn cbar(x: isize) -> cbar {
+    cbar {
+        x: x
+    }
+}
+
+pub fn main() {
+    let x: isize = foo::<isize, cbar>(cbar(5));
+    assert_eq!(x, 5);
+}
diff --git a/src/test/ui/issues/issue-29466.rs b/src/test/ui/issues/issue-29466.rs
new file mode 100644
index 00000000000..f8785a63217
--- /dev/null
+++ b/src/test/ui/issues/issue-29466.rs
@@ -0,0 +1,3603 @@
+// ignore-tidy-filelength
+//
+// run-pass
+
+#![allow(unused_variables)]
+
+macro_rules! m(
+    ($e1:expr => $e2:expr) => ({ $e1 })
+);
+
+fn main() {
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+    let x = m!(1 => 2);
+
+    println!("{}", x);
+}
diff --git a/src/test/ui/issues/issue-29485.rs b/src/test/ui/issues/issue-29485.rs
new file mode 100644
index 00000000000..6b2fb7126e3
--- /dev/null
+++ b/src/test/ui/issues/issue-29485.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(unused_attributes)]
+// aux-build:issue-29485.rs
+// ignore-emscripten no threads
+
+#[feature(recover)]
+
+extern crate a;
+
+fn main() {
+    let _ = std::thread::spawn(move || {
+        a::f(&mut a::X(0), g);
+    }).join();
+}
+
+fn g() {
+    panic!();
+}
diff --git a/src/test/ui/issues/issue-29488.rs b/src/test/ui/issues/issue-29488.rs
new file mode 100644
index 00000000000..3c9a6a80dbf
--- /dev/null
+++ b/src/test/ui/issues/issue-29488.rs
@@ -0,0 +1,23 @@
+// run-pass
+// ignore-emscripten no threads support
+
+use std::thread;
+
+struct Foo;
+
+impl Drop for Foo {
+    fn drop(&mut self) {
+        println!("test2");
+    }
+}
+
+thread_local!(static FOO: Foo = Foo);
+
+fn main() {
+    // Off the main thread due to #28129, be sure to initialize FOO first before
+    // calling `println!`
+    thread::spawn(|| {
+        FOO.with(|_| {});
+        println!("test1");
+    }).join().unwrap();
+}
diff --git a/src/test/ui/issues/issue-29522.rs b/src/test/ui/issues/issue-29522.rs
new file mode 100644
index 00000000000..3d2de5ef63a
--- /dev/null
+++ b/src/test/ui/issues/issue-29522.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(unused_variables)]
+// check that we don't accidentally capture upvars just because their name
+// occurs in a path
+
+fn assert_static<T: 'static>(_t: T) {}
+
+mod foo {
+    pub fn scope() {}
+}
+
+fn main() {
+    let scope = &mut 0;
+    assert_static(|| {
+       foo::scope();
+    });
+}
diff --git a/src/test/ui/issues/issue-29663.rs b/src/test/ui/issues/issue-29663.rs
new file mode 100644
index 00000000000..e2e89a8bfa3
--- /dev/null
+++ b/src/test/ui/issues/issue-29663.rs
@@ -0,0 +1,56 @@
+// run-pass
+#![allow(stable_features)]
+// write_volatile causes an LLVM assert with composite types
+
+#![feature(volatile)]
+use std::ptr::{read_volatile, write_volatile};
+
+#[derive(Debug, Eq, PartialEq)]
+struct A(u32);
+#[derive(Debug, Eq, PartialEq)]
+struct B(u64);
+#[derive(Debug, Eq, PartialEq)]
+struct C(u32, u32);
+#[derive(Debug, Eq, PartialEq)]
+struct D(u64, u64);
+#[derive(Debug, Eq, PartialEq)]
+struct E([u64; 32]);
+
+fn main() {
+    unsafe {
+        let mut x: u32 = 0;
+        write_volatile(&mut x, 1);
+        assert_eq!(read_volatile(&x), 1);
+        assert_eq!(x, 1);
+
+        let mut x: u64 = 0;
+        write_volatile(&mut x, 1);
+        assert_eq!(read_volatile(&x), 1);
+        assert_eq!(x, 1);
+
+        let mut x = A(0);
+        write_volatile(&mut x, A(1));
+        assert_eq!(read_volatile(&x), A(1));
+        assert_eq!(x, A(1));
+
+        let mut x = B(0);
+        write_volatile(&mut x, B(1));
+        assert_eq!(read_volatile(&x), B(1));
+        assert_eq!(x, B(1));
+
+        let mut x = C(0, 0);
+        write_volatile(&mut x, C(1, 1));
+        assert_eq!(read_volatile(&x), C(1, 1));
+        assert_eq!(x, C(1, 1));
+
+        let mut x = D(0, 0);
+        write_volatile(&mut x, D(1, 1));
+        assert_eq!(read_volatile(&x), D(1, 1));
+        assert_eq!(x, D(1, 1));
+
+        let mut x = E([0; 32]);
+        write_volatile(&mut x, E([1; 32]));
+        assert_eq!(read_volatile(&x), E([1; 32]));
+        assert_eq!(x, E([1; 32]));
+    }
+}
diff --git a/src/test/ui/issues/issue-29668.rs b/src/test/ui/issues/issue-29668.rs
new file mode 100644
index 00000000000..3d6c27bcda1
--- /dev/null
+++ b/src/test/ui/issues/issue-29668.rs
@@ -0,0 +1,16 @@
+// run-pass
+// Functions can return unnameable types
+
+mod m1 {
+    mod m2 {
+        #[derive(Debug)]
+        pub struct A;
+    }
+    use self::m2::A;
+    pub fn x() -> A { A }
+}
+
+fn main() {
+    let x = m1::x();
+    println!("{:?}", x);
+}
diff --git a/src/test/ui/issues/issue-29746.rs b/src/test/ui/issues/issue-29746.rs
new file mode 100644
index 00000000000..428cc637f55
--- /dev/null
+++ b/src/test/ui/issues/issue-29746.rs
@@ -0,0 +1,36 @@
+// run-pass
+// zip!(a1,a2,a3,a4) is equivalent to:
+//  a1.zip(a2).zip(a3).zip(a4).map(|(((x1,x2),x3),x4)| (x1,x2,x3,x4))
+macro_rules! zip {
+    // Entry point
+    ([$a:expr, $b:expr, $($rest:expr),*]) => {
+        zip!([$($rest),*], $a.zip($b), (x,y), [x,y])
+    };
+
+    // Intermediate steps to build the zipped expression, the match pattern, and
+    //  and the output tuple of the closure, using macro hygiene to repeatedly
+    //  introduce new variables named 'x'.
+    ([$a:expr, $($rest:expr),*], $zip:expr, $pat:pat, [$($flat:expr),*]) => {
+        zip!([$($rest),*], $zip.zip($a), ($pat,x), [$($flat),*, x])
+    };
+
+    // Final step
+    ([], $zip:expr, $pat:pat, [$($flat:expr),+]) => {
+        $zip.map(|$pat| ($($flat),+))
+    };
+
+    // Comma
+    ([$a:expr], $zip:expr, $pat:pat, [$($flat:expr),*]) => {
+        zip!([$a,], $zip, $pat, [$($flat),*])
+    };
+}
+
+fn main() {
+    let p1 = vec![1i32,    2].into_iter();
+    let p2 = vec!["10",    "20"].into_iter();
+    let p3 = vec![100u16,  200].into_iter();
+    let p4 = vec![1000i64, 2000].into_iter();
+
+    let e = zip!([p1,p2,p3,p4]).collect::<Vec<_>>();
+    assert_eq!(e[0], (1i32,"10",100u16,1000i64));
+}
diff --git a/src/test/ui/issues/issue-29844.rs b/src/test/ui/issues/issue-29844.rs
new file mode 100644
index 00000000000..e08942da5e4
--- /dev/null
+++ b/src/test/ui/issues/issue-29844.rs
@@ -0,0 +1,24 @@
+// run-pass
+use std::sync::Arc;
+
+pub struct DescriptorSet<'a> {
+    pub slots: Vec<AttachInfo<'a, Resources>>
+}
+
+pub trait ResourcesTrait<'r>: Sized {
+    type DescriptorSet: 'r;
+}
+
+pub struct Resources;
+
+impl<'a> ResourcesTrait<'a> for Resources {
+    type DescriptorSet = DescriptorSet<'a>;
+}
+
+pub enum AttachInfo<'a, R: ResourcesTrait<'a>> {
+    NextDescriptorSet(Arc<R::DescriptorSet>)
+}
+
+fn main() {
+    let _x = DescriptorSet {slots: Vec::new()};
+}
diff --git a/src/test/ui/issues/issue-2989.rs b/src/test/ui/issues/issue-2989.rs
new file mode 100644
index 00000000000..c0b67374370
--- /dev/null
+++ b/src/test/ui/issues/issue-2989.rs
@@ -0,0 +1,36 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+trait methods {
+    fn to_bytes(&self) -> Vec<u8> ;
+}
+
+impl methods for () {
+    fn to_bytes(&self) -> Vec<u8> {
+        Vec::new()
+    }
+}
+
+// the position of this function is significant! - if it comes before methods
+// then it works, if it comes after it then it doesn't!
+fn to_bools(bitv: Storage) -> Vec<bool> {
+    (0..8).map(|i| {
+        let w = i / 64;
+        let b = i % 64;
+        let x = 1 & (bitv.storage[w] >> b);
+        x == 1
+    }).collect()
+}
+
+struct Storage { storage: Vec<u64> }
+
+pub fn main() {
+    let bools = vec![false, false, true, false, false, true, true, false];
+    let bools2 = to_bools(Storage{storage: vec![0b01100100]});
+
+    for i in 0..8 {
+        println!("{} => {} vs {}", i, bools[i], bools2[i]);
+    }
+
+    assert_eq!(bools, bools2);
+}
diff --git a/src/test/ui/issues/issue-29914-2.rs b/src/test/ui/issues/issue-29914-2.rs
new file mode 100644
index 00000000000..626de269d95
--- /dev/null
+++ b/src/test/ui/issues/issue-29914-2.rs
@@ -0,0 +1,6 @@
+// run-pass
+const ARR: [usize; 5] = [5, 4, 3, 2, 1];
+
+fn main() {
+    assert_eq!(3, ARR[ARR[3]]);
+}
diff --git a/src/test/ui/issues/issue-29914-3.rs b/src/test/ui/issues/issue-29914-3.rs
new file mode 100644
index 00000000000..1c6c64eb316
--- /dev/null
+++ b/src/test/ui/issues/issue-29914-3.rs
@@ -0,0 +1,7 @@
+// run-pass
+const ARR: [usize; 5] = [5, 4, 3, 2, 1];
+const BLA: usize = ARR[ARR[3]];
+
+fn main() {
+    assert_eq!(3, BLA);
+}
diff --git a/src/test/ui/issues/issue-29914.rs b/src/test/ui/issues/issue-29914.rs
new file mode 100644
index 00000000000..6da63664dfa
--- /dev/null
+++ b/src/test/ui/issues/issue-29914.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(stable_features)]
+
+#![feature(const_indexing)]
+
+const ARR: [usize; 5] = [5, 4, 3, 2, 1];
+
+fn main() {
+    assert_eq!(3, ARR[ARR[3]]);
+}
diff --git a/src/test/ui/issues/issue-29927-1.rs b/src/test/ui/issues/issue-29927-1.rs
new file mode 100644
index 00000000000..a236e491375
--- /dev/null
+++ b/src/test/ui/issues/issue-29927-1.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+const fn f() -> usize {
+    5
+}
+struct A {
+    field: usize,
+}
+fn main() {
+    let _ = [0; f()];
+}
diff --git a/src/test/ui/issues/issue-29927.rs b/src/test/ui/issues/issue-29927.rs
new file mode 100644
index 00000000000..3385e4e6e94
--- /dev/null
+++ b/src/test/ui/issues/issue-29927.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+struct A {
+    field: usize,
+}
+const fn f() -> usize {
+    5
+}
+fn main() {
+    let _ = [0; f()];
+}
diff --git a/src/test/ui/issues/issue-29948.rs b/src/test/ui/issues/issue-29948.rs
new file mode 100644
index 00000000000..8ede8143ea6
--- /dev/null
+++ b/src/test/ui/issues/issue-29948.rs
@@ -0,0 +1,40 @@
+// run-pass
+// ignore-wasm32-bare compiled with panic=abort by default
+
+use std::panic;
+
+impl<'a> panic::UnwindSafe for Foo<'a> {}
+impl<'a> panic::RefUnwindSafe for Foo<'a> {}
+
+struct Foo<'a>(&'a mut bool);
+
+impl<'a> Drop for Foo<'a> {
+    fn drop(&mut self) {
+        *self.0 = true;
+    }
+}
+
+fn f<T: FnOnce()>(t: T) {
+    t()
+}
+
+fn main() {
+    let mut ran_drop = false;
+    {
+        let x = Foo(&mut ran_drop);
+        let x = move || { let _ = x; };
+        f(x);
+    }
+    assert!(ran_drop);
+
+    let mut ran_drop = false;
+    {
+        let x = Foo(&mut ran_drop);
+        let result = panic::catch_unwind(move || {
+            let x = move || { let _ = x; panic!() };
+            f(x);
+        });
+        assert!(result.is_err());
+    }
+    assert!(ran_drop);
+}
diff --git a/src/test/ui/issues/issue-30018-nopanic.rs b/src/test/ui/issues/issue-30018-nopanic.rs
new file mode 100644
index 00000000000..291bab2736d
--- /dev/null
+++ b/src/test/ui/issues/issue-30018-nopanic.rs
@@ -0,0 +1,103 @@
+// run-pass
+#![allow(unreachable_code)]
+// More thorough regression test for Issues #30018 and #30822. This
+// attempts to explore different ways that array element construction
+// (for both scratch arrays and non-scratch ones) interacts with
+// breaks in the control-flow, in terms of the order of evaluation of
+// the destructors (which may change; see RFC Issue 744) and the
+// number of times that the destructor evaluates for each value (which
+// should never exceed 1; this latter case is what #30822 is about).
+
+use std::cell::RefCell;
+
+struct D<'a>(&'a RefCell<Vec<i32>>, i32);
+
+impl<'a> Drop for D<'a> {
+    fn drop(&mut self) {
+        println!("Dropping D({})", self.1);
+        (self.0).borrow_mut().push(self.1);
+    }
+}
+
+fn main() {
+    println!("Start");
+    break_during_elem();
+    break_after_whole();
+    println!("Finis");
+}
+
+fn break_during_elem() {
+    let log = &RefCell::new(Vec::new());
+
+    // CASE 1: Fixed-size array itself is stored in _r slot.
+    loop {
+        let _r = [D(log, 10),
+                  D(log, 11),
+                  { D(log, 12); break; },
+                  D(log, 13)];
+    }
+    assert_eq!(&log.borrow()[..], &[12, 11, 10]);
+    log.borrow_mut().clear();
+
+    // CASE 2: Slice (borrow of array) is stored in _r slot.
+    // This is the case that is actually being reported in #30018.
+    loop {
+        let _r = &[D(log, 20),
+                   D(log, 21),
+                   { D(log, 22); break; },
+                   D(log, 23)];
+    }
+    assert_eq!(&log.borrow()[..], &[22, 21, 20]);
+    log.borrow_mut().clear();
+
+    // CASE 3: (Borrow of) slice-index of array is stored in _r slot.
+    loop {
+        let _r = &[D(log, 30),
+                  D(log, 31),
+                  { D(log, 32); break; },
+                  D(log, 33)][..];
+    }
+    assert_eq!(&log.borrow()[..], &[32, 31, 30]);
+    log.borrow_mut().clear();
+}
+
+// The purpose of these functions is to test what happens when we
+// panic after an array has been constructed in its entirety.
+//
+// It is meant to act as proof that we still need to continue
+// scheduling the destruction of an array even after we've scheduling
+// drop for its elements during construction; the latter is tested by
+// `fn break_during_elem()`.
+fn break_after_whole() {
+    let log = &RefCell::new(Vec::new());
+
+    // CASE 1: Fixed-size array itself is stored in _r slot.
+    loop {
+        let _r = [D(log, 10),
+                  D(log, 11),
+                  D(log, 12)];
+        break;
+    }
+    assert_eq!(&log.borrow()[..], &[10, 11, 12]);
+    log.borrow_mut().clear();
+
+    // CASE 2: Slice (borrow of array) is stored in _r slot.
+    loop {
+        let _r = &[D(log, 20),
+                   D(log, 21),
+                   D(log, 22)];
+        break;
+    }
+    assert_eq!(&log.borrow()[..], &[20, 21, 22]);
+    log.borrow_mut().clear();
+
+    // CASE 3: (Borrow of) slice-index of array is stored in _r slot.
+    loop {
+        let _r = &[D(log, 30),
+                   D(log, 31),
+                   D(log, 32)][..];
+        break;
+    }
+    assert_eq!(&log.borrow()[..], &[30, 31, 32]);
+    log.borrow_mut().clear();
+}
diff --git a/src/test/ui/issues/issue-30018-panic.rs b/src/test/ui/issues/issue-30018-panic.rs
new file mode 100644
index 00000000000..50749b0c742
--- /dev/null
+++ b/src/test/ui/issues/issue-30018-panic.rs
@@ -0,0 +1,25 @@
+// run-pass
+// Regression test for Issue #30018. This is very similar to the
+// original reported test, except that the panic is wrapped in a
+// spawned thread to isolate the expected error result from the
+// SIGTRAP injected by the drop-flag consistency checking.
+
+// ignore-emscripten no threads support
+
+struct Foo;
+
+impl Drop for Foo {
+    fn drop(&mut self) {}
+}
+
+fn foo() -> Foo {
+    panic!();
+}
+
+fn main() {
+    use std::thread;
+    let handle = thread::spawn(|| {
+        let _ = &[foo()];
+    });
+    let _ = handle.join();
+}
diff --git a/src/test/ui/issues/issue-30081.rs b/src/test/ui/issues/issue-30081.rs
new file mode 100644
index 00000000000..e7fca96ed9e
--- /dev/null
+++ b/src/test/ui/issues/issue-30081.rs
@@ -0,0 +1,15 @@
+// run-pass
+// This used to segfault #30081
+
+pub enum Instruction {
+    Increment(i8),
+    Loop(Box<Box<()>>),
+}
+
+fn main() {
+    let instrs: Option<(u8, Box<Instruction>)> = None;
+    instrs.into_iter()
+        .map(|(_, instr)| instr)
+        .map(|instr| match *instr { _other => {} })
+        .last();
+}
diff --git a/src/test/ui/issues/issue-3012-2.rs b/src/test/ui/issues/issue-3012-2.rs
new file mode 100644
index 00000000000..7d32c51f569
--- /dev/null
+++ b/src/test/ui/issues/issue-3012-2.rs
@@ -0,0 +1,13 @@
+// run-pass
+// aux-build:issue-3012-1.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate socketlib;
+
+use socketlib::socket;
+
+pub fn main() {
+    let fd: u32 = 1 as u32;
+    let _sock: Box<_> = Box::new(socket::socket_handle(fd));
+}
diff --git a/src/test/ui/issues/issue-3026.rs b/src/test/ui/issues/issue-3026.rs
new file mode 100644
index 00000000000..1dea8134fba
--- /dev/null
+++ b/src/test/ui/issues/issue-3026.rs
@@ -0,0 +1,13 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+use std::collections::HashMap;
+
+pub fn main() {
+    let x: Box<_>;
+    let mut buggy_map: HashMap<usize, &usize> = HashMap::new();
+    x = box 1;
+    buggy_map.insert(42, &*x);
+}
diff --git a/src/test/ui/issues/issue-3037.rs b/src/test/ui/issues/issue-3037.rs
new file mode 100644
index 00000000000..ff4d32c2840
--- /dev/null
+++ b/src/test/ui/issues/issue-3037.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+#![allow(non_camel_case_types)]
+
+enum what { }
+
+fn what_to_string(x: what) -> String
+{
+    match x {
+    }
+}
+
+pub fn main()
+{
+}
diff --git a/src/test/ui/issues/issue-30371.rs b/src/test/ui/issues/issue-30371.rs
new file mode 100644
index 00000000000..58521b95cf6
--- /dev/null
+++ b/src/test/ui/issues/issue-30371.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unreachable_code)]
+#![allow(unused_mut)] // rust-lang/rust#54586
+#![deny(unused_variables)]
+
+fn main() {
+    for _ in match return () {
+        () => Some(0),
+    } {}
+}
diff --git a/src/test/ui/issues/issue-30490.rs b/src/test/ui/issues/issue-30490.rs
new file mode 100644
index 00000000000..76e72246887
--- /dev/null
+++ b/src/test/ui/issues/issue-30490.rs
@@ -0,0 +1,102 @@
+// run-pass
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+// Previously libstd would set stdio descriptors of a child process
+// by `dup`ing the requested descriptors to inherit directly into the
+// stdio descriptors. This, however, would incorrectly handle cases
+// where the descriptors to inherit were already stdio descriptors.
+// This test checks to avoid that regression.
+
+#![cfg_attr(unix, feature(rustc_private))]
+#![cfg_attr(windows, allow(unused_imports))]
+
+#[cfg(unix)]
+extern crate libc;
+
+use std::fs::File;
+use std::io::{Read, Write};
+use std::io::{stdout, stderr};
+use std::process::{Command, Stdio};
+
+#[cfg(unix)]
+use std::os::unix::io::FromRawFd;
+
+#[cfg(not(unix))]
+fn main() {
+    // Bug not present in Windows
+}
+
+#[cfg(unix)]
+fn main() {
+    let mut args = std::env::args();
+    let name = args.next().unwrap();
+    let args: Vec<String> = args.collect();
+    if let Some("--child") = args.get(0).map(|s| &**s) {
+        return child();
+    } else if !args.is_empty() {
+        panic!("unknown options");
+    }
+
+    let stdout_backup = unsafe { libc::dup(libc::STDOUT_FILENO) };
+    let stderr_backup = unsafe { libc::dup(libc::STDERR_FILENO) };
+    assert!(stdout_backup > -1);
+    assert!(stderr_backup > -1);
+
+    let (stdout_reader, stdout_writer) = pipe();
+    let (stderr_reader, stderr_writer) = pipe();
+    assert!(unsafe { libc::dup2(stdout_writer, libc::STDOUT_FILENO) } > -1);
+    assert!(unsafe { libc::dup2(stderr_writer, libc::STDERR_FILENO) } > -1);
+
+    // Make sure we close any duplicates of the writer end of the pipe,
+    // otherwise we can get stuck reading from the pipe which has open
+    // writers but no one supplying any input
+    assert_eq!(unsafe { libc::close(stdout_writer) }, 0);
+    assert_eq!(unsafe { libc::close(stderr_writer) }, 0);
+
+    stdout().write_all("parent stdout\n".as_bytes()).expect("failed to write to stdout");
+    stderr().write_all("parent stderr\n".as_bytes()).expect("failed to write to stderr");
+
+    let child = {
+        Command::new(name)
+            .arg("--child")
+            .stdin(Stdio::inherit())
+            .stdout(unsafe { Stdio::from_raw_fd(libc::STDERR_FILENO) })
+            .stderr(unsafe { Stdio::from_raw_fd(libc::STDOUT_FILENO) })
+            .spawn()
+    };
+
+    // The Stdio passed into the Command took over (and closed) std{out, err}
+    // so we should restore them as they were.
+    assert!(unsafe { libc::dup2(stdout_backup, libc::STDOUT_FILENO) } > -1);
+    assert!(unsafe { libc::dup2(stderr_backup, libc::STDERR_FILENO) } > -1);
+
+    // Using File as a shim around the descriptor
+    let mut read = String::new();
+    let mut f: File = unsafe { FromRawFd::from_raw_fd(stdout_reader) };
+    f.read_to_string(&mut read).expect("failed to read from stdout file");
+    assert_eq!(read, "parent stdout\nchild stderr\n");
+
+    // Using File as a shim around the descriptor
+    read.clear();
+    let mut f: File = unsafe { FromRawFd::from_raw_fd(stderr_reader) };
+    f.read_to_string(&mut read).expect("failed to read from stderr file");
+    assert_eq!(read, "parent stderr\nchild stdout\n");
+
+    assert!(child.expect("failed to execute child process").wait().unwrap().success());
+}
+
+#[cfg(unix)]
+fn child() {
+    stdout().write_all("child stdout\n".as_bytes()).expect("child failed to write to stdout");
+    stderr().write_all("child stderr\n".as_bytes()).expect("child failed to write to stderr");
+}
+
+#[cfg(unix)]
+/// Returns a pipe (reader, writer combo)
+fn pipe() -> (i32, i32) {
+     let mut fds = [0; 2];
+     assert_eq!(unsafe { libc::pipe(fds.as_mut_ptr()) }, 0);
+     (fds[0], fds[1])
+}
diff --git a/src/test/ui/issues/issue-3052.rs b/src/test/ui/issues/issue-3052.rs
new file mode 100644
index 00000000000..ee2456da3e2
--- /dev/null
+++ b/src/test/ui/issues/issue-3052.rs
@@ -0,0 +1,13 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+type Connection = Box<dyn FnMut(Vec<u8>) + 'static>;
+
+fn f() -> Option<Connection> {
+    let mock_connection: Connection = Box::new(|_| {});
+    Some(mock_connection)
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-30530.rs b/src/test/ui/issues/issue-30530.rs
new file mode 100644
index 00000000000..111fb8aa506
--- /dev/null
+++ b/src/test/ui/issues/issue-30530.rs
@@ -0,0 +1,28 @@
+// run-pass
+// Regression test for Issue #30530: alloca's created for storing
+// intermediate scratch values during brace-less match arms need to be
+// initialized with their drop-flag set to "dropped" (or else we end
+// up running the destructors on garbage data at the end of the
+// function).
+
+pub enum Handler {
+    Default,
+    #[allow(dead_code)]
+    Custom(*mut Box<dyn Fn()>),
+}
+
+fn main() {
+    #[allow(unused_must_use)] {
+        take(Handler::Default, Box::new(main));
+    }
+}
+
+#[inline(never)]
+pub fn take(h: Handler, f: Box<dyn Fn()>) -> Box<dyn Fn()> {
+    unsafe {
+        match h {
+            Handler::Custom(ptr) => *Box::from_raw(ptr),
+            Handler::Default => f,
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-30615.rs b/src/test/ui/issues/issue-30615.rs
new file mode 100644
index 00000000000..c718449d84e
--- /dev/null
+++ b/src/test/ui/issues/issue-30615.rs
@@ -0,0 +1,5 @@
+// run-pass
+fn main() {
+    &0u8 as *const u8 as *const dyn PartialEq<u8>;
+    &[0u8] as *const [u8; 1] as *const [u8];
+}
diff --git a/src/test/ui/issues/issue-30756.rs b/src/test/ui/issues/issue-30756.rs
new file mode 100644
index 00000000000..836db951bb7
--- /dev/null
+++ b/src/test/ui/issues/issue-30756.rs
@@ -0,0 +1,7 @@
+// run-pass
+#![forbid(unsafe_code)]
+
+thread_local!(static FOO: u8 = 1);
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-30891.rs b/src/test/ui/issues/issue-30891.rs
new file mode 100644
index 00000000000..30f55e0bd64
--- /dev/null
+++ b/src/test/ui/issues/issue-30891.rs
@@ -0,0 +1,10 @@
+// run-pass
+const ERROR_CONST: bool = true;
+
+fn get() -> bool {
+    false || ERROR_CONST
+}
+
+pub fn main() {
+    assert_eq!(get(), true);
+}
diff --git a/src/test/ui/issues/issue-3091.rs b/src/test/ui/issues/issue-3091.rs
new file mode 100644
index 00000000000..0c0a412420a
--- /dev/null
+++ b/src/test/ui/issues/issue-3091.rs
@@ -0,0 +1,7 @@
+// run-pass
+
+pub fn main() {
+    let x = 1;
+    let y = 1;
+    assert_eq!(&x, &y);
+}
diff --git a/src/test/ui/issues/issue-3109.rs b/src/test/ui/issues/issue-3109.rs
new file mode 100644
index 00000000000..bd807cad753
--- /dev/null
+++ b/src/test/ui/issues/issue-3109.rs
@@ -0,0 +1,4 @@
+// run-pass
+pub fn main() {
+    println!("{:?}", ("hi there!", "you"));
+}
diff --git a/src/test/ui/issues/issue-3121.rs b/src/test/ui/issues/issue-3121.rs
new file mode 100644
index 00000000000..f7bbfa9f6f4
--- /dev/null
+++ b/src/test/ui/issues/issue-3121.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+#![feature(box_syntax)]
+
+#[derive(Copy, Clone)]
+enum side { mayo, catsup, vinegar }
+#[derive(Copy, Clone)]
+enum order { hamburger, fries(side), shake }
+#[derive(Copy, Clone)]
+enum meal { to_go(order), for_here(order) }
+
+fn foo(m: Box<meal>, cond: bool) {
+    match *m {
+      meal::to_go(_) => { }
+      meal::for_here(_) if cond => {}
+      meal::for_here(order::hamburger) => {}
+      meal::for_here(order::fries(_s)) => {}
+      meal::for_here(order::shake) => {}
+    }
+}
+
+pub fn main() {
+    foo(box meal::for_here(order::hamburger), true)
+}
diff --git a/src/test/ui/issues/issue-31267-additional.rs b/src/test/ui/issues/issue-31267-additional.rs
new file mode 100644
index 00000000000..70dce2c9490
--- /dev/null
+++ b/src/test/ui/issues/issue-31267-additional.rs
@@ -0,0 +1,20 @@
+// run-pass
+
+#[derive(Clone, Copy, Debug)]
+struct Bar;
+
+const BAZ: Bar = Bar;
+
+#[derive(Debug)]
+struct Foo([Bar; 1]);
+
+struct Biz;
+
+impl Biz {
+    const BAZ: Foo = Foo([BAZ; 1]);
+}
+
+fn main() {
+    let foo = Biz::BAZ;
+    println!("{:?}", foo);
+}
diff --git a/src/test/ui/issues/issue-31267.rs b/src/test/ui/issues/issue-31267.rs
new file mode 100644
index 00000000000..50843c89eb4
--- /dev/null
+++ b/src/test/ui/issues/issue-31267.rs
@@ -0,0 +1,14 @@
+// run-pass
+// Regression test for issue #31267
+
+
+struct Foo;
+
+impl Foo {
+    const FOO: [i32; 3] = [0; 3];
+}
+
+pub fn main() {
+    let foo = Foo::FOO;
+    assert_eq!(foo, [0i32, 0, 0]);
+}
diff --git a/src/test/ui/issues/issue-31299.rs b/src/test/ui/issues/issue-31299.rs
new file mode 100644
index 00000000000..abed18d81f8
--- /dev/null
+++ b/src/test/ui/issues/issue-31299.rs
@@ -0,0 +1,34 @@
+// run-pass
+// Regression test for #31299. This was generating an overflow error
+// because of eager normalization:
+//
+// proving `M: Sized` requires
+// - proving `PtrBack<Vec<M>>: Sized` requires
+//   - normalizing `Vec<<Vec<M> as Front>::Back>>: Sized` requires
+//     - proving `Vec<M>: Front` requires
+//       - `M: Sized` <-- cycle!
+//
+// If we skip the normalization step, though, everything goes fine.
+//
+// This could be fixed by implementing lazy normalization everywhere.
+//
+// However, we want this to work before then. For that, when checking
+// whether a type is Sized we only check that the tails are Sized. As
+// PtrBack does not have a tail, we don't need to normalize anything
+// and this compiles
+
+trait Front {
+    type Back;
+}
+
+impl<T> Front for Vec<T> {
+    type Back = Vec<T>;
+}
+
+struct PtrBack<T: Front>(Vec<T::Back>);
+
+struct M(PtrBack<Vec<M>>);
+
+fn main() {
+    std::mem::size_of::<M>();
+}
diff --git a/src/test/ui/issues/issue-3136-b.rs b/src/test/ui/issues/issue-3136-b.rs
new file mode 100644
index 00000000000..c4ca7236e76
--- /dev/null
+++ b/src/test/ui/issues/issue-3136-b.rs
@@ -0,0 +1,8 @@
+// run-pass
+// aux-build:issue-3136-a.rc
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_3136_a;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-31702.rs b/src/test/ui/issues/issue-31702.rs
new file mode 100644
index 00000000000..5b24eead345
--- /dev/null
+++ b/src/test/ui/issues/issue-31702.rs
@@ -0,0 +1,10 @@
+// run-pass
+// aux-build:issue-31702-1.rs
+// aux-build:issue-31702-2.rs
+
+// this test is actually entirely in the linked library crates
+
+extern crate issue_31702_1;
+extern crate issue_31702_2;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-31776.rs b/src/test/ui/issues/issue-31776.rs
new file mode 100644
index 00000000000..c0d2c91e577
--- /dev/null
+++ b/src/test/ui/issues/issue-31776.rs
@@ -0,0 +1,57 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+// Various scenarios in which `pub` is required in blocks
+
+struct S;
+
+mod m {
+    fn f() {
+        impl ::S {
+            pub fn s(&self) {}
+        }
+    }
+}
+
+// ------------------------------------------------------
+
+pub trait Tr {
+    type A;
+}
+pub struct S1;
+
+fn f() {
+    pub struct Z;
+
+    impl ::Tr for ::S1 {
+        type A = Z; // Private-in-public error unless `struct Z` is pub
+    }
+}
+
+// ------------------------------------------------------
+
+trait Tr1 {
+    type A;
+    fn pull(&self) -> Self::A;
+}
+struct S2;
+
+mod m1 {
+    fn f() {
+        pub struct Z {
+            pub field: u8
+        }
+
+        impl ::Tr1 for ::S2 {
+            type A = Z;
+            fn pull(&self) -> Self::A { Z{field: 10} }
+        }
+    }
+}
+
+// ------------------------------------------------------
+
+fn main() {
+    S.s(); // Privacy error, unless `fn s` is pub
+    let a = S2.pull().field; // Privacy error unless `field: u8` is pub
+}
diff --git a/src/test/ui/issues/issue-32008.rs b/src/test/ui/issues/issue-32008.rs
new file mode 100644
index 00000000000..6c2e206796f
--- /dev/null
+++ b/src/test/ui/issues/issue-32008.rs
@@ -0,0 +1,28 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+// Tests that binary operators allow subtyping on both the LHS and RHS,
+// and as such do not introduce unnecessarily strict lifetime constraints.
+
+use std::ops::Add;
+
+struct Foo;
+
+impl<'a> Add<&'a Foo> for &'a Foo {
+    type Output = ();
+    fn add(self, rhs: &'a Foo) {}
+}
+
+fn try_to_add(input: &Foo) {
+    let local = Foo;
+
+    // Manual reborrow worked even with invariant trait search.
+    &*input + &local;
+
+    // Direct use of the reference on the LHS requires additional
+    // subtyping before searching (invariantly) for `LHS: Add<RHS>`.
+    input + &local;
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-3211.rs b/src/test/ui/issues/issue-3211.rs
new file mode 100644
index 00000000000..49dd4fa7360
--- /dev/null
+++ b/src/test/ui/issues/issue-3211.rs
@@ -0,0 +1,7 @@
+// run-pass
+pub fn main() {
+    let mut x = 0;
+    for _ in 0..4096 { x += 1; }
+    assert_eq!(x, 4096);
+    println!("x = {}", x);
+}
diff --git a/src/test/ui/issues/issue-3220.rs b/src/test/ui/issues/issue-3220.rs
new file mode 100644
index 00000000000..7dc672edb54
--- /dev/null
+++ b/src/test/ui/issues/issue-3220.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+// pretty-expanded FIXME #23616
+
+struct thing { x: isize, }
+
+impl Drop for thing {
+    fn drop(&mut self) {}
+}
+
+fn thing() -> thing {
+    thing {
+        x: 0
+    }
+}
+
+impl thing {
+    pub fn f(self) {}
+}
+
+pub fn main() {
+    let z = thing();
+    (z).f();
+}
diff --git a/src/test/ui/issues/issue-32292.rs b/src/test/ui/issues/issue-32292.rs
new file mode 100644
index 00000000000..99b865391de
--- /dev/null
+++ b/src/test/ui/issues/issue-32292.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![deny(warnings)]
+
+#[derive(Hash, Ord, PartialOrd, Eq, PartialEq, Debug, Clone, Copy)]
+struct Foo;
+
+fn main() {
+    let _ = Foo;
+}
diff --git a/src/test/ui/issues/issue-32389.rs b/src/test/ui/issues/issue-32389.rs
new file mode 100644
index 00000000000..cc94cc819d6
--- /dev/null
+++ b/src/test/ui/issues/issue-32389.rs
@@ -0,0 +1,11 @@
+// run-pass
+fn foo<T>() -> T { loop {} }
+
+fn test() {
+    let ref mut a: &mut dyn FnMut((i8,), i16) = foo();
+    a((0,), 0);
+}
+
+fn main() {
+    let _ = test;
+}
diff --git a/src/test/ui/issues/issue-32518.rs b/src/test/ui/issues/issue-32518.rs
new file mode 100644
index 00000000000..808b40f71b3
--- /dev/null
+++ b/src/test/ui/issues/issue-32518.rs
@@ -0,0 +1,13 @@
+// run-pass
+// no-prefer-dynamic
+// aux-build:cgu_test.rs
+// aux-build:cgu_test_a.rs
+// aux-build:cgu_test_b.rs
+
+extern crate cgu_test_a;
+extern crate cgu_test_b;
+
+fn main() {
+    cgu_test_a::a::a();
+    cgu_test_b::a::a();
+}
diff --git a/src/test/ui/issues/issue-32805.rs b/src/test/ui/issues/issue-32805.rs
new file mode 100644
index 00000000000..23c19473903
--- /dev/null
+++ b/src/test/ui/issues/issue-32805.rs
@@ -0,0 +1,10 @@
+// run-pass
+fn const_mir() -> f32 { 9007199791611905.0 }
+
+fn main() {
+    let original = "9007199791611905.0"; // (1<<53)+(1<<29)+1
+    let expected = "9007200000000000";
+
+    assert_eq!(const_mir().to_string(), expected);
+    assert_eq!(original.parse::<f32>().unwrap().to_string(), expected);
+}
diff --git a/src/test/ui/issues/issue-3290.rs b/src/test/ui/issues/issue-3290.rs
new file mode 100644
index 00000000000..63e1b28a60a
--- /dev/null
+++ b/src/test/ui/issues/issue-3290.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![feature(box_syntax)]
+
+pub fn main() {
+   let mut x: Box<_> = box 3;
+   x = x;
+   assert_eq!(*x, 3);
+}
diff --git a/src/test/ui/issues/issue-32947.rs b/src/test/ui/issues/issue-32947.rs
new file mode 100644
index 00000000000..b07def21e88
--- /dev/null
+++ b/src/test/ui/issues/issue-32947.rs
@@ -0,0 +1,24 @@
+// run-pass
+// ignore-emscripten FIXME(#45351)
+
+#![feature(repr_simd, test)]
+
+extern crate test;
+
+#[repr(simd)]
+pub struct Mu64(pub u64, pub u64, pub u64, pub u64);
+
+fn main() {
+    // This ensures an unaligned pointer even in optimized builds, though LLVM
+    // gets enough type information to actually not mess things up in that case,
+    // but at the time of writing this, it's enough to trigger the bug in
+    // non-optimized builds
+    unsafe {
+        let memory = &mut [0u64; 8] as *mut _ as *mut u8;
+        let misaligned_ptr: &mut [u8; 32] = {
+            std::mem::transmute(memory.offset(1))
+        };
+        *misaligned_ptr = std::mem::transmute(Mu64(1, 1, 1, 1));
+        test::black_box(memory);
+    }
+}
diff --git a/src/test/ui/issues/issue-33096.rs b/src/test/ui/issues/issue-33096.rs
new file mode 100644
index 00000000000..f0b472e2fe8
--- /dev/null
+++ b/src/test/ui/issues/issue-33096.rs
@@ -0,0 +1,18 @@
+// run-pass
+// compile-flags: -g
+
+use std::ops::Deref;
+
+trait Foo {
+    fn foo() {}
+}
+
+impl Foo for u8 {}
+
+fn bar<T: Deref>() where T::Target: Foo {
+    <<T as Deref>::Target as Foo>::foo()
+}
+
+fn main() {
+    bar::<&u8>();
+}
diff --git a/src/test/ui/issues/issue-33185.rs b/src/test/ui/issues/issue-33185.rs
new file mode 100644
index 00000000000..0d6669146a6
--- /dev/null
+++ b/src/test/ui/issues/issue-33185.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(dead_code)]
+
+#[macro_export]
+macro_rules! state {
+    ( $( $name:ident : $field:ty )* ) => (
+        #[derive(Default)]
+        struct State {
+            $($name : $field),*
+        }
+    )
+}
+
+state! { x: i64 }
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-33187.rs b/src/test/ui/issues/issue-33187.rs
new file mode 100644
index 00000000000..5226f9faf56
--- /dev/null
+++ b/src/test/ui/issues/issue-33187.rs
@@ -0,0 +1,18 @@
+// run-pass
+struct Foo<A: Repr>(<A as Repr>::Data);
+
+impl<A> Copy for Foo<A> where <A as Repr>::Data: Copy { }
+impl<A> Clone for Foo<A> where <A as Repr>::Data: Clone {
+    fn clone(&self) -> Self { Foo(self.0.clone()) }
+}
+
+trait Repr {
+    type Data;
+}
+
+impl<A> Repr for A {
+    type Data = u32;
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-33202.rs b/src/test/ui/issues/issue-33202.rs
new file mode 100644
index 00000000000..11b89ae1b47
--- /dev/null
+++ b/src/test/ui/issues/issue-33202.rs
@@ -0,0 +1,9 @@
+// run-pass
+#[repr(C)]
+pub enum CPOption<T> {
+    PSome(T),
+}
+
+fn main() {
+  println!("sizeof CPOption<i32> {}", std::mem::size_of::<CPOption<i32>>());
+}
diff --git a/src/test/ui/issues/issue-333.rs b/src/test/ui/issues/issue-333.rs
new file mode 100644
index 00000000000..0753aaa0797
--- /dev/null
+++ b/src/test/ui/issues/issue-333.rs
@@ -0,0 +1,7 @@
+// run-pass
+
+fn quux<T>(x: T) -> T { let f = id::<T>; return f(x); }
+
+fn id<T>(x: T) -> T { return x; }
+
+pub fn main() { assert_eq!(quux(10), 10); }
diff --git a/src/test/ui/issues/issue-33387.rs b/src/test/ui/issues/issue-33387.rs
new file mode 100644
index 00000000000..499fa7c1f27
--- /dev/null
+++ b/src/test/ui/issues/issue-33387.rs
@@ -0,0 +1,32 @@
+// run-pass
+#![feature(rustc_attrs)]
+
+use std::sync::Arc;
+
+trait Foo {
+    fn get(&self) -> [u8; 2];
+}
+
+impl Foo for [u8; 2] {
+    fn get(&self) -> [u8; 2] {
+        *self
+    }
+}
+
+struct Bar<T: ?Sized>(T);
+
+fn unsize_fat_ptr<'a>(x: &'a Bar<dyn Foo + Send + 'a>) -> &'a Bar<dyn Foo + 'a> {
+    x
+}
+
+fn unsize_nested_fat_ptr(x: Arc<dyn Foo + Send>) -> Arc<dyn Foo> {
+    x
+}
+
+fn main() {
+    let x: Box<Bar<dyn Foo + Send>> = Box::new(Bar([1,2]));
+    assert_eq!(unsize_fat_ptr(&*x).0.get(), [1, 2]);
+
+    let x: Arc<dyn Foo + Send> = Arc::new([3, 4]);
+    assert_eq!(unsize_nested_fat_ptr(x).get(), [3, 4]);
+}
diff --git a/src/test/ui/issues/issue-33461.rs b/src/test/ui/issues/issue-33461.rs
new file mode 100644
index 00000000000..4e01d4d3061
--- /dev/null
+++ b/src/test/ui/issues/issue-33461.rs
@@ -0,0 +1,28 @@
+// run-pass
+#![allow(unused_variables)]
+use std::marker::PhantomData;
+
+struct TheType<T> {
+    t: PhantomData<T>
+}
+
+pub trait TheTrait {
+    type TheAssociatedType;
+}
+
+impl TheTrait for () {
+    type TheAssociatedType = ();
+}
+
+pub trait Shape<P: TheTrait> {
+    fn doit(&self) {
+    }
+}
+
+impl<P: TheTrait> Shape<P> for TheType<P::TheAssociatedType> {
+}
+
+fn main() {
+    let ball = TheType { t: PhantomData };
+    let handle: &dyn Shape<()> = &ball;
+}
diff --git a/src/test/ui/issues/issue-33498.rs b/src/test/ui/issues/issue-33498.rs
new file mode 100644
index 00000000000..9c8a97e7e6b
--- /dev/null
+++ b/src/test/ui/issues/issue-33498.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(unused_variables)]
+pub fn main() {
+    let x = (0, 2);
+
+    match x {
+        (0, ref y) => {}
+        (y, 0) => {}
+        _ => (),
+    }
+}
diff --git a/src/test/ui/issues/issue-33537.rs b/src/test/ui/issues/issue-33537.rs
new file mode 100644
index 00000000000..3539aa64776
--- /dev/null
+++ b/src/test/ui/issues/issue-33537.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+const fn foo() -> *const i8 {
+    b"foo" as *const _ as *const i8
+}
+
+const fn bar() -> i32 {
+    *&{(1, 2, 3).1}
+}
+
+fn main() {
+    assert_eq!(foo(), b"foo" as *const _ as *const i8);
+    assert_eq!(bar(), 2);
+}
diff --git a/src/test/ui/issues/issue-33687.rs b/src/test/ui/issues/issue-33687.rs
new file mode 100644
index 00000000000..ac802ed86dc
--- /dev/null
+++ b/src/test/ui/issues/issue-33687.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![feature(unboxed_closures)]
+#![feature(fn_traits)]
+
+struct Test;
+
+impl FnOnce<(u32, u32)> for Test {
+    type Output = u32;
+
+    extern "rust-call" fn call_once(self, (a, b): (u32, u32)) -> u32 {
+        a + b
+    }
+}
+
+fn main() {
+    assert_eq!(Test(1u32, 2u32), 3u32);
+}
diff --git a/src/test/ui/issues/issue-33770.rs b/src/test/ui/issues/issue-33770.rs
new file mode 100644
index 00000000000..39ae009c996
--- /dev/null
+++ b/src/test/ui/issues/issue-33770.rs
@@ -0,0 +1,95 @@
+// run-pass
+// ignore-cloudabi no processes
+// ignore-emscripten no processes
+// ignore-sgx no processes
+
+use std::process::{Command, Stdio};
+use std::env;
+use std::sync::{Mutex, RwLock};
+use std::time::Duration;
+use std::thread;
+
+fn test_mutex() {
+    let m = Mutex::new(0);
+    let _g = m.lock().unwrap();
+    let _g2 = m.lock().unwrap();
+}
+
+fn test_try_mutex() {
+    let m = Mutex::new(0);
+    let _g = m.lock().unwrap();
+    let _g2 = m.try_lock().unwrap();
+}
+
+fn test_rwlock_ww() {
+    let m = RwLock::new(0);
+    let _g = m.write().unwrap();
+    let _g2 = m.write().unwrap();
+}
+
+fn test_try_rwlock_ww() {
+    let m = RwLock::new(0);
+    let _g = m.write().unwrap();
+    let _g2 = m.try_write().unwrap();
+}
+
+fn test_rwlock_rw() {
+    let m = RwLock::new(0);
+    let _g = m.read().unwrap();
+    let _g2 = m.write().unwrap();
+}
+
+fn test_try_rwlock_rw() {
+    let m = RwLock::new(0);
+    let _g = m.read().unwrap();
+    let _g2 = m.try_write().unwrap();
+}
+
+fn test_rwlock_wr() {
+    let m = RwLock::new(0);
+    let _g = m.write().unwrap();
+    let _g2 = m.read().unwrap();
+}
+
+fn test_try_rwlock_wr() {
+    let m = RwLock::new(0);
+    let _g = m.write().unwrap();
+    let _g2 = m.try_read().unwrap();
+}
+
+fn main() {
+    let args: Vec<String> = env::args().collect();
+    if args.len() > 1 {
+        match &*args[1] {
+            "mutex" => test_mutex(),
+            "try_mutex" => test_try_mutex(),
+            "rwlock_ww" => test_rwlock_ww(),
+            "try_rwlock_ww" => test_try_rwlock_ww(),
+            "rwlock_rw" => test_rwlock_rw(),
+            "try_rwlock_rw" => test_try_rwlock_rw(),
+            "rwlock_wr" => test_rwlock_wr(),
+            "try_rwlock_wr" => test_try_rwlock_wr(),
+            _ => unreachable!(),
+        }
+        // If we reach this point then the test failed
+        println!("TEST FAILED: {}", args[1]);
+    } else {
+        let mut v = vec![];
+        v.push(Command::new(&args[0]).arg("mutex").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("try_mutex").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("rwlock_ww").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("try_rwlock_ww").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("rwlock_rw").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("try_rwlock_rw").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("rwlock_wr").stderr(Stdio::null()).spawn().unwrap());
+        v.push(Command::new(&args[0]).arg("try_rwlock_wr").stderr(Stdio::null()).spawn().unwrap());
+
+        thread::sleep(Duration::new(1, 0));
+
+        // Make sure all subprocesses either panicked or were killed because they deadlocked
+        for mut c in v {
+            c.kill().ok();
+            assert!(!c.wait().unwrap().success());
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-3389.rs b/src/test/ui/issues/issue-3389.rs
new file mode 100644
index 00000000000..294a07229fb
--- /dev/null
+++ b/src/test/ui/issues/issue-3389.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+struct trie_node {
+    content: Vec<String> ,
+    children: Vec<trie_node> ,
+}
+
+fn print_str_vector(vector: Vec<String> ) {
+    for string in &vector {
+        println!("{}", *string);
+    }
+}
+
+pub fn main() {
+    let mut node: trie_node = trie_node {
+        content: Vec::new(),
+        children: Vec::new()
+    };
+    let v = vec!["123".to_string(), "abc".to_string()];
+    node.content = vec!["123".to_string(), "abc".to_string()];
+    print_str_vector(v);
+    print_str_vector(node.content.clone());
+
+}
diff --git a/src/test/ui/issues/issue-33992.rs b/src/test/ui/issues/issue-33992.rs
new file mode 100644
index 00000000000..94fccff9fc6
--- /dev/null
+++ b/src/test/ui/issues/issue-33992.rs
@@ -0,0 +1,32 @@
+// run-pass
+// ignore-windows
+// ignore-macos
+// ignore-wasm32-bare common linkage not implemented right now
+
+#![feature(linkage)]
+
+#[linkage = "common"]
+pub static mut TEST1: u32 = 0u32;
+
+#[linkage = "external"]
+pub static TEST2: bool = true;
+
+#[linkage = "internal"]
+pub static TEST3: bool = true;
+
+#[linkage = "linkonce"]
+pub static TEST4: bool = true;
+
+#[linkage = "linkonce_odr"]
+pub static TEST5: bool = true;
+
+#[linkage = "private"]
+pub static TEST6: bool = true;
+
+#[linkage = "weak"]
+pub static TEST7: bool = true;
+
+#[linkage = "weak_odr"]
+pub static TEST8: bool = true;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-34053.rs b/src/test/ui/issues/issue-34053.rs
new file mode 100644
index 00000000000..fa23ae8f95b
--- /dev/null
+++ b/src/test/ui/issues/issue-34053.rs
@@ -0,0 +1,30 @@
+// run-pass
+use std::sync::atomic::{AtomicUsize, Ordering};
+
+static DROP_COUNTER: AtomicUsize = AtomicUsize::new(0);
+
+struct A(i32);
+
+impl Drop for A {
+    fn drop(&mut self) {
+        // update global drop count
+        DROP_COUNTER.fetch_add(1, Ordering::SeqCst);
+    }
+}
+
+static FOO: A = A(123);
+const BAR: A = A(456);
+
+impl A {
+    const BAZ: A = A(789);
+}
+
+fn main() {
+    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 0);
+    assert_eq!(&FOO.0, &123);
+    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 0);
+    assert_eq!(BAR.0, 456);
+    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 1);
+    assert_eq!(A::BAZ.0, 789);
+    assert_eq!(DROP_COUNTER.load(Ordering::SeqCst), 2);
+}
diff --git a/src/test/ui/issues/issue-34074.rs b/src/test/ui/issues/issue-34074.rs
new file mode 100644
index 00000000000..0600d3937c1
--- /dev/null
+++ b/src/test/ui/issues/issue-34074.rs
@@ -0,0 +1,10 @@
+// run-pass
+// Make sure several unnamed function parameters don't conflict with each other
+
+trait Tr {
+    #[allow(anonymous_parameters)]
+    fn f(u8, u8) {}
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-3429.rs b/src/test/ui/issues/issue-3429.rs
new file mode 100644
index 00000000000..9d94c3ff61c
--- /dev/null
+++ b/src/test/ui/issues/issue-3429.rs
@@ -0,0 +1,8 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+  let x = 1_usize;
+  let y = || x;
+  let _z = y();
+}
diff --git a/src/test/ui/issues/issue-34427.rs b/src/test/ui/issues/issue-34427.rs
new file mode 100644
index 00000000000..a14b5b9e278
--- /dev/null
+++ b/src/test/ui/issues/issue-34427.rs
@@ -0,0 +1,17 @@
+// run-pass
+// Issue #34427: On ARM, the code in `foo` at one time was generating
+// a machine code instruction of the form: `str r0, [r0, rN]!` (for
+// some N), which is not legal because the source register and base
+// register cannot be identical in the preindexed form signalled by
+// the `!`.
+//
+// See LLVM bug: https://llvm.org/bugs/show_bug.cgi?id=28809
+
+#[inline(never)]
+fn foo(n: usize) -> Vec<Option<(*mut (), &'static ())>> {
+    (0..n).map(|_| None).collect()
+}
+
+fn main() {
+    let _ = (foo(10), foo(32));
+}
diff --git a/src/test/ui/issues/issue-3447.rs b/src/test/ui/issues/issue-3447.rs
new file mode 100644
index 00000000000..1e329d1522a
--- /dev/null
+++ b/src/test/ui/issues/issue-3447.rs
@@ -0,0 +1,33 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_snake_case)]
+#![allow(non_camel_case_types)]
+#![feature(box_syntax)]
+
+use std::cell::RefCell;
+
+static S: &'static str = "str";
+
+struct list<T> {
+    element: T,
+    next: Option<Box<RefCell<list<T>>>>
+}
+
+impl<T:'static> list<T> {
+    pub fn addEnd(&mut self, element: T) {
+        let newList = list {
+            element: element,
+            next: None
+        };
+
+        self.next = Some(box RefCell::new(newList));
+    }
+}
+
+pub fn main() {
+    let ls = list {
+        element: S,
+        next: None
+    };
+    println!("{}", ls.element);
+}
diff --git a/src/test/ui/issues/issue-34503.rs b/src/test/ui/issues/issue-34503.rs
new file mode 100644
index 00000000000..26e7358408f
--- /dev/null
+++ b/src/test/ui/issues/issue-34503.rs
@@ -0,0 +1,11 @@
+// run-pass
+fn main() {
+    struct X;
+    trait Foo<T> {
+        fn foo(&self) where (T, Option<T>): Ord {}
+        fn bar(&self, x: &Option<T>) -> bool
+        where Option<T>: Ord { *x < *x }
+    }
+    impl Foo<X> for () {}
+    let _ = &() as &dyn Foo<X>;
+}
diff --git a/src/test/ui/issues/issue-34569.rs b/src/test/ui/issues/issue-34569.rs
new file mode 100644
index 00000000000..1f68560509e
--- /dev/null
+++ b/src/test/ui/issues/issue-34569.rs
@@ -0,0 +1,17 @@
+// run-pass
+// compile-flags:-g
+
+// In this test we just want to make sure that the code below does not lead to
+// a debuginfo verification assertion during compilation. This was caused by the
+// closure in the guard being codegened twice due to how match expressions are
+// handled.
+//
+// See https://github.com/rust-lang/rust/issues/34569 for details.
+
+fn main() {
+    match 0 {
+        e if (|| { e == 0 })() => {},
+        1 => {},
+        _ => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-34571.rs b/src/test/ui/issues/issue-34571.rs
new file mode 100644
index 00000000000..bad1bebc697
--- /dev/null
+++ b/src/test/ui/issues/issue-34571.rs
@@ -0,0 +1,11 @@
+// run-pass
+#[repr(u8)]
+enum Foo {
+    Foo(u8),
+}
+
+fn main() {
+    match Foo::Foo(1) {
+        _ => ()
+    }
+}
diff --git a/src/test/ui/issues/issue-34784.rs b/src/test/ui/issues/issue-34784.rs
new file mode 100644
index 00000000000..d3206e99430
--- /dev/null
+++ b/src/test/ui/issues/issue-34784.rs
@@ -0,0 +1,19 @@
+// run-pass
+#![allow(dead_code)]
+const C: *const u8 = &0;
+
+fn foo(x: *const u8) {
+    match x {
+        C => {}
+        _ => {}
+    }
+}
+
+const D: *const [u8; 4] = b"abcd";
+
+fn main() {
+    match D {
+        D => {}
+        _ => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-34796.rs b/src/test/ui/issues/issue-34796.rs
new file mode 100644
index 00000000000..88d5c50a27d
--- /dev/null
+++ b/src/test/ui/issues/issue-34796.rs
@@ -0,0 +1,28 @@
+// run-pass
+#![allow(dead_code)]
+// This test case exposes conditions where the encoding of a trait object type
+// with projection predicates would differ between this crate and the upstream
+// crate, because the predicates were encoded in different order within each
+// crate. This led to different symbol hashes of functions using these type,
+// which in turn led to linker errors because the two crates would not agree on
+// the symbol name.
+// The fix was to make the order in which predicates get encoded stable.
+
+// aux-build:issue-34796-aux.rs
+extern crate issue_34796_aux;
+
+fn mk<T>() -> T { loop {} }
+
+struct Data<T, E> {
+    data: T,
+    error: E,
+}
+
+fn main() {
+    issue_34796_aux::bar(|()| {
+        Data::<(), std::io::Error> {
+            data: mk(),
+            error: mk(),
+        }
+    })
+}
diff --git a/src/test/ui/issues/issue-34798.rs b/src/test/ui/issues/issue-34798.rs
new file mode 100644
index 00000000000..f0d710123cd
--- /dev/null
+++ b/src/test/ui/issues/issue-34798.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![forbid(improper_ctypes)]
+#![allow(dead_code)]
+
+#[repr(C)]
+pub struct Foo {
+    size: u8,
+    __value: ::std::marker::PhantomData<i32>,
+}
+
+#[repr(C)]
+pub struct ZeroSizeWithPhantomData<T>(::std::marker::PhantomData<T>);
+
+#[repr(C)]
+pub struct Bar {
+    size: u8,
+    baz: ZeroSizeWithPhantomData<i32>,
+}
+
+extern "C" {
+    pub fn bar(_: *mut Foo, _: *mut Bar);
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-34932.rs b/src/test/ui/issues/issue-34932.rs
new file mode 100644
index 00000000000..3a5fd20ebc3
--- /dev/null
+++ b/src/test/ui/issues/issue-34932.rs
@@ -0,0 +1,12 @@
+// run-pass
+// compile-flags:--test
+// rustc-env:RUSTC_BOOTSTRAP_KEY=
+#![cfg(any())] // This test should be configured away
+#![feature(rustc_attrs)] // Test that this is allowed on stable/beta
+#![feature(iter_arith_traits)] // Test that this is not unused
+#![deny(unused_features)]
+
+#[test]
+fn dummy() {
+    let () = "this should not reach type-checking";
+}
diff --git a/src/test/ui/issues/issue-3500.rs b/src/test/ui/issues/issue-3500.rs
new file mode 100644
index 00000000000..7b39cc16cab
--- /dev/null
+++ b/src/test/ui/issues/issue-3500.rs
@@ -0,0 +1,10 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    let x = &Some(1);
+    match x {
+        &Some(_) => (),
+        &None => (),
+    }
+}
diff --git a/src/test/ui/issues/issue-35423.rs b/src/test/ui/issues/issue-35423.rs
new file mode 100644
index 00000000000..202ffcc1d0d
--- /dev/null
+++ b/src/test/ui/issues/issue-35423.rs
@@ -0,0 +1,9 @@
+// run-pass
+fn main () {
+    let x = 4;
+    match x {
+        ref r if *r < 0 => println!("got negative num {} < 0", r),
+        e @ 1 ..= 100 => println!("got number within range [1,100] {}", e),
+        _ => println!("no"),
+    }
+}
diff --git a/src/test/ui/issues/issue-3556.rs b/src/test/ui/issues/issue-3556.rs
new file mode 100644
index 00000000000..3c1934ade35
--- /dev/null
+++ b/src/test/ui/issues/issue-3556.rs
@@ -0,0 +1,36 @@
+// run-pass
+#![allow(dead_code)]
+
+#[derive(Debug)]
+enum Token {
+    Text(String),
+    ETag(Vec<String>, String),
+    UTag(Vec<String>, String),
+    Section(Vec<String>, bool, Vec<Token>, String,
+            String, String, String, String),
+    IncompleteSection(Vec<String>, bool, String, bool),
+    Partial(String, String, String),
+}
+
+fn check_strs(actual: &str, expected: &str) -> bool
+{
+    if actual != expected
+    {
+        println!("Found {}, but expected {}", actual, expected);
+        return false;
+    }
+    return true;
+}
+
+pub fn main()
+{
+    let t = Token::Text("foo".to_string());
+    let u = Token::Section(vec!["alpha".to_string()],
+                    true,
+                    vec![t],
+                    "foo".to_string(),
+                    "foo".to_string(), "foo".to_string(), "foo".to_string(),
+                    "foo".to_string());
+    let v = format!("{:?}", u);    // this is the line that causes the seg fault
+    assert!(!v.is_empty());
+}
diff --git a/src/test/ui/issues/issue-3559.rs b/src/test/ui/issues/issue-3559.rs
new file mode 100644
index 00000000000..9d498584a9d
--- /dev/null
+++ b/src/test/ui/issues/issue-3559.rs
@@ -0,0 +1,18 @@
+// run-pass
+use std::collections::HashMap;
+
+fn check_strs(actual: &str, expected: &str) -> bool {
+    if actual != expected {
+        println!("Found {}, but expected {}", actual, expected);
+        return false;
+    }
+    return true;
+}
+
+pub fn main() {
+    let mut table = HashMap::new();
+    table.insert("one".to_string(), 1);
+    table.insert("two".to_string(), 2);
+    assert!(check_strs(&format!("{:?}", table), "{\"one\": 1, \"two\": 2}") ||
+            check_strs(&format!("{:?}", table), "{\"two\": 2, \"one\": 1}"));
+}
diff --git a/src/test/ui/issues/issue-35600.rs b/src/test/ui/issues/issue-35600.rs
new file mode 100644
index 00000000000..9d74726d279
--- /dev/null
+++ b/src/test/ui/issues/issue-35600.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(unused_variables)]
+trait Foo {
+    type bar;
+    fn bar();
+}
+
+impl Foo for () {
+    type bar = ();
+    fn bar() {}
+}
+
+fn main() {
+    let x: <() as Foo>::bar = ();
+    <()>::bar();
+}
diff --git a/src/test/ui/issues/issue-3563-3.rs b/src/test/ui/issues/issue-3563-3.rs
new file mode 100644
index 00000000000..bedfdab97d5
--- /dev/null
+++ b/src/test/ui/issues/issue-3563-3.rs
@@ -0,0 +1,180 @@
+// run-pass
+#![allow(unused_imports)]
+#![allow(non_snake_case)]
+
+// ASCII art shape renderer.  Demonstrates traits, impls, operator overloading,
+// non-copyable struct, unit testing.  To run execute: rustc --test shapes.rs &&
+// ./shapes
+
+// Rust's std library is tightly bound to the language itself so it is
+// automatically linked in.  However the extra library is designed to be
+// optional (for code that must run on constrained environments like embedded
+// devices or special environments like kernel code) so it must be explicitly
+// linked in.
+
+// Extern mod controls linkage. Use controls the visibility of names to modules
+// that are already linked in. Using WriterUtil allows us to use the write_line
+// method.
+
+use std::fmt;
+use std::iter::repeat;
+use std::slice;
+
+// Represents a position on a canvas.
+#[derive(Copy, Clone)]
+struct Point {
+    x: isize,
+    y: isize,
+}
+
+// Represents an offset on a canvas. (This has the same structure as a Point.
+// but different semantics).
+#[derive(Copy, Clone)]
+struct Size {
+    width: isize,
+    height: isize,
+}
+
+#[derive(Copy, Clone)]
+struct Rect {
+    top_left: Point,
+    size: Size,
+}
+
+// Contains the information needed to do shape rendering via ASCII art.
+struct AsciiArt {
+    width: usize,
+    height: usize,
+    fill: char,
+    lines: Vec<Vec<char> > ,
+
+    // This struct can be quite large so we'll disable copying: developers need
+    // to either pass these structs around via references or move them.
+}
+
+impl Drop for AsciiArt {
+    fn drop(&mut self) {}
+}
+
+// It's common to define a constructor sort of function to create struct instances.
+// If there is a canonical constructor it is typically named the same as the type.
+// Other constructor sort of functions are typically named from_foo, from_bar, etc.
+fn AsciiArt(width: usize, height: usize, fill: char) -> AsciiArt {
+    // Build a vector of vectors containing blank characters for each position in
+    // our canvas.
+    let lines = vec![vec!['.'; width]; height];
+
+    // Rust code often returns values by omitting the trailing semi-colon
+    // instead of using an explicit return statement.
+    AsciiArt {width: width, height: height, fill: fill, lines: lines}
+}
+
+// Methods particular to the AsciiArt struct.
+impl AsciiArt {
+    fn add_pt(&mut self, x: isize, y: isize) {
+        if x >= 0 && x < self.width as isize {
+            if y >= 0 && y < self.height as isize {
+                // Note that numeric types don't implicitly convert to each other.
+                let v = y as usize;
+                let h = x as usize;
+
+                // Vector subscripting will normally copy the element, but &v[i]
+                // will return a reference which is what we need because the
+                // element is:
+                // 1) potentially large
+                // 2) needs to be modified
+                let row = &mut self.lines[v];
+                row[h] = self.fill;
+            }
+        }
+    }
+}
+
+// Allows AsciiArt to be converted to a string using the libcore ToString trait.
+// Note that the %s fmt! specifier will not call this automatically.
+impl fmt::Display for AsciiArt {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        // Convert each line into a string.
+        let lines = self.lines.iter()
+                              .map(|line| line.iter().cloned().collect())
+                              .collect::<Vec<String>>();
+
+        // Concatenate the lines together using a new-line.
+        write!(f, "{}", lines.join("\n"))
+    }
+}
+
+// This is similar to an interface in other languages: it defines a protocol which
+// developers can implement for arbitrary concrete types.
+trait Canvas {
+    fn add_point(&mut self, shape: Point);
+    fn add_rect(&mut self, shape: Rect);
+
+    // Unlike interfaces traits support default implementations.
+    // Got an ICE as soon as I added this method.
+    fn add_points(&mut self, shapes: &[Point]) {
+        for pt in shapes {self.add_point(*pt)};
+    }
+}
+
+// Here we provide an implementation of the Canvas methods for AsciiArt.
+// Other implementations could also be provided (e.g., for PDF or Apple's Quartz)
+// and code can use them polymorphically via the Canvas trait.
+impl Canvas for AsciiArt {
+    fn add_point(&mut self, shape: Point) {
+        self.add_pt(shape.x, shape.y);
+    }
+
+    fn add_rect(&mut self, shape: Rect) {
+        // Add the top and bottom lines.
+        for x in shape.top_left.x..shape.top_left.x + shape.size.width {
+            self.add_pt(x, shape.top_left.y);
+            self.add_pt(x, shape.top_left.y + shape.size.height - 1);
+        }
+
+        // Add the left and right lines.
+        for y in shape.top_left.y..shape.top_left.y + shape.size.height {
+            self.add_pt(shape.top_left.x, y);
+            self.add_pt(shape.top_left.x + shape.size.width - 1, y);
+        }
+    }
+}
+
+// Rust's unit testing framework is currently a bit under-developed so we'll use
+// this little helper.
+pub fn check_strs(actual: &str, expected: &str) -> bool {
+    if actual != expected {
+        println!("Found:\n{}\nbut expected\n{}", actual, expected);
+        return false;
+    }
+    return true;
+}
+
+
+fn test_ascii_art_ctor() {
+    let art = AsciiArt(3, 3, '*');
+    assert!(check_strs(&art.to_string(), "...\n...\n..."));
+}
+
+
+fn test_add_pt() {
+    let mut art = AsciiArt(3, 3, '*');
+    art.add_pt(0, 0);
+    art.add_pt(0, -10);
+    art.add_pt(1, 2);
+    assert!(check_strs(&art.to_string(), "*..\n...\n.*."));
+}
+
+
+fn test_shapes() {
+    let mut art = AsciiArt(4, 4, '*');
+    art.add_rect(Rect {top_left: Point {x: 0, y: 0}, size: Size {width: 4, height: 4}});
+    art.add_point(Point {x: 2, y: 2});
+    assert!(check_strs(&art.to_string(), "****\n*..*\n*.**\n****"));
+}
+
+pub fn main() {
+    test_ascii_art_ctor();
+    test_add_pt();
+    test_shapes();
+}
diff --git a/src/test/ui/issues/issue-3574.rs b/src/test/ui/issues/issue-3574.rs
new file mode 100644
index 00000000000..eb967577ffb
--- /dev/null
+++ b/src/test/ui/issues/issue-3574.rs
@@ -0,0 +1,14 @@
+// run-pass
+// rustc --test match_borrowed_str.rs.rs && ./match_borrowed_str.rs
+
+
+fn compare(x: &str, y: &str) -> bool {
+    match x {
+        "foo" => y == "foo",
+        _ => y == "bar",
+    }
+}
+
+pub fn main() {
+    assert!(compare("foo", "foo"));
+}
diff --git a/src/test/ui/issues/issue-35815.rs b/src/test/ui/issues/issue-35815.rs
new file mode 100644
index 00000000000..05fd1b15d43
--- /dev/null
+++ b/src/test/ui/issues/issue-35815.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+use std::mem;
+
+struct Foo<T: ?Sized> {
+    a: i64,
+    b: bool,
+    c: T,
+}
+
+fn main() {
+    let foo: &Foo<i32> = &Foo { a: 1, b: false, c: 2i32 };
+    let foo_unsized: &Foo<dyn Send> = foo;
+    assert_eq!(mem::size_of_val(foo), mem::size_of_val(foo_unsized));
+}
diff --git a/src/test/ui/issues/issue-36023.rs b/src/test/ui/issues/issue-36023.rs
new file mode 100644
index 00000000000..64d92bf8c3c
--- /dev/null
+++ b/src/test/ui/issues/issue-36023.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(unused_variables)]
+use std::ops::Deref;
+
+fn main() {
+    if env_var("FOOBAR").as_ref().map(Deref::deref).ok() == Some("yes") {
+        panic!()
+    }
+
+    let env_home: Result<String, ()> = Ok("foo-bar-baz".to_string());
+    let env_home = env_home.as_ref().map(Deref::deref).ok();
+
+    if env_home == Some("") { panic!() }
+}
+
+#[inline(never)]
+fn env_var(s: &str) -> Result<String, VarError> {
+    Err(VarError::NotPresent)
+}
+
+pub enum VarError {
+    NotPresent,
+    NotUnicode(String),
+}
diff --git a/src/test/ui/issues/issue-36036-associated-type-layout.rs b/src/test/ui/issues/issue-36036-associated-type-layout.rs
new file mode 100644
index 00000000000..022f9a5d556
--- /dev/null
+++ b/src/test/ui/issues/issue-36036-associated-type-layout.rs
@@ -0,0 +1,27 @@
+// run-pass
+// Issue 36036: computing the layout of a type composed from another
+// trait's associated type caused compiler to ICE when the associated
+// type was allowed to be unsized, even though the known instantiated
+// type is itself sized.
+
+#![allow(dead_code)]
+
+trait Context {
+    type Container: ?Sized;
+}
+
+impl Context for u16 {
+    type Container = u8;
+}
+
+struct Wrapper<C: Context+'static> {
+    container: &'static C::Container
+}
+
+fn foobar(_: Wrapper<u16>) {}
+
+static VALUE: u8 = 0;
+
+fn main() {
+    foobar(Wrapper { container: &VALUE });
+}
diff --git a/src/test/ui/issues/issue-36053.rs b/src/test/ui/issues/issue-36053.rs
new file mode 100644
index 00000000000..a61c02c0a12
--- /dev/null
+++ b/src/test/ui/issues/issue-36053.rs
@@ -0,0 +1,22 @@
+// run-pass
+// Regression test for #36053. ICE was caused due to obligations being
+// added to a special, dedicated fulfillment cx during a
+// probe. Problem seems to be related to the particular definition of
+// `FusedIterator` in std but I was not able to isolate that into an
+// external crate.
+
+use std::iter::FusedIterator;
+
+struct Thing<'a>(&'a str);
+impl<'a> Iterator for Thing<'a> {
+    type Item = &'a str;
+    fn next(&mut self) -> Option<&'a str> {
+        None
+    }
+}
+
+impl<'a> FusedIterator for Thing<'a> {}
+
+fn main() {
+    Thing("test").fuse().filter(|_| true).count();
+}
diff --git a/src/test/ui/issues/issue-36139-normalize-closure-sig.rs b/src/test/ui/issues/issue-36139-normalize-closure-sig.rs
new file mode 100644
index 00000000000..2d49151ffcc
--- /dev/null
+++ b/src/test/ui/issues/issue-36139-normalize-closure-sig.rs
@@ -0,0 +1,19 @@
+// run-pass
+// Previously the closure's argument would be inferred to
+// <S as ITrait<'a>>::Item, causing an error in MIR type
+// checking
+
+trait ITrait<'a> {type Item;}
+
+struct S {}
+
+impl<'a> ITrait<'a> for S { type Item = &'a mut usize; }
+
+fn m<T, I, F>(_: F)
+    where I: for<'a> ITrait<'a>,
+          F: for<'a> FnMut(<I as ITrait<'a>>::Item) { }
+
+
+fn main() {
+    m::<usize,S,_>(|x| { *x += 1; });
+}
diff --git a/src/test/ui/issues/issue-36260.rs b/src/test/ui/issues/issue-36260.rs
new file mode 100644
index 00000000000..d96dc80ea71
--- /dev/null
+++ b/src/test/ui/issues/issue-36260.rs
@@ -0,0 +1,13 @@
+// run-pass
+// Make sure this compiles without getting a linker error because of missing
+// drop-glue because the collector missed adding drop-glue for the closure:
+
+fn create_fn() -> Box<dyn Fn()> {
+    let text = String::new();
+
+    Box::new(move || { let _ = &text; })
+}
+
+fn main() {
+    let _ = create_fn();
+}
diff --git a/src/test/ui/issues/issue-36278-prefix-nesting.rs b/src/test/ui/issues/issue-36278-prefix-nesting.rs
new file mode 100644
index 00000000000..62d1f5f8258
--- /dev/null
+++ b/src/test/ui/issues/issue-36278-prefix-nesting.rs
@@ -0,0 +1,19 @@
+// run-pass
+// Issue 36278: On an unsized struct with >1 level of nontrivial
+// nesting, ensure we are computing dynamic size of prefix correctly.
+
+use std::mem;
+
+const SZ: usize = 100;
+struct P<T: ?Sized>([u8; SZ], T);
+
+type Ack<T> = P<P<T>>;
+
+fn main() {
+    let size_of_sized; let size_of_unsized;
+    let x: Box<Ack<[u8; 0]>> = Box::new(P([0; SZ], P([0; SZ], [0; 0])));
+    size_of_sized = mem::size_of_val::<Ack<_>>(&x);
+    let y: Box<Ack<[u8   ]>> = x;
+    size_of_unsized = mem::size_of_val::<Ack<_>>(&y);
+    assert_eq!(size_of_sized, size_of_unsized);
+}
diff --git a/src/test/ui/issues/issue-36381.rs b/src/test/ui/issues/issue-36381.rs
new file mode 100644
index 00000000000..7db56f1dce8
--- /dev/null
+++ b/src/test/ui/issues/issue-36381.rs
@@ -0,0 +1,25 @@
+// run-pass
+// Regression test for #36381. The monomorphization collector was asserting that
+// there are no projection types, but the `<&str as
+// StreamOnce>::Position` projection contained a late-bound region,
+// and we don't currently normalize in that case until the function is
+// actually invoked.
+
+pub trait StreamOnce {
+    type Position;
+}
+
+impl<'a> StreamOnce for &'a str {
+    type Position = usize;
+}
+
+pub fn parser<F>(_: F) {
+}
+
+fn follow(_: &str) -> <&str as StreamOnce>::Position {
+    panic!()
+}
+
+fn main() {
+    parser(follow);
+}
diff --git a/src/test/ui/issues/issue-36401.rs b/src/test/ui/issues/issue-36401.rs
new file mode 100644
index 00000000000..f51197b01c7
--- /dev/null
+++ b/src/test/ui/issues/issue-36401.rs
@@ -0,0 +1,16 @@
+// run-pass
+#[derive(Debug)]
+pub enum Event {
+    Key(u8),
+    Resize,
+    Unknown(u16),
+}
+
+static XTERM_SINGLE_BYTES : [(u8, Event); 1] = [(1,  Event::Resize)];
+
+fn main() {
+    match XTERM_SINGLE_BYTES[0] {
+        (1, Event::Resize) => {},
+        ref bad => panic!("unexpected {:?}", bad)
+    }
+}
diff --git a/src/test/ui/issues/issue-36474.rs b/src/test/ui/issues/issue-36474.rs
new file mode 100644
index 00000000000..90ee5b3cd4b
--- /dev/null
+++ b/src/test/ui/issues/issue-36474.rs
@@ -0,0 +1,31 @@
+// run-pass
+fn main() {
+    remove_axis(&3, 0);
+}
+
+trait Dimension {
+    fn slice(&self) -> &[usize];
+}
+
+impl Dimension for () {
+    fn slice(&self) -> &[usize] { &[] }
+}
+
+impl Dimension for usize {
+    fn slice(&self) -> &[usize] {
+        unsafe {
+            ::std::slice::from_raw_parts(self, 1)
+        }
+    }
+}
+
+fn remove_axis(value: &usize, axis: usize) -> () {
+    let tup = ();
+    let mut it = tup.slice().iter();
+    for (i, _) in value.slice().iter().enumerate() {
+        if i == axis {
+            continue;
+        }
+        it.next();
+    }
+}
diff --git a/src/test/ui/issues/issue-3656.rs b/src/test/ui/issues/issue-3656.rs
new file mode 100644
index 00000000000..d55a22a72b6
--- /dev/null
+++ b/src/test/ui/issues/issue-3656.rs
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(improper_ctypes)]
+
+// Issue #3656
+// Incorrect struct size computation in the FFI, because of not taking
+// the alignment of elements into account.
+
+// pretty-expanded FIXME #23616
+// ignore-wasm32-bare no libc to test with
+
+#![feature(rustc_private)]
+
+extern crate libc;
+use libc::{c_uint, uint32_t, c_void};
+
+pub struct KEYGEN {
+    hash_algorithm: [c_uint; 2],
+    count: uint32_t,
+    salt: *const c_void,
+    salt_size: uint32_t,
+}
+
+extern {
+    // Bogus signature, just need to test if it compiles.
+    pub fn malloc(data: KEYGEN);
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-36744-bitcast-args-if-needed.rs b/src/test/ui/issues/issue-36744-bitcast-args-if-needed.rs
new file mode 100644
index 00000000000..34bbb66d979
--- /dev/null
+++ b/src/test/ui/issues/issue-36744-bitcast-args-if-needed.rs
@@ -0,0 +1,23 @@
+// run-pass
+// This tests for an ICE (and, if ignored, subsequent LLVM abort) when
+// a lifetime-parametric fn is passed into a context whose expected
+// type has a differing lifetime parameterization.
+
+struct A<'a> {
+    _a: &'a i32,
+}
+
+fn call<T>(s: T, functions: &Vec<for <'n> fn(&'n T)>) {
+    for function in functions {
+        function(&s);
+    }
+}
+
+fn f(a: &A) { println!("a holds {}", a._a); }
+
+fn main() {
+    let a = A { _a: &10 };
+
+    let vec: Vec<for <'u,'v> fn(&'u A<'v>)> = vec![f];
+    call(a, &vec);
+}
diff --git a/src/test/ui/issues/issue-36768.rs b/src/test/ui/issues/issue-36768.rs
new file mode 100644
index 00000000000..f671cbc8205
--- /dev/null
+++ b/src/test/ui/issues/issue-36768.rs
@@ -0,0 +1,9 @@
+// run-pass
+// compile-flags:--test
+#![deny(private_in_public)]
+
+#[test] fn foo() {}
+mod foo {}
+
+#[test] fn core() {}
+extern crate core;
diff --git a/src/test/ui/issues/issue-36786-resolve-call.rs b/src/test/ui/issues/issue-36786-resolve-call.rs
new file mode 100644
index 00000000000..e5341ba7dbe
--- /dev/null
+++ b/src/test/ui/issues/issue-36786-resolve-call.rs
@@ -0,0 +1,8 @@
+// run-pass
+// Ensure that types that rely on obligations are autoderefed
+// correctly
+
+fn main() {
+    let x : Vec<Box<dyn Fn()>> = vec![Box::new(|| ())];
+    x[0]()
+}
diff --git a/src/test/ui/issues/issue-36792.rs b/src/test/ui/issues/issue-36792.rs
new file mode 100644
index 00000000000..99ae633dd0e
--- /dev/null
+++ b/src/test/ui/issues/issue-36792.rs
@@ -0,0 +1,7 @@
+// run-pass
+fn foo() -> impl Copy {
+    foo
+}
+fn main() {
+    foo();
+}
diff --git a/src/test/ui/issues/issue-36816.rs b/src/test/ui/issues/issue-36816.rs
new file mode 100644
index 00000000000..54690b43c46
--- /dev/null
+++ b/src/test/ui/issues/issue-36816.rs
@@ -0,0 +1,7 @@
+// run-pass
+macro_rules! m { () => { 1 } }
+macro_rules! n { () => { 1 + m!() } }
+
+fn main() {
+    let _: [u32; n!()] = [0, 0];
+}
diff --git a/src/test/ui/issues/issue-3683.rs b/src/test/ui/issues/issue-3683.rs
new file mode 100644
index 00000000000..b12c450c937
--- /dev/null
+++ b/src/test/ui/issues/issue-3683.rs
@@ -0,0 +1,18 @@
+// run-pass
+
+trait Foo {
+    fn a(&self) -> isize;
+    fn b(&self) -> isize {
+        self.a() + 2
+    }
+}
+
+impl Foo for isize {
+    fn a(&self) -> isize {
+        3
+    }
+}
+
+pub fn main() {
+    assert_eq!(3.b(), 5);
+}
diff --git a/src/test/ui/issues/issue-36856.rs b/src/test/ui/issues/issue-36856.rs
new file mode 100644
index 00000000000..f2dfaf3dd36
--- /dev/null
+++ b/src/test/ui/issues/issue-36856.rs
@@ -0,0 +1,15 @@
+// run-pass
+// Regression test for #36856.
+
+// compile-flags:-g
+
+fn g() -> bool {
+    false
+}
+
+pub fn main() {
+    let a = !g();
+    if a != !g() {
+        panic!();
+    }
+}
diff --git a/src/test/ui/issues/issue-36936.rs b/src/test/ui/issues/issue-36936.rs
new file mode 100644
index 00000000000..486a422b754
--- /dev/null
+++ b/src/test/ui/issues/issue-36936.rs
@@ -0,0 +1,26 @@
+// run-pass
+// check that casts are not being treated as lexprs.
+
+fn main() {
+    let mut a = 0i32;
+    let b = &(a as i32);
+    a = 1;
+    assert_ne!(&a as *const i32, b as *const i32);
+    assert_eq!(*b, 0);
+
+    assert_eq!(issue_36936(), 1);
+}
+
+
+struct A(u32);
+
+impl Drop for A {
+    fn drop(&mut self) {
+        self.0 = 0;
+    }
+}
+
+fn issue_36936() -> u32 {
+    let a = &(A(1) as A);
+    a.0
+}
diff --git a/src/test/ui/issues/issue-36954.rs b/src/test/ui/issues/issue-36954.rs
new file mode 100644
index 00000000000..56ff9926ef1
--- /dev/null
+++ b/src/test/ui/issues/issue-36954.rs
@@ -0,0 +1,8 @@
+// run-pass
+// aux-build:issue-36954.rs
+
+extern crate issue_36954 as lib;
+
+fn main() {
+    let _ = lib::FOO;
+}
diff --git a/src/test/ui/issues/issue-3702.rs b/src/test/ui/issues/issue-3702.rs
new file mode 100644
index 00000000000..f48d549b3eb
--- /dev/null
+++ b/src/test/ui/issues/issue-3702.rs
@@ -0,0 +1,13 @@
+// run-pass
+#![allow(dead_code)]
+
+pub fn main() {
+  trait Text {
+    fn to_string(&self) -> String;
+  }
+
+  fn to_string(t: Box<dyn Text>) {
+    println!("{}", (*t).to_string());
+  }
+
+}
diff --git a/src/test/ui/issues/issue-37109.rs b/src/test/ui/issues/issue-37109.rs
new file mode 100644
index 00000000000..1e57d5f95e8
--- /dev/null
+++ b/src/test/ui/issues/issue-37109.rs
@@ -0,0 +1,16 @@
+// run-pass
+trait ToRef<'a> {
+    type Ref: 'a;
+}
+
+impl<'a, U: 'a> ToRef<'a> for U {
+    type Ref = &'a U;
+}
+
+fn example<'a, T>(value: &'a T) -> (<T as ToRef<'a>>::Ref, u32) {
+    (value, 0)
+}
+
+fn main() {
+    example(&0);
+}
diff --git a/src/test/ui/issues/issue-37175.rs b/src/test/ui/issues/issue-37175.rs
new file mode 100644
index 00000000000..9ec9d48d18b
--- /dev/null
+++ b/src/test/ui/issues/issue-37175.rs
@@ -0,0 +1,5 @@
+// run-pass
+macro_rules! m { (<$t:ty>) => { stringify!($t) } }
+fn main() {
+    println!("{}", m!(<Vec<i32>>));
+}
diff --git a/src/test/ui/issues/issue-37222.rs b/src/test/ui/issues/issue-37222.rs
new file mode 100644
index 00000000000..8ea5f6b7a27
--- /dev/null
+++ b/src/test/ui/issues/issue-37222.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(dead_code)]
+#[derive(Debug, PartialEq)]
+enum Bar {
+    A(i64),
+    B(i32),
+    C,
+}
+
+#[derive(Debug, PartialEq)]
+struct Foo(Bar, u8);
+
+static FOO: [Foo; 2] = [Foo(Bar::C, 0), Foo(Bar::C, 0xFF)];
+
+fn main() {
+    assert_eq!(&FOO[1],  &Foo(Bar::C, 0xFF));
+}
diff --git a/src/test/ui/issues/issue-37291/auxiliary/lib.rs b/src/test/ui/issues/issue-37291/auxiliary/lib.rs
new file mode 100644
index 00000000000..1b163ee1391
--- /dev/null
+++ b/src/test/ui/issues/issue-37291/auxiliary/lib.rs
@@ -0,0 +1,42 @@
+#![crate_type = "lib"]
+
+use std::ops::Mul;
+
+pub trait A {}
+pub trait B {
+    type AT: A;
+}
+pub trait C {
+    type BT: B;
+}
+
+pub struct AV;
+impl A for AV {}
+
+pub struct BV;
+impl B for BV {
+    type AT = AV;
+}
+
+pub struct CV;
+impl C for CV {
+    type BT = BV;
+}
+
+pub struct WrapperB<T>(pub T);
+pub struct WrapperC<T>(pub T);
+
+impl<C1> Mul<WrapperB<<C1::BT as B>::AT>> for WrapperC<C1>
+    where C1: C
+{
+    type Output = u8;
+    fn mul(self, _: WrapperB<<C1::BT as B>::AT>) -> Self::Output {
+        loop {}
+    }
+}
+impl<C1> Mul<WrapperC<C1>> for WrapperC<C1> {
+    type Output = u8;
+    fn mul(self, _: WrapperC<C1>) -> Self::Output {
+        loop {}
+    }
+}
diff --git a/src/test/ui/issues/issue-37291/main.rs b/src/test/ui/issues/issue-37291/main.rs
new file mode 100644
index 00000000000..6fb6b50da20
--- /dev/null
+++ b/src/test/ui/issues/issue-37291/main.rs
@@ -0,0 +1,21 @@
+// run-pass
+#![allow(unused_imports)]
+// aux-build:lib.rs
+
+// Regression test for #37291. The problem was that the starting
+// environment for a specialization check was not including the
+// where-clauses from the impl when attempting to normalize the impl's
+// trait-ref, so things like `<C as Foo>::Item` could not resolve,
+// since the `C: Foo` trait bound was not included in the environment.
+
+extern crate lib;
+
+use lib::{CV, WrapperB, WrapperC};
+
+fn main() {
+    let a = WrapperC(CV);
+    let b = WrapperC(CV);
+    if false {
+        let _ = a * b;
+    }
+}
diff --git a/src/test/ui/issues/issue-3743.rs b/src/test/ui/issues/issue-3743.rs
new file mode 100644
index 00000000000..07741914f80
--- /dev/null
+++ b/src/test/ui/issues/issue-3743.rs
@@ -0,0 +1,55 @@
+// run-pass
+// If `Mul` used an associated type for its output, this test would
+// work more smoothly.
+
+use std::ops::Mul;
+
+#[derive(Copy, Clone)]
+struct Vec2 {
+    x: f64,
+    y: f64
+}
+
+// methods we want to export as methods as well as operators
+impl Vec2 {
+#[inline(always)]
+    fn vmul(self, other: f64) -> Vec2 {
+        Vec2 { x: self.x * other, y: self.y * other }
+    }
+}
+
+// Right-hand-side operator visitor pattern
+trait RhsOfVec2Mul {
+    type Result;
+
+    fn mul_vec2_by(&self, lhs: &Vec2) -> Self::Result;
+}
+
+// Vec2's implementation of Mul "from the other side" using the above trait
+impl<Res, Rhs: RhsOfVec2Mul<Result=Res>> Mul<Rhs> for Vec2 {
+    type Output = Res;
+
+    fn mul(self, rhs: Rhs) -> Res { rhs.mul_vec2_by(&self) }
+}
+
+// Implementation of 'f64 as right-hand-side of Vec2::Mul'
+impl RhsOfVec2Mul for f64 {
+    type Result = Vec2;
+
+    fn mul_vec2_by(&self, lhs: &Vec2) -> Vec2 { lhs.vmul(*self) }
+}
+
+// Usage with failing inference
+pub fn main() {
+    let a = Vec2 { x: 3.0f64, y: 4.0f64 };
+
+    // the following compiles and works properly
+    let v1: Vec2 = a * 3.0f64;
+    println!("{} {}", v1.x, v1.y);
+
+    // the following compiles but v2 will not be Vec2 yet and
+    // using it later will cause an error that the type of v2
+    // must be known
+    let v2 = a * 3.0f64;
+    println!("{} {}", v2.x, v2.y); // error regarding v2's type
+}
diff --git a/src/test/ui/issues/issue-3753.rs b/src/test/ui/issues/issue-3753.rs
new file mode 100644
index 00000000000..dc9e42bad97
--- /dev/null
+++ b/src/test/ui/issues/issue-3753.rs
@@ -0,0 +1,32 @@
+// run-pass
+// Issue #3656
+// Issue Name: pub method preceded by attribute can't be parsed
+// Abstract: Visibility parsing failed when compiler parsing
+
+use std::f64;
+
+#[derive(Copy, Clone)]
+pub struct Point {
+    x: f64,
+    y: f64
+}
+
+#[derive(Copy, Clone)]
+pub enum Shape {
+    Circle(Point, f64),
+    Rectangle(Point, Point)
+}
+
+impl Shape {
+    pub fn area(&self, sh: Shape) -> f64 {
+        match sh {
+            Shape::Circle(_, size) => f64::consts::PI * size * size,
+            Shape::Rectangle(Point {x, y}, Point {x: x2, y: y2}) => (x2 - x) * (y2 - y)
+        }
+    }
+}
+
+pub fn main(){
+    let s = Shape::Circle(Point { x: 1.0, y: 2.0 }, 3.0);
+    println!("{}", s.area(s));
+}
diff --git a/src/test/ui/issues/issue-37686.rs b/src/test/ui/issues/issue-37686.rs
new file mode 100644
index 00000000000..8c376251449
--- /dev/null
+++ b/src/test/ui/issues/issue-37686.rs
@@ -0,0 +1,7 @@
+// run-pass
+fn main() {
+    match (0, 0) {
+        (std::usize::MIN, std::usize::MAX) => {}
+        _ => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-3794.rs b/src/test/ui/issues/issue-3794.rs
new file mode 100644
index 00000000000..408d8d866d8
--- /dev/null
+++ b/src/test/ui/issues/issue-3794.rs
@@ -0,0 +1,32 @@
+// run-pass
+#![feature(box_syntax)]
+
+trait T {
+    fn print(&self);
+}
+
+#[derive(Debug)]
+struct S {
+    s: isize,
+}
+
+impl T for S {
+    fn print(&self) {
+        println!("{:?}", self);
+    }
+}
+
+fn print_t(t: &dyn T) {
+    t.print();
+}
+
+fn print_s(s: &S) {
+    s.print();
+}
+
+pub fn main() {
+    let s: Box<S> = box S { s: 5 };
+    print_s(&*s);
+    let t: Box<dyn T> = s as Box<dyn T>;
+    print_t(&*t);
+}
diff --git a/src/test/ui/issues/issue-37991.rs b/src/test/ui/issues/issue-37991.rs
new file mode 100644
index 00000000000..a6ac4d5ca2e
--- /dev/null
+++ b/src/test/ui/issues/issue-37991.rs
@@ -0,0 +1,17 @@
+// run-pass
+
+const fn foo() -> i64 {
+    3
+}
+
+const fn bar(x: i64) -> i64 {
+    x*2
+}
+
+fn main() {
+    let val = &(foo() % 2);
+    assert_eq!(*val, 1);
+
+    let val2 = &(bar(1+1) % 3);
+    assert_eq!(*val2, 1);
+}
diff --git a/src/test/ui/issues/issue-38002.rs b/src/test/ui/issues/issue-38002.rs
new file mode 100644
index 00000000000..fdb31fc44a1
--- /dev/null
+++ b/src/test/ui/issues/issue-38002.rs
@@ -0,0 +1,35 @@
+// run-pass
+#![allow(dead_code)]
+// Check that constant ADTs are codegened OK, part k of N.
+
+enum Bar {
+    C
+}
+
+enum Foo {
+    A {},
+    B {
+        y: usize,
+        z: Bar
+    },
+}
+
+const LIST: [(usize, Foo); 2] = [
+    (51, Foo::B { y: 42, z: Bar::C }),
+    (52, Foo::B { y: 45, z: Bar::C }),
+];
+
+pub fn main() {
+    match LIST {
+        [
+            (51, Foo::B { y: 42, z: Bar::C }),
+            (52, Foo::B { y: 45, z: Bar::C })
+        ] => {}
+        _ => {
+            // I would want to print the enum here, but if
+            // the discriminant is garbage this causes an
+            // `unreachable` and silent process exit.
+            panic!("trivial match failed")
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-38033.rs b/src/test/ui/issues/issue-38033.rs
new file mode 100644
index 00000000000..16b867ec88f
--- /dev/null
+++ b/src/test/ui/issues/issue-38033.rs
@@ -0,0 +1,79 @@
+// run-pass
+use std::marker;
+use std::mem;
+
+fn main() {
+    let workers = (0..0).map(|_| result::<u32, ()>());
+    drop(join_all(workers).poll());
+}
+
+trait Future {
+    type Item;
+    type Error;
+
+    fn poll(&mut self) -> Result<Self::Item, Self::Error>;
+}
+
+trait IntoFuture {
+    type Future: Future<Item=Self::Item, Error=Self::Error>;
+    type Item;
+    type Error;
+
+    fn into_future(self) -> Self::Future;
+}
+
+impl<F: Future> IntoFuture for F {
+    type Future = F;
+    type Item = F::Item;
+    type Error = F::Error;
+
+    fn into_future(self) -> F {
+        self
+    }
+}
+
+struct FutureResult<T, E> {
+    _inner: marker::PhantomData<(T, E)>,
+}
+
+fn result<T, E>() -> FutureResult<T, E> {
+    loop {}
+}
+
+impl<T, E> Future for FutureResult<T, E> {
+    type Item = T;
+    type Error = E;
+
+    fn poll(&mut self) -> Result<T, E> {
+        loop {}
+    }
+}
+
+struct JoinAll<I>
+    where I: IntoIterator,
+          I::Item: IntoFuture,
+{
+    elems: Vec<<I::Item as IntoFuture>::Item>,
+}
+
+fn join_all<I>(_: I) -> JoinAll<I>
+    where I: IntoIterator,
+          I::Item: IntoFuture,
+{
+    JoinAll { elems: vec![] }
+}
+
+impl<I> Future for JoinAll<I>
+    where I: IntoIterator,
+          I::Item: IntoFuture,
+{
+    type Item = Vec<<I::Item as IntoFuture>::Item>;
+    type Error = <I::Item as IntoFuture>::Error;
+
+    fn poll(&mut self) -> Result<Self::Item, Self::Error> {
+        let elems = mem::replace(&mut self.elems, Vec::new());
+        Ok(elems.into_iter().map(|e| {
+            e
+        }).collect::<Vec<_>>())
+    }
+}
diff --git a/src/test/ui/issues/issue-38074.rs b/src/test/ui/issues/issue-38074.rs
new file mode 100644
index 00000000000..214d6752cef
--- /dev/null
+++ b/src/test/ui/issues/issue-38074.rs
@@ -0,0 +1,20 @@
+// run-pass
+// ignore-emscripten FIXME(#45351)
+
+#![feature(platform_intrinsics, repr_simd)]
+
+extern "platform-intrinsic" {
+    fn simd_shuffle2<T, U>(x: T, y: T, idx: [u32; 2]) -> U;
+}
+
+#[repr(simd)]
+#[derive(Clone, Copy)]
+#[allow(non_camel_case_types)]
+struct u64x2(u64, u64);
+
+fn main() {
+    let a = u64x2(1, 2);
+    let r: u64x2 = unsafe { simd_shuffle2(a, a, [0-0, 0-0]) };
+    assert_eq!(r.0, 1);
+    assert_eq!(r.1, 1);
+}
diff --git a/src/test/ui/issues/issue-38091.rs b/src/test/ui/issues/issue-38091.rs
new file mode 100644
index 00000000000..00aa810f830
--- /dev/null
+++ b/src/test/ui/issues/issue-38091.rs
@@ -0,0 +1,20 @@
+// run-pass
+#![feature(specialization)]
+
+trait Iterate<'a> {
+    type Ty: Valid;
+    fn iterate(self);
+}
+impl<'a, T> Iterate<'a> for T where T: Check {
+    default type Ty = ();
+    default fn iterate(self) {}
+}
+
+trait Check {}
+impl<'a, T> Check for T where <T as Iterate<'a>>::Ty: Valid {}
+
+trait Valid {}
+
+fn main() {
+    Iterate::iterate(0);
+}
diff --git a/src/test/ui/issues/issue-38190.rs b/src/test/ui/issues/issue-38190.rs
new file mode 100644
index 00000000000..cfa0420c80d
--- /dev/null
+++ b/src/test/ui/issues/issue-38190.rs
@@ -0,0 +1,15 @@
+// run-pass
+// aux-build:issue-38190.rs
+// ignore-pretty issue #37195
+
+#[macro_use]
+extern crate issue_38190;
+
+mod auxiliary {
+    m!([
+        #[path = "issue-38190.rs"]
+        mod issue_38190;
+    ]);
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-38226.rs b/src/test/ui/issues/issue-38226.rs
new file mode 100644
index 00000000000..3213e3618a8
--- /dev/null
+++ b/src/test/ui/issues/issue-38226.rs
@@ -0,0 +1,15 @@
+// run-pass
+// This test makes sure that we don't run into a linker error because of the
+// middle::reachable pass missing trait methods with default impls.
+
+// aux-build:issue-38226-aux.rs
+
+// Need -Cno-prepopulate-passes to really disable inlining, otherwise the faulty
+// code gets optimized out:
+// compile-flags: -Cno-prepopulate-passes -Cpasses=name-anon-globals
+
+extern crate issue_38226_aux;
+
+fn main() {
+    issue_38226_aux::foo::<()>();
+}
diff --git a/src/test/ui/issues/issue-38437.rs b/src/test/ui/issues/issue-38437.rs
new file mode 100644
index 00000000000..e1412169065
--- /dev/null
+++ b/src/test/ui/issues/issue-38437.rs
@@ -0,0 +1,46 @@
+// run-pass
+#![allow(dead_code)]
+// Check that drop elaboration clears the "master" discriminant
+// drop flag even if it protects no fields.
+
+struct Good(usize);
+impl Drop for Good {
+    #[inline(never)]
+    fn drop(&mut self) {
+        println!("dropping Good({})", self.0);
+    }
+}
+
+struct Void;
+impl Drop for Void {
+    #[inline(never)]
+    fn drop(&mut self) {
+        panic!("Suddenly, a Void appears.");
+    }
+}
+
+enum E {
+    Never(Void),
+    Fine(Good)
+}
+
+fn main() {
+    let mut go = true;
+
+    loop {
+        let next;
+        match go {
+            true => next = E::Fine(Good(123)),
+            false => return,
+        }
+
+        match next {
+            E::Never(_) => return,
+            E::Fine(_good) => go = false,
+        }
+
+        // `next` is dropped and StorageDead'd here. We must reset the
+        // discriminant's drop flag to avoid random variants being
+        // dropped.
+    }
+}
diff --git a/src/test/ui/issues/issue-3847.rs b/src/test/ui/issues/issue-3847.rs
new file mode 100644
index 00000000000..16e0b00b39a
--- /dev/null
+++ b/src/test/ui/issues/issue-3847.rs
@@ -0,0 +1,13 @@
+// run-pass
+mod buildings {
+    pub struct Tower { pub height: usize }
+}
+
+pub fn main() {
+    let sears = buildings::Tower { height: 1451 };
+    let h: usize = match sears {
+        buildings::Tower { height: h } => { h }
+    };
+
+    println!("{}", h);
+}
diff --git a/src/test/ui/issues/issue-38556.rs b/src/test/ui/issues/issue-38556.rs
new file mode 100644
index 00000000000..63fd9db08ff
--- /dev/null
+++ b/src/test/ui/issues/issue-38556.rs
@@ -0,0 +1,13 @@
+// run-pass
+#![allow(dead_code)]
+pub struct Foo;
+
+macro_rules! reexport {
+    () => { use Foo as Bar; }
+}
+
+reexport!();
+
+fn main() {
+    fn f(_: Bar) {}
+}
diff --git a/src/test/ui/issues/issue-38763.rs b/src/test/ui/issues/issue-38763.rs
new file mode 100644
index 00000000000..6e6de09225f
--- /dev/null
+++ b/src/test/ui/issues/issue-38763.rs
@@ -0,0 +1,12 @@
+// run-pass
+// ignore-emscripten
+
+#[repr(C)]
+pub struct Foo(i128);
+
+#[no_mangle]
+pub extern "C" fn foo(x: Foo) -> Foo { x }
+
+fn main() {
+    foo(Foo(1));
+}
diff --git a/src/test/ui/issues/issue-3878.rs b/src/test/ui/issues/issue-3878.rs
new file mode 100644
index 00000000000..a121f0ba878
--- /dev/null
+++ b/src/test/ui/issues/issue-3878.rs
@@ -0,0 +1,10 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![allow(path_statements)]
+#![feature(box_syntax)]
+
+pub fn main() {
+    let y: Box<_> = box 1;
+    y;
+}
diff --git a/src/test/ui/issues/issue-38942.rs b/src/test/ui/issues/issue-38942.rs
new file mode 100644
index 00000000000..308bdd6e28c
--- /dev/null
+++ b/src/test/ui/issues/issue-38942.rs
@@ -0,0 +1,17 @@
+// run-pass
+// See https://github.com/rust-lang/rust/issues/38942
+
+#[repr(u64)]
+pub enum NSEventType {
+    NSEventTypePressure,
+}
+
+pub const A: u64 = NSEventType::NSEventTypePressure as u64;
+
+fn banana() -> u64 {
+    A
+}
+
+fn main() {
+    println!("banana! {}", banana());
+}
diff --git a/src/test/ui/issues/issue-3895.rs b/src/test/ui/issues/issue-3895.rs
new file mode 100644
index 00000000000..c560ca60dd3
--- /dev/null
+++ b/src/test/ui/issues/issue-3895.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+
+pub fn main() {
+    enum State { BadChar, BadSyntax }
+
+    match State::BadChar {
+        _ if true => State::BadChar,
+        State::BadChar | State::BadSyntax => panic!() ,
+    };
+}
diff --git a/src/test/ui/issues/issue-38987.rs b/src/test/ui/issues/issue-38987.rs
new file mode 100644
index 00000000000..cb4e1b0d409
--- /dev/null
+++ b/src/test/ui/issues/issue-38987.rs
@@ -0,0 +1,4 @@
+// run-pass
+fn main() {
+    let _ = -0x8000_0000_0000_0000_0000_0000_0000_0000i128;
+}
diff --git a/src/test/ui/issues/issue-3904.rs b/src/test/ui/issues/issue-3904.rs
new file mode 100644
index 00000000000..7beb91a28d2
--- /dev/null
+++ b/src/test/ui/issues/issue-3904.rs
@@ -0,0 +1,25 @@
+// run-pass
+fn example_err(prog: &str, arg: &str) {
+    println!("{}: {}", prog, arg)
+}
+
+fn exit<F>(print: F, prog: &str, arg: &str) where F: FnOnce(&str, &str) {
+    print(prog, arg);
+}
+
+struct X<F> where F: FnOnce(&str, &str) {
+    err: F,
+}
+
+impl<F> X<F> where F: FnOnce(&str, &str) {
+    pub fn boom(self) {
+        exit(self.err, "prog", "arg");
+    }
+}
+
+pub fn main(){
+    let val = X {
+        err: example_err,
+    };
+    val.boom();
+}
diff --git a/src/test/ui/issues/issue-39292.rs b/src/test/ui/issues/issue-39292.rs
new file mode 100644
index 00000000000..968cf08916f
--- /dev/null
+++ b/src/test/ui/issues/issue-39292.rs
@@ -0,0 +1,17 @@
+// run-pass
+// Regression test for issue #39292. The object vtable was being
+// incorrectly left with a null pointer.
+
+trait Foo<T> {
+    fn print<'a>(&'a self) where T: 'a { println!("foo"); }
+}
+
+impl<'a> Foo<&'a ()> for () { }
+
+trait Bar: for<'a> Foo<&'a ()> { }
+
+impl Bar for () {}
+
+fn main() {
+    (&() as &dyn Bar).print(); // Segfault
+}
diff --git a/src/test/ui/issues/issue-3935.rs b/src/test/ui/issues/issue-3935.rs
new file mode 100644
index 00000000000..e98d68e0eb2
--- /dev/null
+++ b/src/test/ui/issues/issue-3935.rs
@@ -0,0 +1,13 @@
+// run-pass
+
+#[derive(PartialEq)]
+struct Bike {
+    name: String,
+}
+
+pub fn main() {
+    let town_bike = Bike { name: "schwinn".to_string() };
+    let my_bike = Bike { name: "surly".to_string() };
+
+    assert!(town_bike != my_bike);
+}
diff --git a/src/test/ui/issues/issue-39367.rs b/src/test/ui/issues/issue-39367.rs
new file mode 100644
index 00000000000..8314be3d14c
--- /dev/null
+++ b/src/test/ui/issues/issue-39367.rs
@@ -0,0 +1,39 @@
+// run-pass
+use std::ops::Deref;
+
+struct ArenaSet<U: Deref, V=<U as Deref>::Target>(U, &'static V)
+    where V: 'static + ?Sized;
+
+static Z: [u8; 4] = [1,2,3,4];
+
+fn arena() -> &'static ArenaSet<Vec<u8>> {
+    fn __static_ref_initialize() -> ArenaSet<Vec<u8>> {
+        ArenaSet(vec![], &Z)
+    }
+    unsafe {
+        use std::sync::Once;
+        fn require_sync<T: Sync>(_: &T) { }
+        unsafe fn __stability() -> &'static ArenaSet<Vec<u8>> {
+            use std::mem::transmute;
+            static mut DATA: *const ArenaSet<Vec<u8>> = std::ptr::null_mut();
+
+            static mut ONCE: Once = Once::new();
+            ONCE.call_once(|| {
+                DATA = transmute
+                    ::<Box<ArenaSet<Vec<u8>>>, *const ArenaSet<Vec<u8>>>
+                    (Box::new(__static_ref_initialize()));
+            });
+
+            &*DATA
+        }
+        let static_ref = __stability();
+        require_sync(static_ref);
+        static_ref
+    }
+}
+
+fn main() {
+    let &ArenaSet(ref u, v) = arena();
+    assert!(u.is_empty());
+    assert_eq!(v, Z);
+}
diff --git a/src/test/ui/issues/issue-39548.rs b/src/test/ui/issues/issue-39548.rs
new file mode 100644
index 00000000000..304e37bf3d6
--- /dev/null
+++ b/src/test/ui/issues/issue-39548.rs
@@ -0,0 +1,6 @@
+// run-pass
+type Array = [(); ((1 < 2) == false) as usize];
+
+fn main() {
+    let _: Array = [];
+}
diff --git a/src/test/ui/issues/issue-39709.rs b/src/test/ui/issues/issue-39709.rs
new file mode 100644
index 00000000000..69ef2700ef3
--- /dev/null
+++ b/src/test/ui/issues/issue-39709.rs
@@ -0,0 +1,5 @@
+// run-pass
+#![allow(unused_macros)]
+fn main() {
+    println!("{}", { macro_rules! x { ($(t:tt)*) => {} } 33 });
+}
diff --git a/src/test/ui/issues/issue-39720.rs b/src/test/ui/issues/issue-39720.rs
new file mode 100644
index 00000000000..a3baa361d57
--- /dev/null
+++ b/src/test/ui/issues/issue-39720.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(non_snake_case)]
+
+// ignore-emscripten FIXME(#45351)
+
+#![feature(repr_simd, platform_intrinsics)]
+
+#[repr(C)]
+#[repr(simd)]
+#[derive(Copy, Clone, Debug)]
+pub struct char3(pub i8, pub i8, pub i8);
+
+#[repr(C)]
+#[repr(simd)]
+#[derive(Copy, Clone, Debug)]
+pub struct short3(pub i16, pub i16, pub i16);
+
+extern "platform-intrinsic" {
+    fn simd_cast<T, U>(x: T) -> U;
+}
+
+fn main() {
+    let cast: short3 = unsafe { simd_cast(char3(10, -3, -9)) };
+
+    println!("{:?}", cast);
+}
diff --git a/src/test/ui/issues/issue-39720.stderr b/src/test/ui/issues/issue-39720.stderr
new file mode 100644
index 00000000000..8121ed28940
--- /dev/null
+++ b/src/test/ui/issues/issue-39720.stderr
@@ -0,0 +1,16 @@
+warning[E0566]: conflicting representation hints
+  --> $DIR/issue-39720.rs:8:8
+   |
+LL | #[repr(C)]
+   |        ^
+LL | #[repr(simd)]
+   |        ^^^^
+
+warning[E0566]: conflicting representation hints
+  --> $DIR/issue-39720.rs:13:8
+   |
+LL | #[repr(C)]
+   |        ^
+LL | #[repr(simd)]
+   |        ^^^^
+
diff --git a/src/test/ui/issues/issue-3979-generics.rs b/src/test/ui/issues/issue-3979-generics.rs
new file mode 100644
index 00000000000..519de1cad6e
--- /dev/null
+++ b/src/test/ui/issues/issue-3979-generics.rs
@@ -0,0 +1,36 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_snake_case)]
+
+use std::ops::Add;
+
+trait Positioned<S> {
+  fn SetX(&mut self, _: S);
+  fn X(&self) -> S;
+}
+
+trait Movable<S: Add<Output=S>>: Positioned<S> {
+  fn translate(&mut self, dx: S) {
+    let x = self.X() + dx;
+    self.SetX(x);
+  }
+}
+
+struct Point { x: isize, y: isize }
+
+impl Positioned<isize> for Point {
+    fn SetX(&mut self, x: isize) {
+        self.x = x;
+    }
+    fn X(&self) -> isize {
+        self.x
+    }
+}
+
+impl Movable<isize> for Point {}
+
+pub fn main() {
+    let mut p = Point{ x: 1, y: 2};
+    p.translate(3);
+    assert_eq!(p.X(), 4);
+}
diff --git a/src/test/ui/issues/issue-3979-xcrate.rs b/src/test/ui/issues/issue-3979-xcrate.rs
new file mode 100644
index 00000000000..fcb1f55c32f
--- /dev/null
+++ b/src/test/ui/issues/issue-3979-xcrate.rs
@@ -0,0 +1,25 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-3979-traits.rs
+
+extern crate issue_3979_traits;
+use issue_3979_traits::{Positioned, Movable};
+
+struct Point { x: isize, y: isize }
+
+impl Positioned for Point {
+    fn SetX(&mut self, x: isize) {
+        self.x = x;
+    }
+    fn X(&self) -> isize {
+        self.x
+    }
+}
+
+impl Movable for Point {}
+
+pub fn main() {
+    let mut p = Point{ x: 1, y: 2};
+    p.translate(3);
+    assert_eq!(p.X(), 4);
+}
diff --git a/src/test/ui/issues/issue-3979.rs b/src/test/ui/issues/issue-3979.rs
new file mode 100644
index 00000000000..72949d8c757
--- /dev/null
+++ b/src/test/ui/issues/issue-3979.rs
@@ -0,0 +1,34 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_snake_case)]
+
+trait Positioned {
+  fn SetX(&mut self, _: isize);
+  fn X(&self) -> isize;
+}
+
+trait Movable: Positioned {
+  fn translate(&mut self, dx: isize) {
+    let x = self.X();
+    self.SetX(x + dx);
+  }
+}
+
+struct Point { x: isize, y: isize }
+
+impl Positioned for Point {
+    fn SetX(&mut self, x: isize) {
+        self.x = x;
+    }
+    fn X(&self) -> isize {
+        self.x
+    }
+}
+
+impl Movable for Point {}
+
+pub fn main() {
+    let mut p = Point{ x: 1, y: 2};
+    p.translate(3);
+    assert_eq!(p.X(), 4);
+}
diff --git a/src/test/ui/issues/issue-39808.rs b/src/test/ui/issues/issue-39808.rs
new file mode 100644
index 00000000000..a4701367373
--- /dev/null
+++ b/src/test/ui/issues/issue-39808.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(unreachable_code)]
+
+// Regression test for #39808. The type parameter of `Owned` was
+// considered to be "unconstrained" because the type resulting from
+// `format!` (`String`) was not being propagated upward, owing to the
+// fact that the expression diverges.
+
+use std::borrow::Cow;
+
+fn main() {
+    let _ = if false {
+        Cow::Owned(format!("{:?}", panic!()))
+    } else {
+        Cow::Borrowed("")
+    };
+}
diff --git a/src/test/ui/issues/issue-39823.rs b/src/test/ui/issues/issue-39823.rs
new file mode 100644
index 00000000000..148cf527e7c
--- /dev/null
+++ b/src/test/ui/issues/issue-39823.rs
@@ -0,0 +1,25 @@
+// run-pass
+// aux-build:issue-39823.rs
+
+extern crate issue_39823;
+use issue_39823::{RemoteC, RemoteG};
+
+#[derive(Debug, PartialEq)]
+struct LocalC(u32);
+
+#[derive(Debug, PartialEq)]
+struct LocalG<T>(T);
+
+fn main() {
+    let virtual_localc : &dyn Fn(_) -> LocalC = &LocalC;
+    assert_eq!(virtual_localc(1), LocalC(1));
+
+    let virtual_localg : &dyn Fn(_) -> LocalG<u32> = &LocalG;
+    assert_eq!(virtual_localg(1), LocalG(1));
+
+    let virtual_remotec : &dyn Fn(_) -> RemoteC = &RemoteC;
+    assert_eq!(virtual_remotec(1), RemoteC(1));
+
+    let virtual_remoteg : &dyn Fn(_) -> RemoteG<u32> = &RemoteG;
+    assert_eq!(virtual_remoteg(1), RemoteG(1));
+}
diff --git a/src/test/ui/issues/issue-39827.rs b/src/test/ui/issues/issue-39827.rs
new file mode 100644
index 00000000000..782c668c843
--- /dev/null
+++ b/src/test/ui/issues/issue-39827.rs
@@ -0,0 +1,34 @@
+// run-pass
+#![feature(core_intrinsics)]
+
+use std::intrinsics::{ volatile_copy_memory, volatile_store, volatile_load,
+                       volatile_copy_nonoverlapping_memory,
+                       volatile_set_memory };
+
+//
+// This test ensures that volatile intrinsics can be specialised with
+// zero-sized types and, in case of copy/set functions, can accept
+// number of elements equal to zero.
+//
+fn main () {
+    let mut dst_pair = (1, 2);
+    let src_pair = (3, 4);
+    let mut dst_empty = ();
+    let src_empty = ();
+
+    const COUNT_0: usize = 0;
+    const COUNT_100: usize = 100;
+
+    unsafe {
+        volatile_copy_memory(&mut dst_pair, &dst_pair, COUNT_0);
+        volatile_copy_nonoverlapping_memory(&mut dst_pair, &src_pair, 0);
+        volatile_copy_memory(&mut dst_empty, &dst_empty, 100);
+        volatile_copy_nonoverlapping_memory(&mut dst_empty, &src_empty,
+                                            COUNT_100);
+        volatile_set_memory(&mut dst_empty, 0, COUNT_100);
+        volatile_set_memory(&mut dst_pair, 0, COUNT_0);
+        volatile_store(&mut dst_empty, ());
+        volatile_store(&mut dst_empty, src_empty);
+        volatile_load(&src_empty);
+    }
+}
diff --git a/src/test/ui/issues/issue-40003.rs b/src/test/ui/issues/issue-40003.rs
new file mode 100644
index 00000000000..642de6b8fe3
--- /dev/null
+++ b/src/test/ui/issues/issue-40003.rs
@@ -0,0 +1,178 @@
+// run-pass
+#![allow(unused_must_use)]
+fn main() {
+    if false { test(); }
+}
+
+fn test() {
+    let rx = Err::<Vec<usize>, u32>(1).into_future();
+
+    rx.map(|l: Vec<usize>| stream::iter(l.into_iter().map(|i| Ok(i))))
+      .flatten_stream()
+      .chunks(50)
+      .buffer_unordered(5);
+}
+
+use future::{Future, IntoFuture};
+mod future {
+    use std::result;
+
+    use {stream, Stream};
+
+    pub trait Future {
+        type Item;
+        type Error;
+
+        fn map<F, U>(self, _: F) -> Map<Self, F>
+            where F: FnOnce(Self::Item) -> U,
+                  Self: Sized,
+        {
+            panic!()
+        }
+
+        fn flatten_stream(self) -> FlattenStream<Self>
+            where <Self as Future>::Item: stream::Stream<Error=Self::Error>,
+                  Self: Sized
+        {
+            panic!()
+        }
+    }
+
+    pub trait IntoFuture {
+        type Future: Future<Item=Self::Item, Error=Self::Error>;
+        type Item;
+        type Error;
+        fn into_future(self) -> Self::Future;
+    }
+
+    impl<F: Future> IntoFuture for F {
+        type Future = F;
+        type Item = F::Item;
+        type Error = F::Error;
+
+        fn into_future(self) -> F {
+            panic!()
+        }
+    }
+
+    impl<T, E> IntoFuture for result::Result<T, E> {
+        type Future = FutureResult<T, E>;
+        type Item = T;
+        type Error = E;
+
+        fn into_future(self) -> FutureResult<T, E> {
+            panic!()
+        }
+    }
+
+    pub struct Map<A, F> {
+        _a: (A, F),
+    }
+
+    impl<U, A, F> Future for Map<A, F>
+        where A: Future,
+              F: FnOnce(A::Item) -> U,
+    {
+        type Item = U;
+        type Error = A::Error;
+    }
+
+    pub struct FlattenStream<F> {
+        _f: F,
+    }
+
+    impl<F> Stream for FlattenStream<F>
+        where F: Future,
+              <F as Future>::Item: Stream<Error=F::Error>,
+    {
+        type Item = <F::Item as Stream>::Item;
+        type Error = <F::Item as Stream>::Error;
+    }
+
+    pub struct FutureResult<T, E> {
+        _inner: (T, E),
+    }
+
+    impl<T, E> Future for FutureResult<T, E> {
+        type Item = T;
+        type Error = E;
+    }
+}
+
+mod stream {
+    use IntoFuture;
+
+    pub trait Stream {
+        type Item;
+        type Error;
+
+        fn buffer_unordered(self, amt: usize) -> BufferUnordered<Self>
+            where Self::Item: IntoFuture<Error = <Self as Stream>::Error>,
+                  Self: Sized
+        {
+            new(self, amt)
+        }
+
+        fn chunks(self, _capacity: usize) -> Chunks<Self>
+            where Self: Sized
+        {
+            panic!()
+        }
+    }
+
+    pub struct IterStream<I> {
+        _iter: I,
+    }
+
+    pub fn iter<J, T, E>(_: J) -> IterStream<J::IntoIter>
+        where J: IntoIterator<Item=Result<T, E>>,
+    {
+        panic!()
+    }
+
+    impl<I, T, E> Stream for IterStream<I>
+        where I: Iterator<Item=Result<T, E>>,
+    {
+        type Item = T;
+        type Error = E;
+    }
+
+    pub struct Chunks<S> {
+        _stream: S
+    }
+
+    impl<S> Stream for Chunks<S>
+        where S: Stream
+    {
+        type Item = Result<Vec<<S as Stream>::Item>, u32>;
+        type Error = <S as Stream>::Error;
+    }
+
+    pub struct BufferUnordered<S> {
+        _stream: S,
+    }
+
+    enum Slot<T> {
+        Next(usize),
+        _Data { _a: T },
+    }
+
+    fn new<S>(_s: S, _amt: usize) -> BufferUnordered<S>
+        where S: Stream,
+              S::Item: IntoFuture<Error=<S as Stream>::Error>,
+    {
+        (0..0).map(|_| {
+            Slot::Next::<<S::Item as IntoFuture>::Future>(1)
+        }).collect::<Vec<_>>();
+        panic!()
+    }
+
+    impl<S> Stream for BufferUnordered<S>
+        where S: Stream,
+              S::Item: IntoFuture<Error=<S as Stream>::Error>,
+    {
+        type Item = <S::Item as IntoFuture>::Item;
+        type Error = <S as Stream>::Error;
+    }
+}
+use stream::Stream;
diff --git a/src/test/ui/issues/issue-40085.rs b/src/test/ui/issues/issue-40085.rs
new file mode 100644
index 00000000000..132044cfd6d
--- /dev/null
+++ b/src/test/ui/issues/issue-40085.rs
@@ -0,0 +1,13 @@
+// run-pass
+use std::ops::Index;
+fn bar() {}
+static UNIT: () = ();
+struct S;
+impl Index<fn()> for S {
+    type Output = ();
+    fn index(&self, _: fn()) -> &() { &UNIT }
+}
+fn main() {
+    S.index(bar);
+    S[bar];
+}
diff --git a/src/test/ui/issues/issue-40235.rs b/src/test/ui/issues/issue-40235.rs
new file mode 100644
index 00000000000..0f799c3503f
--- /dev/null
+++ b/src/test/ui/issues/issue-40235.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![allow(unused_variables)]
+fn foo() {}
+
+fn main() {
+    while let Some(foo) = Some(1) { break }
+    foo();
+}
diff --git a/src/test/ui/issues/issue-40408.rs b/src/test/ui/issues/issue-40408.rs
new file mode 100644
index 00000000000..81acc41cb83
--- /dev/null
+++ b/src/test/ui/issues/issue-40408.rs
@@ -0,0 +1,7 @@
+// run-pass
+fn main() {
+    println!("{}", 0E+10);
+    println!("{}", 0e+10);
+    println!("{}", 00e+10);
+    println!("{}", 00E+10);
+}
diff --git a/src/test/ui/issues/issue-40469.rs b/src/test/ui/issues/issue-40469.rs
new file mode 100644
index 00000000000..25e08ef85e9
--- /dev/null
+++ b/src/test/ui/issues/issue-40469.rs
@@ -0,0 +1,9 @@
+// run-pass
+// ignore-pretty issue #37195
+
+#![allow(dead_code)]
+
+include!("auxiliary/issue-40469.rs");
+fn f() { m!(); }
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-40770.rs b/src/test/ui/issues/issue-40770.rs
new file mode 100644
index 00000000000..c9713c15798
--- /dev/null
+++ b/src/test/ui/issues/issue-40770.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(unused_macros)]
+macro_rules! m {
+    ($e:expr) => {
+        macro_rules! n { () => { $e } }
+    }
+}
+
+fn main() {
+    m!(foo!());
+}
diff --git a/src/test/ui/issues/issue-40847.rs b/src/test/ui/issues/issue-40847.rs
new file mode 100644
index 00000000000..087b40ad6cd
--- /dev/null
+++ b/src/test/ui/issues/issue-40847.rs
@@ -0,0 +1,17 @@
+// run-pass
+macro_rules! gen {
+    ($name:ident ( $($dol:tt $var:ident)* ) $($body:tt)*) => {
+        macro_rules! $name {
+            ($($dol $var:ident)*) => {
+                $($body)*
+            }
+        }
+    }
+}
+
+gen!(m($var) $var);
+
+fn main() {
+    let x = 1;
+    assert_eq!(m!(x), 1);
+}
diff --git a/src/test/ui/issues/issue-40883.rs b/src/test/ui/issues/issue-40883.rs
new file mode 100644
index 00000000000..37e61b1b0e6
--- /dev/null
+++ b/src/test/ui/issues/issue-40883.rs
@@ -0,0 +1,93 @@
+// run-pass
+#![allow(dead_code)]
+// check that we don't have linear stack usage with multiple calls to `push`
+
+#![feature(test)]
+
+extern crate test;
+use std::mem;
+
+fn meal() -> Big {
+    if test::black_box(false) {
+        panic!()
+    }
+    Big { drop_me: [
+        None, None, None, None, None, None, None, None,
+        None, None, None, None, None, None, None, None,
+        None, None, None, None, None, None, None, None,
+        None, None, None, None, None, None, None, None,
+        None, None, None, None, None, None, None, None,
+        None, None, None, None, None, None, None, None,
+    ]}
+}
+
+pub struct Big {
+    drop_me: [Option<Box<u8>>; 48],
+}
+
+#[inline]
+fn push(out: &mut Vec<Big>) {
+    out.push(meal());
+}
+
+#[inline(never)]
+pub fn supersize_me(out: &mut Vec<Big>) {
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out); // 16 calls to `push`
+
+    verify_stack_usage(out);
+
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out);
+    push(out); // 16 calls to `push`
+}
+
+#[inline(never)]
+fn verify_stack_usage(before_ptr: *mut Vec<Big>) {
+    // to check stack usage, create locals before and after
+    // and check the difference in addresses between them.
+    let mut stack_var: Vec<Big> = vec![];
+    test::black_box(&mut stack_var);
+    let stack_usage = isize::abs(
+        (&mut stack_var as *mut _ as isize) -
+            (before_ptr as isize)) as usize;
+    // give space for 2 copies of `Big` + 128 "misc" bytes.
+    if stack_usage > mem::size_of::<Big>() * 2 + 128 {
+        panic!("used {} bytes of stack, but `struct Big` is only {} bytes",
+               stack_usage, mem::size_of::<Big>());
+    }
+
+}
+
+pub fn main() {
+    let mut v = vec![];
+    test::black_box(&mut v);
+    supersize_me(&mut v);
+}
diff --git a/src/test/ui/issues/issue-40951.rs b/src/test/ui/issues/issue-40951.rs
new file mode 100644
index 00000000000..49171eba6b3
--- /dev/null
+++ b/src/test/ui/issues/issue-40951.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(unused_variables)]
+// Regression test for #40951.
+
+const FOO: [&'static str; 1] = ["foo"];
+
+fn find<T: PartialEq>(t: &[T], element: &T) { }
+
+fn main() {
+    let x = format!("hi");
+    find(&FOO, &&*x);
+}
diff --git a/src/test/ui/issues/issue-41053.rs b/src/test/ui/issues/issue-41053.rs
new file mode 100644
index 00000000000..967edfd4415
--- /dev/null
+++ b/src/test/ui/issues/issue-41053.rs
@@ -0,0 +1,21 @@
+// run-pass
+// aux-build:issue-41053.rs
+
+pub trait Trait { fn foo(&self) {} }
+
+pub struct Foo;
+
+impl Iterator for Foo {
+    type Item = Box<dyn Trait>;
+    fn next(&mut self) -> Option<Box<dyn Trait>> {
+        extern crate issue_41053;
+        impl ::Trait for issue_41053::Test {
+            fn foo(&self) {}
+        }
+        Some(Box::new(issue_41053::Test))
+    }
+}
+
+fn main() {
+    Foo.next().unwrap().foo();
+}
diff --git a/src/test/ui/issues/issue-4107.rs b/src/test/ui/issues/issue-4107.rs
new file mode 100644
index 00000000000..98433e806e3
--- /dev/null
+++ b/src/test/ui/issues/issue-4107.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(dead_code)]
+
+pub fn main() {
+    let _id: &Mat2<f64> = &Matrix::identity(1.0);
+}
+
+pub trait Index<Index,Result> { fn get(&self, _: Index) -> Result { panic!() } }
+pub trait Dimensional<T>: Index<usize, T> { }
+
+pub struct Mat2<T> { x: T }
+pub struct Vec2<T> { x: T }
+
+impl<T> Dimensional<Vec2<T>> for Mat2<T> { }
+impl<T> Index<usize, Vec2<T>> for Mat2<T> { }
+
+impl<T> Dimensional<T> for Vec2<T> { }
+impl<T> Index<usize, T> for Vec2<T> { }
+
+pub trait Matrix<T,V>: Dimensional<V> {
+    fn identity(t:T) -> Self;
+}
+
+impl<T> Matrix<T, Vec2<T>> for Mat2<T> {
+    fn identity(t:T) -> Mat2<T> { Mat2{ x: t } }
+}
diff --git a/src/test/ui/issues/issue-41213.rs b/src/test/ui/issues/issue-41213.rs
new file mode 100644
index 00000000000..5c91bf71102
--- /dev/null
+++ b/src/test/ui/issues/issue-41213.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(dead_code)]
+enum A {
+    A1,
+    A2,
+    A3,
+}
+
+enum B {
+    B1(String, String),
+    B2(String, String),
+}
+
+fn main() {
+    let a = A::A1;
+    loop {
+        let _ctor = match a {
+            A::A3 => break,
+            A::A1 => B::B1,
+            A::A2 => B::B2,
+        };
+        break;
+    }
+}
diff --git a/src/test/ui/issues/issue-41479.rs b/src/test/ui/issues/issue-41479.rs
new file mode 100644
index 00000000000..6daaf440e4b
--- /dev/null
+++ b/src/test/ui/issues/issue-41479.rs
@@ -0,0 +1,9 @@
+// run-pass
+fn split<A, B>(pair: (A, B)) {
+    let _a = pair.0;
+    let _b = pair.1;
+}
+
+fn main() {
+    split(((), ((), ())));
+}
diff --git a/src/test/ui/issues/issue-41498.rs b/src/test/ui/issues/issue-41498.rs
new file mode 100644
index 00000000000..ad918ecddeb
--- /dev/null
+++ b/src/test/ui/issues/issue-41498.rs
@@ -0,0 +1,17 @@
+// run-pass
+// regression test for issue #41498.
+
+struct S;
+impl S {
+    fn mutate(&mut self) {}
+}
+
+fn call_and_ref<T, F: FnOnce() -> T>(x: &mut Option<T>, f: F) -> &mut T {
+    *x = Some(f());
+    x.as_mut().unwrap()
+}
+
+fn main() {
+    let mut n = None;
+    call_and_ref(&mut n, || [S])[0].mutate();
+}
diff --git a/src/test/ui/issues/issue-41604.rs b/src/test/ui/issues/issue-41604.rs
new file mode 100644
index 00000000000..11a1cc25b71
--- /dev/null
+++ b/src/test/ui/issues/issue-41604.rs
@@ -0,0 +1,11 @@
+// run-pass
+struct B;
+
+impl B {
+    fn init(&mut self) {}
+}
+
+fn main() {
+    let mut b = [B];
+    b[1-1].init();
+}
diff --git a/src/test/ui/issues/issue-41677.rs b/src/test/ui/issues/issue-41677.rs
new file mode 100644
index 00000000000..afddbc799b7
--- /dev/null
+++ b/src/test/ui/issues/issue-41677.rs
@@ -0,0 +1,28 @@
+// run-pass
+// Regression test for #41677. The local variable was winding up with
+// a type `Receiver<?T, H>` where `?T` was unconstrained, because we
+// failed to enforce the WF obligations and `?T` is a bivariant type
+// parameter position.
+
+#![allow(unused_variables, dead_code)]
+
+use std::marker::PhantomData;
+
+trait Handle {
+    type Inner;
+}
+
+struct ResizingHandle<H>(PhantomData<H>);
+impl<H> Handle for ResizingHandle<H> {
+    type Inner = H;
+}
+
+struct Receiver<T, H: Handle<Inner=T>>(PhantomData<H>);
+
+fn channel<T>(size: usize) -> Receiver<T, ResizingHandle<T>> {
+    let rx = Receiver(PhantomData);
+    rx
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-41696.rs b/src/test/ui/issues/issue-41696.rs
new file mode 100644
index 00000000000..d094f71942f
--- /dev/null
+++ b/src/test/ui/issues/issue-41696.rs
@@ -0,0 +1,54 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![recursion_limit = "128"]
+// this used to cause exponential code-size blowup during LLVM passes.
+
+#![feature(test)]
+
+extern crate test;
+
+struct MayUnwind;
+
+impl Drop for MayUnwind {
+    fn drop(&mut self) {
+        if test::black_box(false) {
+            panic!()
+        }
+    }
+}
+
+struct DS<U> {
+    may_unwind: MayUnwind,
+    name: String,
+    next: U,
+}
+
+fn add<U>(ds: DS<U>, name: String) -> DS<DS<U>> {
+    DS {
+        may_unwind: MayUnwind,
+        name: "?".to_owned(),
+        next: ds,
+    }
+}
+
+fn main() {
+    let deserializers = DS { may_unwind: MayUnwind, name: "?".to_owned(), next: () };
+    let deserializers = add(deserializers, "?".to_owned());
+    let deserializers = add(deserializers, "?".to_owned());
+    let deserializers = add(deserializers, "?".to_owned());
+    let deserializers = add(deserializers, "?".to_owned());
+    let deserializers = add(deserializers, "?".to_owned());
+    let deserializers = add(deserializers, "?".to_owned());
+    let deserializers = add(deserializers, "?".to_owned()); // 0.7s
+    let deserializers = add(deserializers, "?".to_owned()); // 1.3s
+    let deserializers = add(deserializers, "?".to_owned()); // 2.4s
+    let deserializers = add(deserializers, "?".to_owned()); // 6.7s
+    let deserializers = add(deserializers, "?".to_owned()); // 26.0s
+    let deserializers = add(deserializers, "?".to_owned()); // 114.0s
+    let deserializers = add(deserializers, "?".to_owned()); // 228.0s
+    let deserializers = add(deserializers, "?".to_owned()); // 400.0s
+    let deserializers = add(deserializers, "?".to_owned()); // 800.0s
+    let deserializers = add(deserializers, "?".to_owned()); // 1600.0s
+    let deserializers = add(deserializers, "?".to_owned()); // 3200.0s
+}
diff --git a/src/test/ui/issues/issue-41744.rs b/src/test/ui/issues/issue-41744.rs
new file mode 100644
index 00000000000..dcdd1c21ee5
--- /dev/null
+++ b/src/test/ui/issues/issue-41744.rs
@@ -0,0 +1,7 @@
+// run-pass
+trait Tc {}
+impl Tc for bool {}
+
+fn main() {
+    let _: &[&dyn Tc] = &[&true];
+}
diff --git a/src/test/ui/issues/issue-41803.rs b/src/test/ui/issues/issue-41803.rs
new file mode 100644
index 00000000000..19ab81d04d0
--- /dev/null
+++ b/src/test/ui/issues/issue-41803.rs
@@ -0,0 +1,21 @@
+// run-pass
+/// A compile-time map from identifiers to arbitrary (heterogeneous) expressions
+macro_rules! ident_map {
+    ( $name:ident = { $($key:ident => $e:expr,)* } ) => {
+        macro_rules! $name {
+            $(
+                ( $key ) => { $e };
+            )*
+            // Empty invocation expands to nothing. Needed when the map is empty.
+            () => {};
+        }
+    };
+}
+
+ident_map!(my_map = {
+    main => 0,
+});
+
+fn main() {
+    my_map!(main);
+}
diff --git a/src/test/ui/issues/issue-41849-variance-req.rs b/src/test/ui/issues/issue-41849-variance-req.rs
new file mode 100644
index 00000000000..af081083a35
--- /dev/null
+++ b/src/test/ui/issues/issue-41849-variance-req.rs
@@ -0,0 +1,35 @@
+// run-pass
+#![allow(dead_code)]
+// Regression test for #41849.
+
+use std::ops::Mul;
+
+const C: usize = 1;
+const CAPACITY: usize = 1 * C;
+
+struct A<X> {
+    f: [X; CAPACITY],
+}
+
+struct B<T> {
+    f: T,
+}
+
+impl<T> Mul for B<T> {
+    type Output = Self;
+    fn mul(self, _rhs: B<T>) -> Self::Output {
+        self
+    }
+}
+
+impl<T> Mul<usize> for B<T> {
+    type Output = Self;
+    fn mul(self, _rhs: usize) -> Self::Output {
+        self
+    }
+}
+
+fn main() {
+    let a = A { f: [1] };
+    let _ = B { f: a };
+}
diff --git a/src/test/ui/issues/issue-41888.rs b/src/test/ui/issues/issue-41888.rs
new file mode 100644
index 00000000000..32df520f279
--- /dev/null
+++ b/src/test/ui/issues/issue-41888.rs
@@ -0,0 +1,34 @@
+// run-pass
+fn main() { let _ = g(Some(E::F(K))); }
+
+type R = Result<(), ()>;
+struct K;
+
+enum E {
+    F(K), // must not be built-in type
+    #[allow(dead_code)]
+    G(Box<E>, Box<E>),
+}
+
+fn translate(x: R) -> R { x }
+
+fn g(mut status: Option<E>) -> R {
+    loop {
+        match status {
+            Some(infix_or_postfix) => match infix_or_postfix {
+                E::F(_op) => { // <- must be captured by value
+                    match Ok(()) {
+                        Err(err) => return Err(err),
+                        Ok(_) => {},
+                    };
+                }
+                _ => (),
+            },
+            _ => match translate(Err(())) {
+                Err(err) => return Err(err),
+                Ok(_) => {},
+            }
+        }
+        status = None;
+    }
+}
diff --git a/src/test/ui/issues/issue-42007.rs b/src/test/ui/issues/issue-42007.rs
new file mode 100644
index 00000000000..a477e476eb9
--- /dev/null
+++ b/src/test/ui/issues/issue-42007.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-42007-s.rs
+
+extern crate issue_42007_s;
+
+enum I {
+    E(issue_42007_s::E),
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-4208.rs b/src/test/ui/issues/issue-4208.rs
new file mode 100644
index 00000000000..3b01811a9e8
--- /dev/null
+++ b/src/test/ui/issues/issue-4208.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-4208-cc.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate numeric;
+use numeric::{sin, Angle};
+
+fn foo<T, A:Angle<T>>(theta: A) -> T { sin(&theta) }
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-42148.rs b/src/test/ui/issues/issue-42148.rs
new file mode 100644
index 00000000000..cb8c0d6edb6
--- /dev/null
+++ b/src/test/ui/issues/issue-42148.rs
@@ -0,0 +1,6 @@
+// run-pass
+struct Zst;
+
+fn main() {
+    unsafe { ::std::ptr::write_volatile(1 as *mut Zst, Zst) }
+}
diff --git a/src/test/ui/issues/issue-42210.rs b/src/test/ui/issues/issue-42210.rs
new file mode 100644
index 00000000000..318e3099f98
--- /dev/null
+++ b/src/test/ui/issues/issue-42210.rs
@@ -0,0 +1,20 @@
+// run-pass
+// Regression test for #42210.
+
+// compile-flags: -g
+
+trait Foo {
+    fn foo() { }
+}
+
+struct Bar;
+
+trait Baz {
+}
+
+impl Foo for (Bar, dyn Baz) { }
+
+
+fn main() {
+    <(Bar, dyn Baz) as Foo>::foo()
+}
diff --git a/src/test/ui/issues/issue-4228.rs b/src/test/ui/issues/issue-4228.rs
new file mode 100644
index 00000000000..491000b6510
--- /dev/null
+++ b/src/test/ui/issues/issue-4228.rs
@@ -0,0 +1,16 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+struct Foo;
+
+impl Foo {
+    fn first() {}
+}
+impl Foo {
+    fn second() {}
+}
+
+pub fn main() {
+    Foo::first();
+    Foo::second();
+}
diff --git a/src/test/ui/issues/issue-42453.rs b/src/test/ui/issues/issue-42453.rs
new file mode 100644
index 00000000000..92fefceabc1
--- /dev/null
+++ b/src/test/ui/issues/issue-42453.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+
+#[derive(Debug)]
+struct builder;
+
+fn main() {
+
+}
diff --git a/src/test/ui/issues/issue-42463.rs b/src/test/ui/issues/issue-42463.rs
new file mode 100644
index 00000000000..51d6ea3f7a8
--- /dev/null
+++ b/src/test/ui/issues/issue-42463.rs
@@ -0,0 +1,32 @@
+// run-pass
+use std::ops::{Deref, DerefMut};
+
+struct CheckedDeref<T, F> {
+    value: T,
+    check: F
+}
+
+impl<F: Fn(&T) -> bool, T> Deref for CheckedDeref<T, F> {
+    type Target = T;
+    fn deref(&self) -> &T {
+        assert!((self.check)(&self.value));
+        &self.value
+    }
+}
+
+impl<F: Fn(&T) -> bool, T> DerefMut for CheckedDeref<T, F> {
+    fn deref_mut(&mut self) -> &mut T {
+        assert!((self.check)(&self.value));
+        &mut self.value
+    }
+}
+
+
+fn main() {
+    let mut v = CheckedDeref {
+        value: vec![0],
+        check: |v: &Vec<_>| !v.is_empty()
+    };
+    v.push(1);
+    assert_eq!(*v, vec![0, 1]);
+}
diff --git a/src/test/ui/issues/issue-4252.rs b/src/test/ui/issues/issue-4252.rs
new file mode 100644
index 00000000000..48e617fd7eb
--- /dev/null
+++ b/src/test/ui/issues/issue-4252.rs
@@ -0,0 +1,33 @@
+// run-pass
+trait X {
+    fn call<T: std::fmt::Debug>(&self, x: &T);
+    fn default_method<T: std::fmt::Debug>(&self, x: &T) {
+        println!("X::default_method {:?}", x);
+    }
+}
+
+#[derive(Debug)]
+struct Y(isize);
+
+#[derive(Debug)]
+struct Z<T: X+std::fmt::Debug> {
+    x: T
+}
+
+impl X for Y {
+    fn call<T: std::fmt::Debug>(&self, x: &T) {
+        println!("X::call {:?} {:?}", self, x);
+    }
+}
+
+impl<T: X + std::fmt::Debug> Drop for Z<T> {
+    fn drop(&mut self) {
+        // These statements used to cause an ICE.
+        self.x.call(self);
+        self.x.default_method(self);
+    }
+}
+
+pub fn main() {
+    let _z = Z {x: Y(42)};
+}
diff --git a/src/test/ui/issues/issue-42552.rs b/src/test/ui/issues/issue-42552.rs
new file mode 100644
index 00000000000..50d28a2f0c6
--- /dev/null
+++ b/src/test/ui/issues/issue-42552.rs
@@ -0,0 +1,31 @@
+// run-pass
+// Regression test for an obscure issue with the projection cache.
+
+fn into_iter<I: Iterator>(a: &I) -> Groups<I> {
+    Groups { _a: a }
+}
+
+pub struct Groups<'a, I: 'a> {
+    _a: &'a I,
+}
+
+impl<'a, I: Iterator> Iterator for Groups<'a, I> {
+    type Item = Group<'a, I>;
+    fn next(&mut self) -> Option<Self::Item> {
+        None
+    }
+}
+
+pub struct Group<'a, I: Iterator + 'a>
+    where I::Item: 'a       // <-- needed to trigger ICE!
+{
+    _phantom: &'a (),
+    _ice_trigger: I::Item,  // <-- needed to trigger ICE!
+}
+
+
+fn main() {
+    let _ = into_iter(&[0].iter().map(|_| 0)).map(|grp| {
+        let _g = grp;
+    });
+}
diff --git a/src/test/ui/issues/issue-42679.rs b/src/test/ui/issues/issue-42679.rs
new file mode 100644
index 00000000000..596309f2568
--- /dev/null
+++ b/src/test/ui/issues/issue-42679.rs
@@ -0,0 +1,22 @@
+// run-pass
+#![feature(box_syntax)]
+#![feature(box_patterns)]
+
+#[derive(Debug, PartialEq)]
+enum Test {
+    Foo(usize),
+    Bar(isize),
+}
+
+fn main() {
+    let a = box Test::Foo(10);
+    let b = box Test::Bar(-20);
+    match (a, b) {
+        (_, box Test::Foo(_)) => unreachable!(),
+        (box Test::Foo(x), b) => {
+            assert_eq!(x, 10);
+            assert_eq!(b, box Test::Bar(-20));
+        },
+        _ => unreachable!(),
+    }
+}
diff --git a/src/test/ui/issues/issue-42747.rs b/src/test/ui/issues/issue-42747.rs
new file mode 100644
index 00000000000..fec65878210
--- /dev/null
+++ b/src/test/ui/issues/issue-42747.rs
@@ -0,0 +1,46 @@
+// run-pass
+macro_rules! fooN {
+    ($cur:ident $prev:ty) => {
+        #[allow(dead_code)]
+        enum $cur {
+            Empty,
+            First($prev),
+            Second($prev),
+            Third($prev),
+            Fourth($prev),
+        }
+    }
+}
+
+fooN!(Foo0 ());
+fooN!(Foo1 Foo0);
+fooN!(Foo2 Foo1);
+fooN!(Foo3 Foo2);
+fooN!(Foo4 Foo3);
+fooN!(Foo5 Foo4);
+fooN!(Foo6 Foo5);
+fooN!(Foo7 Foo6);
+fooN!(Foo8 Foo7);
+fooN!(Foo9 Foo8);
+fooN!(Foo10 Foo9);
+fooN!(Foo11 Foo10);
+fooN!(Foo12 Foo11);
+fooN!(Foo13 Foo12);
+fooN!(Foo14 Foo13);
+fooN!(Foo15 Foo14);
+fooN!(Foo16 Foo15);
+fooN!(Foo17 Foo16);
+fooN!(Foo18 Foo17);
+fooN!(Foo19 Foo18);
+fooN!(Foo20 Foo19);
+fooN!(Foo21 Foo20);
+fooN!(Foo22 Foo21);
+fooN!(Foo23 Foo22);
+fooN!(Foo24 Foo23);
+fooN!(Foo25 Foo24);
+fooN!(Foo26 Foo25);
+fooN!(Foo27 Foo26);
+
+fn main() {
+    let _foo = Foo27::Empty;
+}
diff --git a/src/test/ui/issues/issue-43132.rs b/src/test/ui/issues/issue-43132.rs
new file mode 100644
index 00000000000..c886f4b0a2d
--- /dev/null
+++ b/src/test/ui/issues/issue-43132.rs
@@ -0,0 +1,65 @@
+// run-pass
+#![allow(unused)]
+
+fn main() {
+}
+
+fn foo() {
+    let b = mk::<
+        Forward<(Box<dyn Future<Error = u32>>,)>,
+    >();
+    b.map_err(|_| ()).join();
+}
+
+fn mk<T>() -> T {
+    loop {}
+}
+
+impl<I: Future<Error = E>, E> Future for (I,) {
+    type Error = E;
+}
+
+struct Forward<T: Future> {
+    _a: T,
+}
+
+impl<T: Future> Future for Forward<T>
+where
+    T::Error: From<u32>,
+{
+    type Error = T::Error;
+}
+
+trait Future {
+    type Error;
+
+    fn map_err<F, E>(self, _: F) -> (Self, F)
+    where
+        F: FnOnce(Self::Error) -> E,
+        Self: Sized,
+    {
+        loop {}
+    }
+
+    fn join(self) -> (MaybeDone<Self>, ())
+    where
+        Self: Sized,
+    {
+        loop {}
+    }
+}
+
+impl<S: ?Sized + Future> Future for Box<S> {
+    type Error = S::Error;
+}
+
+enum MaybeDone<A: Future> {
+    _Done(A::Error),
+}
+
+impl<U, A: Future, F> Future for (A, F)
+where
+    F: FnOnce(A::Error) -> U,
+{
+    type Error = U;
+}
diff --git a/src/test/ui/issues/issue-43205.rs b/src/test/ui/issues/issue-43205.rs
new file mode 100644
index 00000000000..894a61f3eff
--- /dev/null
+++ b/src/test/ui/issues/issue-43205.rs
@@ -0,0 +1,5 @@
+// run-pass
+fn main() {
+   &&[()][0];
+   println!("{:?}", &[(),()][1]);
+}
diff --git a/src/test/ui/issues/issue-43291.rs b/src/test/ui/issues/issue-43291.rs
new file mode 100644
index 00000000000..52b629e35c8
--- /dev/null
+++ b/src/test/ui/issues/issue-43291.rs
@@ -0,0 +1,9 @@
+// run-pass
+pub fn main() {
+    assert_eq!(!0usize as *const (), foo(0, 1));
+    assert_eq!(!0usize as *const (), (0i8 - 1) as *const ());
+}
+
+pub fn foo(a: i8, b: i8) -> *const () {
+    (a - b) as *const ()
+}
diff --git a/src/test/ui/issues/issue-4333.rs b/src/test/ui/issues/issue-4333.rs
new file mode 100644
index 00000000000..3df319b683f
--- /dev/null
+++ b/src/test/ui/issues/issue-4333.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unused_must_use)]
+// pretty-expanded FIXME #23616
+
+use std::io;
+
+pub fn main() {
+    let stdout = &mut io::stdout() as &mut dyn io::Write;
+    stdout.write(b"Hello!");
+}
diff --git a/src/test/ui/issues/issue-43692.rs b/src/test/ui/issues/issue-43692.rs
new file mode 100644
index 00000000000..a9999c22651
--- /dev/null
+++ b/src/test/ui/issues/issue-43692.rs
@@ -0,0 +1,5 @@
+// run-pass
+fn main() {
+    assert_eq!('\u{10__FFFF}', '\u{10FFFF}');
+    assert_eq!("\u{10_F0FF__}foo\u{1_0_0_0__}", "\u{10F0FF}foo\u{1000}");
+}
diff --git a/src/test/ui/issues/issue-43853.rs b/src/test/ui/issues/issue-43853.rs
new file mode 100644
index 00000000000..47c3ab59aa2
--- /dev/null
+++ b/src/test/ui/issues/issue-43853.rs
@@ -0,0 +1,17 @@
+// run-pass
+// ignore-wasm32-bare compiled with panic=abort by default
+
+use std::panic;
+
+fn test() {
+    wait(|| panic!());
+}
+
+fn wait<T, F: FnOnce() -> T>(f: F) -> F::Output {
+    From::from(f())
+}
+
+fn main() {
+    let result = panic::catch_unwind(move || test());
+    assert!(result.is_err());
+}
diff --git a/src/test/ui/issues/issue-4387.rs b/src/test/ui/issues/issue-4387.rs
new file mode 100644
index 00000000000..84592f16a4c
--- /dev/null
+++ b/src/test/ui/issues/issue-4387.rs
@@ -0,0 +1,6 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    let _foo = [0; 2*4];
+}
diff --git a/src/test/ui/issues/issue-43910.rs b/src/test/ui/issues/issue-43910.rs
new file mode 100644
index 00000000000..d8c87732930
--- /dev/null
+++ b/src/test/ui/issues/issue-43910.rs
@@ -0,0 +1,7 @@
+// run-pass
+#![deny(unused_variables)]
+
+fn main() {
+    #[allow(unused_variables)]
+    let x = 12;
+}
diff --git a/src/test/ui/issues/issue-43923.rs b/src/test/ui/issues/issue-43923.rs
new file mode 100644
index 00000000000..ad35a668554
--- /dev/null
+++ b/src/test/ui/issues/issue-43923.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+struct A<T: ?Sized> { ptr: T }
+
+fn foo<T>(x: &A<[T]>) {}
+
+fn main() {
+    let a = foo;
+    let b = A { ptr: [a, a, a] };
+    a(&A { ptr: [()] });
+}
diff --git a/src/test/ui/issues/issue-4401.rs b/src/test/ui/issues/issue-4401.rs
new file mode 100644
index 00000000000..fef73fbe1f5
--- /dev/null
+++ b/src/test/ui/issues/issue-4401.rs
@@ -0,0 +1,7 @@
+// run-pass
+pub fn main() {
+    let mut count = 0;
+    for _ in 0..999_999 { count += 1; }
+    assert_eq!(count, 999_999);
+    println!("{}", count);
+}
diff --git a/src/test/ui/issues/issue-44333.rs b/src/test/ui/issues/issue-44333.rs
new file mode 100644
index 00000000000..fffef975043
--- /dev/null
+++ b/src/test/ui/issues/issue-44333.rs
@@ -0,0 +1,20 @@
+// run-pass
+type Func = fn(usize, usize) -> usize;
+
+fn foo(a: usize, b: usize) -> usize { a + b }
+fn bar(a: usize, b: usize) -> usize { a * b }
+fn test(x: usize) -> Func {
+    if x % 2 == 0 { foo }
+    else { bar }
+}
+
+const FOO: Func = foo;
+const BAR: Func = bar;
+
+fn main() {
+    match test(std::env::consts::ARCH.len()) {
+        FOO => println!("foo"),
+        BAR => println!("bar"),
+        _ => unreachable!(),
+    }
+}
diff --git a/src/test/ui/issues/issue-4446.rs b/src/test/ui/issues/issue-4446.rs
new file mode 100644
index 00000000000..948f2a7bdf3
--- /dev/null
+++ b/src/test/ui/issues/issue-4446.rs
@@ -0,0 +1,15 @@
+// run-pass
+// ignore-emscripten no threads support
+
+use std::sync::mpsc::channel;
+use std::thread;
+
+pub fn main() {
+    let (tx, rx) = channel();
+
+    tx.send("hello, world").unwrap();
+
+    thread::spawn(move|| {
+        println!("{}", rx.recv().unwrap());
+    }).join().ok().unwrap();
+}
diff --git a/src/test/ui/issues/issue-4448.rs b/src/test/ui/issues/issue-4448.rs
new file mode 100644
index 00000000000..27d0326891b
--- /dev/null
+++ b/src/test/ui/issues/issue-4448.rs
@@ -0,0 +1,16 @@
+// run-pass
+// ignore-emscripten no threads support
+
+use std::sync::mpsc::channel;
+use std::thread;
+
+pub fn main() {
+    let (tx, rx) = channel::<&'static str>();
+
+    let t = thread::spawn(move|| {
+        assert_eq!(rx.recv().unwrap(), "hello, world");
+    });
+
+    tx.send("hello, world").unwrap();
+    t.join().ok().unwrap();
+}
diff --git a/src/test/ui/issues/issue-45124.rs b/src/test/ui/issues/issue-45124.rs
new file mode 100644
index 00000000000..942014c9184
--- /dev/null
+++ b/src/test/ui/issues/issue-45124.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(unreachable_code)]
+// compile-flags: --edition 2018
+
+#![feature(try_blocks)]
+
+fn main() {
+    let mut a = 0;
+    let () = {
+        let _: Result<(), ()> = try {
+            let _ = Err(())?;
+            return
+        };
+        a += 1;
+    };
+    a += 2;
+    assert_eq!(a, 3);
+}
diff --git a/src/test/ui/issues/issue-45152.rs b/src/test/ui/issues/issue-45152.rs
new file mode 100644
index 00000000000..fb1c9fb78f3
--- /dev/null
+++ b/src/test/ui/issues/issue-45152.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(unused_variables)]
+#![feature(unsize, coerce_unsized)]
+
+#[repr(packed)]
+struct UnalignedPtr<'a, T: ?Sized>
+    where T: 'a,
+{
+    data: &'a T,
+}
+
+fn main() {
+
+    impl<'a, T, U> std::ops::CoerceUnsized<UnalignedPtr<'a, U>> for UnalignedPtr<'a, T>
+        where
+        T: std::marker::Unsize<U> + ?Sized,
+        U: ?Sized,
+    { }
+
+    let arr = [1, 2, 3];
+    let arr_unaligned: UnalignedPtr<[i32; 3]> = UnalignedPtr { data: &arr };
+    let arr_unaligned: UnalignedPtr<[i32]> = arr_unaligned;
+}
diff --git a/src/test/ui/issues/issue-4541.rs b/src/test/ui/issues/issue-4541.rs
new file mode 100644
index 00000000000..1f871fcf613
--- /dev/null
+++ b/src/test/ui/issues/issue-4541.rs
@@ -0,0 +1,23 @@
+// run-pass
+// ignore-cloudabi no std::env
+
+fn parse_args() -> String {
+    let args: Vec<_> = ::std::env::args().collect();
+    let mut n = 0;
+
+    while n < args.len() {
+        match &*args[n] {
+            "-v" => (),
+            s => {
+                return s.to_string();
+            }
+        }
+        n += 1;
+    }
+
+    return "".to_string()
+}
+
+pub fn main() {
+    println!("{}", parse_args());
+}
diff --git a/src/test/ui/issues/issue-4542.rs b/src/test/ui/issues/issue-4542.rs
new file mode 100644
index 00000000000..24752114e9f
--- /dev/null
+++ b/src/test/ui/issues/issue-4542.rs
@@ -0,0 +1,13 @@
+// run-pass
+// pretty-expanded FIXME #23616
+// ignore-cloudabi no std::env
+
+use std::env;
+
+pub fn main() {
+    for arg in env::args() {
+        match arg.clone() {
+            _s => { }
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-4545.rs b/src/test/ui/issues/issue-4545.rs
new file mode 100644
index 00000000000..86fcf9af21f
--- /dev/null
+++ b/src/test/ui/issues/issue-4545.rs
@@ -0,0 +1,7 @@
+// run-pass
+// aux-build:issue-4545.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_4545 as somelib;
+pub fn main() { somelib::mk::<isize>(); }
diff --git a/src/test/ui/issues/issue-45510.rs b/src/test/ui/issues/issue-45510.rs
new file mode 100644
index 00000000000..9e104ce6c4f
--- /dev/null
+++ b/src/test/ui/issues/issue-45510.rs
@@ -0,0 +1,32 @@
+// Test overloaded resolution of fn_traits.
+// run-pass
+
+#![feature(fn_traits)]
+#![feature(unboxed_closures)]
+
+#[derive(Debug, PartialEq, Eq)]
+struct Ishmael;
+#[derive(Debug, PartialEq, Eq)]
+struct Maybe;
+struct CallMe;
+
+impl FnOnce<(Ishmael,)> for CallMe {
+    type Output = Ishmael;
+    extern "rust-call" fn call_once(self, _args: (Ishmael,)) -> Ishmael {
+        println!("Split your lungs with blood and thunder!");
+        Ishmael
+    }
+}
+
+impl FnOnce<(Maybe,)> for CallMe {
+    type Output = Maybe;
+    extern "rust-call" fn call_once(self, _args: (Maybe,)) -> Maybe {
+        println!("So we just met, and this is crazy");
+        Maybe
+    }
+}
+
+fn main() {
+    assert_eq!(CallMe(Ishmael), Ishmael);
+    assert_eq!(CallMe(Maybe), Maybe);
+}
diff --git a/src/test/ui/issues/issue-45731.rs b/src/test/ui/issues/issue-45731.rs
new file mode 100644
index 00000000000..d20c07276a8
--- /dev/null
+++ b/src/test/ui/issues/issue-45731.rs
@@ -0,0 +1,26 @@
+// run-pass
+#![allow(unused_variables)]
+// compile-flags:--test -g
+
+#[cfg(target_os = "macos")]
+#[test]
+fn simple_test() {
+    use std::{env, panic, fs};
+
+    // Find our dSYM and replace the DWARF binary with an empty file
+    let mut dsym_path = env::current_exe().unwrap();
+    let executable_name = dsym_path.file_name().unwrap().to_str().unwrap().to_string();
+    assert!(dsym_path.pop()); // Pop executable
+    dsym_path.push(format!("{}.dSYM/Contents/Resources/DWARF/{0}", executable_name));
+    {
+        let file = fs::OpenOptions::new().read(false).write(true).truncate(true).create(false)
+            .open(&dsym_path).unwrap();
+    }
+
+    env::set_var("RUST_BACKTRACE", "1");
+
+    // We don't need to die of panic, just trigger a backtrace
+    let _ = panic::catch_unwind(|| {
+        assert!(false);
+    });
+}
diff --git a/src/test/ui/issues/issue-46069.rs b/src/test/ui/issues/issue-46069.rs
new file mode 100644
index 00000000000..1d4f789828d
--- /dev/null
+++ b/src/test/ui/issues/issue-46069.rs
@@ -0,0 +1,23 @@
+// run-pass
+use std::iter::{Fuse, Cloned};
+use std::slice::Iter;
+
+struct Foo<'a, T: 'a>(&'a T);
+impl<'a, T: 'a> Copy for Foo<'a, T> {}
+impl<'a, T: 'a> Clone for Foo<'a, T> {
+    fn clone(&self) -> Self { *self }
+}
+
+fn copy_ex() {
+    let s = 2;
+    let k1 = || s;
+    let upvar = Foo(&k1);
+    let k = || upvar;
+    k();
+}
+
+fn main() {
+    let _f: *mut <Fuse<Cloned<Iter<u8>>> as Iterator>::Item = std::ptr::null_mut();
+
+    copy_ex();
+}
diff --git a/src/test/ui/issues/issue-46095.rs b/src/test/ui/issues/issue-46095.rs
new file mode 100644
index 00000000000..59ddb60c9f2
--- /dev/null
+++ b/src/test/ui/issues/issue-46095.rs
@@ -0,0 +1,30 @@
+// run-pass
+struct A;
+
+impl A {
+    fn take_mutably(&mut self) {}
+}
+
+fn identity<T>(t: T) -> T {
+    t
+}
+
+// Issue 46095
+// Built-in indexing should be used even when the index is not
+// trivially an integer
+// Overloaded indexing would cause wrapped to be borrowed mutably
+
+fn main() {
+    let mut a1 = A;
+    let mut a2 = A;
+
+    let wrapped = [&mut a1, &mut a2];
+
+    {
+        wrapped[0 + 1 - 1].take_mutably();
+    }
+
+    {
+        wrapped[identity(0)].take_mutably();
+    }
+}
diff --git a/src/test/ui/issues/issue-46519.rs b/src/test/ui/issues/issue-46519.rs
new file mode 100644
index 00000000000..461ea2498b0
--- /dev/null
+++ b/src/test/ui/issues/issue-46519.rs
@@ -0,0 +1,28 @@
+// run-pass
+// compile-flags:--test -O
+
+#[test]
+#[should_panic(expected = "creating inhabited type")]
+fn test() {
+    FontLanguageOverride::system_font(SystemFont::new());
+}
+
+pub enum FontLanguageOverride {
+    Normal,
+    Override(&'static str),
+    System(SystemFont)
+}
+
+pub enum SystemFont {}
+
+impl FontLanguageOverride {
+    fn system_font(f: SystemFont) -> Self {
+        FontLanguageOverride::System(f)
+    }
+}
+
+impl SystemFont {
+    fn new() -> Self {
+        panic!("creating inhabited type")
+    }
+}
diff --git a/src/test/ui/issues/issue-46553.rs b/src/test/ui/issues/issue-46553.rs
new file mode 100644
index 00000000000..e21a532effd
--- /dev/null
+++ b/src/test/ui/issues/issue-46553.rs
@@ -0,0 +1,23 @@
+// run-pass
+#![feature(const_fn)]
+#![deny(const_err)]
+
+pub struct Data<T> {
+    function: fn() -> T,
+}
+
+impl<T> Data<T> {
+    pub const fn new(function: fn() -> T) -> Data<T> {
+        Data {
+            function: function,
+        }
+    }
+}
+
+pub static DATA: Data<i32> = Data::new(|| {
+    413i32
+});
+
+fn main() {
+    print!("{:?}", (DATA.function)());
+}
diff --git a/src/test/ui/issues/issue-46845.rs b/src/test/ui/issues/issue-46845.rs
new file mode 100644
index 00000000000..fc85b25519a
--- /dev/null
+++ b/src/test/ui/issues/issue-46845.rs
@@ -0,0 +1,32 @@
+// run-pass
+// To work around #46855
+// compile-flags: -Z mir-opt-level=0
+// Regression test for the inhabitedness of unions with uninhabited variants, issue #46845
+
+use std::mem;
+
+#[derive(Copy, Clone)]
+enum Never { }
+
+// A single uninhabited variant shouldn't make the whole union uninhabited.
+union Foo {
+    a: u64,
+    _b: Never
+}
+
+// If all the variants are uninhabited, however, the union should be uninhabited.
+// NOTE(#49298) the union being uninhabited shouldn't change its size.
+union Bar {
+    _a: (Never, u64),
+    _b: (u64, Never)
+}
+
+fn main() {
+    assert_eq!(mem::size_of::<Foo>(), 8);
+    // See the note on `Bar`'s definition for why this isn't `0`.
+    assert_eq!(mem::size_of::<Bar>(), 8);
+
+    let f = [Foo { a: 42 }, Foo { a: 10 }];
+    println!("{}", unsafe { f[0].a });
+    assert_eq!(unsafe { f[1].a }, 10);
+}
diff --git a/src/test/ui/issues/issue-46855.rs b/src/test/ui/issues/issue-46855.rs
new file mode 100644
index 00000000000..aa6378f8594
--- /dev/null
+++ b/src/test/ui/issues/issue-46855.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(dead_code)]
+// compile-flags: -Zmir-opt-level=1
+
+use std::mem;
+
+#[derive(Copy, Clone)]
+enum Never {}
+
+union Foo {
+    a: u64,
+    b: Never
+}
+
+fn foo(xs: [(Never, u32); 1]) -> u32 { xs[0].1 }
+
+fn bar([(_, x)]: [(Never, u32); 1]) -> u32 { x }
+
+fn main() {
+    println!("{}", mem::size_of::<Foo>());
+
+    let f = [Foo { a: 42 }, Foo { a: 10 }];
+    println!("{:?}", unsafe { f[0].a });
+}
diff --git a/src/test/ui/issues/issue-46920-byte-array-patterns.rs b/src/test/ui/issues/issue-46920-byte-array-patterns.rs
new file mode 100644
index 00000000000..2a8b4bb4922
--- /dev/null
+++ b/src/test/ui/issues/issue-46920-byte-array-patterns.rs
@@ -0,0 +1,28 @@
+// run-pass
+const CURSOR_PARTITION_LABEL: &'static [u8] = b"partition";
+const CURSOR_EVENT_TYPE_LABEL: &'static [u8] = b"event_type";
+const BYTE_PATTERN: &'static [u8; 5] = b"hello";
+
+fn match_slice(x: &[u8]) -> u32 {
+    match x {
+        CURSOR_PARTITION_LABEL => 0,
+        CURSOR_EVENT_TYPE_LABEL => 1,
+        _ => 2,
+    }
+}
+
+fn match_array(x: &[u8; 5]) -> bool {
+    match x {
+        BYTE_PATTERN => true,
+        _ => false
+    }
+}
+
+fn main() {
+    assert_eq!(match_slice(b"abcde"), 2);
+    assert_eq!(match_slice(b"event_type"), 1);
+    assert_eq!(match_slice(b"partition"), 0);
+
+    assert_eq!(match_array(b"hello"), true);
+    assert_eq!(match_array(b"hella"), false);
+}
diff --git a/src/test/ui/issues/issue-47139-1.rs b/src/test/ui/issues/issue-47139-1.rs
new file mode 100644
index 00000000000..c55fc34346c
--- /dev/null
+++ b/src/test/ui/issues/issue-47139-1.rs
@@ -0,0 +1,78 @@
+// run-pass
+// Regression test for issue #47139:
+//
+// Coherence was encountering an (unnecessary) overflow trying to
+// decide if the two impls of dummy overlap.
+//
+// The overflow went something like:
+//
+// - `&'a ?T: Insertable` ?
+// - let ?T = Option<?U> ?
+// - `Option<?U>: Insertable` ?
+// - `Option<&'a ?U>: Insertable` ?
+// - `&'a ?U: Insertable` ?
+//
+// While somewhere in the middle, a projection would occur, which
+// broke cycle detection.
+//
+// It turned out that this cycle was being kicked off due to some
+// extended diagnostic attempts in coherence, so removing those
+// sidestepped the issue for now.
+
+#![allow(dead_code)]
+
+pub trait Insertable {
+    type Values;
+
+    fn values(self) -> Self::Values;
+}
+
+impl<T> Insertable for Option<T>
+    where
+    T: Insertable,
+    T::Values: Default,
+{
+    type Values = T::Values;
+
+    fn values(self) -> Self::Values {
+        self.map(Insertable::values).unwrap_or_default()
+    }
+}
+
+impl<'a, T> Insertable for &'a Option<T>
+    where
+    Option<&'a T>: Insertable,
+{
+    type Values = <Option<&'a T> as Insertable>::Values;
+
+    fn values(self) -> Self::Values {
+        self.as_ref().values()
+    }
+}
+
+impl<'a, T> Insertable for &'a [T]
+{
+    type Values = Self;
+
+    fn values(self) -> Self::Values {
+        self
+    }
+}
+
+trait Unimplemented { }
+
+trait Dummy { }
+
+struct Foo<T> { t: T }
+
+impl<'a, U> Dummy for Foo<&'a U>
+    where &'a U: Insertable
+{
+}
+
+impl<T> Dummy for T
+    where T: Unimplemented
+{ }
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-47139-2.rs b/src/test/ui/issues/issue-47139-2.rs
new file mode 100644
index 00000000000..d2ef8942530
--- /dev/null
+++ b/src/test/ui/issues/issue-47139-2.rs
@@ -0,0 +1,66 @@
+// run-pass
+// Regression test for issue #47139:
+//
+// Same as issue-47139-1.rs, but the impls of dummy are in the
+// opposite order. This influenced the way that coherence ran and in
+// some cases caused the overflow to occur when it wouldn't otherwise.
+// In an effort to make the regr test more robust, I am including both
+// orderings.
+
+#![allow(dead_code)]
+
+pub trait Insertable {
+    type Values;
+
+    fn values(self) -> Self::Values;
+}
+
+impl<T> Insertable for Option<T>
+    where
+    T: Insertable,
+    T::Values: Default,
+{
+    type Values = T::Values;
+
+    fn values(self) -> Self::Values {
+        self.map(Insertable::values).unwrap_or_default()
+    }
+}
+
+impl<'a, T> Insertable for &'a Option<T>
+    where
+    Option<&'a T>: Insertable,
+{
+    type Values = <Option<&'a T> as Insertable>::Values;
+
+    fn values(self) -> Self::Values {
+        self.as_ref().values()
+    }
+}
+
+impl<'a, T> Insertable for &'a [T]
+{
+    type Values = Self;
+
+    fn values(self) -> Self::Values {
+        self
+    }
+}
+
+trait Unimplemented { }
+
+trait Dummy { }
+
+struct Foo<T> { t: T }
+
+impl<T> Dummy for T
+    where T: Unimplemented
+{ }
+
+impl<'a, U> Dummy for Foo<&'a U>
+    where &'a U: Insertable
+{
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-4734.rs b/src/test/ui/issues/issue-4734.rs
new file mode 100644
index 00000000000..29c965d7ff5
--- /dev/null
+++ b/src/test/ui/issues/issue-4734.rs
@@ -0,0 +1,37 @@
+// run-pass
+#![allow(dead_code)]
+// Ensures that destructors are run for expressions of the form "e;" where
+// `e` is a type which requires a destructor.
+
+
+#![allow(path_statements)]
+
+struct A { n: isize }
+struct B;
+
+static mut NUM_DROPS: usize = 0;
+
+impl Drop for A {
+    fn drop(&mut self) {
+        unsafe { NUM_DROPS += 1; }
+    }
+}
+
+impl Drop for B {
+    fn drop(&mut self) {
+        unsafe { NUM_DROPS += 1; }
+    }
+}
+
+fn main() {
+    assert_eq!(unsafe { NUM_DROPS }, 0);
+    { let _a = A { n: 1 }; }
+    assert_eq!(unsafe { NUM_DROPS }, 1);
+    { A { n: 3 }; }
+    assert_eq!(unsafe { NUM_DROPS }, 2);
+
+    { let _b = B; }
+    assert_eq!(unsafe { NUM_DROPS }, 3);
+    { B; }
+    assert_eq!(unsafe { NUM_DROPS }, 4);
+}
diff --git a/src/test/ui/issues/issue-4735.rs b/src/test/ui/issues/issue-4735.rs
new file mode 100644
index 00000000000..3ea4b01cd2b
--- /dev/null
+++ b/src/test/ui/issues/issue-4735.rs
@@ -0,0 +1,19 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+use std::mem::transmute;
+
+struct NonCopyable(*const u8);
+
+impl Drop for NonCopyable {
+    fn drop(&mut self) {
+        let NonCopyable(p) = *self;
+        let _v = unsafe { transmute::<*const u8, Box<isize>>(p) };
+    }
+}
+
+pub fn main() {
+    let t = Box::new(0);
+    let p = unsafe { transmute::<Box<isize>, *const u8>(t) };
+    let _z = NonCopyable(p);
+}
diff --git a/src/test/ui/issues/issue-47364.rs b/src/test/ui/issues/issue-47364.rs
new file mode 100644
index 00000000000..b524354d9a1
--- /dev/null
+++ b/src/test/ui/issues/issue-47364.rs
@@ -0,0 +1,59 @@
+// run-pass
+#![allow(unused_variables)]
+// compile-flags: -C codegen-units=8 -O
+#![allow(non_snake_case)]
+
+fn main() {
+    nom_sql::selection(b"x ");
+}
+
+pub enum Err<P>{
+    Position(P),
+    NodePosition(u32),
+}
+
+pub enum IResult<I,O> {
+    Done(I,O),
+    Error(Err<I>),
+    Incomplete(u32, u64)
+}
+
+pub fn multispace<T: Copy>(input: T) -> ::IResult<i8, i8> {
+    ::IResult::Done(0, 0)
+}
+
+mod nom_sql {
+    fn where_clause(i: &[u8]) -> ::IResult<&[u8], Option<String>> {
+        let X = match ::multispace(i) {
+            ::IResult::Done(..) => ::IResult::Done(i, None::<String>),
+            _ => ::IResult::Error(::Err::NodePosition(0)),
+        };
+        match X {
+            ::IResult::Done(_, _) => ::IResult::Done(i, None),
+            _ => X
+        }
+    }
+
+    pub fn selection(i: &[u8]) {
+        let Y = match {
+            match {
+                where_clause(i)
+            } {
+                ::IResult::Done(_, o) => ::IResult::Done(i, Some(o)),
+                ::IResult::Error(_) => ::IResult::Done(i, None),
+                _ => ::IResult::Incomplete(0, 0),
+            }
+        } {
+            ::IResult::Done(z, _) => ::IResult::Done(z, None::<String>),
+            _ => return ()
+        };
+        match Y {
+            ::IResult::Done(x, _) => {
+                let bytes = b";   ";
+                let len = x.len();
+                bytes[len];
+            }
+            _ => ()
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-4759-1.rs b/src/test/ui/issues/issue-4759-1.rs
new file mode 100644
index 00000000000..96fae0fecd9
--- /dev/null
+++ b/src/test/ui/issues/issue-4759-1.rs
@@ -0,0 +1,4 @@
+// run-pass
+trait U { fn f(self); }
+impl U for isize { fn f(self) {} }
+pub fn main() { 4.f(); }
diff --git a/src/test/ui/issues/issue-4759.rs b/src/test/ui/issues/issue-4759.rs
new file mode 100644
index 00000000000..53785af0962
--- /dev/null
+++ b/src/test/ui/issues/issue-4759.rs
@@ -0,0 +1,20 @@
+// run-pass
+// pretty-expanded FIXME #23616
+#![allow(non_shorthand_field_patterns)]
+
+#![feature(box_syntax)]
+
+struct T { a: Box<isize> }
+
+trait U {
+    fn f(self);
+}
+
+impl U for Box<isize> {
+    fn f(self) { }
+}
+
+pub fn main() {
+    let T { a: a } = T { a: box 0 };
+    a.f();
+}
diff --git a/src/test/ui/issues/issue-47638.rs b/src/test/ui/issues/issue-47638.rs
new file mode 100644
index 00000000000..a1ed3c36544
--- /dev/null
+++ b/src/test/ui/issues/issue-47638.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unused_variables)]
+fn id<'c, 'b>(f: &'c &'b dyn Fn(&i32)) -> &'c &'b dyn Fn(&'static i32) {
+    f
+}
+
+fn main() {
+    let f: &dyn Fn(&i32) = &|x| {};
+    id(&f);
+}
diff --git a/src/test/ui/issues/issue-48006.rs b/src/test/ui/issues/issue-48006.rs
new file mode 100644
index 00000000000..3a862ace55e
--- /dev/null
+++ b/src/test/ui/issues/issue-48006.rs
@@ -0,0 +1,15 @@
+// run-pass
+
+#![feature(step_trait)]
+
+use std::iter::Step;
+
+#[cfg(target_pointer_width = "16")]
+fn main() {
+    assert!(Step::steps_between(&0u32, &::std::u32::MAX).is_none());
+}
+
+#[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))]
+fn main() {
+    assert!(Step::steps_between(&0u32, &::std::u32::MAX).is_some());
+}
diff --git a/src/test/ui/issues/issue-48159.rs b/src/test/ui/issues/issue-48159.rs
new file mode 100644
index 00000000000..fc8f31fb1ef
--- /dev/null
+++ b/src/test/ui/issues/issue-48159.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+use std::mem;
+
+pub enum c_void {}
+
+type uintptr_t = usize;
+type int16_t = u16;
+type uint16_t = int16_t;
+type uint32_t = u32;
+type intptr_t = uintptr_t;
+
+#[repr(C)]
+#[repr(packed(4))]
+pub struct kevent {
+    pub ident: uintptr_t,
+    pub filter: int16_t,
+    pub flags: uint16_t,
+    pub fflags: uint32_t,
+    pub data: intptr_t,
+    pub udata: *mut c_void,
+}
+
+fn main() {
+    assert_eq!(mem::align_of::<kevent>(), 4);
+}
diff --git a/src/test/ui/issues/issue-48508-aux.rs b/src/test/ui/issues/issue-48508-aux.rs
new file mode 100644
index 00000000000..ebdc70a04df
--- /dev/null
+++ b/src/test/ui/issues/issue-48508-aux.rs
@@ -0,0 +1,7 @@
+// run-pass
+// ignore-test Not a test. Used by issue-48508.rs
+
+pub fn other() -> f64 {
+    let µ = 1.0;
+    µ
+}
diff --git a/src/test/ui/issues/issue-48508.rs b/src/test/ui/issues/issue-48508.rs
new file mode 100644
index 00000000000..385192b882b
--- /dev/null
+++ b/src/test/ui/issues/issue-48508.rs
@@ -0,0 +1,19 @@
+// run-pass
+// Regression test for issue #48508:
+//
+// Confusion between global and local file offsets caused incorrect handling of multibyte character
+// spans when compiling multiple files. One visible effect was an ICE generating debug information
+// when a multibyte character is at the end of a scope. The problematic code is actually in
+// issue-48508-aux.rs
+
+// compile-flags:-g
+// ignore-pretty issue #37195
+
+#![feature(non_ascii_idents)]
+
+#[path = "issue-48508-aux.rs"]
+mod other_file;
+
+fn main() {
+    other_file::other();
+}
diff --git a/src/test/ui/issues/issue-4865-1.rs b/src/test/ui/issues/issue-4865-1.rs
new file mode 100644
index 00000000000..68fbee37d01
--- /dev/null
+++ b/src/test/ui/issues/issue-4865-1.rs
@@ -0,0 +1,33 @@
+// run-pass
+#![allow(unused_imports)]
+// This should resolve fine.
+// Prior to fix, the crossed imports between a and b
+// would block on the glob import, itself never being resolved
+// because these previous imports were not resolved.
+
+pub mod a {
+    use b::fn_b;
+    use c::*;
+
+    pub fn fn_a(){
+    }
+}
+
+pub mod b {
+    use a::fn_a;
+    use c::*;
+
+    pub fn fn_b(){
+    }
+}
+
+pub mod c{
+    pub fn fn_c(){
+    }
+}
+
+use a::fn_a;
+use b::fn_b;
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-4865-2.rs b/src/test/ui/issues/issue-4865-2.rs
new file mode 100644
index 00000000000..cbe1d0d32c6
--- /dev/null
+++ b/src/test/ui/issues/issue-4865-2.rs
@@ -0,0 +1,24 @@
+// run-pass
+// Previously, this would have failed to resolve due to the circular
+// block between `use say` and `pub use hello::*`.
+//
+// Now, as `use say` is not `pub`, the glob import can resolve
+// without any problem and this resolves fine.
+
+pub use hello::*;
+
+pub mod say {
+    pub fn hello() { println!("hello"); }
+}
+
+pub mod hello {
+    use say;
+
+    pub fn hello() {
+        say::hello();
+    }
+}
+
+fn main() {
+    hello();
+}
diff --git a/src/test/ui/issues/issue-4865-3.rs b/src/test/ui/issues/issue-4865-3.rs
new file mode 100644
index 00000000000..12f9bba18d8
--- /dev/null
+++ b/src/test/ui/issues/issue-4865-3.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(unused_imports)]
+// This should resolve fine even with the circular imports as
+// they are not `pub`.
+
+pub mod a {
+    use b::*;
+}
+
+pub mod b {
+    use a::*;
+}
+
+use a::*;
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-4875.rs b/src/test/ui/issues/issue-4875.rs
new file mode 100644
index 00000000000..8d361314f73
--- /dev/null
+++ b/src/test/ui/issues/issue-4875.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+// regression test for issue 4875
+
+// pretty-expanded FIXME #23616
+
+pub struct Foo<T> {
+    data: T,
+}
+
+fn foo<T>(Foo{..}: Foo<T>) {
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-48962.rs b/src/test/ui/issues/issue-48962.rs
new file mode 100644
index 00000000000..80d815379be
--- /dev/null
+++ b/src/test/ui/issues/issue-48962.rs
@@ -0,0 +1,34 @@
+// run-pass
+#![allow(unused_must_use)]
+// Test that we are able to reinitialize box with moved referent
+static mut ORDER: [usize; 3] = [0, 0, 0];
+static mut INDEX: usize = 0;
+
+struct Dropee (usize);
+
+impl Drop for Dropee {
+    fn drop(&mut self) {
+        unsafe {
+            ORDER[INDEX] = self.0;
+            INDEX = INDEX + 1;
+        }
+    }
+}
+
+fn add_sentintel() {
+    unsafe {
+        ORDER[INDEX] = 2;
+        INDEX = INDEX + 1;
+    }
+}
+
+fn main() {
+    let mut x = Box::new(Dropee(1));
+    *x;  // move out from `*x`
+    add_sentintel();
+    *x = Dropee(3); // re-initialize `*x`
+    {x}; // drop value
+    unsafe {
+        assert_eq!(ORDER, [1, 2, 3]);
+    }
+}
diff --git a/src/test/ui/issues/issue-48984.rs b/src/test/ui/issues/issue-48984.rs
new file mode 100644
index 00000000000..cb340f84897
--- /dev/null
+++ b/src/test/ui/issues/issue-48984.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-48984-aux.rs
+extern crate issue48984aux;
+use issue48984aux::Bar;
+
+fn do_thing<T: Bar>() { }
+
+fn main() { }
diff --git a/src/test/ui/issues/issue-49298.rs b/src/test/ui/issues/issue-49298.rs
new file mode 100644
index 00000000000..697a160b4ec
--- /dev/null
+++ b/src/test/ui/issues/issue-49298.rs
@@ -0,0 +1,42 @@
+// run-pass
+#![feature(test)]
+#![allow(unused_mut)] // under NLL we get warning about `x` below: rust-lang/rust#54499
+
+// This test is bogus (i.e., should be compile-fail) during the period
+// where #54986 is implemented and #54987 is *not* implemented. For
+// now: just ignore it
+//
+// ignore-test
+
+// This test is checking that the space allocated for `x.1` does not
+// overlap with `y`. (The reason why such a thing happened at one
+// point was because `x.0: Void` and thus the whole type of `x` was
+// uninhabited, and so the compiler thought it was safe to use the
+// space of `x.1` to hold `y`.)
+//
+// That's a fine thing to test when this code is accepted by the
+// compiler, and this code is being transcribed accordingly into
+// the ui test issue-21232-partial-init-and-use.rs
+
+extern crate test;
+
+enum Void {}
+
+fn main() {
+    let mut x: (Void, usize);
+    let mut y = 42;
+    x.1 = 13;
+
+    // Make sure `y` stays on the stack.
+    test::black_box(&mut y);
+
+    // Check that the write to `x.1` did not overwrite `y`.
+    // Note that this doesn't fail with optimizations enabled,
+    // because we can't keep `x.1` on the stack, like we can `y`,
+    // as we can't borrow partially initialized variables.
+    assert_eq!(y.to_string(), "42");
+
+    // Check that `(Void, usize)` has space for the `usize` field.
+    assert_eq!(std::mem::size_of::<(Void, usize)>(),
+               std::mem::size_of::<usize>());
+}
diff --git a/src/test/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs b/src/test/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs
new file mode 100644
index 00000000000..f30d7e2edcc
--- /dev/null
+++ b/src/test/ui/issues/issue-49588-non-shorthand-field-patterns-in-pattern-macro.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(unused_variables)]
+#![deny(non_shorthand_field_patterns)]
+
+pub struct Value<A> { pub value: A }
+
+#[macro_export]
+macro_rules! pat {
+    ($a:pat) => {
+        Value { value: $a }
+    };
+}
+
+fn main() {
+    let pat!(value) = Value { value: () };
+}
diff --git a/src/test/ui/issues/issue-49632.rs b/src/test/ui/issues/issue-49632.rs
new file mode 100644
index 00000000000..155fd0d24eb
--- /dev/null
+++ b/src/test/ui/issues/issue-49632.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![feature(stmt_expr_attributes)]
+
+pub fn main() {
+    let _x = #[inline(always)] || {};
+    let _y = #[inline(never)] || {};
+    let _z = #[inline] || {};
+}
diff --git a/src/test/ui/issues/issue-49685.rs b/src/test/ui/issues/issue-49685.rs
new file mode 100644
index 00000000000..fb328d67b75
--- /dev/null
+++ b/src/test/ui/issues/issue-49685.rs
@@ -0,0 +1,13 @@
+// run-pass
+// Regression test for #49685: drop elaboration was not revealing the
+// value of `impl Trait` returns, leading to an ICE.
+
+fn main() {
+    let _ = Some(())
+        .into_iter()
+        .flat_map(|_| Some(()).into_iter().flat_map(func));
+}
+
+fn func(_: ()) -> impl Iterator<Item = ()> {
+    Some(()).into_iter().flat_map(|_| vec![])
+}
diff --git a/src/test/ui/issues/issue-49854.rs b/src/test/ui/issues/issue-49854.rs
new file mode 100644
index 00000000000..0e1db00a34c
--- /dev/null
+++ b/src/test/ui/issues/issue-49854.rs
@@ -0,0 +1,9 @@
+// run-pass
+use std::ffi::OsString;
+
+fn main() {
+    let os_str = OsString::from("Hello Rust!");
+
+    assert_eq!(os_str, "Hello Rust!");
+    assert_eq!("Hello Rust!", os_str);
+}
diff --git a/src/test/ui/issues/issue-49955-2.rs b/src/test/ui/issues/issue-49955-2.rs
new file mode 100644
index 00000000000..267ed746322
--- /dev/null
+++ b/src/test/ui/issues/issue-49955-2.rs
@@ -0,0 +1,19 @@
+// run-pass
+// compile-flags: -Z borrowck=mir
+
+use std::cell::Cell;
+
+const FIVE: Cell<i32> = Cell::new(5);
+
+#[inline(never)]
+fn tuple_field() -> &'static u32 {
+    // This test is MIR-borrowck-only because the old borrowck
+    // doesn't agree that borrows of "frozen" (i.e., without any
+    // interior mutability) fields of non-frozen temporaries,
+    // should be promoted, while MIR promotion does promote them.
+    &(FIVE, 42).1
+}
+
+fn main() {
+    assert_eq!(tuple_field().to_string(), "42");
+}
diff --git a/src/test/ui/issues/issue-49955.rs b/src/test/ui/issues/issue-49955.rs
new file mode 100644
index 00000000000..f2f3ebff2db
--- /dev/null
+++ b/src/test/ui/issues/issue-49955.rs
@@ -0,0 +1,20 @@
+// run-pass
+
+const ALL_THE_NUMS: [u32; 1] = [
+    1
+];
+
+#[inline(never)]
+fn array(i: usize) -> &'static u32 {
+    return &ALL_THE_NUMS[i];
+}
+
+#[inline(never)]
+fn tuple_field() -> &'static u32 {
+    &(42,).0
+}
+
+fn main() {
+    assert_eq!(tuple_field().to_string(), "42");
+    assert_eq!(array(0).to_string(), "1");
+}
diff --git a/src/test/ui/issues/issue-49973.rs b/src/test/ui/issues/issue-49973.rs
new file mode 100644
index 00000000000..af421c52fb0
--- /dev/null
+++ b/src/test/ui/issues/issue-49973.rs
@@ -0,0 +1,11 @@
+// run-pass
+#[derive(Debug)]
+#[repr(i32)]
+enum E {
+    Min = -2147483648i32,
+    _Max = 2147483647i32,
+}
+
+fn main() {
+    assert_eq!(Some(E::Min).unwrap() as i32, -2147483648i32);
+}
diff --git a/src/test/ui/issues/issue-5008-borrowed-traitobject-method-call.rs b/src/test/ui/issues/issue-5008-borrowed-traitobject-method-call.rs
new file mode 100644
index 00000000000..fc869ae4fec
--- /dev/null
+++ b/src/test/ui/issues/issue-5008-borrowed-traitobject-method-call.rs
@@ -0,0 +1,34 @@
+// run-pass
+/*
+
+#5008 cast to &Trait causes code to segfault on method call
+
+It fixes itself if the &Trait is changed to @Trait.
+*/
+
+trait Debuggable {
+    fn debug_name(&self) -> String;
+}
+
+#[derive(Clone)]
+struct Thing {
+    name: String,
+}
+
+impl Thing {
+    fn new() -> Thing { Thing { name: "dummy".to_string() } }
+}
+
+impl Debuggable for Thing {
+    fn debug_name(&self) -> String { self.name.clone() }
+}
+
+fn print_name(x: &dyn Debuggable)
+{
+    println!("debug_name = {}", x.debug_name());
+}
+
+pub fn main() {
+    let thing = Thing::new();
+    print_name(&thing as &dyn Debuggable);
+}
diff --git a/src/test/ui/issues/issue-50415.rs b/src/test/ui/issues/issue-50415.rs
new file mode 100644
index 00000000000..20c7be772f9
--- /dev/null
+++ b/src/test/ui/issues/issue-50415.rs
@@ -0,0 +1,18 @@
+// run-pass
+fn main() {
+    // -------- Simplified test case --------
+
+    let _ = || 0..=1;
+
+    // -------- Original test case --------
+
+    let full_length = 1024;
+    let range = {
+        // do some stuff, omit here
+        None
+    };
+
+    let range = range.map(|(s, t)| s..=t).unwrap_or(0..=(full_length-1));
+
+    assert_eq!(range, 0..=1023);
+}
diff --git a/src/test/ui/issues/issue-50442.rs b/src/test/ui/issues/issue-50442.rs
new file mode 100644
index 00000000000..25c7dde7a5f
--- /dev/null
+++ b/src/test/ui/issues/issue-50442.rs
@@ -0,0 +1,13 @@
+// run-pass
+#![allow(dead_code)]
+enum Void {}
+
+enum Foo {
+    A(i32),
+    B(Void),
+    C(i32)
+}
+
+fn main() {
+    let _foo = Foo::A(0);
+}
diff --git a/src/test/ui/issues/issue-5060.rs b/src/test/ui/issues/issue-5060.rs
new file mode 100644
index 00000000000..c4760bc029b
--- /dev/null
+++ b/src/test/ui/issues/issue-5060.rs
@@ -0,0 +1,16 @@
+// run-pass
+macro_rules! print_hd_tl {
+    ($field_hd:ident, $($field_tl:ident),+) => ({
+        print!("{}", stringify!($field_hd));
+        print!("::[");
+        $(
+            print!("{}", stringify!($field_tl));
+            print!(", ");
+        )+
+        print!("]\n");
+    })
+}
+
+pub fn main() {
+    print_hd_tl!(x, y, z, w)
+}
diff --git a/src/test/ui/issues/issue-50689.rs b/src/test/ui/issues/issue-50689.rs
new file mode 100644
index 00000000000..b49f2950020
--- /dev/null
+++ b/src/test/ui/issues/issue-50689.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(unused_variables)]
+enum Foo {
+    Bar = (|x: i32| { }, 42).1,
+}
+
+fn main() {
+    assert_eq!(Foo::Bar as usize, 42);
+}
diff --git a/src/test/ui/issues/issue-50731.rs b/src/test/ui/issues/issue-50731.rs
new file mode 100644
index 00000000000..209c1e1279b
--- /dev/null
+++ b/src/test/ui/issues/issue-50731.rs
@@ -0,0 +1,6 @@
+// run-pass
+enum Void {}
+fn foo(_: Result<(Void, u32), (Void, String)>) {}
+fn main() {
+    let _: fn(_) = foo;
+}
diff --git a/src/test/ui/issues/issue-50811.rs b/src/test/ui/issues/issue-50811.rs
new file mode 100644
index 00000000000..63d87e03c48
--- /dev/null
+++ b/src/test/ui/issues/issue-50811.rs
@@ -0,0 +1,56 @@
+// run-pass
+#![feature(test)]
+
+extern crate test;
+
+use std::f64::{NAN, NEG_INFINITY, INFINITY, MAX};
+use std::mem::size_of;
+use test::black_box;
+
+// Ensure the const-eval result and runtime result of float comparison are equivalent.
+
+macro_rules! compare {
+    ($op:tt) => {
+        compare!(
+            [NEG_INFINITY, -MAX, -1.0, -0.0, 0.0, 1.0, MAX, INFINITY, NAN],
+            $op
+        );
+    };
+    ([$($lhs:expr),+], $op:tt) => {
+        $(compare!(
+            $lhs,
+            $op,
+            [NEG_INFINITY, -MAX, -1.0, -0.0, 0.0, 1.0, MAX, INFINITY, NAN]
+        );)+
+    };
+    ($lhs:expr, $op:tt, [$($rhs:expr),+]) => {
+        $({
+            // Wrap the check in its own function to reduce time needed to borrowck.
+            fn check() {
+                static CONST_EVAL: bool = $lhs $op $rhs;
+                let runtime_eval = black_box($lhs) $op black_box($rhs);
+                assert_eq!(CONST_EVAL, runtime_eval, stringify!($lhs $op $rhs));
+                assert_eq!(
+                    size_of::<[u8; ($lhs $op $rhs) as usize]>(),
+                    runtime_eval as usize,
+                    stringify!($lhs $op $rhs (forced const eval))
+                );
+            }
+            check();
+        })+
+    };
+}
+
+fn main() {
+    assert_eq!(0.0/0.0 < 0.0/0.0, false);
+    assert_eq!(0.0/0.0 > 0.0/0.0, false);
+    assert_eq!(NAN < NAN, false);
+    assert_eq!(NAN > NAN, false);
+
+    compare!(==);
+    compare!(!=);
+    compare!(<);
+    compare!(<=);
+    compare!(>);
+    compare!(>=);
+}
diff --git a/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs b/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs
new file mode 100644
index 00000000000..f3a51b415fa
--- /dev/null
+++ b/src/test/ui/issues/issue-50865-private-impl-trait/auxiliary/lib.rs
@@ -0,0 +1,14 @@
+#![crate_type = "lib"]
+
+pub fn bar<P>( // Error won't happen if "bar" is not generic
+    _baz: P,
+) {
+    hide_foo()();
+}
+
+fn hide_foo() -> impl Fn() { // Error won't happen if "iterate" hasn't impl Trait or has generics
+    foo
+}
+
+fn foo() { // Error won't happen if "foo" isn't used in "iterate" or has generics
+}
diff --git a/src/test/ui/issues/issue-50865-private-impl-trait/main.rs b/src/test/ui/issues/issue-50865-private-impl-trait/main.rs
new file mode 100644
index 00000000000..16dfac53ad1
--- /dev/null
+++ b/src/test/ui/issues/issue-50865-private-impl-trait/main.rs
@@ -0,0 +1,16 @@
+// run-pass
+// aux-build:lib.rs
+
+// Regression test for #50865.
+// When using generics or specifying the type directly, this example
+// codegens `foo` internally. However, when using a private `impl Trait`
+// function which references another private item, `foo` (in this case)
+// wouldn't be codegenned until main.rs used `bar`, as with impl Trait
+// it is not cast to `fn()` automatically to satisfy e.g.
+// `fn foo() -> fn() { ... }`.
+
+extern crate lib;
+
+fn main() {
+    lib::bar(()); // Error won't happen if bar is called from same crate
+}
diff --git a/src/test/ui/issues/issue-51185.rs b/src/test/ui/issues/issue-51185.rs
new file mode 100644
index 00000000000..52a2b25539d
--- /dev/null
+++ b/src/test/ui/issues/issue-51185.rs
@@ -0,0 +1,8 @@
+// run-pass
+fn foo() -> impl Into<for<'a> fn(&'a ())> {
+    (|_| {}) as for<'a> fn(&'a ())
+}
+
+fn main() {
+    foo().into()(&());
+}
diff --git a/src/test/ui/issues/issue-51345.rs b/src/test/ui/issues/issue-51345.rs
new file mode 100644
index 00000000000..15571e8bf5b
--- /dev/null
+++ b/src/test/ui/issues/issue-51345.rs
@@ -0,0 +1,8 @@
+// run-pass
+#![allow(unreachable_code)]
+
+fn main() {
+    let mut v = Vec::new();
+
+    loop { v.push(break) }
+}
diff --git a/src/test/ui/issues/issue-51582.rs b/src/test/ui/issues/issue-51582.rs
new file mode 100644
index 00000000000..63ef05729bc
--- /dev/null
+++ b/src/test/ui/issues/issue-51582.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![feature(core_intrinsics)]
+
+#[repr(i8)]
+pub enum Enum {
+    VariantA,
+    VariantB,
+}
+
+fn make_b() -> Enum { Enum::VariantB }
+
+fn main() {
+    assert_eq!(1, make_b() as i8);
+    assert_eq!(1, make_b() as u8);
+    assert_eq!(1, make_b() as i32);
+    assert_eq!(1, make_b() as u32);
+    assert_eq!(1, unsafe { std::intrinsics::discriminant_value(&make_b()) });
+}
diff --git a/src/test/ui/issues/issue-51907.rs b/src/test/ui/issues/issue-51907.rs
new file mode 100644
index 00000000000..3691fe19117
--- /dev/null
+++ b/src/test/ui/issues/issue-51907.rs
@@ -0,0 +1,17 @@
+// run-pass
+trait Foo {
+    extern fn borrow(&self);
+    extern fn take(self: Box<Self>);
+}
+
+struct Bar;
+impl Foo for Bar {
+    extern fn borrow(&self) {}
+    extern fn take(self: Box<Self>) {}
+}
+
+fn main() {
+    let foo: Box<dyn Foo> = Box::new(Bar);
+    foo.borrow();
+    foo.take()
+}
diff --git a/src/test/ui/issues/issue-5192.rs b/src/test/ui/issues/issue-5192.rs
new file mode 100644
index 00000000000..5a83d1c2ff9
--- /dev/null
+++ b/src/test/ui/issues/issue-5192.rs
@@ -0,0 +1,41 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+pub trait EventLoop {
+    fn dummy(&self) { }
+}
+
+pub struct UvEventLoop {
+    uvio: isize
+}
+
+impl UvEventLoop {
+    pub fn new() -> UvEventLoop {
+        UvEventLoop {
+            uvio: 0
+        }
+    }
+}
+
+impl EventLoop for UvEventLoop {
+}
+
+pub struct Scheduler {
+    event_loop: Box<dyn EventLoop+'static>,
+}
+
+impl Scheduler {
+
+    pub fn new(event_loop: Box<dyn EventLoop+'static>) -> Scheduler {
+        Scheduler {
+            event_loop: event_loop,
+        }
+    }
+}
+
+pub fn main() {
+    let _sched = Scheduler::new(box UvEventLoop::new() as Box<dyn EventLoop>);
+}
diff --git a/src/test/ui/issues/issue-52140/auxiliary/some_crate.rs b/src/test/ui/issues/issue-52140/auxiliary/some_crate.rs
new file mode 100644
index 00000000000..087005849d1
--- /dev/null
+++ b/src/test/ui/issues/issue-52140/auxiliary/some_crate.rs
@@ -0,0 +1,5 @@
+#![crate_type = "lib"]
+
+pub fn hello() {
+    println!("Hello, world!");
+}
diff --git a/src/test/ui/issues/issue-52140/main.rs b/src/test/ui/issues/issue-52140/main.rs
new file mode 100644
index 00000000000..aeac4340455
--- /dev/null
+++ b/src/test/ui/issues/issue-52140/main.rs
@@ -0,0 +1,13 @@
+// run-pass
+// aux-build:some_crate.rs
+// compile-flags:--extern some_crate
+// edition:2018
+
+mod foo {
+    pub use some_crate;
+}
+
+fn main() {
+    ::some_crate::hello();
+    foo::some_crate::hello();
+}
diff --git a/src/test/ui/issues/issue-52141/auxiliary/some_crate.rs b/src/test/ui/issues/issue-52141/auxiliary/some_crate.rs
new file mode 100644
index 00000000000..087005849d1
--- /dev/null
+++ b/src/test/ui/issues/issue-52141/auxiliary/some_crate.rs
@@ -0,0 +1,5 @@
+#![crate_type = "lib"]
+
+pub fn hello() {
+    println!("Hello, world!");
+}
diff --git a/src/test/ui/issues/issue-52141/main.rs b/src/test/ui/issues/issue-52141/main.rs
new file mode 100644
index 00000000000..7eea1726cf3
--- /dev/null
+++ b/src/test/ui/issues/issue-52141/main.rs
@@ -0,0 +1,16 @@
+// run-pass
+// aux-build:some_crate.rs
+// compile-flags:--extern some_crate
+// edition:2018
+
+use some_crate as some_name;
+
+mod foo {
+    pub use crate::some_name::*;
+}
+
+fn main() {
+    ::some_crate::hello();
+    some_name::hello();
+    foo::hello();
+}
diff --git a/src/test/ui/issues/issue-52169.rs b/src/test/ui/issues/issue-52169.rs
new file mode 100644
index 00000000000..60be97f0aee
--- /dev/null
+++ b/src/test/ui/issues/issue-52169.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+macro_rules! a {
+    ($i:literal) => { "right" };
+    ($i:tt) => { "wrong" };
+}
+
+macro_rules! b {
+    ($i:literal) => { a!($i) };
+}
+
+fn main() {
+    assert_eq!(b!(0), "right");
+}
diff --git a/src/test/ui/issues/issue-5239-2.rs b/src/test/ui/issues/issue-5239-2.rs
new file mode 100644
index 00000000000..b501c6e1853
--- /dev/null
+++ b/src/test/ui/issues/issue-5239-2.rs
@@ -0,0 +1,9 @@
+// run-pass
+// Regression test for issue #5239
+
+
+pub fn main() {
+    let _f = |ref x: isize| { *x };
+    let foo = 10;
+    assert_eq!(_f(foo), 10);
+}
diff --git a/src/test/ui/issues/issue-5243.rs b/src/test/ui/issues/issue-5243.rs
new file mode 100644
index 00000000000..c511d45f02d
--- /dev/null
+++ b/src/test/ui/issues/issue-5243.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(dead_code)]
+// Check that merely having lifetime parameters is not
+// enough for codegen to consider this as non-monomorphic,
+// which led to various assertions and failures in turn.
+
+// pretty-expanded FIXME #23616
+
+struct S<'a> {
+    v: &'a isize
+}
+
+fn f<'lt>(_s: &'lt S<'lt>) {}
+
+pub fn main() {
+    f(& S { v: &42 });
+}
diff --git a/src/test/ui/issues/issue-52557.rs b/src/test/ui/issues/issue-52557.rs
new file mode 100644
index 00000000000..09f7a8c5131
--- /dev/null
+++ b/src/test/ui/issues/issue-52557.rs
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(unused_imports)]
+// This test checks for namespace pollution by private tests.
+// Tests used to marked as public causing name conflicts with normal
+// functions only in test builds.
+
+// compile-flags: --test
+
+mod a {
+    pub fn foo() -> bool {
+        true
+    }
+}
+
+mod b {
+    #[test]
+    fn foo() {
+        local_name(); // ensure the local name still works
+    }
+
+    #[test]
+    fn local_name() {}
+}
+
+use a::*;
+use b::*;
+
+pub fn conflict() {
+    let _: bool = foo();
+}
diff --git a/src/test/ui/issues/issue-52705/auxiliary/png2.rs b/src/test/ui/issues/issue-52705/auxiliary/png2.rs
new file mode 100644
index 00000000000..fa9956e440d
--- /dev/null
+++ b/src/test/ui/issues/issue-52705/auxiliary/png2.rs
@@ -0,0 +1,3 @@
+#![crate_type = "lib"]
+
+pub struct DecodingError;
diff --git a/src/test/ui/issues/issue-52705/main.rs b/src/test/ui/issues/issue-52705/main.rs
new file mode 100644
index 00000000000..90bb8ca7537
--- /dev/null
+++ b/src/test/ui/issues/issue-52705/main.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:png2.rs
+// compile-flags:--extern png2
+// edition:2018
+
+mod png {
+    use png2 as png_ext;
+
+    fn foo() -> png_ext::DecodingError { unimplemented!() }
+}
+
+fn main() {
+    println!("Hello, world!");
+}
diff --git a/src/test/ui/issues/issue-5280.rs b/src/test/ui/issues/issue-5280.rs
new file mode 100644
index 00000000000..3c97dad6b14
--- /dev/null
+++ b/src/test/ui/issues/issue-5280.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(dead_code)]
+
+type FontTableTag = u32;
+
+trait FontTableTagConversions {
+  fn tag_to_string(self);
+}
+
+impl FontTableTagConversions for FontTableTag {
+  fn tag_to_string(self) {
+    &self;
+  }
+}
+
+pub fn main() {
+    5.tag_to_string();
+}
diff --git a/src/test/ui/issues/issue-5315.rs b/src/test/ui/issues/issue-5315.rs
new file mode 100644
index 00000000000..38c98254b93
--- /dev/null
+++ b/src/test/ui/issues/issue-5315.rs
@@ -0,0 +1,9 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+struct A(bool);
+
+pub fn main() {
+    let f = A;
+    f(true);
+}
diff --git a/src/test/ui/issues/issue-5321-immediates-with-bare-self.rs b/src/test/ui/issues/issue-5321-immediates-with-bare-self.rs
new file mode 100644
index 00000000000..64aa2836a7d
--- /dev/null
+++ b/src/test/ui/issues/issue-5321-immediates-with-bare-self.rs
@@ -0,0 +1,15 @@
+// run-pass
+
+trait Fooable {
+    fn yes(self);
+}
+
+impl Fooable for usize {
+    fn yes(self) {
+        for _ in 0..self { println!("yes"); }
+    }
+}
+
+pub fn main() {
+    2.yes();
+}
diff --git a/src/test/ui/issues/issue-53333.rs b/src/test/ui/issues/issue-53333.rs
new file mode 100644
index 00000000000..ccc9971f93c
--- /dev/null
+++ b/src/test/ui/issues/issue-53333.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(unused_imports)]
+// edition:2018
+
+fn main() {
+    use std;
+    let std = "std";
+    println!("{}", std);
+}
diff --git a/src/test/ui/issues/issue-53728.rs b/src/test/ui/issues/issue-53728.rs
new file mode 100644
index 00000000000..77b5010f776
--- /dev/null
+++ b/src/test/ui/issues/issue-53728.rs
@@ -0,0 +1,19 @@
+// run-pass
+
+#![allow(dead_code)]
+#[repr(u16)]
+enum DeviceKind {
+    Nil = 0,
+}
+
+#[repr(packed)]
+struct DeviceInfo {
+    endianness: u8,
+    device_kind: DeviceKind,
+}
+
+fn main() {
+    let _x = None::<(DeviceInfo, u8)>;
+    let _y = None::<(DeviceInfo, u16)>;
+    let _z = None::<(DeviceInfo, u64)>;
+}
diff --git a/src/test/ui/issues/issue-53843.rs b/src/test/ui/issues/issue-53843.rs
new file mode 100644
index 00000000000..f305b370ce6
--- /dev/null
+++ b/src/test/ui/issues/issue-53843.rs
@@ -0,0 +1,26 @@
+// run-pass
+
+use std::ops::Deref;
+
+pub struct Pin<P>(P);
+
+impl<P, T> Deref for Pin<P>
+where
+    P: Deref<Target=T>,
+{
+    type Target = T;
+
+    fn deref(&self) -> &T {
+        &*self.0
+    }
+}
+
+impl<P> Pin<P> {
+    fn poll(self) {}
+}
+
+fn main() {
+    let mut unit = ();
+    let pin = Pin(&mut unit);
+    pin.poll();
+}
diff --git a/src/test/ui/issues/issue-54462-mutable-noalias-correctness.rs b/src/test/ui/issues/issue-54462-mutable-noalias-correctness.rs
new file mode 100644
index 00000000000..412028bdcdc
--- /dev/null
+++ b/src/test/ui/issues/issue-54462-mutable-noalias-correctness.rs
@@ -0,0 +1,25 @@
+// run-pass
+//
+// compile-flags: -Ccodegen-units=1 -O
+
+fn linidx(row: usize, col: usize) -> usize {
+    row * 1 + col * 3
+}
+
+fn main() {
+    let mut mat = [1.0f32, 5.0, 9.0, 2.0, 6.0, 10.0, 3.0, 7.0, 11.0, 4.0, 8.0, 12.0];
+
+    for i in 0..2 {
+        for j in i+1..3 {
+            if mat[linidx(j, 3)] > mat[linidx(i, 3)] {
+                    for k in 0..4 {
+                            let (x, rest) = mat.split_at_mut(linidx(i, k) + 1);
+                            let a = x.last_mut().unwrap();
+                            let b = rest.get_mut(linidx(j, k) - linidx(i, k) - 1).unwrap();
+                            ::std::mem::swap(a, b);
+                    }
+            }
+        }
+    }
+    assert_eq!([9.0, 5.0, 1.0, 10.0, 6.0, 2.0, 11.0, 7.0, 3.0, 12.0, 8.0, 4.0], mat);
+}
diff --git a/src/test/ui/issues/issue-54467.rs b/src/test/ui/issues/issue-54467.rs
new file mode 100644
index 00000000000..734bf2768c2
--- /dev/null
+++ b/src/test/ui/issues/issue-54467.rs
@@ -0,0 +1,46 @@
+// run-pass
+
+pub trait Stream {
+    type Item;
+    type Error;
+}
+
+pub trait ParseError<I> {
+    type Output;
+}
+
+impl ParseError<char> for u32 {
+    type Output = ();
+}
+
+impl Stream for () {
+    type Item = char;
+    type Error = u32;
+}
+
+pub struct Lex<'a, I>
+    where I: Stream,
+          I::Error: ParseError<char>,
+          <<I as Stream>::Error as ParseError<char>>::Output: 'a
+{
+    x: &'a <I::Error as ParseError<char>>::Output
+}
+
+pub struct Reserved<'a, I> where
+    I: Stream<Item=char> + 'a,
+    I::Error: ParseError<I::Item>,
+    <<I as Stream>::Error as ParseError<char>>::Output: 'a
+
+{
+    x: Lex<'a, I>
+}
+
+fn main() {
+    let r: Reserved<()> = Reserved {
+        x: Lex {
+            x: &()
+        }
+    };
+
+    let _v = r.x.x;
+}
diff --git a/src/test/ui/issues/issue-54477-reduced-2.rs b/src/test/ui/issues/issue-54477-reduced-2.rs
new file mode 100644
index 00000000000..199d69b4540
--- /dev/null
+++ b/src/test/ui/issues/issue-54477-reduced-2.rs
@@ -0,0 +1,26 @@
+// run-pass
+// rust-lang/rust#54477: runtime bug in the VecDeque library that was
+// exposed by this test case, derived from test suite of crates.io
+// `collection` crate.
+
+use std::collections::VecDeque;
+
+fn main() {
+    let mut vecdeque_13 = VecDeque::from(vec![ ]);
+    let mut vecdeque_29 = VecDeque::from(vec![ 0 ]);
+    vecdeque_29.insert(0,  30 );
+    vecdeque_29.insert(1,  31 );
+    vecdeque_29.insert(2,  32 );
+    vecdeque_29.insert(3,  33 );
+    vecdeque_29.insert(4,  34 );
+    vecdeque_29.insert(5,  35 );
+    // println!("vecdeque_13: {:?}", vecdeque_13);
+    // println!("vecdeque_29: {:?}", vecdeque_29);
+
+    // println!("Invoking: `vecdeque_13.append(&mut vecdeque_29)`");
+    vecdeque_13.append(&mut vecdeque_29);
+
+    // println!("vecdeque_13: {:?}", vecdeque_13);
+
+    assert_eq!(vecdeque_13, VecDeque::from(vec![30, 31, 32, 33, 34, 35, 0]));
+}
diff --git a/src/test/ui/issues/issue-54696.rs b/src/test/ui/issues/issue-54696.rs
new file mode 100644
index 00000000000..d8408ed8549
--- /dev/null
+++ b/src/test/ui/issues/issue-54696.rs
@@ -0,0 +1,8 @@
+// run-pass
+
+fn main() {
+    // We shouldn't promote this
+    &(main as fn() == main as fn());
+    // Also check nested case
+    &(&(main as fn()) == &(main as fn()));
+}
diff --git a/src/test/ui/issues/issue-5518.rs b/src/test/ui/issues/issue-5518.rs
new file mode 100644
index 00000000000..97ed9ef309d
--- /dev/null
+++ b/src/test/ui/issues/issue-5518.rs
@@ -0,0 +1,8 @@
+// run-pass
+// aux-build:issue-5518.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_5518 as other;
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-5521.rs b/src/test/ui/issues/issue-5521.rs
new file mode 100644
index 00000000000..cafdbc39961
--- /dev/null
+++ b/src/test/ui/issues/issue-5521.rs
@@ -0,0 +1,17 @@
+// run-pass
+#![allow(dead_code)]
+// aux-build:issue-5521.rs
+
+
+
+extern crate issue_5521 as foo;
+
+fn bar(a: foo::map) {
+    if false {
+        panic!();
+    } else {
+        let _b = &(*a)[&2];
+    }
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-5530.rs b/src/test/ui/issues/issue-5530.rs
new file mode 100644
index 00000000000..72731cbb177
--- /dev/null
+++ b/src/test/ui/issues/issue-5530.rs
@@ -0,0 +1,40 @@
+// run-pass
+#![allow(dead_code)]
+
+enum Enum {
+    Foo { foo: usize },
+    Bar { bar: usize }
+}
+
+fn fun1(e1: &Enum, e2: &Enum) -> usize {
+    match (e1, e2) {
+        (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
+        (&Enum::Foo { foo: _ }, &Enum::Bar { bar: _ }) => 1,
+        (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
+        (&Enum::Bar { bar: _ }, &Enum::Foo { foo: _ }) => 3,
+    }
+}
+
+fn fun2(e1: &Enum, e2: &Enum) -> usize {
+    match (e1, e2) {
+        (&Enum::Foo { foo: _ }, &Enum::Foo { foo: _ }) => 0,
+        (&Enum::Foo { foo: _ }, _              ) => 1,
+        (&Enum::Bar { bar: _ }, &Enum::Bar { bar: _ }) => 2,
+        (&Enum::Bar { bar: _ }, _              ) => 3,
+    }
+}
+
+pub fn main() {
+    let foo = Enum::Foo { foo: 1 };
+    let bar = Enum::Bar { bar: 1 };
+
+    assert_eq!(fun1(&foo, &foo), 0);
+    assert_eq!(fun1(&foo, &bar), 1);
+    assert_eq!(fun1(&bar, &bar), 2);
+    assert_eq!(fun1(&bar, &foo), 3);
+
+    assert_eq!(fun2(&foo, &foo), 0);
+    assert_eq!(fun2(&foo, &bar), 1); // fun2 returns 0
+    assert_eq!(fun2(&bar, &bar), 2);
+    assert_eq!(fun2(&bar, &foo), 3); // fun2 returns 2
+}
diff --git a/src/test/ui/issues/issue-55376.rs b/src/test/ui/issues/issue-55376.rs
new file mode 100644
index 00000000000..4adff2b4544
--- /dev/null
+++ b/src/test/ui/issues/issue-55376.rs
@@ -0,0 +1,16 @@
+// run-pass
+// Tests that paths in `pub(...)` don't fail HIR verification.
+
+#![allow(unused_imports)]
+#![allow(dead_code)]
+
+pub(self) use self::my_mod::Foo;
+
+mod my_mod {
+    pub(super) use self::Foo as Bar;
+    pub(in super::my_mod) use self::Foo as Baz;
+
+    pub struct Foo;
+}
+
+fn main() {}
diff --git a/src/test/ui/issues/issue-55380.rs b/src/test/ui/issues/issue-55380.rs
new file mode 100644
index 00000000000..862218e2192
--- /dev/null
+++ b/src/test/ui/issues/issue-55380.rs
@@ -0,0 +1,28 @@
+// run-pass
+
+#![feature(specialization)]
+
+pub trait Foo {
+    fn abc() -> u32;
+    fn def() -> u32;
+}
+
+pub trait Marker {}
+
+impl Marker for () {}
+
+impl<T> Foo for T {
+    default fn abc() -> u32 { 16 }
+    default fn def() -> u32 { 42 }
+}
+
+impl<T: Marker> Foo for T {
+    fn def() -> u32 {
+        Self::abc()
+    }
+}
+
+fn main() {
+   assert_eq!(<()>::def(), 16);
+   assert_eq!(<i32>::def(), 42);
+}
diff --git a/src/test/ui/issues/issue-5550.rs b/src/test/ui/issues/issue-5550.rs
new file mode 100644
index 00000000000..6ea24747b39
--- /dev/null
+++ b/src/test/ui/issues/issue-5550.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(unused_assignments)]
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    let s: String = "foobar".to_string();
+    let mut t: &str = &s;
+    t = &t[0..3]; // for master: str::view(t, 0, 3) maybe
+}
diff --git a/src/test/ui/issues/issue-5554.rs b/src/test/ui/issues/issue-5554.rs
new file mode 100644
index 00000000000..7737536f43d
--- /dev/null
+++ b/src/test/ui/issues/issue-5554.rs
@@ -0,0 +1,29 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+use std::default::Default;
+
+pub struct X<T> {
+    a: T,
+}
+
+// reordering these bounds stops the ICE
+//
+// nmatsakis: This test used to have the bounds Default + PartialEq +
+// Default, but having duplicate bounds became illegal.
+impl<T: Default + PartialEq> Default for X<T> {
+    fn default() -> X<T> {
+        X { a: Default::default() }
+    }
+}
+
+macro_rules! constants {
+    () => {
+        let _ : X<isize> = Default::default();
+    }
+}
+
+pub fn main() {
+    constants!();
+}
diff --git a/src/test/ui/issues/issue-56237.rs b/src/test/ui/issues/issue-56237.rs
new file mode 100644
index 00000000000..534b85acec8
--- /dev/null
+++ b/src/test/ui/issues/issue-56237.rs
@@ -0,0 +1,13 @@
+// run-pass
+
+use std::ops::Deref;
+
+fn foo<P>(_value: <P as Deref>::Target)
+where
+    P: Deref,
+    <P as Deref>::Target: Sized,
+{}
+
+fn main() {
+    foo::<Box<u32>>(2);
+}
diff --git a/src/test/ui/issues/issue-5666.rs b/src/test/ui/issues/issue-5666.rs
new file mode 100644
index 00000000000..aa513277830
--- /dev/null
+++ b/src/test/ui/issues/issue-5666.rs
@@ -0,0 +1,27 @@
+// run-pass
+#![feature(box_syntax)]
+
+struct Dog {
+    name : String
+}
+
+trait Barks {
+    fn bark(&self) -> String;
+}
+
+impl Barks for Dog {
+    fn bark(&self) -> String {
+        return format!("woof! (I'm {})", self.name);
+    }
+}
+
+
+pub fn main() {
+    let snoopy = box Dog{name: "snoopy".to_string()};
+    let bubbles = box Dog{name: "bubbles".to_string()};
+    let barker = [snoopy as Box<dyn Barks>, bubbles as Box<dyn Barks>];
+
+    for pup in &barker {
+        println!("{}", pup.bark());
+    }
+}
diff --git a/src/test/ui/issues/issue-5688.rs b/src/test/ui/issues/issue-5688.rs
new file mode 100644
index 00000000000..b6e364c2f40
--- /dev/null
+++ b/src/test/ui/issues/issue-5688.rs
@@ -0,0 +1,20 @@
+// run-pass
+/*
+# Corrupted initialization in the static struct
+
+...should print &[1, 2, 3] but instead prints something like
+&[4492532864, 24]. It is pretty evident that the compiler messed up
+with the representation of [isize; n] and [isize] somehow, or at least
+failed to typecheck correctly.
+*/
+
+#[derive(Copy, Clone)]
+struct X { vec: &'static [isize] }
+
+static V: &'static [X] = &[X { vec: &[1, 2, 3] }];
+
+pub fn main() {
+    for &v in V {
+        println!("{:?}", v.vec);
+    }
+}
diff --git a/src/test/ui/issues/issue-5708.rs b/src/test/ui/issues/issue-5708.rs
new file mode 100644
index 00000000000..6fe9943d368
--- /dev/null
+++ b/src/test/ui/issues/issue-5708.rs
@@ -0,0 +1,55 @@
+// run-pass
+#![allow(unused_variables)]
+/*
+# ICE when returning struct with reference to trait
+
+A function which takes a reference to a trait and returns a
+struct with that reference results in an ICE.
+
+This does not occur with concrete types, only with references
+to traits.
+*/
+
+
+// original
+trait Inner {
+    fn print(&self);
+}
+
+impl Inner for isize {
+    fn print(&self) { print!("Inner: {}\n", *self); }
+}
+
+struct Outer<'a> {
+    inner: &'a (dyn Inner+'a)
+}
+
+impl<'a> Outer<'a> {
+    fn new(inner: &dyn Inner) -> Outer {
+        Outer {
+            inner: inner
+        }
+    }
+}
+
+pub fn main() {
+    let inner: isize = 5;
+    let outer = Outer::new(&inner as &dyn Inner);
+    outer.inner.print();
+}
+
+
+// minimal
+pub trait MyTrait<T> {
+    fn dummy(&self, t: T) -> T { panic!() }
+}
+
+pub struct MyContainer<'a, T:'a> {
+    foos: Vec<&'a (dyn MyTrait<T>+'a)> ,
+}
+
+impl<'a, T> MyContainer<'a, T> {
+    pub fn add (&mut self, foo: &'a dyn MyTrait<T>) {
+        self.foos.push(foo);
+    }
+}
diff --git a/src/test/ui/issues/issue-5718.rs b/src/test/ui/issues/issue-5718.rs
new file mode 100644
index 00000000000..63efec95311
--- /dev/null
+++ b/src/test/ui/issues/issue-5718.rs
@@ -0,0 +1,26 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+struct Element;
+
+macro_rules! foo {
+    ($tag: expr, $string: expr) => {
+        if $tag == $string {
+            let element: Box<_> = box Element;
+            unsafe {
+                return std::mem::transmute::<_, usize>(element);
+            }
+        }
+    }
+}
+
+fn bar() -> usize {
+    foo!("a", "b");
+    0
+}
+
+fn main() {
+    bar();
+}
diff --git a/src/test/ui/issues/issue-5741.rs b/src/test/ui/issues/issue-5741.rs
new file mode 100644
index 00000000000..b9eaf0be7fb
--- /dev/null
+++ b/src/test/ui/issues/issue-5741.rs
@@ -0,0 +1,9 @@
+// run-pass
+// pretty-expanded FIXME #23616
+#![allow(while_true)]
+#![allow(unreachable_code)]
+
+pub fn main() {
+    return;
+    while true {};
+}
diff --git a/src/test/ui/issues/issue-5791.rs b/src/test/ui/issues/issue-5791.rs
new file mode 100644
index 00000000000..2f8bf1e9369
--- /dev/null
+++ b/src/test/ui/issues/issue-5791.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+extern {
+    #[link_name = "malloc"]
+    fn malloc1(len: i32) -> *const u8;
+    #[link_name = "malloc"]
+    fn malloc2(len: i32, foo: i32) -> *const u8;
+}
+
+pub fn main () {}
diff --git a/src/test/ui/issues/issue-58212.rs b/src/test/ui/issues/issue-58212.rs
new file mode 100644
index 00000000000..21dcdd56bf6
--- /dev/null
+++ b/src/test/ui/issues/issue-58212.rs
@@ -0,0 +1,16 @@
+// run-pass
+
+trait FromUnchecked {
+    unsafe fn from_unchecked();
+}
+
+impl FromUnchecked for [u8; 1] {
+    unsafe fn from_unchecked() {
+        #[allow(deprecated)]
+        let mut array: Self = std::mem::uninitialized();
+        let _ptr = &mut array as *mut [u8] as *mut u8;
+    }
+}
+
+fn main() {
+}
diff --git a/src/test/ui/issues/issue-58435-ice-with-assoc-const.rs b/src/test/ui/issues/issue-58435-ice-with-assoc-const.rs
new file mode 100644
index 00000000000..fac727d2d7d
--- /dev/null
+++ b/src/test/ui/issues/issue-58435-ice-with-assoc-const.rs
@@ -0,0 +1,18 @@
+// run-pass
+// The const-evaluator was at one point ICE'ing while trying to
+// evaluate the body of `fn id` during the `s.id()` call in main.
+
+struct S<T>(T);
+
+impl<T> S<T> {
+    const ID: fn(&S<T>) -> &S<T> = |s| s;
+    pub fn id(&self) -> &Self {
+        Self::ID(self) // This, plus call below ...
+    }
+}
+
+fn main() {
+    let s = S(10u32);
+    assert!(S::<u32>::ID(&s).0 == 10); // Works fine
+    assert!(s.id().0 == 10); // ... causes compiler to panic
+}
diff --git a/src/test/ui/issues/issue-58463.rs b/src/test/ui/issues/issue-58463.rs
new file mode 100644
index 00000000000..8ab845366b7
--- /dev/null
+++ b/src/test/ui/issues/issue-58463.rs
@@ -0,0 +1,8 @@
+// run-pass
+// compile-flags:-C debuginfo=2
+fn foo() -> impl Copy {
+    foo
+}
+fn main() {
+    foo();
+}
diff --git a/src/test/ui/issues/issue-5917.rs b/src/test/ui/issues/issue-5917.rs
new file mode 100644
index 00000000000..6ab7081cf88
--- /dev/null
+++ b/src/test/ui/issues/issue-5917.rs
@@ -0,0 +1,9 @@
+// run-pass
+#![allow(non_upper_case_globals)]
+
+struct T (&'static [isize]);
+static t : T = T (&[5, 4, 3]);
+pub fn main () {
+    let T(ref v) = t;
+    assert_eq!(v[0], 5);
+}
diff --git a/src/test/ui/issues/issue-5988.rs b/src/test/ui/issues/issue-5988.rs
new file mode 100644
index 00000000000..303fb4fbc94
--- /dev/null
+++ b/src/test/ui/issues/issue-5988.rs
@@ -0,0 +1,24 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+trait B {
+    fn f(&self);
+}
+
+trait T : B {
+}
+
+struct A;
+
+impl<U: T> B for U {
+    fn f(&self) { }
+}
+
+impl T for A {
+}
+
+fn main() {
+    let a = A;
+    let br = &a as &dyn B;
+    br.f();
+}
diff --git a/src/test/ui/issues/issue-5997.rs b/src/test/ui/issues/issue-5997.rs
new file mode 100644
index 00000000000..145e3a7928d
--- /dev/null
+++ b/src/test/ui/issues/issue-5997.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(dead_code)]
+
+fn f<T>() -> bool {
+    enum E<T> { V(T) }
+
+    struct S<T>(T);
+
+    true
+}
+
+fn main() {
+    let b = f::<isize>();
+    assert!(b);
+}
diff --git a/src/test/ui/issues/issue-6117.rs b/src/test/ui/issues/issue-6117.rs
new file mode 100644
index 00000000000..5235d53d84a
--- /dev/null
+++ b/src/test/ui/issues/issue-6117.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+enum Either<T, U> { Left(T), Right(U) }
+
+pub fn main() {
+    match Either::Left(Box::new(17)) {
+        Either::Right(()) => {}
+        _ => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-6128.rs b/src/test/ui/issues/issue-6128.rs
new file mode 100644
index 00000000000..8859fbe6afb
--- /dev/null
+++ b/src/test/ui/issues/issue-6128.rs
@@ -0,0 +1,24 @@
+// run-pass
+
+#![feature(box_syntax)]
+
+use std::collections::HashMap;
+
+trait Graph<Node, Edge> {
+    fn f(&self, _: Edge);
+    fn g(&self, _: Node);
+}
+
+impl<E> Graph<isize, E> for HashMap<isize, isize> {
+    fn f(&self, _e: E) {
+        panic!();
+    }
+    fn g(&self, _e: isize) {
+        panic!();
+    }
+}
+
+pub fn main() {
+    let g : Box<HashMap<isize,isize>> = box HashMap::new();
+    let _g2 : Box<dyn Graph<isize,isize>> = g as Box<dyn Graph<isize,isize>>;
+}
diff --git a/src/test/ui/issues/issue-6130.rs b/src/test/ui/issues/issue-6130.rs
new file mode 100644
index 00000000000..a33ea686947
--- /dev/null
+++ b/src/test/ui/issues/issue-6130.rs
@@ -0,0 +1,10 @@
+// run-pass
+
+pub fn main() {
+    let i: usize = 0;
+    assert!(i <= 0xFFFF_FFFF);
+
+    let i: isize = 0;
+    assert!(i >= -0x8000_0000);
+    assert!(i <= 0x7FFF_FFFF);
+}
diff --git a/src/test/ui/issues/issue-6153.rs b/src/test/ui/issues/issue-6153.rs
new file mode 100644
index 00000000000..25f026f214b
--- /dev/null
+++ b/src/test/ui/issues/issue-6153.rs
@@ -0,0 +1,13 @@
+// run-pass
+
+
+fn swap<F>(f: F) -> Vec<isize> where F: FnOnce(Vec<isize>) -> Vec<isize> {
+    let x = vec![1, 2, 3];
+    f(x)
+}
+
+pub fn main() {
+    let v = swap(|mut x| { x.push(4); x });
+    let w = swap(|mut x| { x.push(4); x });
+    assert_eq!(v, w);
+}
diff --git a/src/test/ui/issues/issue-6157.rs b/src/test/ui/issues/issue-6157.rs
new file mode 100644
index 00000000000..b7a44ed8623
--- /dev/null
+++ b/src/test/ui/issues/issue-6157.rs
@@ -0,0 +1,23 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub trait OpInt { fn call(&mut self, _: isize, _: isize) -> isize; }
+
+impl<F> OpInt for F where F: FnMut(isize, isize) -> isize {
+    fn call(&mut self, a:isize, b:isize) -> isize {
+        (*self)(a, b)
+    }
+}
+
+fn squarei<'a>(x: isize, op: &'a mut dyn OpInt) -> isize { op.call(x, x) }
+
+fn muli(x:isize, y:isize) -> isize { x * y }
+
+pub fn main() {
+    let mut f = |x, y| muli(x, y);
+    {
+        let g = &mut f;
+        let h = g as &mut dyn OpInt;
+        squarei(3, h);
+    }
+}
diff --git a/src/test/ui/issues/issue-61696.rs b/src/test/ui/issues/issue-61696.rs
new file mode 100644
index 00000000000..dca52927fd7
--- /dev/null
+++ b/src/test/ui/issues/issue-61696.rs
@@ -0,0 +1,66 @@
+// run-pass
+
+pub enum Infallible {}
+
+// The check that the `bool` field of `V1` is encoding a "niche variant"
+// (i.e. not `V1`, so `V3` or `V4`) used to be mathematically incorrect,
+// causing valid `V1` values to be interpreted as other variants.
+pub enum E1 {
+    V1 { f: bool },
+    V2 { f: Infallible },
+    V3,
+    V4,
+}
+
+// Computing the discriminant used to be done using the niche type (here `u8`,
+// from the `bool` field of `V1`), overflowing for variants with large enough
+// indices (`V3` and `V4`), causing them to be interpreted as other variants.
+pub enum E2<X> {
+    V1 { f: bool },
+
+    /*_00*/ _01(X), _02(X), _03(X), _04(X), _05(X), _06(X), _07(X),
+    _08(X), _09(X), _0A(X), _0B(X), _0C(X), _0D(X), _0E(X), _0F(X),
+    _10(X), _11(X), _12(X), _13(X), _14(X), _15(X), _16(X), _17(X),
+    _18(X), _19(X), _1A(X), _1B(X), _1C(X), _1D(X), _1E(X), _1F(X),
+    _20(X), _21(X), _22(X), _23(X), _24(X), _25(X), _26(X), _27(X),
+    _28(X), _29(X), _2A(X), _2B(X), _2C(X), _2D(X), _2E(X), _2F(X),
+    _30(X), _31(X), _32(X), _33(X), _34(X), _35(X), _36(X), _37(X),
+    _38(X), _39(X), _3A(X), _3B(X), _3C(X), _3D(X), _3E(X), _3F(X),
+    _40(X), _41(X), _42(X), _43(X), _44(X), _45(X), _46(X), _47(X),
+    _48(X), _49(X), _4A(X), _4B(X), _4C(X), _4D(X), _4E(X), _4F(X),
+    _50(X), _51(X), _52(X), _53(X), _54(X), _55(X), _56(X), _57(X),
+    _58(X), _59(X), _5A(X), _5B(X), _5C(X), _5D(X), _5E(X), _5F(X),
+    _60(X), _61(X), _62(X), _63(X), _64(X), _65(X), _66(X), _67(X),
+    _68(X), _69(X), _6A(X), _6B(X), _6C(X), _6D(X), _6E(X), _6F(X),
+    _70(X), _71(X), _72(X), _73(X), _74(X), _75(X), _76(X), _77(X),
+    _78(X), _79(X), _7A(X), _7B(X), _7C(X), _7D(X), _7E(X), _7F(X),
+    _80(X), _81(X), _82(X), _83(X), _84(X), _85(X), _86(X), _87(X),
+    _88(X), _89(X), _8A(X), _8B(X), _8C(X), _8D(X), _8E(X), _8F(X),
+    _90(X), _91(X), _92(X), _93(X), _94(X), _95(X), _96(X), _97(X),
+    _98(X), _99(X), _9A(X), _9B(X), _9C(X), _9D(X), _9E(X), _9F(X),
+    _A0(X), _A1(X), _A2(X), _A3(X), _A4(X), _A5(X), _A6(X), _A7(X),
+    _A8(X), _A9(X), _AA(X), _AB(X), _AC(X), _AD(X), _AE(X), _AF(X),
+    _B0(X), _B1(X), _B2(X), _B3(X), _B4(X), _B5(X), _B6(X), _B7(X),
+    _B8(X), _B9(X), _BA(X), _BB(X), _BC(X), _BD(X), _BE(X), _BF(X),
+    _C0(X), _C1(X), _C2(X), _C3(X), _C4(X), _C5(X), _C6(X), _C7(X),
+    _C8(X), _C9(X), _CA(X), _CB(X), _CC(X), _CD(X), _CE(X), _CF(X),
+    _D0(X), _D1(X), _D2(X), _D3(X), _D4(X), _D5(X), _D6(X), _D7(X),
+    _D8(X), _D9(X), _DA(X), _DB(X), _DC(X), _DD(X), _DE(X), _DF(X),
+    _E0(X), _E1(X), _E2(X), _E3(X), _E4(X), _E5(X), _E6(X), _E7(X),
+    _E8(X), _E9(X), _EA(X), _EB(X), _EC(X), _ED(X), _EE(X), _EF(X),
+    _F0(X), _F1(X), _F2(X), _F3(X), _F4(X), _F5(X), _F6(X), _F7(X),
+    _F8(X), _F9(X), _FA(X), _FB(X), _FC(X), _FD(X), _FE(X), _FF(X),
+
+    V3,
+    V4,
+}
+
+fn main() {
+    if let E1::V2 { .. } = (E1::V1 { f: true }) {
+        unreachable!()
+    }
+
+    if let E2::V1 { .. } = E2::V3::<Infallible> {
+        unreachable!()
+    }
+}
diff --git a/src/test/ui/issues/issue-61894.rs b/src/test/ui/issues/issue-61894.rs
new file mode 100644
index 00000000000..c018ac73fb5
--- /dev/null
+++ b/src/test/ui/issues/issue-61894.rs
@@ -0,0 +1,21 @@
+// run-pass
+
+#![feature(core_intrinsics)]
+
+use std::any::type_name;
+
+struct Bar<M>(M);
+
+impl<M> Bar<M> {
+    fn foo(&self) -> &'static str {
+        fn f() {}
+        fn type_name_of<T>(_: T) -> &'static str {
+            type_name::<T>()
+        }
+        type_name_of(f)
+    }
+}
+
+fn main() {
+    assert_eq!(Bar(()).foo(), "issue_61894::Bar<_>::foo::f");
+}
diff --git a/src/test/ui/issues/issue-6318.rs b/src/test/ui/issues/issue-6318.rs
new file mode 100644
index 00000000000..d8bd83f0dc6
--- /dev/null
+++ b/src/test/ui/issues/issue-6318.rs
@@ -0,0 +1,22 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![feature(box_syntax)]
+
+pub enum Thing {
+    A(Box<dyn Foo+'static>)
+}
+
+pub trait Foo {
+    fn dummy(&self) { }
+}
+
+pub struct Struct;
+
+impl Foo for Struct {}
+
+pub fn main() {
+    match Thing::A(box Struct as Box<dyn Foo + 'static>) {
+        Thing::A(_a) => 0,
+    };
+}
diff --git a/src/test/ui/issues/issue-6334.rs b/src/test/ui/issues/issue-6334.rs
new file mode 100644
index 00000000000..acf48da1543
--- /dev/null
+++ b/src/test/ui/issues/issue-6334.rs
@@ -0,0 +1,46 @@
+// run-pass
+// Tests that everything still compiles and runs fine even when
+// we reorder the bounds.
+
+
+trait A {
+    fn a(&self) -> usize;
+}
+
+trait B {
+    fn b(&self) -> usize;
+}
+
+trait C {
+    fn combine<T:A+B>(&self, t: &T) -> usize;
+}
+
+struct Foo;
+
+impl A for Foo {
+    fn a(&self) -> usize { 1 }
+}
+
+impl B for Foo {
+    fn b(&self) -> usize { 2 }
+}
+
+struct Bar;
+
+impl C for Bar {
+    // Note below: bounds in impl decl are in reverse order.
+    fn combine<T:B+A>(&self, t: &T) -> usize {
+        (t.a() * 100) + t.b()
+    }
+}
+
+fn use_c<S:C, T:B+A>(s: &S, t: &T) -> usize {
+    s.combine(t)
+}
+
+pub fn main() {
+    let foo = Foo;
+    let bar = Bar;
+    let r = use_c(&bar, &foo);
+    assert_eq!(r, 102);
+}
diff --git a/src/test/ui/issues/issue-6344-let.rs b/src/test/ui/issues/issue-6344-let.rs
new file mode 100644
index 00000000000..a7b6a2e2d66
--- /dev/null
+++ b/src/test/ui/issues/issue-6344-let.rs
@@ -0,0 +1,15 @@
+// run-pass
+#![allow(non_shorthand_field_patterns)]
+
+struct A { x: usize }
+
+impl Drop for A {
+    fn drop(&mut self) {}
+}
+
+pub fn main() {
+    let a = A { x: 0 };
+
+    let A { x: ref x } = a;
+    println!("{}", x)
+}
diff --git a/src/test/ui/issues/issue-6344-match.rs b/src/test/ui/issues/issue-6344-match.rs
new file mode 100644
index 00000000000..4505a34c716
--- /dev/null
+++ b/src/test/ui/issues/issue-6344-match.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(non_shorthand_field_patterns)]
+
+struct A { x: usize }
+
+impl Drop for A {
+    fn drop(&mut self) {}
+}
+
+pub fn main() {
+    let a = A { x: 0 };
+
+    match a {
+        A { x : ref x } => {
+            println!("{}", x)
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-6449.rs b/src/test/ui/issues/issue-6449.rs
new file mode 100644
index 00000000000..bfd4c123208
--- /dev/null
+++ b/src/test/ui/issues/issue-6449.rs
@@ -0,0 +1,44 @@
+// run-pass
+#![allow(dead_code)]
+
+enum Foo {
+    Bar(isize),
+    Baz,
+}
+
+enum Other {
+    Other1(Foo),
+    Other2(Foo, Foo),
+}
+
+fn main() {
+    match Foo::Baz {
+        ::Foo::Bar(3) => panic!(),
+        ::Foo::Bar(_) if false => panic!(),
+        ::Foo::Bar(..) if false => panic!(),
+        ::Foo::Bar(_n) => panic!(),
+        ::Foo::Baz => {}
+    }
+    match Foo::Bar(3) {
+        ::Foo::Bar(3) => {}
+        ::Foo::Bar(_) if false => panic!(),
+        ::Foo::Bar(..) if false => panic!(),
+        ::Foo::Bar(_n) => panic!(),
+        ::Foo::Baz => panic!(),
+    }
+    match Foo::Bar(4) {
+        ::Foo::Bar(3) => panic!(),
+        ::Foo::Bar(_) if false => panic!(),
+        ::Foo::Bar(..) if false => panic!(),
+        ::Foo::Bar(n) => assert_eq!(n, 4),
+        ::Foo::Baz => panic!(),
+    }
+
+    match Other::Other1(Foo::Baz) {
+        ::Other::Other1(::Foo::Baz) => {}
+        ::Other::Other1(::Foo::Bar(_)) => {}
+        ::Other::Other2(::Foo::Baz, ::Foo::Bar(_)) => {}
+        ::Other::Other2(::Foo::Bar(..), ::Foo::Baz) => {}
+        ::Other::Other2(..) => {}
+    }
+}
diff --git a/src/test/ui/issues/issue-6892.rs b/src/test/ui/issues/issue-6892.rs
new file mode 100644
index 00000000000..a361461a4ce
--- /dev/null
+++ b/src/test/ui/issues/issue-6892.rs
@@ -0,0 +1,58 @@
+// run-pass
+#![allow(dead_code)]
+// Ensures that destructors are run for expressions of the form "let _ = e;"
+// where `e` is a type which requires a destructor.
+
+
+struct Foo;
+struct Bar { x: isize }
+struct Baz(isize);
+enum FooBar { _Foo(Foo), _Bar(usize) }
+
+static mut NUM_DROPS: usize = 0;
+
+impl Drop for Foo {
+    fn drop(&mut self) {
+        unsafe { NUM_DROPS += 1; }
+    }
+}
+impl Drop for Bar {
+    fn drop(&mut self) {
+        unsafe { NUM_DROPS += 1; }
+    }
+}
+impl Drop for Baz {
+    fn drop(&mut self) {
+        unsafe { NUM_DROPS += 1; }
+    }
+}
+impl Drop for FooBar {
+    fn drop(&mut self) {
+        unsafe { NUM_DROPS += 1; }
+    }
+}
+
+fn main() {
+    assert_eq!(unsafe { NUM_DROPS }, 0);
+    { let _x = Foo; }
+    assert_eq!(unsafe { NUM_DROPS }, 1);
+    { let _x = Bar { x: 21 }; }
+    assert_eq!(unsafe { NUM_DROPS }, 2);
+    { let _x = Baz(21); }
+    assert_eq!(unsafe { NUM_DROPS }, 3);
+    { let _x = FooBar::_Foo(Foo); }
+    assert_eq!(unsafe { NUM_DROPS }, 5);
+    { let _x = FooBar::_Bar(42); }
+    assert_eq!(unsafe { NUM_DROPS }, 6);
+
+    { let _ = Foo; }
+    assert_eq!(unsafe { NUM_DROPS }, 7);
+    { let _ = Bar { x: 21 }; }
+    assert_eq!(unsafe { NUM_DROPS }, 8);
+    { let _ = Baz(21); }
+    assert_eq!(unsafe { NUM_DROPS }, 9);
+    { let _ = FooBar::_Foo(Foo); }
+    assert_eq!(unsafe { NUM_DROPS }, 11);
+    { let _ = FooBar::_Bar(42); }
+    assert_eq!(unsafe { NUM_DROPS }, 12);
+}
diff --git a/src/test/ui/issues/issue-6919.rs b/src/test/ui/issues/issue-6919.rs
new file mode 100644
index 00000000000..11aed120873
--- /dev/null
+++ b/src/test/ui/issues/issue-6919.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(unused_attributes)]
+// aux-build:iss.rs
+
+// pretty-expanded FIXME #23616
+
+#![crate_id="issue-6919"]
+extern crate issue6919_3;
+
+pub fn main() {
+    let _ = issue6919_3::D.k;
+}
diff --git a/src/test/ui/issues/issue-7012.rs b/src/test/ui/issues/issue-7012.rs
new file mode 100644
index 00000000000..90eba170695
--- /dev/null
+++ b/src/test/ui/issues/issue-7012.rs
@@ -0,0 +1,22 @@
+// run-pass
+#![allow(non_camel_case_types)]
+#![allow(non_upper_case_globals)]
+
+/*
+# Comparison of static arrays
+
+The expected behaviour would be that `test == test1`, therefore 'true'
+would be printed, however the below prints false.
+*/
+
+struct signature<'a> { pattern : &'a [u32] }
+
+static test1: signature<'static> =  signature {
+  pattern: &[0x243f6a88,0x85a308d3,0x13198a2e,0x03707344,0xa4093822,0x299f31d0]
+};
+
+pub fn main() {
+  let test: &[u32] = &[0x243f6a88,0x85a308d3,0x13198a2e,
+                       0x03707344,0xa4093822,0x299f31d0];
+  println!("{}",test==test1.pattern);
+}
diff --git a/src/test/ui/issues/issue-7178.rs b/src/test/ui/issues/issue-7178.rs
new file mode 100644
index 00000000000..30aa736cdc6
--- /dev/null
+++ b/src/test/ui/issues/issue-7178.rs
@@ -0,0 +1,10 @@
+// run-pass
+// aux-build:issue-7178.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_7178 as cross_crate_self;
+
+pub fn main() {
+    let _ = cross_crate_self::Foo::new(&1);
+}
diff --git a/src/test/ui/issues/issue-7222.rs b/src/test/ui/issues/issue-7222.rs
new file mode 100644
index 00000000000..64907316626
--- /dev/null
+++ b/src/test/ui/issues/issue-7222.rs
@@ -0,0 +1,12 @@
+// run-pass
+// pretty-expanded FIXME #23616
+#![allow(illegal_floating_point_literal_pattern)] // FIXME #41620
+
+pub fn main() {
+    const FOO: f64 = 10.0;
+
+    match 0.0 {
+        0.0 ..= FOO => (),
+        _ => ()
+    }
+}
diff --git a/src/test/ui/issues/issue-7344.rs b/src/test/ui/issues/issue-7344.rs
new file mode 100644
index 00000000000..f1727d0c1ae
--- /dev/null
+++ b/src/test/ui/issues/issue-7344.rs
@@ -0,0 +1,22 @@
+// run-pass
+#![allow(unused_must_use)]
+// pretty-expanded FIXME #23616
+
+#![allow(unreachable_code)]
+
+fn foo() -> bool { false }
+
+fn bar() {
+    return;
+    !foo();
+}
+
+fn baz() {
+    return;
+    if "" == "" {}
+}
+
+pub fn main() {
+    bar();
+    baz();
+}
diff --git a/src/test/ui/issues/issue-7519-match-unit-in-arg.rs b/src/test/ui/issues/issue-7519-match-unit-in-arg.rs
new file mode 100644
index 00000000000..7d838cbb09b
--- /dev/null
+++ b/src/test/ui/issues/issue-7519-match-unit-in-arg.rs
@@ -0,0 +1,12 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+/*
+#7519 ICE pattern matching unit in function argument
+*/
+
+fn foo(():()) { }
+
+pub fn main() {
+    foo(());
+}
diff --git a/src/test/ui/issues/issue-7563.rs b/src/test/ui/issues/issue-7563.rs
new file mode 100644
index 00000000000..c62405554b4
--- /dev/null
+++ b/src/test/ui/issues/issue-7563.rs
@@ -0,0 +1,28 @@
+// run-pass
+#![allow(dead_code)]
+trait IDummy {
+    fn do_nothing(&self);
+}
+
+#[derive(Debug)]
+struct A { a: isize }
+#[derive(Debug)]
+struct B<'a> { b: isize, pa: &'a A }
+
+    impl IDummy for A {
+        fn do_nothing(&self) {
+            println!("A::do_nothing() is called");
+        }
+    }
+
+impl<'a> B<'a> {
+    fn get_pa(&self) -> &'a dyn IDummy { self.pa as &'a dyn IDummy }
+}
+
+pub fn main() {
+    let sa = A { a: 100 };
+    let sb = B { b: 200, pa: &sa };
+
+    println!("sa is {:?}", sa);
+    println!("sb is {:?}", sb);
+}
diff --git a/src/test/ui/issues/issue-7575.rs b/src/test/ui/issues/issue-7575.rs
new file mode 100644
index 00000000000..ac69f2b1c80
--- /dev/null
+++ b/src/test/ui/issues/issue-7575.rs
@@ -0,0 +1,17 @@
+// run-pass
+
+trait Foo {
+    fn new() -> bool { false }
+    fn dummy(&self) { }
+}
+
+trait Bar {
+    fn new(&self) -> bool { true }
+}
+
+impl Bar for isize {}
+impl Foo for isize {}
+
+fn main() {
+    assert!(1.new());
+}
diff --git a/src/test/ui/issues/issue-7660.rs b/src/test/ui/issues/issue-7660.rs
new file mode 100644
index 00000000000..ad0b8ecff39
--- /dev/null
+++ b/src/test/ui/issues/issue-7660.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(unused_variables)]
+// Regression test for issue 7660
+// rvalue lifetime too short when equivalent `match` works
+
+// pretty-expanded FIXME #23616
+
+use std::collections::HashMap;
+
+struct A(isize, isize);
+
+pub fn main() {
+    let mut m: HashMap<isize, A> = HashMap::new();
+    m.insert(1, A(0, 0));
+
+    let A(ref _a, ref _b) = m[&1];
+    let (a, b) = match m[&1] { A(ref _a, ref _b) => (_a, _b) };
+}
diff --git a/src/test/ui/issues/issue-7663.rs b/src/test/ui/issues/issue-7663.rs
new file mode 100644
index 00000000000..b15e215db0f
--- /dev/null
+++ b/src/test/ui/issues/issue-7663.rs
@@ -0,0 +1,32 @@
+// run-pass
+
+#![allow(unused_imports, dead_code)]
+
+mod test1 {
+
+    mod foo { pub fn p() -> isize { 1 } }
+    mod bar { pub fn p() -> isize { 2 } }
+
+    pub mod baz {
+        use test1::bar::p;
+
+        pub fn my_main() { assert_eq!(p(), 2); }
+    }
+}
+
+mod test2 {
+
+    mod foo { pub fn p() -> isize { 1 } }
+    mod bar { pub fn p() -> isize { 2 } }
+
+    pub mod baz {
+        use test2::bar::p;
+
+        pub fn my_main() { assert_eq!(p(), 2); }
+    }
+}
+
+fn main() {
+    test1::baz::my_main();
+    test2::baz::my_main();
+}
diff --git a/src/test/ui/issues/issue-7784.rs b/src/test/ui/issues/issue-7784.rs
new file mode 100644
index 00000000000..b75e547079e
--- /dev/null
+++ b/src/test/ui/issues/issue-7784.rs
@@ -0,0 +1,31 @@
+// run-pass
+#![feature(slice_patterns)]
+
+use std::ops::Add;
+
+fn foo<T: Add<Output=T> + Clone>([x, y, z]: [T; 3]) -> (T, T, T) {
+    (x.clone(), x.clone() + y.clone(), x + y + z)
+}
+fn bar(a: &'static str, b: &'static str) -> [&'static str; 4] {
+    [a, b, b, a]
+}
+
+fn main() {
+    assert_eq!(foo([1, 2, 3]), (1, 3, 6));
+
+    let [a, b, c, d] = bar("foo", "bar");
+    assert_eq!(a, "foo");
+    assert_eq!(b, "bar");
+    assert_eq!(c, "bar");
+    assert_eq!(d, "foo");
+
+    let [a, _, _, d] = bar("baz", "foo");
+    assert_eq!(a, "baz");
+    assert_eq!(d, "baz");
+
+    let out = bar("baz", "foo");
+    let [a, xs.., d] = out;
+    assert_eq!(a, "baz");
+    assert_eq!(xs, ["foo", "foo"]);
+    assert_eq!(d, "baz");
+}
diff --git a/src/test/ui/issues/issue-7899.rs b/src/test/ui/issues/issue-7899.rs
new file mode 100644
index 00000000000..fb631f83697
--- /dev/null
+++ b/src/test/ui/issues/issue-7899.rs
@@ -0,0 +1,11 @@
+// run-pass
+#![allow(unused_variables)]
+// aux-build:issue-7899.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_7899 as testcrate;
+
+fn main() {
+    let f = testcrate::V2(1.0f32, 2.0f32);
+}
diff --git a/src/test/ui/issues/issue-7911.rs b/src/test/ui/issues/issue-7911.rs
new file mode 100644
index 00000000000..de833324bd2
--- /dev/null
+++ b/src/test/ui/issues/issue-7911.rs
@@ -0,0 +1,37 @@
+// run-pass
+// (Closes #7911) Test that we can use the same self expression
+// with different mutability in macro in two methods
+
+#![allow(unused_variables)] // unused foobar_immut + foobar_mut
+trait FooBar {
+    fn dummy(&self) { }
+}
+struct Bar(i32);
+struct Foo { bar: Bar }
+
+impl FooBar for Bar {}
+
+trait Test {
+    fn get_immut(&self) -> &dyn FooBar;
+    fn get_mut(&mut self) -> &mut dyn FooBar;
+}
+
+macro_rules! generate_test { ($type_:path, $slf:ident, $field:expr) => (
+    impl Test for $type_ {
+        fn get_immut(&$slf) -> &dyn FooBar {
+            &$field as &dyn FooBar
+        }
+
+        fn get_mut(&mut $slf) -> &mut dyn FooBar {
+            &mut $field as &mut dyn FooBar
+        }
+    }
+)}
+
+generate_test!(Foo, self, self.bar);
+
+pub fn main() {
+    let mut foo: Foo = Foo { bar: Bar(42) };
+    { let foobar_immut = foo.get_immut(); }
+    { let foobar_mut = foo.get_mut(); }
+}
diff --git a/src/test/ui/issues/issue-8044.rs b/src/test/ui/issues/issue-8044.rs
new file mode 100644
index 00000000000..858f98b654d
--- /dev/null
+++ b/src/test/ui/issues/issue-8044.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-8044.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_8044 as minimal;
+use minimal::{BTree, leaf};
+
+pub fn main() {
+    BTree::<isize> { node: leaf(1) };
+}
diff --git a/src/test/ui/issues/issue-8248.rs b/src/test/ui/issues/issue-8248.rs
new file mode 100644
index 00000000000..31a305c31be
--- /dev/null
+++ b/src/test/ui/issues/issue-8248.rs
@@ -0,0 +1,15 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+trait A {
+    fn dummy(&self) { }
+}
+struct B;
+impl A for B {}
+
+fn foo(_: &mut dyn A) {}
+
+pub fn main() {
+    let mut b = B;
+    foo(&mut b as &mut dyn A);
+}
diff --git a/src/test/ui/issues/issue-8249.rs b/src/test/ui/issues/issue-8249.rs
new file mode 100644
index 00000000000..d09dff3a697
--- /dev/null
+++ b/src/test/ui/issues/issue-8249.rs
@@ -0,0 +1,20 @@
+// run-pass
+#![allow(dead_code)]
+// pretty-expanded FIXME #23616
+
+trait A {
+    fn dummy(&self) { }
+}
+struct B;
+impl A for B {}
+
+struct C<'a> {
+    foo: &'a mut (dyn A+'a),
+}
+
+fn foo(a: &mut dyn A) {
+    C{ foo: a };
+}
+
+pub fn main() {
+}
diff --git a/src/test/ui/issues/issue-8259.rs b/src/test/ui/issues/issue-8259.rs
new file mode 100644
index 00000000000..2802bea7fe0
--- /dev/null
+++ b/src/test/ui/issues/issue-8259.rs
@@ -0,0 +1,12 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_upper_case_globals)]
+
+// aux-build:issue-8259.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_8259 as other;
+static a: other::Foo<'static> = other::Foo::A;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-8351-1.rs b/src/test/ui/issues/issue-8351-1.rs
new file mode 100644
index 00000000000..139f027cb90
--- /dev/null
+++ b/src/test/ui/issues/issue-8351-1.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(dead_code)]
+
+enum E {
+    Foo{f: isize},
+    Bar,
+}
+
+pub fn main() {
+    let e = E::Foo{f: 0};
+    match e {
+        E::Foo{f: 1} => panic!(),
+        E::Foo{..} => (),
+        _ => panic!(),
+    }
+}
diff --git a/src/test/ui/issues/issue-8351-2.rs b/src/test/ui/issues/issue-8351-2.rs
new file mode 100644
index 00000000000..bc66cbb77c0
--- /dev/null
+++ b/src/test/ui/issues/issue-8351-2.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(dead_code)]
+
+enum E {
+    Foo{f: isize, b: bool},
+    Bar,
+}
+
+pub fn main() {
+    let e = E::Foo{f: 0, b: false};
+    match e {
+        E::Foo{f: 1, b: true} => panic!(),
+        E::Foo{b: false, f: 0} => (),
+        _ => panic!(),
+    }
+}
diff --git a/src/test/ui/issues/issue-8391.rs b/src/test/ui/issues/issue-8391.rs
new file mode 100644
index 00000000000..1a90369659b
--- /dev/null
+++ b/src/test/ui/issues/issue-8391.rs
@@ -0,0 +1,9 @@
+// run-pass
+
+fn main() {
+    let x = match Some(1) {
+        ref _y @ Some(_) => 1,
+        None => 2,
+    };
+    assert_eq!(x, 1);
+}
diff --git a/src/test/ui/issues/issue-8401.rs b/src/test/ui/issues/issue-8401.rs
new file mode 100644
index 00000000000..1257bab6c0c
--- /dev/null
+++ b/src/test/ui/issues/issue-8401.rs
@@ -0,0 +1,8 @@
+// run-pass
+// aux-build:issue-8401.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_8401;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-8460.rs b/src/test/ui/issues/issue-8460.rs
new file mode 100644
index 00000000000..b7fc564a9b5
--- /dev/null
+++ b/src/test/ui/issues/issue-8460.rs
@@ -0,0 +1,51 @@
+// run-pass
+#![allow(unused_must_use)]
+// ignore-emscripten no threads support
+#![feature(rustc_attrs)]
+
+use std::thread;
+
+trait Int {
+    fn zero() -> Self;
+    fn one() -> Self;
+}
+macro_rules! doit {
+    ($($t:ident)*) => ($(impl Int for $t {
+        fn zero() -> $t { 0 }
+        fn one() -> $t { 1 }
+    })*)
+}
+doit! { i8 i16 i32 i64 isize }
+
+macro_rules! check {
+    ($($e:expr),*) => {
+        $(assert!(thread::spawn({
+            move|| { $e; }
+        }).join().is_err());)*
+    }
+}
+
+fn main() {
+    check![
+        isize::min_value() / -isize::one(),
+        i8::min_value() / -i8::one(),
+        i16::min_value() / -i16::one(),
+        i32::min_value() / -i32::one(),
+        i64::min_value() / -i64::one(),
+        1isize / isize::zero(),
+        1i8 / i8::zero(),
+        1i16 / i16::zero(),
+        1i32 / i32::zero(),
+        1i64 / i64::zero(),
+        isize::min_value() % -isize::one(),
+        i8::min_value() % -i8::one(),
+        i16::min_value() % -i16::one(),
+        i32::min_value() % -i32::one(),
+        i64::min_value() % -i64::one(),
+        1isize % isize::zero(),
+        1i8 % i8::zero(),
+        1i16 % i16::zero(),
+        1i32 % i32::zero(),
+        1i64 % i64::zero()
+    ];
+}
diff --git a/src/test/ui/issues/issue-8498.rs b/src/test/ui/issues/issue-8498.rs
new file mode 100644
index 00000000000..e6241b76109
--- /dev/null
+++ b/src/test/ui/issues/issue-8498.rs
@@ -0,0 +1,27 @@
+// run-pass
+
+pub fn main() {
+    match &[(Box::new(5),Box::new(7))] {
+        ps => {
+           let (ref y, _) = ps[0];
+           assert_eq!(**y, 5);
+        }
+    }
+
+    match Some(&[(Box::new(5),)]) {
+        Some(ps) => {
+           let (ref y,) = ps[0];
+           assert_eq!(**y, 5);
+        }
+        None => ()
+    }
+
+    match Some(&[(Box::new(5),Box::new(7))]) {
+        Some(ps) => {
+           let (ref y, ref z) = ps[0];
+           assert_eq!(**y, 5);
+           assert_eq!(**z, 7);
+        }
+        None => ()
+    }
+}
diff --git a/src/test/ui/issues/issue-8506.rs b/src/test/ui/issues/issue-8506.rs
new file mode 100644
index 00000000000..cc32b89234f
--- /dev/null
+++ b/src/test/ui/issues/issue-8506.rs
@@ -0,0 +1,14 @@
+// run-pass
+// pretty-expanded FIXME #23616
+#![allow(non_upper_case_globals)]
+
+#![allow(dead_code)]
+
+enum Either {
+    One,
+    Other(String,String)
+}
+
+static one : Either = Either::One;
+
+pub fn main () { }
diff --git a/src/test/ui/issues/issue-868.rs b/src/test/ui/issues/issue-868.rs
new file mode 100644
index 00000000000..ce0a3c7ca52
--- /dev/null
+++ b/src/test/ui/issues/issue-868.rs
@@ -0,0 +1,18 @@
+// run-pass
+#![allow(unused_parens)]
+// pretty-expanded FIXME #23616
+
+fn f<T, F>(g: F) -> T where F: FnOnce() -> T { g() }
+
+pub fn main() {
+  let _x = f( | | { 10 });
+    // used to be: cannot determine a type for this expression
+    f(| | { });
+    // ditto
+    f( | | { ()});
+    // always worked
+    let _: () = f(| | { });
+    // empty block with no type info should compile too
+    let _ = f(||{});
+    let _ = (||{});
+}
diff --git a/src/test/ui/issues/issue-8709.rs b/src/test/ui/issues/issue-8709.rs
new file mode 100644
index 00000000000..ea7525d4477
--- /dev/null
+++ b/src/test/ui/issues/issue-8709.rs
@@ -0,0 +1,14 @@
+// run-pass
+
+macro_rules! sty {
+    ($t:ty) => (stringify!($t))
+}
+
+macro_rules! spath {
+    ($t:path) => (stringify!($t))
+}
+
+fn main() {
+    assert_eq!(sty!(isize), "isize");
+    assert_eq!(spath!(std::option), "std::option");
+}
diff --git a/src/test/ui/issues/issue-8783.rs b/src/test/ui/issues/issue-8783.rs
new file mode 100644
index 00000000000..4eb49c82161
--- /dev/null
+++ b/src/test/ui/issues/issue-8783.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(unused_variables)]
+// pretty-expanded FIXME #23616
+
+use std::default::Default;
+
+struct X { pub x: usize }
+impl Default for X {
+    fn default() -> X {
+        X { x: 42 }
+    }
+}
+
+struct Y<T> { pub y: T }
+impl<T: Default> Default for Y<T> {
+    fn default() -> Y<T> {
+        Y { y: Default::default() }
+    }
+}
+
+fn main() {
+    let X { x: _ } = Default::default();
+    let Y { y: X { x } } = Default::default();
+}
diff --git a/src/test/ui/issues/issue-8827.rs b/src/test/ui/issues/issue-8827.rs
new file mode 100644
index 00000000000..95be7616a4f
--- /dev/null
+++ b/src/test/ui/issues/issue-8827.rs
@@ -0,0 +1,53 @@
+// run-pass
+// ignore-emscripten no threads support
+
+use std::thread;
+use std::sync::mpsc::{channel, Receiver};
+
+fn periodical(n: isize) -> Receiver<bool> {
+    let (chan, port) = channel();
+    thread::spawn(move|| {
+        loop {
+            for _ in 1..n {
+                match chan.send(false) {
+                    Ok(()) => {}
+                    Err(..) => break,
+                }
+            }
+            match chan.send(true) {
+                Ok(()) => {}
+                Err(..) => break
+            }
+        }
+    });
+    return port;
+}
+
+fn integers() -> Receiver<isize> {
+    let (chan, port) = channel();
+    thread::spawn(move|| {
+        let mut i = 1;
+        loop {
+            match chan.send(i) {
+                Ok(()) => {}
+                Err(..) => break,
+            }
+            i = i + 1;
+        }
+    });
+    return port;
+}
+
+fn main() {
+    let ints = integers();
+    let threes = periodical(3);
+    let fives = periodical(5);
+    for _ in 1..100 {
+        match (ints.recv().unwrap(), threes.recv().unwrap(), fives.recv().unwrap()) {
+            (_, true, true) => println!("FizzBuzz"),
+            (_, true, false) => println!("Fizz"),
+            (_, false, true) => println!("Buzz"),
+            (i, false, false) => println!("{}", i)
+        }
+    }
+}
diff --git a/src/test/ui/issues/issue-8851.rs b/src/test/ui/issues/issue-8851.rs
new file mode 100644
index 00000000000..faacfe5f895
--- /dev/null
+++ b/src/test/ui/issues/issue-8851.rs
@@ -0,0 +1,30 @@
+// run-pass
+#![allow(dead_code)]
+// after fixing #9384 and implementing hygiene for match bindings,
+// this now fails because the insertion of the 'y' into the match
+// doesn't cause capture. Making this macro hygienic (as I've done)
+// could very well make this test case completely pointless....
+
+// pretty-expanded FIXME #23616
+
+enum T {
+    A(isize),
+    B(usize)
+}
+
+macro_rules! test {
+    ($id:ident, $e:expr) => (
+        fn foo(t: T) -> isize {
+            match t {
+                T::A($id) => $e,
+                T::B($id) => $e
+            }
+        }
+    )
+}
+
+test!(y, 10 + (y as isize));
+
+pub fn main() {
+    foo(T::A(20));
+}
diff --git a/src/test/ui/issues/issue-8860.rs b/src/test/ui/issues/issue-8860.rs
new file mode 100644
index 00000000000..b89a80c1307
--- /dev/null
+++ b/src/test/ui/issues/issue-8860.rs
@@ -0,0 +1,49 @@
+// run-pass
+#![allow(dead_code)]
+
+static mut DROP: isize = 0;
+static mut DROP_S: isize = 0;
+static mut DROP_T: isize = 0;
+
+struct S;
+impl Drop for S {
+    fn drop(&mut self) {
+        unsafe {
+            DROP_S += 1;
+            DROP += 1;
+        }
+    }
+}
+fn f(ref _s: S) {}
+
+struct T { i: isize }
+impl Drop for T {
+    fn drop(&mut self) {
+        unsafe {
+            DROP_T += 1;
+            DROP += 1;
+        }
+    }
+}
+fn g(ref _t: T) {}
+
+fn do_test() {
+    let s = S;
+    f(s);
+    unsafe {
+        assert_eq!(1, DROP);
+        assert_eq!(1, DROP_S);
+    }
+    let t = T { i: 1 };
+    g(t);
+    unsafe { assert_eq!(1, DROP_T); }
+}
+
+fn main() {
+    do_test();
+    unsafe {
+        assert_eq!(2, DROP);
+        assert_eq!(1, DROP_S);
+        assert_eq!(1, DROP_T);
+    }
+}
diff --git a/src/test/ui/issues/issue-8898.rs b/src/test/ui/issues/issue-8898.rs
new file mode 100644
index 00000000000..31d5ff86e7c
--- /dev/null
+++ b/src/test/ui/issues/issue-8898.rs
@@ -0,0 +1,18 @@
+// run-pass
+
+fn assert_repr_eq<T: std::fmt::Debug>(obj : T, expected : String) {
+    assert_eq!(expected, format!("{:?}", obj));
+}
+
+pub fn main() {
+    let abc = [1, 2, 3];
+    let tf = [true, false];
+    let x  = [(), ()];
+    let slice = &x[..1];
+
+    assert_repr_eq(&abc[..], "[1, 2, 3]".to_string());
+    assert_repr_eq(&tf[..], "[true, false]".to_string());
+    assert_repr_eq(&x[..], "[(), ()]".to_string());
+    assert_repr_eq(slice, "[()]".to_string());
+    assert_repr_eq(&x[..], "[(), ()]".to_string());
+}
diff --git a/src/test/ui/issues/issue-9047.rs b/src/test/ui/issues/issue-9047.rs
new file mode 100644
index 00000000000..fa8d75aec7a
--- /dev/null
+++ b/src/test/ui/issues/issue-9047.rs
@@ -0,0 +1,14 @@
+// run-pass
+#![allow(unused_mut)]
+#![allow(unused_variables)]
+fn decode() -> String {
+    'outer: loop {
+        let mut ch_start: usize;
+        break 'outer;
+    }
+    "".to_string()
+}
+
+pub fn main() {
+    println!("{}", decode());
+}
diff --git a/src/test/ui/issues/issue-9123.rs b/src/test/ui/issues/issue-9123.rs
new file mode 100644
index 00000000000..8c21d06c477
--- /dev/null
+++ b/src/test/ui/issues/issue-9123.rs
@@ -0,0 +1,8 @@
+// run-pass
+// aux-build:issue-9123.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_9123;
+
+pub fn main() {}
diff --git a/src/test/ui/issues/issue-9129.rs b/src/test/ui/issues/issue-9129.rs
new file mode 100644
index 00000000000..3d87e1c2037
--- /dev/null
+++ b/src/test/ui/issues/issue-9129.rs
@@ -0,0 +1,35 @@
+// run-pass
+#![allow(dead_code)]
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+// ignore-pretty unreported
+
+#![feature(box_syntax)]
+
+pub trait bomb { fn boom(&self, _: Ident); }
+pub struct S;
+impl bomb for S { fn boom(&self, _: Ident) { } }
+
+pub struct Ident { name: usize }
+
+// macro_rules! int3 { () => ( unsafe { asm!( "int3" ); } ) }
+macro_rules! int3 { () => ( { } ) }
+
+fn Ident_new() -> Ident {
+    int3!();
+    Ident {name: 0x6789ABCD }
+}
+
+pub fn light_fuse(fld: Box<dyn bomb>) {
+    int3!();
+    let f = || {
+        int3!();
+        fld.boom(Ident_new()); // *** 1
+    };
+    f();
+}
+
+pub fn main() {
+    let b = box S as Box<dyn bomb>;
+    light_fuse(b);
+}
diff --git a/src/test/ui/issues/issue-9155.rs b/src/test/ui/issues/issue-9155.rs
new file mode 100644
index 00000000000..4b5c451e853
--- /dev/null
+++ b/src/test/ui/issues/issue-9155.rs
@@ -0,0 +1,12 @@
+// run-pass
+// aux-build:issue-9155.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_9155;
+
+struct Baz;
+
+pub fn main() {
+    issue_9155::Foo::new(Baz);
+}
diff --git a/src/test/ui/issues/issue-9188.rs b/src/test/ui/issues/issue-9188.rs
new file mode 100644
index 00000000000..34e61fdf68b
--- /dev/null
+++ b/src/test/ui/issues/issue-9188.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-9188.rs
+
+
+extern crate issue_9188;
+
+pub fn main() {
+    let a = issue_9188::bar();
+    let b = issue_9188::foo::<isize>();
+    assert_eq!(*a, *b);
+}
diff --git a/src/test/ui/issues/issue-9259.rs b/src/test/ui/issues/issue-9259.rs
new file mode 100644
index 00000000000..d838edbdd66
--- /dev/null
+++ b/src/test/ui/issues/issue-9259.rs
@@ -0,0 +1,16 @@
+// run-pass
+#![allow(dead_code)]
+
+struct A<'a> {
+    a: &'a [String],
+    b: Option<&'a [String]>,
+}
+
+pub fn main() {
+    let b: &[String] = &["foo".to_string()];
+    let a = A {
+        a: &["test".to_string()],
+        b: Some(b),
+    };
+    assert_eq!(a.b.as_ref().unwrap()[0], "foo");
+}
diff --git a/src/test/ui/issues/issue-9382.rs b/src/test/ui/issues/issue-9382.rs
new file mode 100644
index 00000000000..dbb0fa524ef
--- /dev/null
+++ b/src/test/ui/issues/issue-9382.rs
@@ -0,0 +1,41 @@
+// pretty-expanded FIXME #23616
+
+
+// run-pass
+#![allow(dead_code)]
+#![feature(box_syntax)]
+
+// Tests for a previous bug that occurred due to an interaction
+// between struct field initialization and the auto-coercion
+// from a vector to a slice. The drop glue was being invoked on
+// the temporary slice with a wrong type, triggering an LLVM assert.
+
+
+struct Thing1<'a> {
+    baz: &'a [Box<isize>],
+    bar: Box<u64>,
+}
+
+struct Thing2<'a> {
+    baz: &'a [Box<isize>],
+    bar: u64,
+}
+
+pub fn main() {
+    let _t1_fixed = Thing1 {
+        baz: &[],
+        bar: box 32,
+    };
+    Thing1 {
+        baz: &Vec::new(),
+        bar: box 32,
+    };
+    let _t2_fixed = Thing2 {
+        baz: &[],
+        bar: 32,
+    };
+    Thing2 {
+        baz: &Vec::new(),
+        bar: 32,
+    };
+}
diff --git a/src/test/ui/issues/issue-9394-inherited-trait-calls.rs b/src/test/ui/issues/issue-9394-inherited-trait-calls.rs
new file mode 100644
index 00000000000..cc0dd4fc14a
--- /dev/null
+++ b/src/test/ui/issues/issue-9394-inherited-trait-calls.rs
@@ -0,0 +1,62 @@
+// run-pass
+
+trait Base: Base2 + Base3{
+    fn foo(&self) -> String;
+    fn foo1(&self) -> String;
+    fn foo2(&self) -> String{
+        "base foo2".to_string()
+    }
+}
+
+trait Base2: Base3{
+    fn baz(&self) -> String;
+}
+
+trait Base3{
+    fn root(&self) -> String;
+}
+
+trait Super: Base{
+    fn bar(&self) -> String;
+}
+
+struct X;
+
+impl Base for X {
+    fn foo(&self) -> String{
+        "base foo".to_string()
+    }
+    fn foo1(&self) -> String{
+        "base foo1".to_string()
+    }
+
+}
+
+impl Base2 for X {
+    fn baz(&self) -> String{
+        "base2 baz".to_string()
+    }
+}
+
+impl Base3 for X {
+    fn root(&self) -> String{
+        "base3 root".to_string()
+    }
+}
+
+impl Super for X {
+    fn bar(&self) -> String{
+        "super bar".to_string()
+    }
+}
+
+pub fn main() {
+    let n = X;
+    let s = &n as &dyn Super;
+    assert_eq!(s.bar(),"super bar".to_string());
+    assert_eq!(s.foo(),"base foo".to_string());
+    assert_eq!(s.foo1(),"base foo1".to_string());
+    assert_eq!(s.foo2(),"base foo2".to_string());
+    assert_eq!(s.baz(),"base2 baz".to_string());
+    assert_eq!(s.root(),"base3 root".to_string());
+}
diff --git a/src/test/ui/issues/issue-9396.rs b/src/test/ui/issues/issue-9396.rs
new file mode 100644
index 00000000000..27b5185377d
--- /dev/null
+++ b/src/test/ui/issues/issue-9396.rs
@@ -0,0 +1,24 @@
+// run-pass
+#![allow(unused_must_use)]
+#![allow(deprecated)]
+// ignore-emscripten no threads support
+// ignore-sgx no thread sleep support
+
+use std::sync::mpsc::{TryRecvError, channel};
+use std::thread;
+
+pub fn main() {
+    let (tx, rx) = channel();
+    let t = thread::spawn(move||{
+        thread::sleep_ms(10);
+        tx.send(()).unwrap();
+    });
+    loop {
+        match rx.try_recv() {
+            Ok(()) => break,
+            Err(TryRecvError::Empty) => {}
+            Err(TryRecvError::Disconnected) => unreachable!()
+        }
+    }
+    t.join();
+}
diff --git a/src/test/ui/issues/issue-9446.rs b/src/test/ui/issues/issue-9446.rs
new file mode 100644
index 00000000000..e200840d290
--- /dev/null
+++ b/src/test/ui/issues/issue-9446.rs
@@ -0,0 +1,30 @@
+// run-pass
+struct Wrapper(String);
+
+impl Wrapper {
+    pub fn new(wrapped: String) -> Wrapper {
+        Wrapper(wrapped)
+    }
+
+    pub fn say_hi(&self) {
+        let Wrapper(ref s) = *self;
+        println!("hello {}", *s);
+    }
+}
+
+impl Drop for Wrapper {
+    fn drop(&mut self) {}
+}
+
+pub fn main() {
+    {
+        // This runs without complaint.
+        let x = Wrapper::new("Bob".to_string());
+        x.say_hi();
+    }
+    {
+        // This fails to compile, circa 0.8-89-gc635fba.
+        // error: internal compiler error: drop_ty_immediate: non-box ty
+        Wrapper::new("Bob".to_string()).say_hi();
+    }
+}
diff --git a/src/test/ui/issues/issue-9737.rs b/src/test/ui/issues/issue-9737.rs
new file mode 100644
index 00000000000..7d3e0567847
--- /dev/null
+++ b/src/test/ui/issues/issue-9737.rs
@@ -0,0 +1,10 @@
+// run-pass
+#![allow(unused_variables)]
+macro_rules! f {
+    (v: $x:expr) => ( println!("{}", $x) )
+}
+
+fn main () {
+    let v = 5;
+    f!(v: 3);
+}
diff --git a/src/test/ui/issues/issue-979.rs b/src/test/ui/issues/issue-979.rs
new file mode 100644
index 00000000000..57a99b325ad
--- /dev/null
+++ b/src/test/ui/issues/issue-979.rs
@@ -0,0 +1,29 @@
+// run-pass
+#![allow(non_camel_case_types)]
+
+use std::cell::Cell;
+
+struct r<'a> {
+    b: &'a Cell<isize>,
+}
+
+impl<'a> Drop for r<'a> {
+    fn drop(&mut self) {
+        self.b.set(self.b.get() + 1);
+    }
+}
+
+fn r(b: &Cell<isize>) -> r {
+    r {
+        b: b
+    }
+}
+
+pub fn main() {
+    let b = &Cell::new(0);
+    {
+        let _p = Some(r(b));
+    }
+
+    assert_eq!(b.get(), 1);
+}
diff --git a/src/test/ui/issues/issue-9837.rs b/src/test/ui/issues/issue-9837.rs
new file mode 100644
index 00000000000..5d2c822a576
--- /dev/null
+++ b/src/test/ui/issues/issue-9837.rs
@@ -0,0 +1,11 @@
+// run-pass
+const C1: i32 = 0x12345678;
+const C2: isize = C1 as i16 as isize;
+
+enum E {
+    V = C2
+}
+
+fn main() {
+    assert_eq!(C2 as u64, E::V as u64);
+}
diff --git a/src/test/ui/issues/issue-9906.rs b/src/test/ui/issues/issue-9906.rs
new file mode 100644
index 00000000000..a2870cf0f6e
--- /dev/null
+++ b/src/test/ui/issues/issue-9906.rs
@@ -0,0 +1,11 @@
+// run-pass
+// aux-build:issue-9906.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_9906 as testmod;
+
+pub fn main() {
+    testmod::foo();
+    testmod::FooBar::new(1);
+}
diff --git a/src/test/ui/issues/issue-9918.rs b/src/test/ui/issues/issue-9918.rs
new file mode 100644
index 00000000000..63ad7040d67
--- /dev/null
+++ b/src/test/ui/issues/issue-9918.rs
@@ -0,0 +1,5 @@
+// run-pass
+
+pub fn main() {
+    assert_eq!((0 + 0u8) as char, '\0');
+}
diff --git a/src/test/ui/issues/issue-9942.rs b/src/test/ui/issues/issue-9942.rs
new file mode 100644
index 00000000000..f4880446526
--- /dev/null
+++ b/src/test/ui/issues/issue-9942.rs
@@ -0,0 +1,6 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+pub fn main() {
+    const S: usize = 23 as usize; [0; S]; ()
+}
diff --git a/src/test/ui/issues/issue-9951.rs b/src/test/ui/issues/issue-9951.rs
new file mode 100644
index 00000000000..2698a3b17c6
--- /dev/null
+++ b/src/test/ui/issues/issue-9951.rs
@@ -0,0 +1,21 @@
+// run-pass
+// pretty-expanded FIXME #23616
+
+#![allow(unused_variables)]
+
+trait Bar {
+  fn noop(&self);
+}
+impl Bar for u8 {
+  fn noop(&self) {}
+}
+
+fn main() {
+    let (a, b) = (&5u8 as &dyn Bar, &9u8 as &dyn Bar);
+    let (c, d): (&dyn Bar, &dyn Bar) = (a, b);
+
+    let (a, b) = (Box::new(5u8) as Box<dyn Bar>, Box::new(9u8) as Box<dyn Bar>);
+    let (c, d): (&dyn Bar, &dyn Bar) = (&*a, &*b);
+
+    let (c, d): (&dyn Bar, &dyn Bar) = (&5, &9);
+}
diff --git a/src/test/ui/issues/issue-9968.rs b/src/test/ui/issues/issue-9968.rs
new file mode 100644
index 00000000000..3ab90d99af9
--- /dev/null
+++ b/src/test/ui/issues/issue-9968.rs
@@ -0,0 +1,13 @@
+// run-pass
+// aux-build:issue-9968.rs
+
+// pretty-expanded FIXME #23616
+
+extern crate issue_9968 as lib;
+
+use lib::{Trait, Struct};
+
+pub fn main()
+{
+    Struct::init().test();
+}