mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Give literal expression default values for now
This commit is contained in:
parent
a9a6a50c75
commit
2689348772
1 changed files with 9 additions and 23 deletions
|
@ -654,7 +654,6 @@ impl ExprCollector {
|
||||||
} else {
|
} else {
|
||||||
return self.alloc_expr(Expr::Missing, syntax_ptr);
|
return self.alloc_expr(Expr::Missing, syntax_ptr);
|
||||||
};
|
};
|
||||||
let c = child.syntax();
|
|
||||||
|
|
||||||
let lit = match child.flavor() {
|
let lit = match child.flavor() {
|
||||||
LiteralFlavor::IntNumber { suffix } => {
|
LiteralFlavor::IntNumber { suffix } => {
|
||||||
|
@ -663,9 +662,9 @@ impl ExprCollector {
|
||||||
.and_then(|name| UncertainIntTy::from_name(&name));
|
.and_then(|name| UncertainIntTy::from_name(&name));
|
||||||
|
|
||||||
if let Some(kn) = known_name {
|
if let Some(kn) = known_name {
|
||||||
Literal::Int(0u64, kn)
|
Literal::Int(Default::default(), kn)
|
||||||
} else {
|
} else {
|
||||||
Literal::Int(0u64, UncertainIntTy::Unknown)
|
Literal::Int(Default::default(), UncertainIntTy::Unknown)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LiteralFlavor::FloatNumber { suffix } => {
|
LiteralFlavor::FloatNumber { suffix } => {
|
||||||
|
@ -674,31 +673,18 @@ impl ExprCollector {
|
||||||
.and_then(|name| UncertainFloatTy::from_name(&name));
|
.and_then(|name| UncertainFloatTy::from_name(&name));
|
||||||
|
|
||||||
if let Some(kn) = known_name {
|
if let Some(kn) = known_name {
|
||||||
Literal::Float(0u64, kn)
|
Literal::Float(Default::default(), kn)
|
||||||
} else {
|
} else {
|
||||||
Literal::Float(0u64, UncertainFloatTy::Unknown)
|
Literal::Float(Default::default(), UncertainFloatTy::Unknown)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LiteralFlavor::ByteString => {
|
LiteralFlavor::ByteString => Literal::ByteString(Default::default()),
|
||||||
// FIXME: this is completely incorrect for a variety
|
LiteralFlavor::String => Literal::String(Default::default()),
|
||||||
// of reasons, but at least it gives the right type
|
|
||||||
let bytes = c.text().to_string().into_bytes();
|
|
||||||
Literal::ByteString(bytes)
|
|
||||||
}
|
|
||||||
LiteralFlavor::String => {
|
|
||||||
// FIXME: this likely includes the " characters
|
|
||||||
let text = c.text().to_string();
|
|
||||||
Literal::String(text)
|
|
||||||
}
|
|
||||||
LiteralFlavor::Byte => {
|
LiteralFlavor::Byte => {
|
||||||
let character = c.text().char_at(1).unwrap_or('X');
|
Literal::Int(Default::default(), UncertainIntTy::Unsigned(UintTy::U8))
|
||||||
Literal::Int(character as u8 as u64, UncertainIntTy::Unsigned(UintTy::U8))
|
|
||||||
}
|
|
||||||
LiteralFlavor::Bool => Literal::Bool(true),
|
|
||||||
LiteralFlavor::Char => {
|
|
||||||
let character = c.text().char_at(1).unwrap_or('X');
|
|
||||||
Literal::Char(character)
|
|
||||||
}
|
}
|
||||||
|
LiteralFlavor::Bool => Literal::Bool(Default::default()),
|
||||||
|
LiteralFlavor::Char => Literal::Char(Default::default()),
|
||||||
};
|
};
|
||||||
self.alloc_expr(Expr::Literal(lit), syntax_ptr)
|
self.alloc_expr(Expr::Literal(lit), syntax_ptr)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue