package Ġorg . ling u am ach ina . k ling u am ach ina . generation . byte code Ċ Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . eval . impl . Byte code Evaluator Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . generation . exceptions . Primitive Binding Bad Ar ity Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . generation . exceptions . Un registered Primitive Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . interpreter . block . impl . Primitive Block Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . interpreter . context . Interpreter Context Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . interpreter . module . impl . Byte code Module Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . interpreter . primitive . impl . Primitive Registry Impl Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . ling u am ach ina . k ling u am ach ina . parser . ast . antlr . Ant lr AST Builder Ċ Ċ internal Ġclass ĠPrimitive Binding Test Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠTEST _ ID Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ++ field ĊĊĠĠĠ Ġprivate Ġval ĠPR IMIT IVE _ NAME Ġ= Ġ" primitive " ĊĊĠĠĠ Ġprivate Ġfun Ġget Fake Interpreter Context () Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠInterpreter Context Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġprimitive Registry Ġ= ĠPrimitive Registry Impl () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Don 't Ġbind Ġun registered Ġprimitive `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytecode Evaluator Ġ= ĠByte code Evaluator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Fake Interpreter Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte code Module . test Module ( TEST _ ID ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnt lr AST Builder ()) ĊĊĠĠĠĠĠĠĠ ĠassertThrows < Un registered Primitive > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġremove Ġ' Object Ġ:= Ġ 1 3 3 7 Ġclass ' Ġstub ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytecode Evaluator . eval (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Ġ:= Ġ 1 3 3 7 Ġclass ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Ġsubclass : Ġ' Test Ġinstance Vars : Ġ[]; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Ġ:: Ġprimitive Ġ= Ġ'$ PR IMIT IVE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Don 't Ġbind Ġnon - matching Ġar ity Ġprimitives `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfake Interpreter Context Ġ= Ġget Fake Interpreter Context () ĊĠĠĠĠĠĠĠ Ġval Ġbytecode Evaluator Ġ= ĠByte code Evaluator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake Interpreter Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte code Module . test Module ( TEST _ ID ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnt lr AST Builder ()) ĊĊĠĠĠĠĠĠĠ Ġfake Interpreter Context . primitive Registry . register Primitive ( PR IMIT IVE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrimitive Block ( PR IMIT IVE _ NAME , Ġ 1 3 3 7 )) ĊĊĠĠĠĠĠĠĠ ĠassertThrows < Primitive Binding Bad Ar ity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġremove Ġ' Object Ġ:= Ġ 1 3 3 7 Ġclass ' Ġstub ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytecode Evaluator . eval (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Ġ:= Ġ 1 3 3 7 Ġclass ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObject Ġsubclass : Ġ' Test Ġinstance Vars : Ġ[]; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Ġ:: Ġprimitive Ġ= Ġ'$ PR IMIT IVE _ NAME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Successfully Ġbind Ġprimitive `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfake Interpreter Context Ġ= Ġget Fake Interpreter Context () ĊĠĠĠĠĠĠĠ Ġval Ġbytecode Evaluator Ġ= ĠByte code Evaluator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfake Interpreter Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠByte code Module . test Module ( TEST _ ID ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAnt lr AST Builder ()) ĊĊĠĠĠĠĠĠĠ Ġfake Interpreter Context . primitive Registry . register Primitive ( PR IMIT IVE _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrimitive Block ( PR IMIT IVE _ NAME , Ġ 0 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġremove Ġ' Object Ġ:= Ġ 1 3 3 7 Ġclass ' Ġstub ĊĠĠĠĠĠĠĠ Ġbytecode Evaluator . eval (""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Ġ:= Ġ 1 3 3 7 Ġclass ; ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObject Ġsubclass : Ġ' Test Ġinstance Vars : Ġ[]; ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest Ġ:: Ġprimitive Ġ= Ġ'$ PR IMIT IVE _ NAME ĊĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠ Ġ} Ċ }