nushell/crates/nu-protocol/src
Wind 387328fe73
Glob: don't allow implicit casting between glob and string (#11992)
# Description
As title, currently on latest main, nushell confused user if it allows
implicit casting between glob and string:
```nushell
let x = "*.txt"
def glob-test [g: glob] { open $g } 
glob-test $x
```
It always expand the glob although `$x` is defined as a string.
This pr implements a solution from @kubouch :
> We could make it really strict and disallow all autocasting between
globs and strings because that's what's causing the "magic" confusion.
Then, modify all builtins that accept globs to accept oneof(glob,
string) and the rules would be that globs always expand and strings
never expand

# User-Facing Changes
After this pr, user needs to use `into glob` to invoke `glob-test`, if
user pass a string variable:
```nushell
let x = "*.txt"
def glob-test [g: glob] { open $g } 
glob-test ($x | into glob)
```
Or else nushell will return an error.
```
 3 │ glob-test $x
   ·           ─┬
   ·            ╰── can't convert string to glob
```

# Tests + Formatting
Done

# After Submitting
Nan
2024-02-28 23:05:35 +08:00
..
ast Remove unused Index(Mut) impls on AST types (#11903) 2024-02-21 18:02:30 +08:00
config Add Value::coerce_str (#11885) 2024-02-18 17:47:10 +01:00
engine wrapping run_repl with catch_unwind and restarting the repl on panic (#11860) 2024-02-22 12:14:10 -06:00
value Glob: don't allow implicit casting between glob and string (#11992) 2024-02-28 23:05:35 +08:00
alias.rs Refactor scope commands (#10023) 2023-08-17 11:58:38 +03:00
cli_error.rs Refactor and fix Config<->Value mechanism (#10896) 2023-11-08 20:31:30 +01:00
did_you_mean.rs Improve case insensitivity consistency (#10884) 2023-11-08 23:58:54 +01:00
eval_base.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation (#11886) 2024-02-23 09:17:09 +08:00
eval_const.rs Add ConfigDirNotFound error (#11849) 2024-02-26 15:42:20 +08:00
example.rs remove unused imports: Deserialize, Serialize compiler warning for nu-protocol/src/example.rs (#8514) 2023-03-18 11:45:12 -07:00
exportable.rs Module: support defining const and use const variables inside of function (#9773) 2023-08-01 07:09:52 +08:00
id.rs Add virtual path abstraction layer (#9245) 2023-05-23 23:48:50 +03:00
lev_distance.rs Suggest existing variables on not found (#8902) 2023-05-02 18:17:14 +03:00
lib.rs Deprecate --flag: bool in custom command (#11365) 2023-12-21 10:07:08 +01:00
module.rs Error on use path item1 item2, if item1 is not a module (#11183) 2023-12-05 11:38:45 +01:00
parse_error.rs Prune unused ParseError variants (#11881) 2024-02-18 15:31:02 +08:00
parse_warning.rs Deprecate --flag: bool in custom command (#11365) 2023-12-21 10:07:08 +01:00
pipeline_data.rs Remove some unnecessary static Vecs (#11947) 2024-02-24 20:58:01 +01:00
plugin_signature.rs Bidirectional communication and streams for plugins (#11911) 2024-02-25 16:32:50 -06:00
shell_error.rs Add ConfigDirNotFound error (#11849) 2024-02-26 15:42:20 +08:00
signature.rs Replace debug_assert! with assert! in Signature::check_names (#11937) 2024-02-22 16:17:06 -06:00
span.rs Bump miette from 5.10.0 to 7.0.0 (#11788) 2024-02-07 19:26:18 -06:00
syntax_shape.rs open, rm, umv, cp, rm and du: Don't globs if inputs are variables or string interpolation (#11886) 2024-02-23 09:17:09 +08:00
ty.rs Glob: don't allow implicit casting between glob and string (#11992) 2024-02-28 23:05:35 +08:00
util.rs Convert more ShellError variants to named fields (#11173) 2023-11-28 06:43:51 -06:00
variable.rs Fix broken constants in scopes (#9679) 2023-07-14 00:02:05 +03:00