Fix default argument value type checking (#10460)

# Description
Fix type checking in arguments default values not adhering to subtyping
rules
Currently following examples produce a parse error:
```nu
def test [ --qwe: record<a: int> = {a: 1 b: 1} ] { }
def test [ --qwe: list<any> = [ 1 2 3 ] ] { }
```
despite types matching. Type equality check is replaced with subtyping
check and everything parses fine:
# User-Facing Changes
Default values of flag arguments type checking behavior is in line with
`let` statements
This commit is contained in:
Artemiy
2023-09-24 12:30:58 +03:00
committed by GitHub
parent 65e2733571
commit e96039fb1b
2 changed files with 7 additions and 1 deletions

View File

@ -3838,7 +3838,7 @@ pub fn parse_signature_helper(working_set: &mut StateWorkingSet, span: Span) ->
}
}
t => {
if t != &expression_ty {
if !type_compatible(t, &expression_ty) {
working_set.error(
ParseError::AssignmentMismatch(
"Default value is the wrong type"