Give literal expression default values for now

This commit is contained in:
Marcus Klaas de Vries 2019-01-14 19:46:10 +01:00
parent a9a6a50c75
commit 2689348772

View file

@ -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)
} }