FPC: Typenprüfung misslingt

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

FPC: Typenprüfung misslingt

Beitrag von Euklid »

Hallo zusammen,

für die Version 2.2.4 habe ich einen mutmaßlichen Bug im FreePascal-Compiler gefunden. Um den Bug zu separieren habe ich ein Demo-Projekt geschrieben, welches diesem Beitrag angehängt ist.
Ich bitte Euch, die Demo-Datei mit einer aktuellen Version des Compilers zu testen und dabei zu prüfen, ob der Bug noch auftritt. Wenn ja, mache ich einen Bugreport.

Wie im Demoprojekt zu erkennen, stellt der Compiler bei der Übergabe der Variable "Number" nicht fest, dass die Datentypen zueinander inkompatibel sind. Dieser Bug tritt nur im Delphi-Mode auf, der am Anfang der Unit eingestellt wird.

Viele Grüße, Euklid


EDIT: _X_ berichtete mir über den IRC, dass das Problem mit FPC-Version 2.4.0-2 behoben ist.
Dateianhänge
Demo.tar.gz
Projekt zur Reproduktion des Bugs.
(158.97 KiB) 100-mal heruntergeladen

Teekeks
Beiträge: 359
Registriert: Mi 27. Mai 2009, 20:54
OS, Lazarus, FPC: OpenSuse11.4 x86 (Lazarus: 0.9.30 FPC 2.4.2)
CPU-Target: x86
Wohnort: Cottbus

Re: FPC: Typenprüfung misslingt

Beitrag von Teekeks »

Das ist nicht direkt ein Fehler.

Du übergibst im Endeffekt einfach nur einen Pointer, für den Funktionsaufruf ist das auch in diesem Fall wirklich nichts weiter als ein untypisierter Pointer.

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: FPC: Typenprüfung misslingt

Beitrag von shokwave »

Also bei mir kommt:

Code: Alles auswählen

Hint: Start of reading config file /home/ingo/dev/fpc/lib/fpc/etc/fpc.cfg
Hint: End of reading config file /home/ingo/dev/fpc/lib/fpc/etc/fpc.cfg
Free Pascal Compiler version 2.5.1 [2010/11/04] for x86_64
Copyright (c) 1993-2010 by Florian Klaempfl
Target OS: Linux for x86-64
Compiling project1.lpr
Compiling unit1.pas
unit1.pas(48,14) Error: Incompatible type for arg no. 1: Got "PTestTypArray", expected "PTestTyp"
unit1.pas(36,18) Hint: Found declaration: TForm1.Test(PTestTyp);
unit1.pas(60) Fatal: There were 1 errors compiling module, stopping
mfg Ingo

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: FPC: Typenprüfung misslingt

Beitrag von Euklid »

Teekeks hat geschrieben:Du übergibst im Endeffekt einfach nur einen Pointer, für den Funktionsaufruf ist das auch in diesem Fall wirklich nichts weiter als ein untypisierter Pointer.
Technisch ja - dennoch sind es völlig verschiedene Typen und ich fände es unschön, wenn der FPC dies nicht erkennen würde.
Glücklicherweise scheinen neuere Versionen des fpc die Typenprüfung korrekt durchzuführen. :)

Danke Euch für Eure Tests und Eure Gedanken!

- Euklid

Antworten