@@ -274,19 +274,6 @@ final class main extends MainAnnotation:
274
274
private def getInvalidNames (paramInfos : ParameterInfos ): Seq [String | Char ] =
275
275
getAliases(paramInfos).filter(name => ! nameIsValid(name) && ! shortNameIsValid(name))
276
276
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
-
290
277
override def argGetter [T ](name : String , optDefaultGetter : Option [() => T ])(using p : ArgumentParser [T ]): () => T =
291
278
argKinds += (if optDefaultGetter.nonEmpty then ArgumentKind .OptionalArgument else ArgumentKind .SimpleArgument )
292
279
val parameterInfos = nameToParameterInfos(name)
@@ -320,8 +307,20 @@ final class main extends MainAnnotation:
320
307
() => (byNameGetters ++ positionalGetters).map(_())
321
308
322
309
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
325
324
for (remainingArg <- positionalArgs) error(s " unused argument: $remainingArg" )
326
325
for (invalidArg <- invalidByNameArgs) error(s " unknown argument name: $invalidArg" )
327
326
0 commit comments