Order of Base.convert calls with `@kwdef` constructors

You’d have to manually add it. Automatic convert to field types occurs for positional arguments of new, thus after anything you do with keyword arguments.

I think your best bet is to forget about convert piracy (anyone using your code will not expect those methods to exist, and the more you pirate, the more likely you break your code in isolation) and use a contextually limited macro to generate the calls or constructor methods you need. By contextually limited, I mean the macro only works under statically unknowable conditions. Using X as an example, you expect a to take a string input, parse it to the type of a, then compute b from the result. What if b = a + 0.5? Then you run into an InexactError at new. What if b = Symbol(a)? You didn’t pirate a convert method to make that work at new. Those examples appear obvious enough to avoid, but generic function calls generally won’t be that predictable.