sed -i 's/\(\bfn .*) \)%\(.*{\)$/\1!\2/g' $(find . -name "*.zig") the literal translation of `%T` to this new code is `error!T`. however this would not take advantage of error sets. It's recommended to generally have all your functions which return possible errors to use error set inference, like this: fn foo() !void { } then you can return void, or any error, and the error set is inferred. // TODO this is an explicit cast and should actually coerce the type erorr set casting test err should be comptime if error set has 0 members comptime calling fn with inferred error set should give empty error set but still you can use try comptime err to int of empty err set and of size 1 err set comptime test for err undefined in infer error