diff options
author | Chris Lattner <sabre@nondot.org> | 2009-02-17 07:07:29 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-02-17 07:07:29 +0000 |
commit | a180fdd8fdca8b812635e83e97ed967ab1d32145 (patch) | |
tree | 4a6b24af2c3ef8af1ce30e226e1b7a0e4d4f0dcc /docs/InternalsManual.html | |
parent | 336f26be05c30c0c65b8b518d68f04c29b43b3d2 (diff) |
clarify the behavior of note.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64748 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/InternalsManual.html')
-rw-r--r-- | docs/InternalsManual.html | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/docs/InternalsManual.html b/docs/InternalsManual.html index 89111dac47..2497cc67a6 100644 --- a/docs/InternalsManual.html +++ b/docs/InternalsManual.html @@ -161,20 +161,31 @@ produce diagnostics to tell the user their code is non-portable. The difference is that the former are ignored by default, and the later warn by default. The <tt>WARNING</tt> severity is used for constructs that are valid in the currently selected source language but that are dubious in some way. The <tt>NOTE</tt> -level is used to staple more information onto a previous diagnostics.</p> +level is used to staple more information onto a previous diagnostics. <p>These <em>severities</em> are mapped into a smaller set (the Diagnostic::Level enum, {<tt>Ignored</tt>, <tt>Note</tt>, <tt>Warning</tt>, <tt>Error</tt>, <tt>Fatal</tt> }) of output <em>levels</em> by the diagnostics -subsystem based -on various configuration options. For example, if the user specifies -<tt>-pedantic</tt>, <tt>EXTENSION</tt> maps to <tt>Warning</tt>, if they specify -<tt>-pedantic-errors</tt>, it turns into <tt>Error</tt>. Clang also internally -supports a fully fine grained mapping mechanism that allows you to map any -diagnostic that doesn't have <tt>ERRROR</tt> severity to any output level that -you want. This is used to implement options like <tt>-Wunused_macros</tt>, -<tt>-Wundef</tt> etc. Fatal errors are considered so severe that diagnostics -that occur after them are supressed as "almost certainly useless".</p> +subsystem based on various configuration options. Clang internally supports a +fully fine grained mapping mechanism that allows you to map almost any +diagnostic to the output level that you want. The only diagnostics that cannot +be mapped are <tt>NOTE</tt>s, which always follow the severity of the previously +emitted diagnostic and <tt>ERROR</tt>s, which can only be mapped to +<tt>Fatal</tt> (it is not possible to turn an error into a warning, +for example).</p> + +<p>Diagnostic mappings are used in many ways. For example, if the user +specifies <tt>-pedantic</tt>, <tt>EXTENSION</tt> maps to <tt>Warning</tt>, if +they specify <tt>-pedantic-errors</tt>, it turns into <tt>Error</tt>. This is +used to implement options like <tt>-Wunused_macros</tt>, <tt>-Wundef</tt> etc. +</p> + +<p> +Mapping to <tt>Fatal</tt> should only be used for diagnostics that are +considered so severe that error recovery won't be able to recover sensibly from +them (thus spewing a ton of bogus errors). One example of this class of error +are failure to #include a file. +</p> <!-- ================= --> <h4>The Format String</h4> |