From 6e728852d0c58ae9b956b0e9c2502da141fddacc Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Fri, 29 Aug 2014 01:40:16 +0400 Subject: [PATCH] add BindingUtilsPackage.isUnreachableCode --- .../jetbrains/jet/lang/cfg/JetFlowInformationProvider.java | 1 + .../src/org/jetbrains/jet/lang/resolve/BindingContext.java | 1 + .../src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index dce9c963b15..076261ae7b2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -260,6 +260,7 @@ public class JetFlowInformationProvider { private void reportUnreachableCode(@NotNull UnreachableCode unreachableCode) { for (JetElement element : unreachableCode.getElements()) { trace.report(UNREACHABLE_CODE.on(element, unreachableCode.getUnreachableTextRanges(element))); + trace.record(BindingContext.UNREACHABLE_CODE, element, true); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java index c0dffed46f9..82323680578 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java @@ -138,6 +138,7 @@ public interface BindingContext { */ WritableSlice PROCESSED = Slices.createSimpleSetSlice(); WritableSlice USED_AS_EXPRESSION = Slices.createRemovableSetSlice(); + WritableSlice UNREACHABLE_CODE = Slices.createRemovableSetSlice(); WritableSlice CAPTURED_IN_CLOSURE = new BasicWritableSlice(DO_NOTHING); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt index 93ac0feb426..22ffe2d4263 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContextUtils.kt @@ -46,6 +46,7 @@ public fun JetReturnExpression.getTargetFunctionDescriptor(context: BindingConte public fun JetExpression.isUsedAsExpression(context: BindingContext): Boolean = context[BindingContext.USED_AS_EXPRESSION, this]!! public fun JetExpression.isUsedAsStatement(context: BindingContext): Boolean = !isUsedAsExpression(context) + public fun > ResolutionContext.recordScopeAndDataFlowInfo(expression: JetExpression?) { if (expression == null) return @@ -57,3 +58,6 @@ public fun > ResolutionContext.recordScopeAndDataFlo public fun BindingContext.getDataFlowInfo(expression: JetExpression?): DataFlowInfo = expression?.let { this[BindingContext.EXPRESSION_DATA_FLOW_INFO, it] } ?: DataFlowInfo.EMPTY + +public fun JetExpression.isUnreachableCode(context: BindingContext): Boolean = context[BindingContext.UNREACHABLE_CODE, this]!! +