(.module: [lux #* [abstract ["." equivalence (#+ Equivalence)]] [control ["<>" parser ("#@." functor) ["<2>" binary (#+ Parser)]]] [data [format [".F" binary (#+ Writer)]]]] ["." // #_ ["//#" /// #_ [constant (#+ Class)] ["#." index (#+ Index)] [program ["#." jump (#+ Jump)]] [encoding ["#." unsigned (#+ U2)]]]]) (type: #export Exception {#start-pc Jump #end-pc Jump #handler-pc Jump #catch-type (Index Class)}) (def: #export equivalence (Equivalence Exception) ($_ equivalence.product ////jump.equivalence ////jump.equivalence ////jump.equivalence ////index.equivalence )) ## https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.3 (def: #export length Nat ($_ n/+ ## u2 start_pc; ////unsigned.u2-bytes ## u2 end_pc; ////unsigned.u2-bytes ## u2 handler_pc; ////unsigned.u2-bytes ## u2 catch_type; ////unsigned.u2-bytes )) (def: #export parser (Parser Exception) ($_ <>.and ////jump.parser ////jump.parser ////jump.parser ////index.parser )) (def: #export writer (Writer Exception) ($_ binaryF.and ////jump.writer ////jump.writer ////jump.writer ////index.writer ))