summaryrefslogtreecommitdiff
path: root/src/hir/from_ast.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/hir/from_ast.cpp')
-rw-r--r--src/hir/from_ast.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/hir/from_ast.cpp b/src/hir/from_ast.cpp
index 17bbb2c3..e723d26b 100644
--- a/src/hir/from_ast.cpp
+++ b/src/hir/from_ast.cpp
@@ -361,6 +361,16 @@
BUG(sp, "Unknown type for integer literal in pattern - " << ct );
}
}
+ static ::HIR::CoreType get_float_type(const Span& sp, const ::eCoreType ct) {
+ switch(ct)
+ {
+ case CORETYPE_ANY: return ::HIR::CoreType::Str;
+ case CORETYPE_F32: return ::HIR::CoreType::F32;
+ case CORETYPE_F64: return ::HIR::CoreType::F64;
+ default:
+ BUG(sp, "Unknown type for float literal in pattern - " << ct );
+ }
+ }
static ::HIR::Pattern::Value lowerhir_pattern_value(const Span& sp, const ::AST::Pattern::Value& v) {
TU_MATCH(::AST::Pattern::Value, (v), (e),
(Invalid,
@@ -373,11 +383,10 @@
});
),
(Float,
- TODO(sp, "Floating point patterns");
- //return ::HIR::Pattern::Value::make_Float({
- // H::get_int_type(sp, e.type),
- // e.value
- // });
+ return ::HIR::Pattern::Value::make_Float({
+ H::get_float_type(sp, e.type),
+ e.value
+ });
),
(String,
return ::HIR::Pattern::Value::make_String(e);