From 2b49440f249de3163fe08f5d290c315a4df834c5 Mon Sep 17 00:00:00 2001 From: lacatoire Date: Fri, 19 Jun 2026 11:07:16 +0200 Subject: [PATCH] Sync nodiscard.xml: behavior on interface, abstract, and overriding methods --- language/predefined/attributes/nodiscard.xml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/language/predefined/attributes/nodiscard.xml b/language/predefined/attributes/nodiscard.xml index 0c4e60b2d..9a998d4aa 100644 --- a/language/predefined/attributes/nodiscard.xml +++ b/language/predefined/attributes/nodiscard.xml @@ -1,5 +1,5 @@ - + El atributo NoDiscard @@ -33,6 +33,20 @@ considere usar una variable como $_. + + + #[\NoDiscard] se aplica a la declaración de función o método + específica sobre la que está escrito, y la advertencia se emite en función + de la declaración que realmente se llama. Como resultado, añadir + #[\NoDiscard] a un método de interfaz o a un método abstracto + no emite ninguna advertencia, porque el método que se invoca es el método + de implementación o de sobrescritura. Del mismo modo, un método que + sobrescribe un método #[\NoDiscard] no emite la advertencia a + menos que esté marcado él mismo con el atributo. Por el contrario, un + método importado desde un trait conserva el atributo, porque el método del + trait se copia en la clase que lo usa como si estuviera declarado allí. + +