mirror of
https://github.com/erg-lang/erg.git
synced 2025-08-07 20:29:06 +00:00
131 lines
2.6 KiB
Markdown
131 lines
2.6 KiB
Markdown
# Erg Compiler Errors
|
|
|
|
## AssignError
|
|
|
|
Raised when attempting to rewrite an immutable variable.
|
|
|
|
## AttributeError
|
|
|
|
Raised when trying to access an attribute that does not exist.
|
|
|
|
## PurityError
|
|
|
|
Raised when writing code that causes side effects in scopes (functions, immutable types, etc.) where side effects are not allowed.
|
|
|
|
## MoveError
|
|
|
|
Raised when you try to access a variable that has already been moved.
|
|
|
|
## BorrowError
|
|
|
|
Raised when an attempt is made to obtain another variable reference while a borrow exists for an object.
|
|
|
|
## CyclicError
|
|
|
|
Raised when there is an apparent non-stop cycle.
|
|
|
|
```python
|
|
i: Int = i
|
|
|
|
f(): Int = g()
|
|
g() = f()
|
|
|
|
h(): Int = module::h()
|
|
|
|
T = U
|
|
U = T
|
|
```
|
|
|
|
## BytecodeError
|
|
|
|
Raised if the bytecode read is corrupt.
|
|
|
|
## CompileSystemError
|
|
|
|
Raised when an error occurs inside the compiler.
|
|
|
|
## EnvironmentError
|
|
|
|
Raised when there is no access permission during installation.
|
|
|
|
## FeatureError
|
|
|
|
Raised when an experimental feature that is not officially provided is detected.
|
|
|
|
## ImportError
|
|
|
|
## IndentationError
|
|
|
|
Raised when an invalid indentation is detected.
|
|
Derived from SyntaxError.
|
|
|
|
## NameError
|
|
|
|
Raised when accessing a variable that does not exist.
|
|
|
|
## NotImplementedError
|
|
|
|
Raised when calling an API that has a definition but no implementation.
|
|
Derived from TypeError.
|
|
|
|
## PatternError
|
|
|
|
Raised when an invalid pattern is detected.
|
|
Derived from SyntaxError.
|
|
|
|
## SyntaxError
|
|
|
|
Raised when an invalid syntax is detected.
|
|
|
|
## TabError
|
|
|
|
Raised when a tab character is used for indentation/space.
|
|
Derived from SyntaxError.
|
|
|
|
## TypeError
|
|
|
|
Raised when the object type does not match.
|
|
|
|
## UnboundLocalError
|
|
|
|
Raised when a variable is used before it is defined.
|
|
More precisely, it occurs when a variable defined in a scope is used before it is defined.
|
|
|
|
```python
|
|
i = 0
|
|
f x =
|
|
y = i + x
|
|
i = 1
|
|
y + i
|
|
```
|
|
|
|
In this code, the `i` in `y = i + x` is an undefined variable.
|
|
However, if it is a constant, it can be called in another function before it is defined.
|
|
|
|
```python
|
|
f() = g()
|
|
g() = f()
|
|
```
|
|
|
|
## Erg Compiler Warnings
|
|
|
|
## SyntaxWarning
|
|
|
|
This happens when syntactically sound but redundant or uncommon code is detected (e.g., unnecessary `()`).
|
|
|
|
```python
|
|
if (True): # SyntaxWarning: unnecessary parentheses
|
|
...
|
|
```
|
|
|
|
## DeprecationWarning
|
|
|
|
Raised if the referenced object is deprecated.
|
|
(Developers should always provide an alternative Hint when raising this Warning.)
|
|
|
|
## FutureWarning
|
|
|
|
Raised when code is detected that may cause problems in the future.
|
|
This warning is caused by version compatibility issues (including libraries) or changes in syntax or API.
|
|
|
|
## ImportWarning
|