162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 262306a36Sopenharmony_ci/// 362306a36Sopenharmony_ci/// Zero-length and one-element arrays are deprecated, see 462306a36Sopenharmony_ci/// Documentation/process/deprecated.rst 562306a36Sopenharmony_ci/// Flexible-array members should be used instead. 662306a36Sopenharmony_ci/// 762306a36Sopenharmony_ci// 862306a36Sopenharmony_ci// Confidence: High 962306a36Sopenharmony_ci// Copyright: (C) 2020 Denis Efremov ISPRAS. 1062306a36Sopenharmony_ci// Comments: 1162306a36Sopenharmony_ci// Options: --no-includes --include-headers 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_civirtual context 1462306a36Sopenharmony_civirtual report 1562306a36Sopenharmony_civirtual org 1662306a36Sopenharmony_civirtual patch 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci@initialize:python@ 1962306a36Sopenharmony_ci@@ 2062306a36Sopenharmony_cidef relevant(positions): 2162306a36Sopenharmony_ci for p in positions: 2262306a36Sopenharmony_ci if "uapi" in p.file: 2362306a36Sopenharmony_ci return False 2462306a36Sopenharmony_ci return True 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci@r depends on !patch@ 2762306a36Sopenharmony_ciidentifier name, array; 2862306a36Sopenharmony_citype T; 2962306a36Sopenharmony_ciposition p : script:python() { relevant(p) }; 3062306a36Sopenharmony_ci@@ 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci( 3362306a36Sopenharmony_ci struct name { 3462306a36Sopenharmony_ci ... 3562306a36Sopenharmony_ci* T array@p[\(0\|1\)]; 3662306a36Sopenharmony_ci }; 3762306a36Sopenharmony_ci| 3862306a36Sopenharmony_ci struct { 3962306a36Sopenharmony_ci ... 4062306a36Sopenharmony_ci* T array@p[\(0\|1\)]; 4162306a36Sopenharmony_ci }; 4262306a36Sopenharmony_ci| 4362306a36Sopenharmony_ci union name { 4462306a36Sopenharmony_ci ... 4562306a36Sopenharmony_ci* T array@p[\(0\|1\)]; 4662306a36Sopenharmony_ci }; 4762306a36Sopenharmony_ci| 4862306a36Sopenharmony_ci union { 4962306a36Sopenharmony_ci ... 5062306a36Sopenharmony_ci* T array@p[\(0\|1\)]; 5162306a36Sopenharmony_ci }; 5262306a36Sopenharmony_ci) 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci@only_field depends on patch@ 5562306a36Sopenharmony_ciidentifier name, array; 5662306a36Sopenharmony_citype T; 5762306a36Sopenharmony_ciposition q; 5862306a36Sopenharmony_ci@@ 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci( 6162306a36Sopenharmony_ci struct name {@q 6262306a36Sopenharmony_ci T array[0]; 6362306a36Sopenharmony_ci }; 6462306a36Sopenharmony_ci| 6562306a36Sopenharmony_ci struct {@q 6662306a36Sopenharmony_ci T array[0]; 6762306a36Sopenharmony_ci }; 6862306a36Sopenharmony_ci) 6962306a36Sopenharmony_ci 7062306a36Sopenharmony_ci@depends on patch@ 7162306a36Sopenharmony_ciidentifier name, array; 7262306a36Sopenharmony_citype T; 7362306a36Sopenharmony_ciposition p : script:python() { relevant(p) }; 7462306a36Sopenharmony_ci// position @q with rule "only_field" simplifies 7562306a36Sopenharmony_ci// handling of bitfields, arrays, etc. 7662306a36Sopenharmony_ciposition q != only_field.q; 7762306a36Sopenharmony_ci@@ 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci( 8062306a36Sopenharmony_ci struct name {@q 8162306a36Sopenharmony_ci ... 8262306a36Sopenharmony_ci T array@p[ 8362306a36Sopenharmony_ci- 0 8462306a36Sopenharmony_ci ]; 8562306a36Sopenharmony_ci }; 8662306a36Sopenharmony_ci| 8762306a36Sopenharmony_ci struct {@q 8862306a36Sopenharmony_ci ... 8962306a36Sopenharmony_ci T array@p[ 9062306a36Sopenharmony_ci- 0 9162306a36Sopenharmony_ci ]; 9262306a36Sopenharmony_ci }; 9362306a36Sopenharmony_ci) 9462306a36Sopenharmony_ci 9562306a36Sopenharmony_ci@script: python depends on report@ 9662306a36Sopenharmony_cip << r.p; 9762306a36Sopenharmony_ci@@ 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_cimsg = "WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)" 10062306a36Sopenharmony_cicoccilib.report.print_report(p[0], msg) 10162306a36Sopenharmony_ci 10262306a36Sopenharmony_ci@script: python depends on org@ 10362306a36Sopenharmony_cip << r.p; 10462306a36Sopenharmony_ci@@ 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_cimsg = "WARNING use flexible-array member instead (https://www.kernel.org/doc/html/latest/process/deprecated.html#zero-length-and-one-element-arrays)" 10762306a36Sopenharmony_cicoccilib.org.print_todo(p[0], msg) 108