<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - clang-format splits function pointer in half"
href="https://bugs.llvm.org/show_bug.cgi?id=48659">48659</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>clang-format splits function pointer in half
</td>
</tr>
<tr>
<th>Product</th>
<td>clang
</td>
</tr>
<tr>
<th>Version</th>
<td>11.0
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Windows NT
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Formatter
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedclangbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>barry.revzin@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>djasper@google.com, klimek@google.com, llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>Here is a complete header:
template <typename R, typename... Args>
struct C {
R (*invoker)(void*, Args&&...);
};
which formats as:
$ clang-format wat.h
template <typename R, typename... Args>
struct C {
R (*invoker)
(void*, Args&&...);
};
That should definitely stay on one line.
My current .clang-format is:
AccessModifierOffset: -4
AlignAfterOpenBracket: DontAlign
AlignOperands: false
AllowAllParametersOfDeclarationOnNextLine: false
AlwaysBreakBeforeMultilineStrings: false
BasedOnStyle: Google
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakConstructorInitializersBeforeComma: true
ColumnLimit: 0
ConstructorInitializerAllOnOneLineOrOnePerLine: false
IncludeCategories:
- Priority: 2
Regex: ^"(llvm|llvm-c|clang|clang-c)/
- Priority: 3
Regex: ^(<|"(gtest|isl|json)/)
- Priority: 1
Regex: .*
IndentWidth: 4
KeepEmptyLinesAtTheStartOfBlocks: true
MaxEmptyLinesToKeep: 1
PenaltyReturnTypeOnItsOwnLine: 60
ReflowComments: false
SortIncludes: false
SpacesBeforeTrailingComments: 1
TabWidth: 8
UseTab: Never
## Other available options and their default values:
# AlignConsecutiveAssignments: false
# AlignConsecutiveBitFields: false
# AlignConsecutiveDeclarations: false
# AlignConsecutiveMacros: false
# AlignEscapedNewlines: Right
# AlignTrailingComments: false
# AllowAllArgumentsOnNextLine: true
# AllowAllConstructorInitializersOnNextLine: true
# AllowShortBlocksOnASingleLine: Empty
# AllowShortCaseLabelsOnASingleLine: false
# AllowShortEnumsOnASingleLine: true
AllowShortFunctionsOnASingleLine: All
# AllowShortIfStatementsOnASingleLine: Never
# AllowShortLambdasOnASingleLine: All
# AllowShortLoopsOnASingleLine: false
# AlwaysBreakAfterDefinitionReturnType: None
# AlwaysBreakAfterReturnType: None
AlwaysBreakTemplateDeclarations: Yes
# BinPackArguments: true
BraceWrapping:
# AfterCaseLabel: false
AfterClass: false
# AfterControlStatement: Never
# AfterEnum: false
# AfterExternBlock: false
AfterFunction: true
# AfterNamespace: false
# AfterObjCDeclaration: false
AfterStruct: false
# AfterUnion: false
# BeforeCatch: false
# BeforeElse: false
# BeforeLambdaBody: false
# BeforeWhile: false
# IndentBraces: false
SplitEmptyFunction: false
# SplitEmptyNamespace: true
SplitEmptyRecord: false
# BreakAfterJavaFieldAnnotations: false
BreakBeforeBraces: Custom
# BreakBeforeInheritanceComma: false
# BreakBeforeTernaryOperators: true
# BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
# BreakStringLiterals: true
# CommentPragmas: '^ IWYU pragma:'
# CompactNamespaces: false
# ConstructorInitializerIndentWidth: 4
# ContinuationIndentWidth: 4
# Cpp11BracedListStyle: false
# DeriveLineEnding: true
# DerivePointerAlignment: false
# DisableFormat: false
# ExperimentalAutoDetectBinPacking: false
# FixNamespaceComments: false
# ForEachMacros:
# - foreach
# - Q_FOREACH
# - BOOST_FOREACH
# IncludeBlocks: Preserve
# IncludeIsMainRegex: (Test)?$
# IncludeIsMainSourceRegex: ''
# IndentCaseBlocks: false
# IndentCaseLabels: false
# IndentExternBlock: AfterExternBlock
# IndentGotoLabels: true
IndentPPDirectives: AfterHash
# IndentWrappedFunctionNames: false
# InsertTrailingCommas: None
# JavaScriptQuotes: Leave
# JavaScriptWrapImports: true
# Language: Cpp
# MacroBlockBegin: ''
# MacroBlockEnd: ''
# NamespaceIndentation: Inner
# ObjCBinPackProtocolList: Auto
# ObjCBlockIndentWidth: 4
# ObjCBreakBeforeNestedBlockParam: true
# ObjCSpaceAfterProperty: true
# ObjCSpaceBeforeProtocolList: true
# PenaltyBreakAssignment: 2
# PenaltyBreakBeforeFirstCallParameter: 19
# PenaltyBreakComment: 300
# PenaltyBreakFirstLessLess: 120
# PenaltyBreakString: 1000
# PenaltyBreakTemplateDeclaration: 10
# PenaltyExcessCharacter: 1000000
# PointerAlignment: Left
# SortUsingDeclarations: true
# SpaceAfterCStyleCast: false
# SpaceAfterLogicalNot: false
# SpaceAfterTemplateKeyword: true
# SpaceBeforeAssignmentOperators: true
# SpaceBeforeCpp11BracedList: true
# SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: ControlStatements
SpaceBeforeRangeBasedForLoopColon: true
# SpaceBeforeSquareBrackets: false
# SpaceInEmptyBlock: true
# SpaceInEmptyParentheses: false
# SpacesInAngles: false
# SpacesInCStyleCastParentheses: false
# SpacesInConditionalStatement: false
# SpacesInContainerLiterals: true
# SpacesInParentheses: false
# SpacesInSquareBrackets: false
# Standard: Latest
StatementMacros: [JMP_INVOKE_RET]
# - Q_UNUSED
# - QT_REQUIRE_VERSION
# UseCRLF: false
# WhitespaceSensitiveMacros:
# - STRINGIZE
# - PP_STRINGIZE
# - BOOST_PP_STRINGIZE</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>