Not exactly sure why struct gets the errors it does rather than getting the type param error first. (Haven't delved into struct's error path, but looks like it gets its errors from the resolver)

But, I'm not so sure on the error message, I think that, while they're both kind of awful, the enum's "missing type param" is *more* helpful to get a user to fix the problem, if they move the enum definition to another scope it's still not going to compile either way? 

If the messages need to be synced, I'd prefer to sync the struct to match the enum error.