Blame view
scripts/coccinelle/iterators/fen.cocci
2.28 KB
404515925 Coccinelle: Add i... |
1 2 3 4 |
/// These iterators only exit normally when the loop cursor is NULL, so there /// is no point to call of_node_put on the final value. /// // Confidence: High |
29a36d4de scripts/coccinell... |
5 6 7 |
// Copyright: (C) 2010-2012 Nicolas Palix. GPLv2. // Copyright: (C) 2010-2012 Julia Lawall, INRIA/LIP6. GPLv2. // Copyright: (C) 2010-2012 Gilles Muller, INRIA/LiP6. GPLv2. |
404515925 Coccinelle: Add i... |
8 9 10 11 12 |
// URL: http://coccinelle.lip6.fr/ // Comments: // Options: -no_includes -include_headers virtual patch |
29a36d4de scripts/coccinell... |
13 14 15 |
virtual context virtual org virtual report |
404515925 Coccinelle: Add i... |
16 |
|
29a36d4de scripts/coccinell... |
17 |
@depends on patch@ |
404515925 Coccinelle: Add i... |
18 19 20 21 22 23 24 25 26 27 28 |
iterator name for_each_node_by_name; expression np,E; identifier l; @@ for_each_node_by_name(np,...) { ... when != break; when != goto l; } ... when != np = E - of_node_put(np); |
29a36d4de scripts/coccinell... |
29 |
@depends on patch@ |
404515925 Coccinelle: Add i... |
30 31 32 33 34 35 36 37 38 39 40 |
iterator name for_each_node_by_type; expression np,E; identifier l; @@ for_each_node_by_type(np,...) { ... when != break; when != goto l; } ... when != np = E - of_node_put(np); |
29a36d4de scripts/coccinell... |
41 |
@depends on patch@ |
404515925 Coccinelle: Add i... |
42 43 44 45 46 47 48 49 50 51 52 |
iterator name for_each_compatible_node; expression np,E; identifier l; @@ for_each_compatible_node(np,...) { ... when != break; when != goto l; } ... when != np = E - of_node_put(np); |
29a36d4de scripts/coccinell... |
53 |
@depends on patch@ |
404515925 Coccinelle: Add i... |
54 55 56 57 58 59 60 61 62 63 64 |
iterator name for_each_matching_node; expression np,E; identifier l; @@ for_each_matching_node(np,...) { ... when != break; when != goto l; } ... when != np = E - of_node_put(np); |
29a36d4de scripts/coccinell... |
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
// ---------------------------------------------------------------------- @r depends on !patch forall@ //iterator name for_each_node_by_name; //iterator name for_each_node_by_type; //iterator name for_each_compatible_node; //iterator name for_each_matching_node; expression np,E; identifier l; position p1,p2; @@ ( *for_each_node_by_name@p1(np,...) { ... when != break; when != goto l; } | *for_each_node_by_type@p1(np,...) { ... when != break; when != goto l; } | *for_each_compatible_node@p1(np,...) { ... when != break; when != goto l; } | *for_each_matching_node@p1(np,...) { ... when != break; when != goto l; } ) ... when != np = E * of_node_put@p2(np); @script:python depends on org@ p1 << r.p1; p2 << r.p2; @@ cocci.print_main("unneeded of_node_put",p2) cocci.print_secs("iterator",p1) @script:python depends on report@ p1 << r.p1; p2 << r.p2; @@ msg = "ERROR: of_node_put not needed after iterator on line %s" % (p1[0].line) coccilib.report.print_report(p2[0], msg) |