Skip to content

Commit 4ce8911

Browse files
Move helper functions' code inside run
1 parent b359465 commit 4ce8911

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

library/src/scala/main.scala

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)