An added non-ASCII character case breaks compiled runs
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 75/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- c, cpp, java, javascript
- Domaine
- testing-qa, tooling
Piste de recherche
Commencez par charLiteral dans web/compiler-explorer.js et candidateTypeMatches dans web/runners.js pour retracer la manière dont les cas de caractères sont générés et acceptés. Trouvez les tests couvrant ces chemins et ajoutez des cas pour é et un emoji. Le travail est terminé lorsque l’ajout de l’un ou l’autre caractère non ASCII est refusé avec un message le nommant, et que les tests passent.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- Rust
- Étoiles
- 228
- Forks
- 150
- Merge moyen
- 1 j 3 h
- PR mergées (30 j)
- 226
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de sysprog21/codetrial
-
Spot Capacity Round Trips tests accept the two largest rising runsPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour
-
Diagnostic category comment disagrees with its testsPeut-être pris @woohsin l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
sysprog21/codetrial#666 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Local recording ends at Finish, before the learning reviewPeut-être pris @richard81115 l’a pris il y a 2 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 84/100
sysprog21/codetrial#663 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Task editor scroll-sync test fails intermittently in CIPeut-être pris @melonpuff l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
sysprog21/codetrial#654 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
sysprog21/codetrial#646 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de sysprog21/codetrial
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
horizon-rust/horizon#16176 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
asonnino/blockchain-validator#88 ·
Les mainteneurs répondent en général sous 1 jour
-
BUG-MERGE-TO-HDR-RESULT-NAMEOuvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
storytold/photocraft#14025 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
-
ExtrudeOuvertearea:kernel bug needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
bherbruck/solvecraft#16273 · 1 commentaire · 1 réaction ·