llvm-project/clang/test/Sema/warn-documentation-unknown-command.cpp
Aaron Puchert 9f0fa65440 Comment parsing: Don't recognize commands in single-line double quotation
This is consistent with the behavior of Doxygen, and allows users to
write strings with C escapes or document input/output formats containing
special characters (@ or \) without escaping them, which might be
confusing. For example, if a function wants to document its expected
input format as "user@host" it doesn't have to write user\@host instead,
which would look right in the documentation but confusing in the code.
Now users can just use double quotes (which they might do anyway).

This fixes a lot of false positives of -Wdocumentation-unknown-command,
but it could also fix issues with -Wdocumentation if the text triggers
an actual command.

Reviewed By: gribozavr2

Differential Revision: https://reviews.llvm.org/D116190
2022-01-14 22:46:07 +01:00

25 lines
1.1 KiB
C++

// RUN: %clang_cc1 -std=c++11 -fsyntax-only -Wdocumentation-unknown-command -verify %s
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -Werror -Wno-documentation-unknown-command %s
// expected-warning@+1 {{unknown command tag name}}
/// aaa \unknown
int test_unknown_comand_1;
// expected-warning@+1 {{unknown command tag name 'retur'; did you mean 'return'?}}
/// \retur aaa
int test_unknown_comand_2();
/// We don't recognize commands in double quotes: "\n\t @unknown2".
int test_unknown_comand_3();
// expected-warning@+2 {{unknown command tag name}}
// expected-warning@+2 {{unknown command tag name}}
/// But it has to be a single line: "\unknown3
/// @unknown4" (Doxygen treats multi-line quotes inconsistently.)
int test_unknown_comand_4();
// RUN: c-index-test -test-load-source all -Wdocumentation-unknown-command %s > /dev/null 2> %t.err
// RUN: FileCheck < %t.err -check-prefix=CHECK-RANGE %s
// CHECK-RANGE: warn-documentation-unknown-command.cpp:5:9:{5:9-5:17}: warning: unknown command tag name
// CHECK-RANGE: warn-documentation-unknown-command.cpp:9:5:{9:5-9:11}: warning: unknown command tag name 'retur'; did you mean 'return'?