Lint/NoReturnInMemoization flags `return` in local variable `||=` and `&&=` assignments
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 84/100
Direzione di ricerca
L’issue identifica on_or_asgn e il suo alias on_and_asgn come punti di ingresso pertinenti e cita i test di assegnazione correlati. Leggi l’implementazione del cop e questi test, poi aggiungi copertura per le variabili locali a cui vengono assegnati ||= e &&=. Esegui i test mirati del cop; il lavoro è completo quando questi casi non producono violazioni e il comportamento esistente per le variabili di istanza continua a superare i test.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Lint/NoReturnInMemoization reports an offense for a return inside a begin..end block assigned to a local variable with ||= or &&=:
# frozen_string_literal: true
def foo
x ||= begin
return 1 if bar
2
end
x
end
$ bundle exec rubocop --only Lint/NoReturnInMemoization sample.rb
sample.rb:5:5: W: Lint/NoReturnInMemoization: Do not return in begin..end blocks in instance variable assignment contexts.
Expected behavior
No offense. The cop description and message cover instance variable assignment, and the cop already ignores the same code with x = begin ... end or x += begin ... end (see the test_returns_in_regular_assignment_are_not_offenses and test_returns_in_operation_assignment_for_instance_variable_are_not_offenses tests). A local variable goes out of scope when the method returns, so no memoized value is lost.
Cause
on_op_asgn returns early unless the target is an instance variable, but on_or_asgn (also aliased as on_and_asgn) checks every target.
Version: rubocop-shopify main (3.1.0), rubocop 1.92.0.
- Lingua principale
- Ruby
- Stelle
- 638
- Fork
- 50
- Merge medio
- 7h 26m
- PR unite (30g)
- 3
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di Shopify/ruby-style-guide
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Shopify/ruby-style-guide#190 · 1 reazione ·
Tutte le issue di Shopify/ruby-style-guide
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
rubyjs/mini_racer#449 ·
-
[BUG]: Export Donations button state not updatingForse già presa @yashiyadav l’ha presa oggi. Aperta🐞 Bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
rubyforgood/human-essentials#5744 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
paradigmxyz/centaur#2034 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
oven-sh/bun#46525 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
zerocracy/judges-action#2849 ·
I maintainer di solito rispondono entro 1 giorno