llvm-project/clang/unittests/Format
Martin Probst b2780cd744 clang-format: [JS] handle "off" in imports
Previously, the JavaScript import sorter would ignore `// clang-format
off` and `on` comments. This change fixes that. It tracks whether
formatting is enabled for a stretch of imports, and then only sorts and
merges the imports where formatting is enabled, in individual chunks.

This means that there's no meaningful total order when module references are mixed
with blocks that have formatting disabled. The alternative approach
would have been to sort all imports that have formatting enabled in one
group. However that raises the question where to insert the
formatting-off block, which can also impact symbol visibility (in
particular for exports). In practice, sorting in chunks probably isn't a
big problem.

This change also simplifies the general algorithm: instead of tracking
indices separately and sorting them, it just sorts the vector of module
references. And instead of attempting to do fine grained tracking of
whether the code changed order, it just prints out the module references
text, and compares that to the previous text. Given that source files
typically have dozens, but not even hundreds of imports, the performance
impact seems negligible.

Differential Revision: https://reviews.llvm.org/D101515
2021-04-30 14:18:52 +02:00
..
CMakeLists.txt [clang-format] Fix misformatted macro definitions after D86959 2020-10-27 12:16:46 +00:00
CleanupTest.cpp [clang-format] Drop clangFrontend dependency for FormatTests 2020-10-20 10:13:28 +01:00
FormatTest.cpp [clang-format] Add `SpacesInAngles: Leave` option to keep spacing inside angle brackets as is. 2021-04-29 08:58:50 +02:00
FormatTestCSharp.cpp [clang-format] PR48594 BraceWrapping: SplitEmptyRecord ignored for templates 2021-01-17 11:14:33 +00:00
FormatTestComments.cpp [clang-format] Respect spaces in line comment section... 2021-03-01 21:28:14 +01:00
FormatTestJS.cpp clang-format: [JS] do not wrap after `asserts` 2021-04-21 16:33:55 +02:00
FormatTestJava.cpp [clang-format] NFC - clang-format the FormatTests 2020-05-02 15:42:20 +01:00
FormatTestObjC.cpp [clang-format] Fix ObjC method indent after f7f9f94b 2021-03-25 10:52:08 +01:00
FormatTestProto.cpp [clang-format] NFC - clang-format the FormatTests 2020-05-02 15:42:20 +01:00
FormatTestRawStrings.cpp clang-format: use `pb` as a canonical raw string delimiter for google style 2021-03-09 09:07:14 +01:00
FormatTestSelective.cpp [clang-format] NFC - clang-format the FormatTests 2020-05-02 15:42:20 +01:00
FormatTestTableGen.cpp [clang-format][TableGen] Don't add spaces around items in square braces. 2019-03-01 00:12:18 +00:00
FormatTestTextProto.cpp [clang-format] Fix handling of TextProto comments 2020-12-23 22:07:13 +01:00
FormatTestUtils.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
MacroExpanderTest.cpp [clang-format] [NFC] keep clang-format tests clang-format clean 2020-12-05 10:15:52 +00:00
NamespaceEndCommentsFixerTest.cpp [clang-format][PR47290] Add ShortNamespaceLines format option 2021-03-01 21:28:14 +01:00
SortImportsTestJS.cpp clang-format: [JS] handle "off" in imports 2021-04-30 14:18:52 +02:00
SortImportsTestJava.cpp [clang-format] Add case aware include sorting. 2021-02-02 15:12:27 +01:00
SortIncludesTest.cpp [clang-format] Rename case sorting 2021-03-05 21:42:45 +01:00
TestLexer.h Fix use-after-scope introduced in 850325348a 2020-10-27 14:26:23 +00:00
TokenAnnotatorTest.cpp Fix use-after-scope introduced in 850325348a 2020-10-27 14:26:23 +00:00
UsingDeclarationsSorterTest.cpp [clang-format] NFC - clang-format the FormatTests 2020-05-02 15:42:20 +01:00