On Sun, Mar 14, 2021, 20:43 Thomas Adam wrote: > Hello, > > I can see I was as clear as mud with my explanation -- apologies for > that, so let me try again. > > In my original example: > > struct monitor { > struct { > int width; > int height > } virtual; > }; > > ... the members width and height aren't required any more, as they're > actually computable generically, and don't belong in that struct. > Instead, I have separate functions which can provide those values. > > So where I have in code, statements such as: > > struct monitor *m = this_monitor(); > int foo = m->virutal.width; > > I want to be able to substitute "m->virtual.width" with a function > call "get_width()" -- which does not involve "struct monitor" at all. > Indeed, the semantic patch I'm trying to apply now looks like this: > > @@ > struct monitor *m; > @@ > > - m->virtual.width; > + get_width(); > > ... and although spatch doesn't tell me of any errors, when I run it > over my codebase, no modifications are made. So clearly I'm still > doing something wrong. Remove the semi-colons. ;)