> > @@
> > identifier l,parent.y,parent.v;
> > struct y X;
>
> Just to share my level of comprehension, I don't quite understand what
> the line above is needed for.

Sorry.  It's needed for nothing.  It was leftover from a previous attempt.


> > identifier value;
> > @@
> >
> > struct y l = {
> >         .v = {
> > *                .u = value,
> >         },
> > };
> >
> > -----------------------------------
> >
> > This will work for the case of a struct field inside a struct field, but
> > not more levels of nesting.
>
> Much better than nothing and I got the idea, thank you so much. It might
> be a good improvement to coccinelle, if any level of nesting can be
> technically supported (if it is not).

The problem is the need to know the type.

> I ported the code to my actual project, and it works well, though spatch
> 1.0.0-rc24 produces a warning even on toy example above:
>
>   (ONCE) warning: struct/union with a metavariable name detected.
>   (ONCE) For type checking assuming the name of the metavariable is the
> name of the type

Yeah, no worries.

julia

> > Do you expect the assignments to all be in structures, or sometimes
> > in ordinary assignments?  If you expect always structures, perhaps
> > rewrite the first rule to mention structures.  If there can be
> > ordinary assignments, you can leave it as is.
>
> Yes, my intention is to cover both cases, actually ordinary assignments
> is the main case, but then I found that the discussed case is not
> covered by my rule.
>
> > But you may want to make a second copy without the ; if there is the
> > possibility that such an assignment could be part of another
> > expression, and thus without the ;.  The ; though is necessary
> > to get the isomorphism with structure field assignments.
> >
>
> In my particular situation it is unlikely, but I tested it and works as
> expected.
>
> Thank you for the great tool!
>
> --
> With best wishes,
> Vladimir
>
>
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to