mirror of
https://github.com/nushell/nushell.git
synced 2025-01-08 23:40:17 +01:00
refactor for readablity, keep semantics identical
This commit is contained in:
parent
baf86dfb0e
commit
6eee83b38d
@ -335,28 +335,27 @@ pub(crate) fn compile_load_env(
|
|||||||
path: &[PathMember],
|
path: &[PathMember],
|
||||||
out_reg: RegId,
|
out_reg: RegId,
|
||||||
) -> Result<(), CompileError> {
|
) -> Result<(), CompileError> {
|
||||||
if path.is_empty() {
|
match path {
|
||||||
builder.push(
|
[] => builder.push(
|
||||||
Instruction::LoadVariable {
|
Instruction::LoadVariable {
|
||||||
dst: out_reg,
|
dst: out_reg,
|
||||||
var_id: ENV_VARIABLE_ID,
|
var_id: ENV_VARIABLE_ID,
|
||||||
}
|
}
|
||||||
.into_spanned(span),
|
.into_spanned(span),
|
||||||
)?;
|
)?,
|
||||||
} else {
|
[PathMember::Int { span, .. }, ..] => {
|
||||||
let (key, optional) = match &path[0] {
|
|
||||||
PathMember::String { val, optional, .. } => (builder.data(val)?, *optional),
|
|
||||||
PathMember::Int { span, .. } => {
|
|
||||||
return Err(CompileError::AccessEnvByInt { span: *span })
|
return Err(CompileError::AccessEnvByInt { span: *span })
|
||||||
}
|
}
|
||||||
};
|
[PathMember::String {
|
||||||
let tail = &path[1..];
|
val: key, optional, ..
|
||||||
|
}, tail @ ..] => {
|
||||||
|
let key = builder.data(key)?;
|
||||||
|
|
||||||
if optional {
|
builder.push(if *optional {
|
||||||
builder.push(Instruction::LoadEnvOpt { dst: out_reg, key }.into_spanned(span))?;
|
Instruction::LoadEnvOpt { dst: out_reg, key }.into_spanned(span)
|
||||||
} else {
|
} else {
|
||||||
builder.push(Instruction::LoadEnv { dst: out_reg, key }.into_spanned(span))?;
|
Instruction::LoadEnv { dst: out_reg, key }.into_spanned(span)
|
||||||
}
|
})?;
|
||||||
|
|
||||||
if !tail.is_empty() {
|
if !tail.is_empty() {
|
||||||
let path = builder.literal(
|
let path = builder.literal(
|
||||||
@ -374,5 +373,6 @@ pub(crate) fn compile_load_env(
|
|||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user