-
Notifications
You must be signed in to change notification settings - Fork 3
Description
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 |
Die Probleme
Die Probleme, die ich sehe sind:
- Manche Error Codes sind zu grob und werden in sehr verschiedenen Kontexte benutzt
- Die Error Kategorien "Syntax", "Sematic", und "Type" reichen nicht aus
- Die Error Kategorien geben keine nützliche Information für den dev oder user
- Die meisten Error Messages sind wild im code verteilt und nicht an einem Ort
- 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.
Sub-issues
Metadata
Metadata
Assignees
Labels
Thema: CodebaseZum Thema CodebaseZum Thema Codebase