diff --git a/python/intellij.python.community.impl.iml b/python/intellij.python.community.impl.iml index 666c5ffaa222..6517176db4ba 100644 --- a/python/intellij.python.community.impl.iml +++ b/python/intellij.python.community.impl.iml @@ -32,5 +32,6 @@ + \ No newline at end of file diff --git a/python/src/META-INF/python-core-common.xml b/python/src/META-INF/python-core-common.xml index 6f5da3b36df5..fd61de48cc49 100644 --- a/python/src/META-INF/python-core-common.xml +++ b/python/src/META-INF/python-core-common.xml @@ -669,6 +669,7 @@ + diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionSkipper.kt b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionSkipper.kt new file mode 100644 index 000000000000..df069f1b0875 --- /dev/null +++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionSkipper.kt @@ -0,0 +1,16 @@ +// Copyright 2000-2018 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 com.jetbrains.python.inspections + +import com.intellij.openapi.extensions.ExtensionPointName +import com.jetbrains.python.psi.PyFunction +import com.jetbrains.python.psi.types.TypeEvalContext + +interface PyUnusedLocalInspectionSkipper { + fun skip(element: PyFunction, context: TypeEvalContext): Boolean + + companion object { + fun skip(element: PyFunction, + context: TypeEvalContext) = EP.extensions.any { it.skip(element, context) } + val EP = ExtensionPointName.create("Pythonid.skipUnusedLocal") + } +} \ No newline at end of file diff --git a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java index 8d3eb43dd369..f0a8b3c4bfa1 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java +++ b/python/src/com/jetbrains/python/inspections/PyUnusedLocalInspectionVisitor.java @@ -67,8 +67,8 @@ public class PyUnusedLocalInspectionVisitor extends PyInspectionVisitor { } @Override - public void visitPyFunction(final PyFunction node) { - if (!PyiUtil.isOverload(node, myTypeEvalContext)) { + public void visitPyFunction(@NotNull final PyFunction node) { + if (!PyiUtil.isOverload(node, myTypeEvalContext) && !PyUnusedLocalInspectionSkipper.Companion.skip(node, myTypeEvalContext)) { processScope(node); } }