From d1e55f19786b8e7386e260c1a1b98af969ec4464 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Fri, 26 Oct 2018 18:06:02 +0300 Subject: [PATCH] Suppress highlighting empty raise without exception to re-raise in functions (PY-27232) --- .../jetbrains/python/validation/TryExceptAnnotator.java | 8 +++----- python/testData/highlighting/emptyRaise.py | 8 +++++++- .../testData/highlighting/unsupportedFeaturesInPython3.py | 5 +++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/python/src/com/jetbrains/python/validation/TryExceptAnnotator.java b/python/src/com/jetbrains/python/validation/TryExceptAnnotator.java index e1f54238fbae..bffdaf4a6e29 100644 --- a/python/src/com/jetbrains/python/validation/TryExceptAnnotator.java +++ b/python/src/com/jetbrains/python/validation/TryExceptAnnotator.java @@ -3,10 +3,7 @@ package com.jetbrains.python.validation; import com.intellij.psi.util.PsiTreeUtil; import com.jetbrains.python.PyBundle; -import com.jetbrains.python.psi.PyExceptPart; -import com.jetbrains.python.psi.PyFinallyPart; -import com.jetbrains.python.psi.PyRaiseStatement; -import com.jetbrains.python.psi.PyTryExceptStatement; +import com.jetbrains.python.psi.*; /** * Marks misplaced default 'except' clauses. @@ -30,7 +27,8 @@ public class TryExceptAnnotator extends PyAnnotator { @Override public void visitPyRaiseStatement(PyRaiseStatement node) { - if (node.getExpressions().length == 0 && PsiTreeUtil.getParentOfType(node, PyExceptPart.class, PyFinallyPart.class) == null) { + if (node.getExpressions().length == 0 && + PsiTreeUtil.getParentOfType(node, PyExceptPart.class, PyFinallyPart.class, PyFunction.class) == null) { markError(node, "No exception to reraise"); } } diff --git a/python/testData/highlighting/emptyRaise.py b/python/testData/highlighting/emptyRaise.py index abd1bd4aa41a..90b544bc4302 100644 --- a/python/testData/highlighting/emptyRaise.py +++ b/python/testData/highlighting/emptyRaise.py @@ -9,4 +9,10 @@ except: try: raise ValueError finally: - raise \ No newline at end of file + raise + + +def exception_handler(): + if undefined: + raise + log_somehow() \ No newline at end of file diff --git a/python/testData/highlighting/unsupportedFeaturesInPython3.py b/python/testData/highlighting/unsupportedFeaturesInPython3.py index 9057c2a89cda..fb471df41212 100644 --- a/python/testData/highlighting/unsupportedFeaturesInPython3.py +++ b/python/testData/highlighting/unsupportedFeaturesInPython3.py @@ -24,4 +24,9 @@ try: pass except: raise + +def exception_handler(): + if undefined: + raise + log_somehow() \ No newline at end of file