erg/doc/JA/compiler/errors.md
2022-09-06 09:27:46 +09:00

133 lines
3.5 KiB
Markdown

# 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
参照したオブジェクトが非推奨である場合に発生します。
(開発者はこのWarningを発生させる際、必ず代替手段をHintとして提示してください)
## FutureWarning
将来的に問題が起こりそうなコードを検出すると発生します。
このWarningはバージョンの互換性(ライブラリ含む)の問題や文法・APIの変更によって起こります。
## ImportWarning