Comments (4)
Can you please paste the file contents into the issue? It's easier than downloading and unzipping the archive.
If you define a command that overrides a builtin, save the builtin as an alias with a different name before the definition, e.g., alias old-merge = merge; export def merge ...
.
from nushell.
The goal is not to replace merge.
The fact that padawan
's merge is in scope is the bug as per the imports it shouldn't
Can you please paste the file contents into the issue? It's easier than downloading and unzipping the archive.
I don't see how but sure:
config.nu
use padawan.nu
use jedi.nu *
jedi.nu
export def main [] {
print (help main)
}
export def "jedi fight" [] {
{laser:"blue"} | merge {HP: 100}
}
export def "jedi health" [] {
$in | get HP
}
padawan.nu
use jedi.nu ["jedi health"]
export def main [] {
print (help main)
}
export def merge [base, a,b] {
print $"($base)($a)($b)"
}
from nushell.
I don't see how but sure
So that anyone reading through the issue can immediately see what the problem is without downloading any files.
This is definitely a parser bug. After use padawan.nu
, you have commands padawan
and padawan merge
, so I don't understand why it's overwriting merge
in jedi.nu
. If you try replacing the jedi fight
body with help merge
, you'll see both builtin and padawan's merge
listed. This is also weird because we removed command overloading, and you shouldn't be able to define two commands with the same name. Very strange...
from nushell.
It also doesn't look like a cyclic import. We have a parser guard against cyclic import, and this one doesn't cyclically import anything.
But I might actually have a clue what's happening. When parsing padawan.nu
, the parser first scans predeclarations, so it registers merge
before continuing the parse. So, when parsing use jedi.nu ["jedi health"]
, there is already merge
being present in the parser and thus seen inside jedi.nu
.
So technically it works as intended, but for sure it's very confusing. I think modules should be more self-contained and not inherit too much from the parent scope because it can lead to weird situations like this.
from nushell.
Related Issues (20)
- Getting `can't convert int to string` error when trying to parse a list of three strings as integers HOT 2
- inconsistent comparison or parsing of CRLF line endings HOT 4
- Performance issue: Prompt command gets ran on every character. HOT 1
- `mv $path_containing_glob_chars /path/to/dest` not working HOT 3
- External Shell Spawning Create Inconsistent Environment Variable Key HOT 1
- `rm --trash` should be the default behavior HOT 1
- `table --abbreviated/-a` doesn't work on large (1k+ row) or slow (even when collected) tables HOT 4
- How to eliminate ANSI codes in error messages? HOT 13
- `str index-of` should support `--regex` HOT 2
- Flag metadata is only set for `--flag=bool` form
- Feature Request: Binary String Literals HOT 7
- Completion highighting makes path invisible HOT 3
- git ls-files output does not work in pipeline HOT 2
- `PipelineData::into_value` implicitly waits for `ExternalStream` to finish and irreversibly converts it
- Capturing variable inside an alias within `config.nu` causes a panic
- A flag to make nushell check its configs and exit
- start https://www.nushell.sh will open multiple instances HOT 3
- [Feature Request] umask functionality
- Behavior of `~` is inconsistent with user expectation HOT 3
- `help command` repeats help for any aliases
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nushell.