Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Internal error when getting pen% and brush% color

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

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
43/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Ferma

Direzione di ricerca

Inizia dal contratto in pkgs/draw-lib/racket/draw.rkt:85 e analizza il comportamento di get-color/set-color di pen% e brush%. Esegui il reproducer Racket dell’issue, includendo il colore non valido, e confronta entrambe le classi. Il lavoro è completato quando l’operazione segnalata non produce più un errore di contratto interno e il suo comportamento è coperto in modo coerente per pen% e brush%.

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

Descrizione

I happened to try this while looking into https://github.com/racket/gui/issues/307:

#lang racket/base

(require racket/class
         racket/draw)
(define p (new pen%))
(send p get-color)
(send p set-color "notacolor")
(send p get-color)

=>

(object:color% ...)
get-color: broke its own contract
  promised: (is-a?/c color%)
  produced: #f
  in: the range of
      the get-color method in
      brush%/c
  contract from:
      <pkgs>/draw-lib/racket/draw.rkt
  contract on: brush%
  blaming: <pkgs>/draw-lib/racket/draw.rkt
   (assuming the contract is correct)
  at: <pkgs>/draw-lib/racket/draw.rkt:85:19
  context...:
   /Users/bogdan/sandbox/racket/racket/collects/racket/contract/private/blame.rkt:346:0: raise-blame-error
   .../private/arrow-higher-order.rkt:375:33
   body of "/var/folders/11/9c7x7y096r9g35f9th6b93qc0000gn/T/tmp.ArY5q8ZT/draw.rkt"

The brush% class has the same issue.

Lingua principale
Racket
Stelle
19
Fork
24
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

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 racket/draw

Tutte le issue di racket/draw

Issue simili

Altre issue su Computer Graphics

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.