driver: suggest the closest triple for an unknown --target=

Aperta
#188 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
85/100
Tipo di issue
Funzionalità
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
c
Ambito
compilers

Direzione di ricerca

Read src/driver/main.c around the unknown-target error and src/sema/sema.c around edit_distance() to understand the existing suggestion logic. Share that helper for the driver, then update tests/golden/triple.sh to cover a one-letter typo and a distant target such as banana. Done when the typo suggests the closest built triple, the distant target gets no suggestion, and the listed checks pass.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement good first issue

Context. A mistyped triple gets the whole list of targets EmbCC knows, with no hint about which one was meant:

$ ./embcc --target=thumbv7m-none-eab -c t.c
embcc: error: unknown target 'thumbv7m-none-eab'
embcc: the targets it emits for are:
embcc:   x86_64-elf
...

clang and GCC users expect did you mean 'thumbv7m-none-eabi'?.

Where.

  • src/driver/main.c, around line 7091: the unknown target error, which walks target_triple_count() / target_triple_name().
  • src/sema/sema.c, line 2108: edit_distance(), a bounded Levenshtein distance that already powers "did you mean" for undeclared names. It is static there. Move it somewhere the driver can share (for example src/driver/util.c and util.h), rather than copying it.
  • Tests: tests/golden/triple.sh already checks the unknown-target error.

Steps.

  1. Make edit_distance shareable, and keep sema's use of it unchanged.
  2. In the unknown-target branch, find the built triple (target_triple_built(t)) closest to what was typed. If it is within a few edits (sema uses max(2, len / 3)), print embcc: note: did you mean 'X'? before the list.
  3. Add cases to tests/golden/triple.sh: a one-letter typo gets the suggestion, and something far from every triple (--target=banana) gets none.

Done when --target=thumbv7m-none-eab suggests thumbv7m-none-eabi, a nonsense triple suggests nothing, the test covers both, and make check and sh tests/golden/triple.sh pass.

Before you start: the contributor's guide has the rules. A new test counts only after it has failed against the code before your change, and a commit subject reads area: summary. Questions are welcome in the comments or in Discussions.

Lingua principale
C
Stelle
1
Fork
2
Merge medio
20h 55m
PR unite (30g)
73

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di EmbLinkOs/EmbCC

Tutte le issue di EmbLinkOs/EmbCC

Issue simili

Altre issue su C

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.