If an invalid alternative is listed for an argument, print the valid options

llvm-svn: 1604
This commit is contained in:
Chris Lattner 2002-01-31 00:42:56 +00:00
parent ccf571a408
commit c2ef08ccf5
2 changed files with 24 additions and 6 deletions

View File

@ -34,7 +34,7 @@ static map<string, Option*> &getOpts() {
static void AddArgument(const string &ArgName, Option *Opt) {
if (getOpts().find(ArgName) != getOpts().end()) {
cerr << "CommandLine Error: Argument '" << ArgName
<< "' specified more than once!\n";
<< "' defined more than once!\n";
} else {
// Add argument to the argument map!
getOpts().insert(std::make_pair(ArgName, Opt));
@ -335,8 +335,17 @@ bool EnumValueBase::handleOccurance(const char *ArgName, const string &Arg) {
unsigned i;
for (i = 0; i < ValueMap.size(); ++i)
if (ValueMap[i].first == Arg) break;
if (i == ValueMap.size())
return error(": unrecognized alternative '"+Arg+"'!");
if (i == ValueMap.size()) {
string Alternatives;
for (i = 0; i < ValueMap.size(); ++i) {
if (i) Alternatives += ", ";
Alternatives += ValueMap[i].first;
}
return error(": unrecognized alternative '" + Arg +
"'! Alternatives are: " + Alternatives);
}
Value = ValueMap[i].second.first;
return false;
}

View File

@ -34,7 +34,7 @@ static map<string, Option*> &getOpts() {
static void AddArgument(const string &ArgName, Option *Opt) {
if (getOpts().find(ArgName) != getOpts().end()) {
cerr << "CommandLine Error: Argument '" << ArgName
<< "' specified more than once!\n";
<< "' defined more than once!\n";
} else {
// Add argument to the argument map!
getOpts().insert(std::make_pair(ArgName, Opt));
@ -335,8 +335,17 @@ bool EnumValueBase::handleOccurance(const char *ArgName, const string &Arg) {
unsigned i;
for (i = 0; i < ValueMap.size(); ++i)
if (ValueMap[i].first == Arg) break;
if (i == ValueMap.size())
return error(": unrecognized alternative '"+Arg+"'!");
if (i == ValueMap.size()) {
string Alternatives;
for (i = 0; i < ValueMap.size(); ++i) {
if (i) Alternatives += ", ";
Alternatives += ValueMap[i].first;
}
return error(": unrecognized alternative '" + Arg +
"'! Alternatives are: " + Alternatives);
}
Value = ValueMap[i].second.first;
return false;
}