add BindingUtilsPackage.isUnreachableCode
This commit is contained in:
@@ -260,6 +260,7 @@ public class JetFlowInformationProvider {
|
|||||||
private void reportUnreachableCode(@NotNull UnreachableCode unreachableCode) {
|
private void reportUnreachableCode(@NotNull UnreachableCode unreachableCode) {
|
||||||
for (JetElement element : unreachableCode.getElements()) {
|
for (JetElement element : unreachableCode.getElements()) {
|
||||||
trace.report(UNREACHABLE_CODE.on(element, unreachableCode.getUnreachableTextRanges(element)));
|
trace.report(UNREACHABLE_CODE.on(element, unreachableCode.getUnreachableTextRanges(element)));
|
||||||
|
trace.record(BindingContext.UNREACHABLE_CODE, element, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ public interface BindingContext {
|
|||||||
*/
|
*/
|
||||||
WritableSlice<JetExpression, Boolean> PROCESSED = Slices.createSimpleSetSlice();
|
WritableSlice<JetExpression, Boolean> PROCESSED = Slices.createSimpleSetSlice();
|
||||||
WritableSlice<JetElement, Boolean> USED_AS_EXPRESSION = Slices.createRemovableSetSlice();
|
WritableSlice<JetElement, Boolean> USED_AS_EXPRESSION = Slices.createRemovableSetSlice();
|
||||||
|
WritableSlice<JetElement, Boolean> UNREACHABLE_CODE = Slices.createRemovableSetSlice();
|
||||||
|
|
||||||
WritableSlice<VariableDescriptor, CaptureKind> CAPTURED_IN_CLOSURE = new BasicWritableSlice<VariableDescriptor, CaptureKind>(DO_NOTHING);
|
WritableSlice<VariableDescriptor, CaptureKind> CAPTURED_IN_CLOSURE = new BasicWritableSlice<VariableDescriptor, CaptureKind>(DO_NOTHING);
|
||||||
|
|
||||||
|
|||||||
@@ -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.isUsedAsExpression(context: BindingContext): Boolean = context[BindingContext.USED_AS_EXPRESSION, this]!!
|
||||||
public fun JetExpression.isUsedAsStatement(context: BindingContext): Boolean = !isUsedAsExpression(context)
|
public fun JetExpression.isUsedAsStatement(context: BindingContext): Boolean = !isUsedAsExpression(context)
|
||||||
|
|
||||||
|
|
||||||
public fun <C : ResolutionContext<C>> ResolutionContext<C>.recordScopeAndDataFlowInfo(expression: JetExpression?) {
|
public fun <C : ResolutionContext<C>> ResolutionContext<C>.recordScopeAndDataFlowInfo(expression: JetExpression?) {
|
||||||
if (expression == null) return
|
if (expression == null) return
|
||||||
|
|
||||||
@@ -57,3 +58,6 @@ public fun <C : ResolutionContext<C>> ResolutionContext<C>.recordScopeAndDataFlo
|
|||||||
|
|
||||||
public fun BindingContext.getDataFlowInfo(expression: JetExpression?): DataFlowInfo =
|
public fun BindingContext.getDataFlowInfo(expression: JetExpression?): DataFlowInfo =
|
||||||
expression?.let { this[BindingContext.EXPRESSION_DATA_FLOW_INFO, it] } ?: DataFlowInfo.EMPTY
|
expression?.let { this[BindingContext.EXPRESSION_DATA_FLOW_INFO, it] } ?: DataFlowInfo.EMPTY
|
||||||
|
|
||||||
|
public fun JetExpression.isUnreachableCode(context: BindingContext): Boolean = context[BindingContext.UNREACHABLE_CODE, this]!!
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user