El \u000descape finaliza un comentario porque los \uescapes se convierten uniformemente a los caracteres Unicode correspondientes antes de que el programa se tokenice. Se podría utilizar igualmente \u0057\u0057en lugar de //a comenzar un comentario.
Este es un error en su IDE, que debe sintaxis resaltar la línea para dejar en claro que \u000dfinaliza el comentario.
Esto también es un error de diseño en el lenguaje. No se puede corregir ahora, porque eso rompería los programas que dependen de él. \uel compilador debe convertir los escapes al carácter Unicode correspondiente solo en contextos donde eso "tiene sentido" (literales de cadena e identificadores, y probablemente en ningún otro lugar) o se les debería haber prohibido generar caracteres en el rango U + 0000–007F , o ambos. Cualquiera de esas semánticas habría evitado que el comentario terminara con el \u000descape, sin interferir con los casos en los que los \uescapes son útiles; tenga en cuenta que eso incluye el uso de \uescapes dentro de los comentarios como una forma de codificar comentarios en un script no latino, porque el editor de texto podría tener una visión más amplia de dónde\ulos escapes son significativos que el compilador. (Sin embargo, no conozco ningún editor o IDE que muestre \uescapes como los caracteres correspondientes en ningún contexto).
Hay un error de diseño similar en la familia C, 1 donde la barra diagonal inversa-nueva línea se procesa antes de que se determinen los límites de los comentarios, por ejemplo
// this is a comment \
this is still in the comment!
Menciono esto para ilustrar que resulta fácil cometer este error de diseño en particular, y no darme cuenta de que es un error hasta que sea demasiado tarde para corregirlo, si estás acostumbrado a pensar en la tokenización y analizar la forma en que piensan los programadores del compilador. sobre tokenización y análisis. Básicamente, si ya ha definido su gramática formal y luego a alguien se le ocurre un caso especial sintáctico: trigrafos, barra invertida-nueva línea, codificación de caracteres Unicode arbitrarios en archivos fuente limitados a ASCII, lo que sea, que necesita ser encajado, es más fácil agregue un pase de transformación antes del tokenizador que redefinir el tokenizador para prestar atención a dónde tiene sentido usar ese caso especial.
1 Para los pedantes: Soy consciente de que este aspecto de C fue 100% intencional, con la razón, no estoy inventando esto, de que te permitiría forzar mecánicamente el código de ajuste forzado con líneas arbitrariamente largas en tarjetas perforadas. Todavía era una decisión de diseño incorrecta.