You need to combine the error and warning code together, get rid of `PragmaDeclaration::errorPragma` and friends (if possible) and fix this bug:

`pragma(warning, "%s%s%s%s")`

You're also emitting one error/warning for each arg passed to the pragma, and that can't be right.