Understanding error messages
An error message is a clue about a problem in your program. Read it, find the indicated place, and make one small correction at a time. A diagnostic is a message from a Pliro check, with a code and a source location: the file, line, and position it points to.
A stable code, such as E4003, identifies the kind of problem even when the message is translated. In the table, xx is a placeholder for two digits: E40xx describes a group of codes. You would not see the letters xx in a particular error code.
Lexical checking recognizes small pieces of code, called tokens. Parsing checks how those pieces fit into instructions. Name resolution matches each used name to its declaration. Arity is the number of arguments supplied to a function. Runtime means while the program is executing; native build means creating an application for a chosen system. See how code runs.
Lexical, parser, name-resolution, module, runtime, and native-build errors use
stable diagnostic codes. Important ranges are:
| Range | Category |
|---|---|
E01xx |
Syntax locale selection. |
E10xx |
Lexical errors. |
E20xx |
Parser errors. |
E30xx |
Name resolution and function arity. |
E31xx |
Project modules. |
E40xx |
Runtime values, limits, input, GPIO, media, and display. |
E50xx |
Run Selection or Run Block selection. |
E60xx |
Unsupported native target capability or platform. |
Runtime failures stop the Pliro program while letting the host application stay open.
Behavior and details
Event checks also use E3201 (not top level), E3202 (invalid header/literal), and E3203 (descriptor used as an ordinary call). Storage uses E4014–E4017. Typical fixes: select a source locale, add a colon and indented body, use set for updates and == for equality, and choose the correct localized built-in alias. Incomplete or intentionally invalid fragments use text fences; complete examples use pliro fences.
