forked from extern/nushell
Fix raw as a variable
This commit is contained in:
parent
9af08eb911
commit
37c4fb92f8
@ -82,15 +82,43 @@ pub fn baseline_parse_next_expr(
|
|||||||
ExpressionKindHint::Block => {
|
ExpressionKindHint::Block => {
|
||||||
let span = (first.span.start, second.span.end);
|
let span = (first.span.start, second.span.end);
|
||||||
|
|
||||||
let string: Spanned<String> = match first {
|
let path: Spanned<hir::RawExpression> = match first {
|
||||||
Spanned {
|
Spanned {
|
||||||
item: hir::RawExpression::Literal(hir::Literal::Bare),
|
item: hir::RawExpression::Literal(hir::Literal::Bare),
|
||||||
span,
|
span,
|
||||||
} => Spanned::from_item(span.slice(source).to_string(), span),
|
} => {
|
||||||
|
let string = Spanned::from_item(span.slice(source).to_string(), span);
|
||||||
|
let path = hir::Path::new(
|
||||||
|
Spanned::from_item(
|
||||||
|
// TODO: Deal with synthetic nodes that have no representation at all in source
|
||||||
|
hir::RawExpression::Variable(hir::Variable::It(Span::from((0, 0)))),
|
||||||
|
(0, 0),
|
||||||
|
),
|
||||||
|
vec![string],
|
||||||
|
);
|
||||||
|
let path = hir::RawExpression::Path(Box::new(path));
|
||||||
|
Spanned { item: path, span: first.span }
|
||||||
|
}
|
||||||
Spanned {
|
Spanned {
|
||||||
item: hir::RawExpression::Literal(hir::Literal::String(inner)),
|
item: hir::RawExpression::Literal(hir::Literal::String(inner)),
|
||||||
span,
|
span,
|
||||||
} => Spanned::from_item(inner.slice(source).to_string(), span),
|
} => {
|
||||||
|
let string = Spanned::from_item(inner.slice(source).to_string(), span);
|
||||||
|
let path = hir::Path::new(
|
||||||
|
Spanned::from_item(
|
||||||
|
// TODO: Deal with synthetic nodes that have no representation at all in source
|
||||||
|
hir::RawExpression::Variable(hir::Variable::It(Span::from((0, 0)))),
|
||||||
|
(0, 0),
|
||||||
|
),
|
||||||
|
vec![string],
|
||||||
|
);
|
||||||
|
let path = hir::RawExpression::Path(Box::new(path));
|
||||||
|
Spanned { item: path, span: first.span }
|
||||||
|
}
|
||||||
|
Spanned {
|
||||||
|
item: hir::RawExpression::Variable(..),
|
||||||
|
..
|
||||||
|
} => first,
|
||||||
_ => {
|
_ => {
|
||||||
return Err(ShellError::unimplemented(
|
return Err(ShellError::unimplemented(
|
||||||
"The first part of a block must be a string",
|
"The first part of a block must be a string",
|
||||||
@ -98,17 +126,6 @@ pub fn baseline_parse_next_expr(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
let path = hir::Path::new(
|
|
||||||
Spanned::from_item(
|
|
||||||
// TODO: Deal with synthetic nodes that have no representation at all in source
|
|
||||||
hir::RawExpression::Variable(hir::Variable::It(Span::from((0, 0)))),
|
|
||||||
(0, 0),
|
|
||||||
),
|
|
||||||
vec![string],
|
|
||||||
);
|
|
||||||
let path = hir::RawExpression::Path(Box::new(path));
|
|
||||||
let path = Spanned::from_item(path, first.span);
|
|
||||||
|
|
||||||
let binary = hir::Binary::new(path, *op, second);
|
let binary = hir::Binary::new(path, *op, second);
|
||||||
let binary = hir::RawExpression::Binary(Box::new(binary));
|
let binary = hir::RawExpression::Binary(Box::new(binary));
|
||||||
let binary = Spanned::from_item(binary, span);
|
let binary = Spanned::from_item(binary, span);
|
||||||
|
Loading…
Reference in New Issue
Block a user