From b64b68533483c9fe6f9e3ef95192a5a697489fdc Mon Sep 17 00:00:00 2001 From: Alexandre Bique Date: Fri, 13 Mar 2009 01:48:45 +0000 Subject: [PATCH] [pointers] need to unref types --- src/ast/simplify-visitor.cc | 4 ++-- src/ast/type-checker-visitor.cc | 5 +++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ast/simplify-visitor.cc b/src/ast/simplify-visitor.cc index 57bab8a..56b688e 100644 --- a/src/ast/simplify-visitor.cc +++ b/src/ast/simplify-visitor.cc @@ -213,8 +213,8 @@ namespace ast IdExp * id = new IdExp; id->symbol = new Symbol; id->symbol->name = node.symbol->name + "_" + nextId();; - id->symbol->type = node.type; - id->type = node.type; + id->symbol->type = unreferencedType(node.type); + id->type = id->symbol->type; replacement_ = id; LoadVar * lv = new LoadVar; diff --git a/src/ast/type-checker-visitor.cc b/src/ast/type-checker-visitor.cc index 3fd7a0b..580f740 100644 --- a/src/ast/type-checker-visitor.cc +++ b/src/ast/type-checker-visitor.cc @@ -85,9 +85,10 @@ namespace ast TypeCheckerVisitor::visit(DereferenceExp & node) { node.exp->accept(*this); - assert_msg(unreferencedType(node.exp->type)->nodeType == PointerType::nodeTypeId(), + Type * unrefType = unreferencedType(node.exp->type); + assert_msg(unrefType->nodeType == PointerType::nodeTypeId(), "You can't dereference a non pointer type"); - PointerType * type = reinterpret_cast (node.exp->type); + PointerType * type = reinterpret_cast (unrefType); node.type = type->type; } -- 2.11.4.GIT