mirror of
https://github.com/nushell/nushell.git
synced 2024-12-16 12:12:19 +01:00
Merge pull request #24 from jntrnr/concrete_var_assign
Concrete var assign
This commit is contained in:
commit
c027a14b9b
3
TODO.md
3
TODO.md
@ -14,12 +14,15 @@
|
||||
- [x] parsing tables
|
||||
- [x] Block params
|
||||
- [x] Ranges
|
||||
- [ ] Iteration (`each`) over tables
|
||||
- [ ] ctrl-c support
|
||||
- [ ] Column path
|
||||
- [ ] ...rest without calling it rest
|
||||
- [ ] operator overflow
|
||||
- [ ] finish operator type-checking
|
||||
- [ ] Source
|
||||
- [ ] Autoenv
|
||||
- [ ] Externals
|
||||
- [ ] let [first, rest] = [1, 2, 3]
|
||||
|
||||
## Maybe:
|
||||
|
@ -22,6 +22,29 @@ impl EvaluationContext {
|
||||
}
|
||||
|
||||
pub fn add_var(&self, var_id: VarId, value: Value) {
|
||||
// We need to make values concreate before we assign them to variables, as stream values
|
||||
// will drain and remain drained.
|
||||
//
|
||||
// TODO: find a good home for this
|
||||
// TODO: add ctrl-c support
|
||||
|
||||
let value = match value {
|
||||
Value::RowStream {
|
||||
headers,
|
||||
stream,
|
||||
span,
|
||||
} => Value::Table {
|
||||
headers,
|
||||
val: stream.collect(),
|
||||
span,
|
||||
},
|
||||
Value::ValueStream { stream, span } => Value::List {
|
||||
val: stream.collect(),
|
||||
span,
|
||||
},
|
||||
x => x,
|
||||
};
|
||||
|
||||
self.stack.add_var(var_id, value);
|
||||
}
|
||||
|
||||
|
@ -229,6 +229,14 @@ fn simple_value_iteration() -> TestResult {
|
||||
run_test("4 | each { $it + 10 }", "14")
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn concrete_variable_assignment() -> TestResult {
|
||||
run_test(
|
||||
"let x = (1..100 | each { |y| $y + 100 }); $x | length; $x | length",
|
||||
"100",
|
||||
)
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn build_string1() -> TestResult {
|
||||
run_test("build-string 'nu' 'shell'", "nushell")
|
||||
|
Loading…
Reference in New Issue
Block a user