Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fehlermeldungen refactor #114

Open
NotLe0n opened this issue Feb 5, 2025 · 1 comment
Open

Fehlermeldungen refactor #114

NotLe0n opened this issue Feb 5, 2025 · 1 comment
Assignees
Labels
Thema: Codebase Zum Thema Codebase
Milestone

Comments

@NotLe0n
Copy link
Member

NotLe0n commented Feb 5, 2025

Sachlage

Liste aller Fehlermeldungen und Codes sortiert nach Quelle (achtung groß)

Internal Errors

Message File
unbekannter binärer Operator %d ast/operators.go
unbekannter binärer Operator %d ast/operators.go
unbekannter ternärer Operator %d ast/operators.go
unbekannter Typ-Operator %d ast/operators.go
unbekannter Cast-Operator %d ast/operators.go
type %s not in typeMap compiler/helper.go
attempted Value protection not found in scope.temporaries compiler/scope.go
attempted Value unprotection not found in scope.temporaries compiler/scope.go
attempted Value claim not found in scope.temporaries compiler/scope.go
called MsgGotExpected without expected arg ddperror/messages.go
panic(err) ddppath.go
invaid primitive type ddptypes/list_type.go
void list type ddptypes/list_type.go
void type Reference ddptypes/parameter_type.go
unknown type ddptypes/parameter_type.go
invalid primitive type ddptypes/primitive_type.go
nil statement passed to checkStatement parser.go
invalid TokenType (%d) parser/type_parsing.go
panicMode must not be nil resolver.go
panicMode must not be nil typechecker.go
unbekannter unärer Operator '%s' typechecker.go
unbekannter binärer Operator '%s' typechecker.go
unbekannter ternärer Operator '%s' typechecker.go
unbekannter Typ-Operator '%s' typechecker.go
non struct type (%s) passed to checkFieldAccess typechecker.go

Scanner Errors

Code Message
1004 Nach einem Punkt muss ein Großbuchstabe folgen
1005 Unbekannte Escape Sequenz '\%v'
Ein Buchstaben Literal darf nur einen Buchstaben enthalten
1006 Ungültiger Datei Typ (nicht .ddp)
1007 Invalider Parameter Name
Offener Parameter
Ein Parameter in einem Alias muss mindestens einen Buchstaben enthalten
Es wurde ein Name als Alias-Parameter erwartet
1008 Der Quelltext entspricht nicht dem UTF-8 Standard

Parser Errors

Code Message
0 Bei Einbindungen muss ein Dateipfad angegeben werden
1006 Fehlerhafter Dateipfad '%s': "%s"
0 Fehler beim einbinden von '%s': %s
0 Zwei Module dürfen sich nicht gegenseitig einbinden! Das Modul '%s' versuchte das Modul '%s' einzubinden, während es von diesem Module eingebunden wurde
2024 Die Funktion '%s' wurde nur deklariert aber nie definiert
2008 Der Alias %s steht bereits für die Funktion '%s'
Der Alias %s steht bereits für die Struktur '%s'
2021 Der Operator '%s' ist für diese Parametertypen bereits überladen
1000 Es wurde ein Text Literal, ein Name, 'alle' oder 'rekursiv' erwartet aber %v gefunden
Es wurde Mal erwartet aber %v gefunden\nWolltest du vor %s vielleicht einen Punkt setzten?
In einer Wenn Anweisung, muss ein 'dann' vor dem ':' stehen
Es wurde 'von' erwartet aber 'in' gefunden
Nach einem Doppelpunkt muss eine neue Zeile beginnen
1001 Es wurde ein Literal erwartet aber ein Ausdruck gefunden
1009 Falsches Pronomen, meintest du %s?
Falscher Artikel, meintest du %s?
Meintest du 'ein'?
Meintest du 'eine'?
Es wurde einer erwartet aber %v gefunden.
Es wurde einem erwartet aber %v gefunden.
Es wurde ein Literal oder ein Name erwartet aber %v gefunden.
Falscher Artikel, meintest du Die?
Falscher Artikel, meintest du Der?
Falscher Artikel, meintest du %s?
2011 Man kann nur aus Funktionen einen Wert zurückgeben
1003 Es wurde %v erwartet aber ein Typname gefunden
Es wurde %v erwartet aber ein Listen-Typname gefunden
Invalider Typname %s
1005 Das Kommazahlen Literal '%s' kann nicht gelesen werden
Ungültige Escape Sequenz '\%s' im Buchstaben Literal
Ungültige Escape Sequenz '\%s' im Text Literal
Das Zahlen Literal '%s' kann nicht gelesen werden
2006 Ein Alias muss mindestens 1 Symbol enthalten
Der Alias enthält mehr als eine Aliasnegationsmarkierung
2007 Der Alias %s steht bereits für die Funktion '%s'
Der Alias %s steht bereits für die Struktur '%s'
2010 Eine Funktion die kein Wahrheitswert zurück gibt, darf auch keine Negationsmarkierungen haben
1010 '%s' steht nicht für einen Operator
2020 Der '%s' Operator erwartet nur einen Parameter, aber hat %d bekommen
Der '%s' Operator erwartet zwei Parameter, aber hat %d bekommen
Der '%s' Operator erwartet drei Parameter, aber hat %d bekommen
3012 Ein Operator muss einen Wert zurückgeben
2000 Der Name %s steht bereits für eine Variable, Konstante, Funktion oder Struktur
Ein Typ mit dem Namen '%s' existiert bereits
2005 Am Ende einer Funktion, die etwas zurück gibt, muss eine Rückgabe Anweisung stehen
2004 Funktionen müssen global definiert werden
2001 Es wurde noch keine Funktion mit dem Namen '%s' deklariert
Der Name %s wurde noch nicht deklariert
2012 Der Name '%s' steht für eine Variable oder Struktur und nicht für eine Funktion
Der Name %s steht für eine Variable und nicht für eine Funktion
2025 Es können nur Funktionen aus demselben Modul definiert werden
2026 Die Funktion '%s' wurde bereits definiert
2023 Es kann kein neuer Typ als '%s' definiert werden
2009 Ein Alias darf nur im globalen Bereich deklariert werden!

Resolver Errors

Code Message
2000 Der Name %s steht bereits für eine Variable, Konstante, Funktion oder Struktur
Der Name '%s' aus dem Modul '%s' existiert bereits in diesem Modul
2013 Nur globale Konstante können öffentlich sein
Nur globale Variablen können öffentlich sein
2014 Es können nur globale Typen deklariert werden
2001 Der Name '%s' wurde noch nicht als Variable deklariert
2012 Der Name '%s' steht für eine Funktion oder Struktur und nicht für eine Variable
Der Name '%s' steht für einer Konstante und kann daher nicht zugewiesen werden
2015 Der VON Operator erwartet einen Namen als Linken Operanden, nicht %s
2001 Der Name '%s' entspricht keiner öffentlichen Deklaration aus dem Modul '%s'
Der Name '%s' wurde in noch nicht als Variable deklariert
2017 Break oder Continue darf nur in einer Schleife benutzt werden

Typechecker Errors

Code Message
2016 Der Typ einer öffentlichen Konstante muss ebenfalls öffentlich sein
Der Typ einer öffentlichen Variable muss ebenfalls öffentlich sein
Der Rückgabetyp einer öffentlichen Funktion muss ebenfalls öffentlich sein
Die Parameter Typen einer öffentlichen Funktion müssen ebenfalls öffentlich sein
Wenn eine Struktur öffentlich ist, müssen alle ihre öffentlichen Felder von öffentlichem Typ sein
Der unterliegende Typ eines öffentlichen Typ-Aliases muss ebenfalls öffentlich sein
3008 Der Zähler in einer zählenden-Schleife muss eine Zahl oder Kommazahl sein
Es wurde eine %s erwartet (Listen-Typ des Iterators), aber ein Ausdruck vom Typ %s gefunden
Es wurde ein Ausdruck vom Typ Buchstabe erwartet aber %s gefunden
Man kann nur über Texte oder Listen iterieren
3009 Eine Funktion mit Rückgabetyp %s kann keinen Wert vom Typ %s zurückgeben
3000 Der %s Operator erwartet einen Ausdruck vom Typ '%s' aber hat '%s' bekommen
Der %s Operator erwartet einen Ausdruck vom Typ '%s', '%s' oder '%s' aber hat '%s' bekommen
Der %s Operator erwartet einen Text oder eine Liste als Operanden, nicht %s
Die Typenkombination aus %s und %s passt nicht zum VERKETTET Operator
Der STELLE Operator erwartet einen Text oder eine Liste als ersten Operanden, nicht %s
Der STELLE Operator erwartet eine Zahl als zweiten Operanden, nicht %s
Der '%s' Operator erwartet einen Ausdruck vom Typ '%s' aber hat '%s' bekommen
Der '%s' Operator erwartet zwei Operanden gleichen Typs aber hat '%s' und '%s' bekommen
Die linke und rechte Seite des 'falls' Ausdrucks müssen den selben Typ haben, aber es wurde %s und %s gefunden
Dieser Ausdruck ist immer 'wahr'
Die Funktion %s erwartet einen Wert vom Typ %s für den Parameter %s, aber hat %s bekommen
Die Struktur %s erwartet einen Wert vom Typ %s für das Feld %s, aber hat %s bekommen
Die Anzahl an Wiederholungen einer WIEDERHOLE Anweisung muss vom Typ ZAHL sein, war aber vom Typ %s
Die Bedingung des 'falls' Ausdrucks muss vom Typ WAHRHEITSWERT sein, aber es wurde %s gefunden
3001 Ein Wert vom Typ %s kann keiner Variable vom Typ %s zugewiesen werden
3002 Der STELLE Operator erwartet eine Zahl als zweiten Operanden, nicht %s
Der STELLE Operator erwartet einen Text oder eine Liste als ersten Operanden, nicht %s
Der '%s' Operator erwartet einen Text oder eine Liste als ersten Operanden, nicht %s
3003 Falscher Typ (%s) in Listen Literal vom Typ %s
Die Größe einer Liste muss als Zahl angegeben werden, nicht als %s
3004 "Ein Ausdruck vom Typ %s kann nicht in den Typ %s umgewandelt werden"
3005 Es wurde ein Referenz-Typ erwartet aber ein Ausdruck gefunden
3006 Ein Buchstabe in einem Text kann nicht als Buchstaben Referenz übergeben werden
3001 Ein Wert vom Typ %s kann keiner Variable vom Typ %s zugewiesen werden
3007 Die Bedingung einer Wenn-Anweisung muss ein Wahrheitswert sein, war aber vom Typ %s
Die Bedingung einer %s muss ein Wahrheitswert sein, war aber vom Typ %s
3010 %s %s hat kein Feld mit Name %s
Der VON Operator erwartet eine Struktur als rechten Operanden, nicht %s
3011 Das Feld %s der Struktur %s ist nicht öffentlich

Compiler Errors

Code Message
0 Es konnte kein Absoluter Dateipfad für die Datei '%s' gefunden werden: %s
Index außerhalb der Listen Länge (Index war %ld, Listen Länge war %ld)
Invalide Indexe (Index 1 war %ld, Index 2 war %ld)
Dieser Teil des Programms wurde noch nicht implementiert
Falsche Typumwandlung
Invalider UTF8 Wert im Text
Es wurde eine invalide Deklaration gefunden
Es wurde ein invalider Ausdruck gefunden
invalid Parameter Type for BETRAG: %s
invalid Parameter Type for NEGATE: %s
invalid Parameter Type for LÄNGE: %s
Unbekannter Operator '%s'
invalid Parameter Types for VON (%s)
invalid Parameter Types for PLUS (%s, %s)
invalid Parameter Types for PLUS (%s, %s)
invalid Parameter Types for PLUS (%s, %s)
invalid Parameter Types for MINUS (%s, %s)
invalid Parameter Types for MINUS (%s, %s)
invalid Parameter Types for MINUS (%s, %s)
invalid Parameter Types for MAL (%s, %s)
invalid Parameter Types for MAL (%s, %s)
invalid Parameter Types for MAL (%s, %s)
invalid Parameter Types for DURCH (%s, %s)
invalid Parameter Types for DURCH (%s, %s)
invalid Parameter Types for DURCH (%s, %s)
invalid Parameter Types for STELLE (%s, %s)
invalid Parameter Types for %s (%s, %s)
invalid Parameter Types for HOCH (%s, %s)
invalid Parameter Types for HOCH (%s, %s)
invalid Parameter Types for LOGARITHMUS (%s, %s)
invalid Parameter Types for LOGARITHMUS (%s, %s)
invalid Parameter Types for KLEINER (%s, %s)
invalid Parameter Types for KLEINER (%s, %s)
invalid Parameter Types for KLEINERODER (%s, %s)
invalid Parameter Types for KLEINERODER (%s, %s)
invalid Parameter Types for KLEINERODER (%s, %s)
invalid Parameter Types for GRÖßER (%s, %s)
invalid Parameter Types for GRÖßER (%s, %s)
invalid Parameter Types for GRÖßER (%s, %s)
invalid Parameter Types for GRÖßERODER (%s, %s)
invalid Parameter Types for GRÖßERODER (%s, %s)
invalid Parameter Types for GRÖßERODER (%s, %s)
invalid Parameter Types for VONBIS (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for ZWISCHEN (%s, %s, %s)
invalid Parameter Types for VONBIS (%s, %s, %s)
invalid Parameter Type for ZAHL: %s
invalid Parameter Type for KOMMAZAHL: %s
invalid Parameter Type for WAHRHEITSWERT: %s
invalid Parameter Type for BUCHSTABE: %s
invalid Parameter Type for TEXT: %s
invalid TypeOpExpr Operator: %d
non-list/string/struct type passed as assignable/reference
non-struct type passed to FieldAccess
Invalid types in evaluateAssignableOrReference %s
non-assignable passed as reference to %s
Es wurde eine invalide Aussage gefunden
importStmt.Module == nil
BadDecl in import
invalid decl type
c.ddpany passed to castNonAnyToAny

nach oben

Die Probleme

Die Probleme, die ich sehe sind:

  1. Manche Error Codes sind zu grob und werden in sehr verschiedenen Kontexte benutzt
  2. Die Error Kategorien "Syntax", "Sematic", und "Type" reichen nicht aus
  3. Die Error Kategorien geben keine nützliche Information für den dev oder user
  4. Die meisten Error Messages sind wild im code verteilt und nicht an einem Ort
  5. Ein Error Code kann mehrere Messages haben, was den Sinn eines Error Codes widerspricht

Lösungen

Für Punkt 1, 2 und 3 müssen wir die error codes neu designen und die Kategorien entweder entfernen oder feiner machen.

Für Punkt 4 und 5 schlage ich vor, dass wir eine Code Datei haben wo alle Error Codes und Messages zusammen liegen und dass jeder Error Code mit einer Error Message verbunden ist.

@NotLe0n NotLe0n added the Thema: Codebase Zum Thema Codebase label Feb 5, 2025
@NotLe0n NotLe0n added this to the prio milestone Feb 5, 2025
@NotLe0n NotLe0n self-assigned this Feb 5, 2025
@bafto
Copy link
Member

bafto commented Feb 5, 2025

Relevant: DDP-Projekt/Bedienungsanleitung#10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Thema: Codebase Zum Thema Codebase
Projects
None yet
Development

No branches or pull requests

2 participants