162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only
262306a36Sopenharmony_ci///
362306a36Sopenharmony_ci/// Condition !A || A && B is equivalent to !A || B.
462306a36Sopenharmony_ci///
562306a36Sopenharmony_ci// Confidence: High
662306a36Sopenharmony_ci// Copyright: (C) 2020 Denis Efremov ISPRAS
762306a36Sopenharmony_ci// Options: --no-includes --include-headers
862306a36Sopenharmony_ci
962306a36Sopenharmony_civirtual patch
1062306a36Sopenharmony_civirtual context
1162306a36Sopenharmony_civirtual org
1262306a36Sopenharmony_civirtual report
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci@r depends on !patch@
1562306a36Sopenharmony_ciexpression A, B;
1662306a36Sopenharmony_ciposition p;
1762306a36Sopenharmony_ci@@
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci* !A || (A &&@p B)
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci@depends on patch@
2262306a36Sopenharmony_ciexpression A, B;
2362306a36Sopenharmony_ci@@
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci  !A ||
2662306a36Sopenharmony_ci-       (A && B)
2762306a36Sopenharmony_ci+       B
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci@script:python depends on report@
3062306a36Sopenharmony_cip << r.p;
3162306a36Sopenharmony_ci@@
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_cicoccilib.report.print_report(p[0], "WARNING !A || A && B is equivalent to !A || B")
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci@script:python depends on org@
3662306a36Sopenharmony_cip << r.p;
3762306a36Sopenharmony_ci@@
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_cicoccilib.org.print_todo(p[0], "WARNING !A || A && B is equivalent to !A || B")
40