@@ -88,21 +88,26 @@ void parser<char>::anchor() {}
88
88
89
89
// ===----------------------------------------------------------------------===//
90
90
91
- static StringRef ArgPrefix = " -" ;
92
- static StringRef ArgPrefixLong = " --" ;
91
+ const static size_t DefaultPad = 2 ;
92
+
93
+ static StringRef ArgPrefix = " -" ;
94
+ static StringRef ArgPrefixLong = " --" ;
93
95
static StringRef ArgHelpPrefix = " - " ;
94
96
95
- static size_t argPlusPrefixesSize (StringRef ArgName) {
97
+ static size_t argPlusPrefixesSize (StringRef ArgName, size_t Pad = DefaultPad ) {
96
98
size_t Len = ArgName.size ();
97
99
if (Len == 1 )
98
- return Len + ArgPrefix.size () + ArgHelpPrefix.size ();
99
- return Len + ArgPrefixLong.size () + ArgHelpPrefix.size ();
100
+ return Len + Pad + ArgPrefix.size () + ArgHelpPrefix.size ();
101
+ return Len + Pad + ArgPrefixLong.size () + ArgHelpPrefix.size ();
100
102
}
101
103
102
- static StringRef argPrefix (StringRef ArgName) {
103
- if (ArgName.size () == 1 )
104
- return ArgPrefix;
105
- return ArgPrefixLong;
104
+ static SmallString<8 > argPrefix (StringRef ArgName, size_t Pad = DefaultPad) {
105
+ SmallString<8 > Prefix;
106
+ for (size_t I = 0 ; I < Pad; ++I) {
107
+ Prefix.push_back (' ' );
108
+ }
109
+ Prefix.append (ArgName.size () > 1 ? ArgPrefixLong : ArgPrefix);
110
+ return Prefix;
106
111
}
107
112
108
113
// Option predicates...
@@ -119,13 +124,14 @@ namespace {
119
124
120
125
class PrintArg {
121
126
StringRef ArgName;
127
+ size_t Pad;
122
128
public:
123
- PrintArg (StringRef ArgName) : ArgName(ArgName) {}
124
- friend raw_ostream &operator <<(raw_ostream &OS, const PrintArg&);
129
+ PrintArg (StringRef ArgName, size_t Pad = DefaultPad ) : ArgName(ArgName), Pad(Pad ) {}
130
+ friend raw_ostream &operator <<(raw_ostream &OS, const PrintArg &);
125
131
};
126
132
127
133
raw_ostream &operator <<(raw_ostream &OS, const PrintArg& Arg) {
128
- OS << argPrefix (Arg.ArgName ) << Arg.ArgName ;
134
+ OS << argPrefix (Arg.ArgName , Arg. Pad ) << Arg.ArgName ;
129
135
return OS;
130
136
}
131
137
@@ -1447,7 +1453,7 @@ bool CommandLineParser::ParseCommandLineOptions(int argc,
1447
1453
if (NearestHandler) {
1448
1454
// If we know a near match, report it as well.
1449
1455
*Errs << ProgramName << " : Did you mean '"
1450
- << PrintArg (NearestHandlerString) << " '?\n " ;
1456
+ << PrintArg (NearestHandlerString, 0 ) << " '?\n " ;
1451
1457
}
1452
1458
1453
1459
ErrorParsing = true ;
@@ -1601,7 +1607,7 @@ bool Option::error(const Twine &Message, StringRef ArgName, raw_ostream &Errs) {
1601
1607
if (ArgName.empty ())
1602
1608
Errs << HelpStr; // Be nice for positional arguments
1603
1609
else
1604
- Errs << GlobalParser->ProgramName << " : for the " << PrintArg (ArgName);
1610
+ Errs << GlobalParser->ProgramName << " : for the " << PrintArg (ArgName, 0 );
1605
1611
1606
1612
Errs << " option: " << Message << " \n " ;
1607
1613
return true ;
0 commit comments