If an invalid alternative is listed for an argument, print the valid options
authorChris Lattner <sabre@nondot.org>
Thu, 31 Jan 2002 00:42:56 +0000 (00:42 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 31 Jan 2002 00:42:56 +0000 (00:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1604 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/CommandLine.cpp
support/lib/Support/CommandLine.cpp

index 549f42c4e3be7080081d3a8c99fb533f2cfcfd40..d3966279b4fab960ca5c606aaffc4c3649ff2053 100644 (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;
 }
index 549f42c4e3be7080081d3a8c99fb533f2cfcfd40..d3966279b4fab960ca5c606aaffc4c3649ff2053 100644 (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;
 }