/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 8 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ċ Ġ* Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ package Ġkotlin . native Ċ Ċ import Ġkotlin . native . concurrent . Invalid Mut ability Exception Ċ import Ġkotlin . native . internal . Export For Cpp Runtime Ċ import Ġkotlin . native . internal . GC Unsafe Call Ċ import Ġkotlin . native . internal . Unhandled Exception Hook Holder Ċ import Ġkotlin . native . internal . run Unhandled Exception Hook Ċ import Ġkotlin . native . internal . Report Unhandled Exception Ċ Ċ /** Ċ Ġ* ĠInitializes ĠKotlin Ġruntime Ġfor Ġthe Ġcurrent Ġthread , Ġif Ġnot Ġinit ed Ġalready . Ċ Ġ*/ Ċ @ GC Unsafe Call (" Kotlin _ init Runtime IfNeeded From Kotlin ") Ċ external Ġpublic Ġfun Ġinit Runtime IfNeeded (): ĠUnit Ċ Ċ /** Ċ Ġ* ĠDe initial izes ĠKotlin Ġruntime Ġfor Ġthe Ġcurrent Ġthread , Ġif Ġwas Ġinit ed . Ċ Ġ* ĠCannot Ġbe Ġcalled Ġfrom ĠKotlin Ġframes Ġholding Ġreferences , Ġthus Ġdeprecated . Ċ Ġ*/ Ċ @ GC Unsafe Call (" Kotlin _ de init Runtime IfNeeded ") Ċ @ Deprecated (" De init Ġruntime Ġcan Ġnot Ġbe Ġcalled Ġfrom ĠKotlin ", Ġlevel Ġ= ĠDeprec ation Level . ERROR ) Ċ external Ġpublic Ġfun Ġde init Runtime IfNeeded (): ĠUnit Ċ Ċ /** Ċ Ġ* ĠException Ġthrown Ġwhen Ġtop Ġlevel Ġvariable Ġis Ġaccessed Ġfrom Ġincorrect Ġexecution Ġcontext . Ċ Ġ*/ Ċ public Ġclass ĠInc orrect Dere ference Exception Ġ: ĠRuntimeException Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġsuper () ĊĊĠĠĠ Ġconstructor ( message : ĠString ) Ġ: Ġsuper ( message ) Ċ } Ċ Ċ /** Ċ Ġ* ĠException Ġthrown Ġwhen Ġthere Ġwas Ġan Ġerror Ġduring Ġfile Ġinit al ization . Ċ Ġ*/ Ċ @ Experimental Std lib Api Ċ public Ġclass ĠFile Failed To Initialize Exception Ġ: ĠRuntimeException Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġsuper () ĊĊĠĠĠ Ġconstructor ( message : ĠString ) Ġ: Ġsuper ( message ) Ċ } Ċ Ċ /** Ċ Ġ* ĠType alias Ġdescribing Ġcustom Ġexception Ġreporting Ġhook . Ċ Ġ*/ Ċ public Ġtype alias ĠReport Unhandled Exception Hook Ġ= ĠFunction 1 < Throwable , ĠUnit > Ċ Ċ /** Ċ Ġ* ĠInstall Ġcustom Ġunhandled Ġexception Ġhook . ĠReturns Ġold Ġhook , Ġor Ġnull Ġif Ġit Ġwas Ġnot Ġspecified . Ċ Ġ* ĠHook Ġis Ġinvoked Ġwhenever Ġthere 's Ġun caught Ġexception Ġre aching Ġboundaries Ġof Ġthe ĠKotlin Ġworld , Ċ Ġ* Ġi . e . Ġtop Ġlevel Ġmain (), Ġor Ġwhen ĠObjective - C Ġto ĠKotlin Ġcall Ġnot Ġmarked Ġwith Ġ@ Throws Ġthrows Ġan Ġexception . Ċ Ġ* ĠHook Ġmust Ġbe Ġa Ġfrozen Ġlambda , Ġso Ġthat Ġit Ġcould Ġbe Ġcalled Ġfrom Ġany Ġthread / worker . Ċ Ġ*/ Ċ public Ġfun Ġset Unhandled Exception Hook ( hook : ĠReport Unhandled Exception Hook ): ĠReport Unhandled Exception Hook ? Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠUnhandled Exception Hook Holder . hook . swap ( hook ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠInvalid Mut ability Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠInvalid Mut ability Exception (" Unhandled Ġexception Ġhook Ġmust Ġbe Ġfrozen ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġa Ġuser - defined Ġun caught Ġexception Ġhandler Ġset Ġby Ġ[ set Unhandled Exception Hook ] Ġor Ġ` null ` Ġif Ġno Ġuser - defined Ġhandlers Ġwere Ġset . Ċ Ġ*/ Ċ @ Experimental Std lib Api Ċ @ Since Kotlin (" 1 . 6 ") Ċ public Ġfun Ġget Unhandled Exception Hook (): ĠReport Unhandled Exception Hook ? Ġ{ ĊĠĠĠ Ġreturn ĠUnhandled Exception Hook Holder . hook . value Ċ } Ċ Ċ /** Ċ Ġ* ĠPerforms Ġthe Ġdefault Ġprocessing Ġof Ġunhandled Ġexception . Ċ Ġ* Ċ Ġ* ĠIf Ġuser - defined Ġhook Ġset Ġby Ġ[ set Unhandled Exception Hook ] Ġis Ġpresent , Ġcalls Ġit Ġand Ġreturns . Ċ Ġ* ĠIf Ġthe Ġhook Ġis Ġnot Ġpresent , Ġcalls Ġ[ terminate With Unhandled Exception ] Ġwith Ġ[ throwable ]. Ċ Ġ* ĠIf Ġthe Ġhook Ġfails Ġwith Ġexception , Ġcalls Ġ[ terminate With Unhandled Exception ] Ġwith Ġexception Ġfrom Ġthe Ġhook . Ċ Ġ*/ Ċ @ Experimental Std lib Api Ċ @ Since Kotlin (" 1 . 6 ") Ċ @ GC Unsafe Call (" Kotlin _ process Unhandled Exception ") Ċ public Ġexternal Ġfun Ġprocess Unhandled Exception ( throwable : ĠThrowable ): ĠUnit Ċ Ċ /* Ċ Ġ* ĠTermin ates Ġthe Ġprogram Ġwith Ġthe Ġgiven Ġ[ throwable ] Ġas Ġan Ġunhandled Ġexception . Ċ Ġ* ĠUser - defined Ġhooks Ġinstalled Ġwith Ġ[ set Unhandled Exception Hook ] Ġare Ġnot Ġinvoked . Ċ Ġ* Ċ Ġ* Ġ` terminate With Unhandled Exception ` Ġcan Ġbe Ġused Ġto Ġem ulate Ġan Ġa br upt Ġtermination Ġof Ġthe Ġapplication Ġwith Ġan Ġun caught Ġexception . Ċ Ġ*/ Ċ @ Experimental Std lib Api Ċ @ Since Kotlin (" 1 . 6 ") Ċ @ GC Unsafe Call (" Kotlin _ terminate With Unhandled Exception ") Ċ public Ġexternal Ġfun Ġterminate With Unhandled Exception ( throwable : ĠThrowable ): ĠNothing Ċ Ċ /** Ċ Ġ* ĠCompute Ġstable Ġw rt Ġpotential Ġobject Ġre locations Ġby Ġthe Ġmemory Ġmanager Ġidentity Ġhash Ġcode . Ċ Ġ* Ġ@ return Ġ 0 Ġfor Ġ` null ` Ġobject , Ġidentity Ġhash Ġcode Ġotherwise . Ċ Ġ*/ Ċ @ GC Unsafe Call (" Kotlin _ Any _ hashCode ") Ċ public Ġexternal Ġfun ĠAny ?. identity HashCode (): ĠInt Ċ