An added non-ASCII character case breaks compiled runs
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- c, cpp, java, javascript
- Área
- testing-qa, tooling
Línea de trabajo
Empieza con charLiteral en web/compiler-explorer.js y candidateTypeMatches en web/runners.js para rastrear cómo se generan y aceptan los casos de caracteres. Encuentra las pruebas que cubren estas rutas y añade casos para é y un emoji. El trabajo estará terminado cuando se rechace la adición de cualquiera de los dos caracteres no ASCII con un mensaje que lo nombre y las pruebas pasen.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Observed behavior
An added character case whose cell is a non-ASCII character, such as é or an emoji, is written raw between quotes by charLiteral. C and C++ never hand it over as typed, and Java does only within the Basic Multilingual Plane:
- C is built with clang on Compiler Explorer, and clang 21 (
-std=c17) refuses the literal, so the run reports a compile failure. - C++ is built with gcc there, and g++ 15 (
-std=c++20) reads'é'as a multi-character constant, warns, and the solution receives -87 instead of the character. A correct solution can fail the case silently. - Java runs on JDK 25 there, and javac 25 receives
écorrectly (233) but refuses an emoji ("character literal contains more than one UTF-16 code unit"). gino1203 reported an earlier javac that accepts it and passes only the high surrogate, 55357.
Python and JavaScript are not affected.
Expected behavior
A character case either reaches every compiled language as typed or is refused when the case is added, with a message that names the character, as an integer outside 32 bits already is.
Reproduction
At main after #683, with the checkout's web/compiler-explorer.js:
const { nativeLiteral } = await import("./web/compiler-explorer.js");
nativeLiteral("é", "character", "cpp"); // "'é'", raw UTF-8 between quotes
Compiling char c = <that literal>; printf("%d", c); gives -87 with g++ 15 and refuses to compile with clang++ 21; the same in C. Checked locally with gcc 15, clang 21 and Java 25.
Initial analysis
- Path:
charLiteralinweb/compiler-explorer.jsescapes quotes, backslashes and, after #683, U+0000 to U+001F; every other character is written as is. - Reach:
candidateTypeMatchesinweb/runners.jsaccepts any single code point as acharacter. - Domain: the six
characterjudges (copper-pad-continuity,letter-grid-tracer,letter-panel-tracing,puzzle-grid-save-check,rooftop-panel-footprint,sealed-air-pocket-backfill) take letters, digits,.,0or1, all ASCII. A C or C++charcannot hold a character outside ASCII as one value, so refusing a non-ASCIIcharacterwhen the case is added is simpler than encoding it.
Action items
- Refuse a non-ASCII
charactercase when it is added, naming the character. - Add a test that fails on
mainforéand an emoji.
Raised by gino1203 in a review of #683.
- Lenguaje dominante
- Rust
- Estrellas
- 228
- Forks
- 150
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 226
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de sysprog21/codetrial
-
Spot Capacity Round Trips tests accept the two largest rising runsPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Diagnostic category comment disagrees with its testsPosiblemente ocupada @woohsin la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
sysprog21/codetrial#666 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Local recording ends at Finish, before the learning reviewPosiblemente ocupada @richard81115 la tomó hace 2 días. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
sysprog21/codetrial#663 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Task editor scroll-sync test fails intermittently in CIPosiblemente ocupada @melonpuff la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
sysprog21/codetrial#654 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
sysprog21/codetrial#646 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de sysprog21/codetrial
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
asonnino/blockchain-validator#88 ·
Los mantenedores suelen responder en 1 día
-
BUG-MERGE-TO-HDR-RESULT-NAMEAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
storytold/photocraft#14025 ·
Los mantenedores suelen responder en 1 día
-
ExtrudeAbiertoarea:kernel bug needs-triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
bherbruck/solvecraft#16273 · 1 comentario · 1 reacción ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
storytold/vectorcraft#7242 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día