summaryrefslogtreecommitdiff
path: root/tests/functional/u/unreachable.py
blob: 0211a61366ee680b22f4cb762d646af31cb81298 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# pylint: disable=missing-docstring, broad-exception-raised, too-few-public-methods, redefined-outer-name
# pylint: disable=consider-using-sys-exit, protected-access

import os
import signal
import sys

def func1():
    return 1
    print('unreachable') # [unreachable]

def func2():
    while 1:
        break
        print('unreachable') # [unreachable]

def func3():
    for i in (1, 2, 3):
        print(i)
        continue
        print('unreachable') # [unreachable]

def func4():
    raise Exception
    return 1 / 0 # [unreachable]


# https://github.com/PyCQA/pylint/issues/4698
def func5():
    """Empty generator functions should be allowed."""
    return
    yield

def func6():
    """Add 'unreachable' if yield is followed by another node."""
    return
    yield
    print("unreachable")  # [unreachable]

def func7():
    sys.exit(1)
    var = 2 + 2  # [unreachable]
    print(var)

def func8():
    signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))
    try:
        print(1)
    except KeyboardInterrupt:
        pass

class FalseExit:
    def exit(self, number):
        print(f"False positive this is not sys.exit({number})")

def func_false_exit():
    sys  = FalseExit()
    sys.exit(1)
    var = 2 + 2
    print(var)

def func9():
    os._exit()
    var = 2 + 2  # [unreachable]
    print(var)

def func10():
    exit()
    var = 2 + 2  # [unreachable]
    print(var)

def func11():
    quit()
    var = 2 + 2  # [unreachable]
    print(var)

incognito_function = sys.exit
def func12():
    incognito_function()
    var = 2 + 2  # [unreachable]
    print(var)