From 2ba89b9e68765a7e42fe33e86392e6da919409b6 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 31 Jul 2017 16:42:26 +0300 Subject: [PATCH] Fix bad cast on absent descriptor in field breakpoint (EA-101988) --- .../debugger/breakpoints/KotlinFieldBreakpoint.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt index 5ce0d4337cf..0133ac39090 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/breakpoints/KotlinFieldBreakpoint.kt @@ -122,7 +122,7 @@ class KotlinFieldBreakpoint( val property = getProperty(sourcePosition) ?: return - breakpointType = computeBreakpointType(property) + breakpointType = (computeBreakpointType(property) ?: return) val vm = debugProcess.virtualMachineProxy try { @@ -187,7 +187,7 @@ class KotlinFieldBreakpoint( } } - private fun computeBreakpointType(property: KtCallableDeclaration): BreakpointType { + private fun computeBreakpointType(property: KtCallableDeclaration): BreakpointType? { return runReadAction { val bindingContext = property.analyze() var descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, property) @@ -195,11 +195,16 @@ class KotlinFieldBreakpoint( descriptor = bindingContext.get(BindingContext.VALUE_PARAMETER_AS_PROPERTY, descriptor) } - if (bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, descriptor as PropertyDescriptor)!!) { - BreakpointType.FIELD + if (descriptor != null) { + if (bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, descriptor as PropertyDescriptor)!!) { + BreakpointType.FIELD + } + else { + BreakpointType.METHOD + } } else { - BreakpointType.METHOD + null } } }