/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 5 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . idea . debugger . breakpoints Ċ Ċ import Ġcom . intellij . debugger . ui . breakpoints . Java Line Breakpoint Type Ċ import Ġcom . intellij . openapi . file Editor . File Document Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġcom . intellij . x debugger . X Debugger Util Ċ import Ġorg . jetbrains . kotlin . descriptors . Property Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Value Parameter Descriptor Ċ import Ġorg . jetbrains . kotlin . idea . Kotlin FileType Ċ import Ġorg . jetbrains . kotlin . idea . cache s . resolve . analyze Ċ import Ġorg . jetbrains . kotlin . psi .* Ċ import Ġorg . jetbrains . kotlin . resolve . Binding Context Ċ Ċ fun Ġcan Put At ( file : ĠVirtual File , Ġline : ĠInt , Ġproject : ĠProject , Ġbreakpoint Type Class : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġpsi File Ġ= ĠPsi Manager . getInstance ( project ). find File ( file ) ĊĊĠĠĠ Ġif Ġ( psi File Ġ== Ġnull Ġ|| Ġpsi File . virtual File . fileType Ġ!= ĠKotlin FileType . INSTANCE ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdocument Ġ= ĠFile Document Manager . getInstance (). getDocument ( file ) Ġ?: Ġreturn Ġfalse ĊĊĠĠĠ Ġvar Ġresult : ĠClass < *> ? Ġ= Ġnull ĊĠĠĠ ĠX Debugger Util . getInstance (). iterate Line ( project , Ġdocument , Ġline , Ġfun Ġ( el : ĠPsi Element ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġavoid Ġcomments ĊĠĠĠĠĠĠĠ Ġif Ġ( el Ġis ĠPsi WhiteSpace Ġ|| ĠPsi Tree Util . getParent OfType ( el , Ġjava Class < Psi Comment >(), Ġfalse ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġelement Ġ= Ġel ĊĠĠĠĠĠĠĠ Ġvar Ġparent Ġ= Ġelement . parent ĊĠĠĠĠĠĠĠ Ġwhile Ġ( parent Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġparent . text Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( offset Ġ>= Ġ 0 Ġ&& Ġdocument . get LineNumber ( offset ) Ġ!= Ġline ) Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Ġ= Ġparent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Ġ= Ġelement . parent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠK t Property Ġ|| Ġelement Ġis ĠK t Parameter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbinding Context Ġ= Ġ( element Ġas ĠK t Element ). analyze () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdescriptor Ġ= Ġbinding Context . get ( Binding Context . DECL AR ATION _ TO _ DESCRIPTOR , Ġelement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descriptor Ġis ĠValue Parameter Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Ġ= Ġbinding Context . get ( Binding Context . VALUE _ PARAMETER _ AS _ PROPERTY , Ġdescriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descriptor Ġis ĠProperty Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠKotlin Field Breakpoint Type :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠKotlin Line Breakpoint Type :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= ĠKotlin Line Breakpoint Type :: class . java ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġreturn Ġresult Ġ== Ġbreakpoint Type Class Ċ } ĊĊĊ