@@ -274,19 +274,6 @@ final class main extends MainAnnotation:
274274 private def getInvalidNames (paramInfos : ParameterInfos ): Seq [String | Char ] =
275275 getAliases(paramInfos).filter(name => ! nameIsValid(name) && ! shortNameIsValid(name))
276276
277- private def checkAliasesValidity (): Unit =
278- val problematicNames = nameToParameterInfos.toList.flatMap((_, infos) => getInvalidNames(infos))
279- if problematicNames.length > 0 then throw IllegalArgumentException (s " The following aliases are invalid: ${problematicNames.mkString(" , " )}" )
280-
281- private def checkAliasesUnicity (): Unit =
282- val nameAndCanonicalName = nameToParameterInfos.toList.flatMap {
283- case (canonicalName, infos) => (canonicalName +: getAlternativeNames(infos) ++: getShortNames(infos)).map(_ -> canonicalName)
284- }
285- val nameToCanonicalNames = nameAndCanonicalName.groupMap(_._1)(_._2)
286-
287- for (name, canonicalNames) <- nameToCanonicalNames if canonicalNames.length > 1
288- do throw IllegalArgumentException (s " $name is used for multiple parameters: ${canonicalNames.mkString(" , " )}" )
289-
290277 override def argGetter [T ](name : String , optDefaultGetter : Option [() => T ])(using p : ArgumentParser [T ]): () => T =
291278 argKinds += (if optDefaultGetter.nonEmpty then ArgumentKind .OptionalArgument else ArgumentKind .SimpleArgument )
292279 val parameterInfos = nameToParameterInfos(name)
@@ -320,8 +307,20 @@ final class main extends MainAnnotation:
320307 () => (byNameGetters ++ positionalGetters).map(_())
321308
322309 override def run (f : => MainResultType ): Unit =
323- checkAliasesUnicity()
324- checkAliasesValidity()
310+ // Check aliases unicity
311+ val nameAndCanonicalName = nameToParameterInfos.toList.flatMap {
312+ case (canonicalName, infos) => (canonicalName +: getAlternativeNames(infos) ++: getShortNames(infos)).map(_ -> canonicalName)
313+ }
314+ val nameToCanonicalNames = nameAndCanonicalName.groupMap(_._1)(_._2)
315+
316+ for (name, canonicalNames) <- nameToCanonicalNames if canonicalNames.length > 1
317+ do throw IllegalArgumentException (s " $name is used for multiple parameters: ${canonicalNames.mkString(" , " )}" )
318+
319+ // Check aliases validity
320+ val problematicNames = nameToParameterInfos.toList.flatMap((_, infos) => getInvalidNames(infos))
321+ if problematicNames.length > 0 then throw IllegalArgumentException (s " The following aliases are invalid: ${problematicNames.mkString(" , " )}" )
322+
323+ // Handle unused and invalid args
325324 for (remainingArg <- positionalArgs) error(s " unused argument: $remainingArg" )
326325 for (invalidArg <- invalidByNameArgs) error(s " unknown argument name: $invalidArg" )
327326
0 commit comments