Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Easier way for rules to check identifier usages

オープン
#400 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
領域
devtools

調査の方向性

まず、リファクタリング規則のパターンマッチングと識別子比較のコードを追跡します。この issue では、特定のファイルやテストは指定されていません。free-identifiers の使用箇所、syntax-free-identifiers の使用箇所、および提案されているフェーズレベルのデフォルトにマッチする (~usage id) パターンについて、「完了」の定義を決め、#379 の関連要件も確認します。

索引モデルが issue の本文から書いたものです。

説明

enhancement

Consider the hash-ref-set!-to-hash-ref! rule:

(define-refactoring-rule hash-ref-set!-to-hash-ref!
  #:description "This expression can be replaced with a simpler, equivalent `hash-ref!` expression."
  #:literals (hash-ref hash-set! define)
  (hash-ref
   h1:id
   k1:pure-expression
   (_:lambda-by-any-name
    ()
    (define v1:id initializer:value-initializer)
    (hash-set! h2:id k2:pure-expression v2:id)
    v3:id))
  #:when (free-identifier=? #'h1 #'h2)
  #:when (syntax-free-identifier=? #'k1 #'k2)
  #:when (free-identifier=? #'v1 #'v2)
  #:when (free-identifier=? #'v1 #'v3)
  (hash-ref! h1 k1 initializer.failure-result-form))

It needs to do quite a bit of work to check that some identifiers are usages of others. Those free-identifier=? checks ought to be easier to write. It might be useful to have a (~usage id) syntax pattern that matches any identifier that's free-identifier=? to #'id. That would let me write the above rule like this:

(define-refactoring-rule hash-ref-set!-to-hash-ref!
  #:description "This expression can be replaced with a simpler, equivalent `hash-ref!` expression."
  #:literals (hash-ref hash-set! define)
  (hash-ref
   h:id
   k1:pure-expression
   (_:lambda-by-any-name
    ()
    (define v:id initializer:value-initializer)
    (hash-set! (~usage h) k2:pure-expression (~usage v))
    (~usage v)))
  #:when (syntax-free-identifier=? #'k1 #'k2)
  (hash-ref! h k1 initializer.failure-result-form))

Might be worthwhile to make it match any syntax object that's syntax-free-identifier=? too. This could also help with #379, as ~usage could default to (resyntax-local-phase-level) (or whatever equivalent I come up with) instead of (syntax-local-phase-level) like free-identifier=? does.

主要言語
Racket
スター
70
フォーク
11
PR マージ指標
30日以内にマージされた PR はありません

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

jackfirth/resyntax のほかの issue

jackfirth/resyntax の issue をすべて見る

似ている issue

DevTools の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。