Support JEP 513: this(...) after a constructor prologue
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 72/100
Direzione di ricerca
Leggi NullAway.constructorInvokesAnother e segui il modo in cui controlla le istruzioni del corpo del costruttore, poi esamina i test correlati all’analisi dei costruttori. Aggiungi un caso di regressione con un’istruzione prima di this(...); il lavoro è completo quando l’esempio non segnala più un campo @NonNull non inizializzato e i controlli esistenti sui costruttori continuano a passare.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
JEP 513 (flexible constructor bodies) is final in Java 25. A constructor may now run statements before this(...). NullAway does not handle this case yet. It does not see the this(...) call, so it reports that the constructor does not initialize a @NonNull field.
import org.jspecify.annotations.NullMarked;
@NullMarked
class Example {
private String name;
Example(String name) {
this.name = name;
}
Example(String first, String last) {
String full = first + " " + last;
this(full);
}
}
Expected: no error. The second constructor calls this(full), and the first constructor initializes name.
Actual:
Example.java:[13,4] error: [NullAway] initializer method does not guarantee @NonNull field 'name' (line 7) is initialized along all control-flow paths (remember to check for exceptions or early returns).
There is no error when this(first + " " + last) is the first statement. There is also no error when the field is final.
NullAway.constructorInvokesAnother checks only the first statement of the body (statements.get(0)). With a prologue, the this(...) call is not the first statement. The code on master is the same.
Versions: NullAway 0.14.3, Error Prone 2.52.0, JDK 25.0.2. Options: OnlyNullMarked=true, JSpecifyMode=true.
- Lingua principale
- Java
- Stelle
- 4.1k
- Fork
- 381
- Merge medio
- 1g 2h
- PR unite (30g)
- 106
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un 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 uber/NullAway
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 85/100
uber/NullAway#2058 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
uber/NullAway#1899 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
uber/NullAway#2160 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 50/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di uber/NullAway
Issue simili
-
Cleanup: restore the interrupt flag in AiFailureAnalyzerForse già presa @Rishankgupta08 l’ha presa oggi. Apertagood first issue
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
seleniumboot/selenium-boot#258 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
dense-analysis/ale#5181 ·
-
bug subsystem:agent-harness triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
ShaftHQ/SHAFT_ENGINE#8043 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
johanhaleby/occurrent#1505 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno