nushell/crates/nu-protocol/src
Leonhard Kipp 3e6e3a207c
Feature/def signature with comments (#2905)
* Put parse_definition related funcs into own module

* Add failing lexer test

* Implement Parsing of definition signature

This commit applied changes how the signature of a function is parsed. Before
there was a little bit of "quick-and-dirty" string-matching/parsing involved.
Now, a signature is a little bit more properly parsed.
The grammar of a definition signature understood by these parsing-functions is
as follows:
 `[ (parameter | flag | <eol>)* ]`
where
parameter is:
    `name (<:> type)? (<,> | <eol> | (#Comment <eol>))?`
flag is:
    `--name (-shortform)? (<:> type)? (<,> | <eol> | (#Comment <eol>))?`
(Note: After the last item no <,> has to come.)
Note: It is now possible to pass comments to flags and parameters
Example:
[
  d:int          # The required d parameter
  --x (-x):string # The all powerful x flag
  --y (-y):int    # The accompanying y flag
]

(Sadly there seems to be a bug (Or is this expected behaviour?) in the lexer, because of which `--x(-x)` would
be treated as one baseline token and is therefore not correctly recognized as 2. For
now a space has to be inserted)

During the implementation of the module, 2 question arose:
Should flag/parameter names be allowed to be type names?
Example case:
```shell
def f [ string ] { echo $string }
```
Currently an error is thrown

* Fix clippy lints

* Remove wrong comment

* Add spacing

* Add Cargo.lock
2021-01-12 06:53:58 +13:00
..
value Split nu-cli into nu-cli/nu-engine (#2898) 2021-01-10 15:50:49 +13:00
call_info.rs Match cleanup (#2248) 2020-07-25 08:40:35 -04:00
hir.rs Rename the Path and Pattern primitives (#2889) 2021-01-08 20:30:41 +13:00
lib.rs Split nu-cli into nu-cli/nu-engine (#2898) 2021-01-10 15:50:49 +13:00
macros.rs Move command changes. Refactorings. (#2683) 2020-10-20 04:07:13 -05:00
maybe_owned.rs Add more comments (#1228) 2020-01-16 05:28:31 +13:00
return_value.rs Don't leak set/set-env/source scopes via actions (#2849) 2021-01-03 19:44:21 +13:00
signature.rs Feature/def signature with comments (#2905) 2021-01-12 06:53:58 +13:00
syntax_shape.rs Rename the Path and Pattern primitives (#2889) 2021-01-08 20:30:41 +13:00
type_name.rs More docs and random fixes (#1237) 2020-01-19 08:42:36 +13:00
type_shape.rs Rename the Path and Pattern primitives (#2889) 2021-01-08 20:30:41 +13:00
value.rs Split nu-cli into nu-cli/nu-engine (#2898) 2021-01-10 15:50:49 +13:00