<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/142515>142515</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang-format] add option(s) to add space(s) around token-pasting operator (##)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            enhancement,
            clang-format
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          EugeneZelenko
      </td>
    </tr>
</table>

<pre>
    Code snippet:

```
#define Test(name) function(param ## name)
```

Output:

```
#define Test(name) function(param##name)
```

Desired output is same:

```
#define Test(name) function(param ## name)
```

I tried 19.1.1 and `main` (c8741851d1a28da9072febae5be42d9f7c113a4e).

Configuration:

```
BasedOnStyle: LLVM

BreakBeforeBraces: Allman
ColumnLimit: 100
IndentPPDirectives: AfterHash
IndentWidth: 4
LineEnding: LF
UseTab: Never

Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignArrayOfStructures: Left
AlignConsecutiveAssignments: AcrossComments
AlignConsecutiveBitFields:
  Enabled: true
 AcrossEmptyLines: true
  AcrossComments: true
AlignConsecutiveDeclarations:
  Enabled: true
  AcrossEmptyLines: false
  AcrossComments: false
AlignConsecutiveMacros: AcrossEmptyLines
AlignConsecutiveShortCaseStatements:
  Enabled: true
 AcrossEmptyLines: true
  AcrossComments: true
  AlignCaseColons: false
AlignEscapedNewlines: LeftWithLastLine
AlignOperands: Align
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseExpressionOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortCompoundRequirementOnASingleLine: false
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: All
AllowShortLoopsOnASingleLine: false
BitFieldColonSpacing: After
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: NonAssignment
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: BeforeComma
BreakTemplateDeclarations: Yes
ConstructorInitializerIndentWidth: 0
ContinuationIndentWidth: 4
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: Always
FixNamespaceComments: true
Macros:
  - PyVarObject_HEAD_INIT(x, y)=x, y,
MainIncludeChar: Quote
MaxEmptyLinesToKeep: 1
PackConstructorInitializers: Never
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Left
SortUsingDeclarations: true
SpaceAfterTemplateKeyword: false
StatementMacros:
  - PyObject_HEAD
 - Q_OBJECT
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0Vltv27gS_jX0C5FAoqzEfvCDfEN96sZp47Y456UYiyOZJxSpJakk3l-_IGXFt6QIsLuAgTacb-bj3D4RrBWlQhyRdEzSaQ8at9VmNGtKVPg_lKgedW-j-W400RypVaKu0ZEkI1H43UT7X5QRlnAshEK6RusIGyiokLAhLRqVO6EVYYMaDFSUsISwhO7t52GibNW4uvmbJC3HuxRTtMIgpzpQUWGp9dB_N68FdUYgp_HwOr6OKShOyU1UgVDkJqKEDfLBbT8epDGPgQ04DKNbVuAGMN1gn_FhcZvHcQJ9H_26DTnRqhBlYyBc5K3rj8EiX6kHt5M-P7pc_vjSosYG4XGMhTY4NpCj9eZMygpUiCybSi1FJXwnaBz5YAvFUbn7-6kwmDvxtPcpHJpPYLeviJ-Cu6039UmULYXCmeJClYF_TqLsu8U1bPyfd_iEpr3PElTZQBluOalrEmVZnqO1XzQXhUCzKgobZo9e-bCZFKUK1Ksalc_gsbVm8hl2NmT3CjMGdqviwZkmd41pr73EwnWAiVYW88anlIWVqFC5NrncaGsnumpPLvFj4eYCJbdt-SmdKdhI5N7ZmQb9WRtkVtVu56thj23nDAfTOdMUcwltq39H9iZbAdK-R9fZzvm-gIceinAU8RL8sNXGTcDigwOHXex_tiCUtqxgcaJlW4XT289sDjXyO3yWXVjf5p_CbZdgnefqoKsaDSi-n3pRqmCQ-jmTMjNlE8hX6g5fWrcTqhZ279ceHRq7Ko6a8xunUKWx1PmjXansQahS4vtAn-jspTZobQj7IYclbFB-KLquat0o_g3_aIQJLfuA10w11Ueiz_fqeIldKNm1oQMvisPUXOA7iTjAl1BtOFwiMylPcVrX79-1W9wwSg815HuFCpoS7Ooe8sfXWTj1DbbDAJwYj4RVKDC7MGpOt6g7rQ4Sc4peo7mA70c_oPy6BQnTZqGEEyDFn3vuNoDfGejQa6xqCe5cNuh_w_6-HetMvqMW6IRqgv8b6v66w6Fsp4p93L1XXHvTS2Ar2yTK5uLlDiq0NeT4hgi8qlIQhCt6v_sBZrX5P-bu16dZNv21uFusCRu8EDahO_8hTqbd_yfBX6iFymXDcbKFQP210a4N_XKQpLX-jFiHbx-JMt_t35S_y_IeFUi3-4auMWq9q3GlFs6unlU3fHEUPqT3WihfLtnNweF79KCN-26FKs_7ts_fT2pb7K7Bn3H3rA0_HsHXdbqs1lGp_NkV_fprNf7PbLI-fjj0-Cjhw2QIPRzFt_3BME6T27i3HRUQJZsEo7gfx8A5T_kw5cMiSfltP03SqCdGLGJpdBMlUdwfJvE13AyGN0mRx8nNbZQMkPQjrEDIaymfqmttyp6wtsFR3GdpnPZkkK_wHmUM1RZUHhIhjPn-MZZLUOVVoU0F4TCd9szIx7raNKUl_UgK6-whuhNOhvftiWM6pcA51fX-BWf9i87pcBgmrzsD4zWSOv2I6qoG64Qqqd5vqH-0ta8-woa9xsjR1rk6lJvNCZuXwm2bzXWuK8Lm_kb7f65qo30XCJuH5C1h833-TyP2VwAAAP__hH7Y1g">