diff options
-rw-r--r-- | src/hir_typeck/expr_cs.cpp | 2 | ||||
-rw-r--r-- | src/parse/pattern.cpp | 8 |
2 files changed, 4 insertions, 6 deletions
diff --git a/src/hir_typeck/expr_cs.cpp b/src/hir_typeck/expr_cs.cpp index e45bf4d9..27e5d0a5 100644 --- a/src/hir_typeck/expr_cs.cpp +++ b/src/hir_typeck/expr_cs.cpp @@ -2991,12 +2991,14 @@ void Context::add_binding(const Span& sp, ::HIR::Pattern& pat, const ::HIR::Type static void handle_value(Context& context, const Span& sp, const ::HIR::TypeRef& type, const ::HIR::Pattern::Value& val) { TU_MATCH(::HIR::Pattern::Value, (val), (v), (Integer, + DEBUG("Integer " << ::HIR::TypeRef(v.type)); // TODO: Apply an ivar bound? (Require that this ivar be an integer?) if( v.type != ::HIR::CoreType::Str ) { context.equate_types(sp, type, ::HIR::TypeRef(v.type)); } ), (Float, + DEBUG("Float " << ::HIR::TypeRef(v.type)); // TODO: Apply an ivar bound? (Require that this ivar be a float?) if( v.type != ::HIR::CoreType::Str ) { context.equate_types(sp, type, ::HIR::TypeRef(v.type)); diff --git a/src/parse/pattern.cpp b/src/parse/pattern.cpp index 13b94753..7b16a10b 100644 --- a/src/parse/pattern.cpp +++ b/src/parse/pattern.cpp @@ -204,16 +204,12 @@ AST::Pattern Parse_PatternReal1(TokenStream& lex, bool is_refutable) if(GET_TOK(tok, lex) == TOK_INTEGER) { auto dt = tok.datatype(); - if(dt == CORETYPE_ANY) - dt = CORETYPE_I32; + // TODO: Ensure that the type is ANY or a signed integer return AST::Pattern( AST::Pattern::TagValue(), AST::Pattern::Value::make_Integer({dt, -tok.intval()}) ); } else if( tok.type() == TOK_FLOAT ) { - auto dt = tok.datatype(); - if(dt == CORETYPE_ANY) - dt = CORETYPE_F32; - return AST::Pattern( AST::Pattern::TagValue(), AST::Pattern::Value::make_Float({dt, -tok.floatval()}) ); + return AST::Pattern( AST::Pattern::TagValue(), AST::Pattern::Value::make_Float({tok.datatype(), -tok.floatval()}) ); } else { |