GROOVY-9519: also fix groovy.cli.internal.CliBuilderInternal
diff --git a/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy b/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy
index af6105a..5d89ecd 100644
--- a/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy
+++ b/src/main/groovy/groovy/cli/internal/OptionAccessor.groovy
@@ -126,6 +126,13 @@
if (parseResult.commandSpec().findOption(name)) { // requested option was not matched: return its default
def option = parseResult.commandSpec().findOption(name)
def result = option.value
+
+ // GROOVY-9519: zero default for non-Boolean type options should not be converted to false
+ def longOpt = option.longestName()
+ longOpt = longOpt?.startsWith("--") ? longOpt.substring(2) : longOpt
+ Class userSpecifiedType = savedTypeOptions[longOpt]?.type
+ if (userSpecifiedType && Boolean != userSpecifiedType) { return result }
+
return result ? result : false
}
if (name.size() > 1 && name.endsWith('s')) { // user wants multi-value result