# Test cases for unreachable expressions [case testUnreachableMemberExpr] import sys def f() -> None: y = sys.platform == "x" and sys.version_info > (3, 5) [out] def f(): r0 :: object r1 :: str r2 :: object r3, r4 :: str r5 :: int32 r6 :: bit r7 :: object r8, r9, r10 :: bit r11, r12 :: bool r13 :: object r14 :: str r15 :: object r16 :: tuple[int, int] r17, r18 :: object r19, y :: bool L0: r0 = sys :: module r1 = 'platform' r2 = CPyObject_GetAttr(r0, r1) r3 = cast(str, r2) r4 = 'x' r5 = PyUnicode_Compare(r3, r4) r6 = r5 == -1 if r6 goto L1 else goto L3 :: bool L1: r7 = PyErr_Occurred() r8 = r7 != 0 if r8 goto L2 else goto L3 :: bool L2: r9 = CPy_KeepPropagating() L3: r10 = r5 == 0 if r10 goto L5 else goto L4 :: bool L4: r11 = r10 goto L6 L5: r12 = raise RuntimeError('mypyc internal error: should be unreachable') r13 = box(None, 1) r14 = 'version_info' r15 = CPyObject_GetAttr(r13, r14) r16 = (6, 10) r17 = box(tuple[int, int], r16) r18 = PyObject_RichCompare(r15, r17, 4) r19 = unbox(bool, r18) r11 = r19 L6: y = r11 return 1 [case testUnreachableNameExpr] import sys def f() -> None: y = sys.platform == 'x' and foobar [out] def f(): r0 :: object r1 :: str r2 :: object r3, r4 :: str r5 :: int32 r6 :: bit r7 :: object r8, r9, r10 :: bit r11, r12 :: bool r13 :: object r14, y :: bool L0: r0 = sys :: module r1 = 'platform' r2 = CPyObject_GetAttr(r0, r1) r3 = cast(str, r2) r4 = 'x' r5 = PyUnicode_Compare(r3, r4) r6 = r5 == -1 if r6 goto L1 else goto L3 :: bool L1: r7 = PyErr_Occurred() r8 = r7 != 0 if r8 goto L2 else goto L3 :: bool L2: r9 = CPy_KeepPropagating() L3: r10 = r5 == 0 if r10 goto L5 else goto L4 :: bool L4: r11 = r10 goto L6 L5: r12 = raise RuntimeError('mypyc internal error: should be unreachable') r13 = box(None, 1) r14 = unbox(bool, r13) r11 = r14 L6: y = r11 return 1