# Erg Compiler Errors

[![badge](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Fgezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com%2Fdefault%2Fsource_up_to_date%3Fowner%3Derg-lang%26repos%3Derg%26ref%3Dmain%26path%3Ddoc/EN/compiler/errors.md%26commit_hash%3D51de3c9d5a9074241f55c043b9951b384836b258)](https://gezf7g7pd5.execute-api.ap-northeast-1.amazonaws.com/default/source_up_to_date?owner=erg-lang&repos=erg&ref=main&path=doc/EN/compiler/errors.md&commit_hash=51de3c9d5a9074241f55c043b9951b384836b258)

## AssignError

尝试重写不可变变量时发生

## AttributeError

尝试访问不存在的属性时发生

## PurityError

当您在不允许副作用的范围内(函数、不可变类型等)编写导致副作用的代码时发生

## MoveError

尝试访问已移动的变量时发生

## BorrowError

在存在对对象的借用时尝试获取可变引用时发生

## CyclicError

当你有一个明显不可阻挡的循环时发生

```python
i: Int = i

f(): Int = g()
g() = f()

h(): Int = module::h()

T = U
U = T
```

## BytecodeError

当加载的字节码损坏时发生

## CompileSystemError

在编译器内部发生错误时发生

## EnvironmentError

如果您在安装期间没有访问权限，则会发生这种情况

## FeatureError

在检测到未正式提供的实验性功能时发生

## ImportError

## IndentationError

检测到不良缩进时发生
派生自SyntaxError

## NameError

当您访问不存在的变量时发生

## NotImplementedError

当您调用具有定义但没有实现的 API 时发生
派生自 TypeError

## PatternError

当检测到非法模式时发生
派生自SyntaxError

## SyntaxError

在检测到错误语法时发生

## TabError

在使用制表符进行缩进/间距时发生
派生自SyntaxError

## TypeError

当对象类型不匹配时发生

## UnboundLocalError

在定义之前使用变量时发生
更准确地说，它发生在以前使用过在范围内定义的变量时

```python
i = 0
f x =
    y = i + x
    i = 1
    y + i
```

在这段代码中，`y = i + x` 中的 `i` 是一个未定义的变量
但是，常量可以在定义之前在另一个函数中调用

```python
f() = g()
g() = f()
```

## Erg Compiler Warnings

## SyntaxWarning

它在语法上很好，但是当我们检测到冗余或不常见的代码(不必要的 `()` 等)时就会发生这种情况

```python
if (True): # SyntaxWarning: unnecessary parentheses
    ...
```

## DeprecationWarning

在不推荐使用引用的对象时发生
(开发人员在生成此警告时应始终提供替代方法作为提示)

## FutureWarning

当您检测到将来可能导致问题的代码时发生
此警告是由版本兼容性问题(包括库)以及语法和 API 的更改引起的

## ImportWarning
