Go forward to Parser.
Go backward to Access Control.
Go up to Top.
Error Reporting
===============
The C++ front-end uses a call-back mechanism to allow functions to
print out reasonable strings for types and functions without putting
extra logic in the functions where errors are found. The interface is
through the `cp_error' function (or `cp_warning', etc.). The syntax is
exactly like that of `error', except that a few more conversions are
supported:
* %C indicates a value of `enum tree_code'.
* %D indicates a *_DECL node.
* %E indicates a *_EXPR node.
* %L indicates a value of `enum languages'.
* %P indicates the name of a parameter (i.e. "this", "1", "2", ...)
* %T indicates a *_TYPE node.
* %O indicates the name of an operator (MODIFY_EXPR -> "operator =").
There is some overlap between these; for instance, any of the node
options can be used for printing an identifier (though only `%D' tries
to decipher function names).
For a more verbose message (`class foo' as opposed to just `foo',
including the return type for functions), use `%#c'. To have the line
number on the error message indicate the line of the DECL, use
`cp_error_at' and its ilk; to indicate which argument you want, use
`%+D', or it will default to the first.