You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When cross referencing arguments, it will cause a StackOverflowError.
I have the following Args class:
classArgs(parser:ArgParser) {
val caseInsensitive by parser.flagging("-c", "--case_insensitive",
help ="Help")
val includedExtensions by parser.adding("-e", "--include_ext",
help ="Help")
{ extensionCheckCaseInsensitive() }.default(Collections.emptyList())
privatefun String.extensionCheckCaseInsensitive() =if (caseInsensitive) this.toLowerCase() elsethis
}
The includedExtensions needs to check the other argument caseInsensitive in order to format the extensions. This could be done after the parsing is done, but it is more convenient to do as part of the parser's formatting.
The parser is called like this in the main function:
When running the above code, it will produce a StackOverflowError, which I did not expect:
Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.<init>(String.java:207)
at java.lang.StringBuilder.toString(StringBuilder.java:407)
at com.xenomachina.argparser.ArgParser.parseShortOpts(ArgParser.kt:579)
at com.xenomachina.argparser.ArgParser.access$parseShortOpts(ArgParser.kt:38)
at com.xenomachina.argparser.ArgParser$parseOptions$2.invoke(ArgParser.kt:492)
at com.xenomachina.argparser.ArgParser$parseOptions$2.invoke(ArgParser.kt:38)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
at com.xenomachina.argparser.ArgParser.getParseOptions(ArgParser.kt)
at com.xenomachina.argparser.ArgParser.force(ArgParser.kt:446)
at com.xenomachina.argparser.DefaultKt$default$3.getValue(Default.kt:73)
at com.xenomachina.argparser.ArgParser$Delegate.getValue(ArgParser.kt:340)
at com.myPackage.Args.getCaseInsensitive(Args.kt)
at com.myPackage.Args.extensionCheckCaseInsensitive(Args.kt:55)
at com.myPackage.Args.access$extensionCheckCaseInsensitive(Args.kt:46)
at com.myPackage.Args$includedExtensions$2.invoke(Args.kt:52)
at com.myPackage.Args$includedExtensions$2.invoke(Args.kt:46)
at com.xenomachina.argparser.ArgParser$adding$1.invoke(ArgParser.kt:135)
at com.xenomachina.argparser.ArgParser$adding$1.invoke(ArgParser.kt:38)
at com.xenomachina.argparser.OptionDelegate.parseOption(OptionDelegate.kt:60)
at com.xenomachina.argparser.ArgParser.parseShortOpts(ArgParser.kt:587)
at com.xenomachina.argparser.ArgParser.access$parseShortOpts(ArgParser.kt:38)
at com.xenomachina.argparser.ArgParser$parseOptions$2.invoke(ArgParser.kt:492)
at com.xenomachina.argparser.ArgParser$parseOptions$2.invoke(ArgParser.kt:38)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:131)
at com.xenomachina.argparser.ArgParser.getParseOptions(ArgParser.kt)
at com.xenomachina.argparser.ArgParser.force(ArgParser.kt:446)
at com.xenomachina.argparser.DefaultKt$default$3.getValue(Default.kt:73)
at com.xenomachina.argparser.ArgParser$Delegate.getValue(ArgParser.kt:340)
at com.myPackage.Args.getCaseInsensitive(Args.kt)
at com.myPackage.Args.extensionCheckCaseInsensitive(Args.kt:55)
at com.myPackage.Args.access$extensionCheckCaseInsensitive(Args.kt:46)
at com.myPackage.Args$includedExtensions$2.invoke(Args.kt:52)
at com.myPackage.Args$includedExtensions$2.invoke(Args.kt:46)
...
Am I doing something wrong, or is this a bug?
The text was updated successfully, but these errors were encountered:
When cross referencing arguments, it will cause a StackOverflowError.
I have the following Args class:
The
includedExtensions
needs to check the other argumentcaseInsensitive
in order to format the extensions. This could be done after the parsing is done, but it is more convenient to do as part of the parser's formatting.The parser is called like this in the
main
function:When running the above code, it will produce a StackOverflowError, which I did not expect:
Am I doing something wrong, or is this a bug?
The text was updated successfully, but these errors were encountered: