diff --git a/mainargs/src-3/Macros.scala b/mainargs/src-3/Macros.scala index 67e1542..494e00a 100644 --- a/mainargs/src-3/Macros.scala +++ b/mainargs/src-3/Macros.scala @@ -93,7 +93,9 @@ object Macros { annotatedParamsLists: List[List[quotes.reflect.Symbol]]): Expr[MainData[T, B]] = { import quotes.reflect.* - val params = method.paramSymss.headOption.getOrElse(report.throwError("Multiple parameter lists not supported")) + val params = method.paramSymss.headOption.getOrElse( + report.throwError("At least one parameter list must be declared.") + ) val defaultParams = if (params.exists(_.flags.is(Flags.HasDefault))) getDefaultParams(method) else Map.empty val argSigsExprs = params.zip(annotatedParamsLists.flatten).map { paramAndAnnotParam => val param = paramAndAnnotParam._1 diff --git a/mainargs/test/src/MacroErrors.scala b/mainargs/test/src/MacroErrors.scala new file mode 100644 index 0000000..bd53529 --- /dev/null +++ b/mainargs/test/src/MacroErrors.scala @@ -0,0 +1,31 @@ +package mainarg + +import utest._ +import mainargs.{main, arg, ParserForMethods, Flag} +object MacroErrors extends TestSuite { + object MultipleParameterLists { + @main + def method_name(foo: String)(bar: String) = () + } + object NoParameterList { + @main + def method_name = () + } + + def tests = Tests { + test("reportMultipleParametersAsError") { + compileError("ParserForMethods(MultipleParameterLists)").check( + "", + "Multiple parameter lists are not supported" + ) + } + + test("reportNoParameterAsError") { + compileError("ParserForMethods(NoParameterList)").check( + "", + "At least one parameter list must be declared" + ) + } + + } +}