don't overrite arg's type if it's annotated explicitly #10424
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes: #10410
So the following script is possible:
About the change
When parsing signature, and nushell meets something like
a: any
, it force the parser to treata
asany
type. This is whatarg_explicit_type
means, it's only set when we goes intoParseMode::TypeMode
, and it will be reset tofalse
if the token goes to next argument.so, when we have something like this:
def a [b: any = null] { $b }
, the type of$b
won't be overwritten.But if we have something like this:
def a [b = null] { $b }
, the type of$b
is not annotated, so we make it to benothing
(which is the type of null)