# 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