<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/97983>97983</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
"clang/docs/LibTooling.rst" example code causing crash when invalid paramter given
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
nickhuang99
</td>
</tr>
</table>
<pre>
For people new to clang like myself, the first tutorial is very essential to learn. That is why those example code from tutorial _clang/docs/LibTooling.rst_ should be very **solid**. Unfortunately a basic error handling always causes core dump which seems scary to a rookie developer.
The following snippet causes core dump when command line parameter is invalid because **Error** returned from `ExpectedParser.takeError()` unhandled.
` auto ExpectedParser = CommonOptionsParser::create(argc, argv, MyToolCategory);`
` if (!ExpectedParser) {`
` llvm::errs() << ExpectedParser.takeError();`
` return 1;`
` }`
`
A simple fix like this
` toString(ExpectedParser.takeError()); `
can fix this because `toString` will call `handleAllErrors` before formatting string result.
It maybe seems trivial, but I believe the **Hello World** is giving very important impression for all new ones to clang.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyEVE-Po7gT_TTOpTQRbZIQDhwy3RP9RvqtdqXt1R5HhSnA28ZG5YI0335lyE5Pa1qaC1j-86pe1XuFMdrOE1Xq-Fkdn3Y4SR-48ta89BP6rix3dWiW6hoYRgqjI_B0AwlgHPoOnH0hGJZIrlX6EaQnaC1HAZkksEUHNsJMvADFSF7SjgRwhOz38NyjpAu3fgHpQySgVxxSEBMagpbD8Ab0bY2o9LUJJip9_b-tn0Nw1nd7jvINYh8m10BNWzylL0pfYnC22ZZ7-Mu3gWXyKOQWQKgxWgPEHBh69E3CAnQ3XCIYnCJFMIEJmmkY4dZb00MkGiJEg7wkHggcwoslaGgmF0biPajsSWWX51SJ4Fy4JdDo7TiSfIRKHkwYBvQNOOsJRmQcSIhTYayf0dlEan15J_UlZbwtgUkm9tRsxVKn7MvrSEao-QM5Eu8FX-h-_6x0qU4ZwORXttTst1zv33QEgJMEeA8CKn-CxzAMwf8-ig0-bvsqv6j8YphQSOkzcmeSCJC7Of1_W1J_HlGoC7yk4PlndcreRbMtrIk9vI-odAmq-Ok2gHPzsIUl5rhxApU_qvwRfsH85-Bwrx48fHCoiqcft36s1AWiXVXa2tfNAdLb-PZawp_CNmn1_Iuc1rRS1-6qMehX0IT31vRT9h3xlMHNOgcGnUsHWyMvzq2oMZ3X1CZ5tYEHFFnVt74Fpjg5uff8q8CAS013RQvb2aJLbasnga9Qk7M00-roTWr_I-cC_B3Y3Q2VBNrZOUGvjrPDGFjQS1oxxWiDT2lAyjVNjeApfh8d77QHu6bKmzIvcUfVQ6GzQ1Ycz8Wur_KzKTAvWiqOTZkXp7IxTUHloWxbzLB52NlKZ_qQFdk508fyUOwRqWyzGvPm2J4O9UkdMhrQun3Szj5wt7MxTlSVRXnOdw5rcnEdf1rfJ4xOk5CrdP9TPXVRHTJno8Q3BLHiqHp78fFMUlq_H2ipn6lchjH2m_f_c_hq--T6zs7kdxO7qhcZYxK7vip97az0U703YVD6utpg-30aOfxDRpS-rrxSGhu1udL_BgAA__-Gqumn">