Skip to main content

Overview

This guide covers common errors you might encounter while programming in Leo, along with their solutions. Leo’s error codes follow the format E{CATEGORY}{CODE}, where categories include PAR (parser), AST, TYC (type checker), and CMP (compiler).

Parser Errors (PAR)

Parser errors occur during the lexing and parsing phase.

Unexpected Token

Error:
Cause: Missing semicolon or incorrect syntax. Solution:

Unexpected EOF

Error:
Cause: Unclosed brackets, braces, or incomplete expressions. Solution:

Invalid Address Literal

Error:
Cause: Malformed address (addresses must be 63 characters and start with aleo1). Solution:

Type Checker Errors (TYC)

Type checker errors occur during semantic analysis.

Type Mismatch

Error:
Cause: Attempting to use a value of one type where another is expected. Solution:

Unknown Symbol

Error:
Cause: Using a variable that hasn’t been declared. Solution:

Incorrect Number of Arguments

Error:
Cause: Function called with wrong number of arguments. Solution:

Cannot Assign to Const

Error:
Cause: Attempting to modify a constant variable. Solution:

Invalid Assignment Target

Error:
Cause: Attempting to assign to an expression that is not a valid assignment target. Solution:

Compiler Errors (CMP)

Compiler errors occur during the compilation and code generation phase.

Import Not Found

Error:
Cause: Importing a non-existent module or program. Solution:

Program Name Mismatch

Error:
Cause: Program name doesn’t match the file name. Solution:

Imported Program Not Found

Error:
Cause: Missing dependency in program.json. Solution:

Illegal Static Member Assignment

Error:
Cause: Attempting to modify a struct’s static member. Solution: Static members cannot be modified. Use instance fields instead.

Common Runtime Issues

Assertion Failures

Error:
Cause: An assert statement evaluated to false. Solution:

Arithmetic Overflow

Error: Proof generation fails due to overflow. Cause: Arithmetic operation exceeds type bounds. Solution:

Arithmetic Underflow

Error: Proof generation fails due to underflow. Cause: Subtraction results in negative value for unsigned types. Solution:

Mapping Errors

Mapping Get Failure

Error: Transaction fails when accessing non-existent key. Cause: Using Mapping::get on a key that doesn’t exist. Solution:

Mapping Access Outside Finalizer

Error:
Cause: Attempting to access mappings in a regular function. Solution:

Build and CLI Issues

Command Not Found

Error:
Solution:

Build Fails

Error:
Solution:

Outdated Leo Version

Error:
Solution:

Development Environment

Rust Version Issues

Error:
Solution:

Formatting Issues

Error:
Solution:

Debugging Strategies

Enable Verbose Output

Check Generated Aleo Code

This helps identify:
  • How Leo compiles to Aleo instructions
  • Register allocation
  • Optimization results

Use Assertions for Debugging

Simplify Complex Functions

Break down complex functions into smaller pieces:

Getting Help

Check Documentation

Language Reference

Complete syntax reference

Examples

Working example programs

Community Support

File a Bug Report

When reporting issues, include:
  1. Leo version (leo --version)
  2. Operating system
  3. Complete error message
  4. Minimal reproducible example
  5. Expected vs actual behavior

FAQ

Frequently asked questions

Contributing

Help improve Leo