The code generator in nqp for char ranges was incorrectly using ordat and ordfirst to find the character to compare, which throw away information on synthetic characters. We now use the getcp_s instruction instead, which leaves synthetics negative, so that they drop out of the character range correctly (but only when :m is not specified, of course).
nqp fix in 2df0a0656e4b20a72bd73e6d2b6214b584d095ac rakudo bump in fe90be01c6546e1dbb2ee7ff794e8b6ea1491268 Tests updated in 172f6945653ddbce944af1d7cae9ad956f3a70b9