php / php/php-src

Incorrect lineno for property and class const variance check

Offen
#14,874 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Category: Engine Feature Status: Verified
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

The following code:

<?php

class C extends P {
    public const int X = 42;
}

class P {
    public const string X = 'X';
}

https://3v4l.org/IKY5H#v8.3.9

Resulted in this output:

Fatal error: Type of C::X must be compatible with P::X of type string in /in/ZAZYv on line 3

But I expected this output instead:

Fatal error: Type of C::X must be compatible with P::X of type string in /in/ZAZYv on line 4

Same goes for properties. From property hooks feedback:

https://github.com/php/php-src/pull/13455#discussion_r1499322256

PHP Version

*

Operating System

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Das Beispiel zur Klassenkonstante reproduzieren und die gemeldete Zeile mit der erwarteten Zeile 4 vergleichen; anschließend den Diagnosepfad der Varianzprüfung im PHP-Interpreter untersuchen. Den analogen Property-Fall prüfen, auf den im Feedback zu den Property Hooks verwiesen wird; abgeschlossen ist die Aufgabe, wenn sowohl Property- als auch Klassenkonstantenfehler die Deklarationszeile des inkompatiblen untergeordneten Members melden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
c, php
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.