6.78. kink/program/COMPILE_ERROR

6.78.1. compile_error型

compile_errorは、プログラムのコンパイルのエラーである。

compile_errorは次の属性からなる。

• Message: エラーメッセージのstr。

• From: エラーの開始位置のlocation。

• To: エラーの終了位置のlocation。

不変条件

From.program == To.program

From.pos <= To.pos

6.78.1.1. Err.message

messageは、ErrのMessage属性を戻す。

6.78.1.2. Err.from

fromは、ErrのFrom属性を戻す。

6.78.1.3. Err.to

toは、ErrのTo属性を戻す。

6.78.1.4. Err.desc

descは、プログラマのためにコンパイルエラーを叙述するstrを戻す。

:PROGRAM.require_from('kink/program/')
:LOCATION.require_from('kink/program/')
:COMPILE_ERROR.require_from('kink/program/')

:Program <- PROGRAM.new('foo.kn' 'Foo + @@ Bar')
:From <- LOCATION.new(Program 6)
:To <- LOCATION.new(Program 8)
:Err <- COMPILE_ERROR.new('unknown operator' From To)
stdout.print_line(Err.desc.repr) # => "unknown operator: [foo.kn L1 C7] Foo + -->@@ Bar"

6.78.1.5. Err1 == Err2

== 演算子、つまりop_eqメソッドは、Err1とErr2が、等しいMessage, From, To属性を持っているかどうかを戻す。

事前条件

Err2はcompile_errorでなければならない。

6.78.2. COMPILE_ERROR.new(Message From To)

newは、渡された属性を持つ新しいcompile_errorを戻す。

事前条件

Messageはstrでなければならない。

FromとToはlocation値でなければならない。

From.program == To.program

From.pos <= To.pos

6.78.3. COMPILE_ERROR.is?(Val)

is?は、Valがcompile_errorかどうかを戻す。