aboutsummaryrefslogtreecommitdiff
path: root/frontend/hashtable.icl
diff options
context:
space:
mode:
authorjohnvg2001-03-27 15:54:51 +0000
committerjohnvg2001-03-27 15:54:51 +0000
commit6b8957b10a9fd22ae5c890839645b01c99cf4244 (patch)
tree57756ac99b2c64e853360f1a9dc754b1f74e465d /frontend/hashtable.icl
parentallow 'else fail' for all if nodes on root or in (diff)
unfold all macros and local functions in macros
changed Declaration type fixed crash when macro appears only in dcl module added make with caching in 'main' use BoxedIdent in hashtable git-svn-id: https://svn.cs.ru.nl/repos/clean-compiler/trunk@344 1f8540f1-abd5-4d5b-9d24-4c5ce8603e2d
Diffstat (limited to 'frontend/hashtable.icl')
-rw-r--r--frontend/hashtable.icl12
1 files changed, 8 insertions, 4 deletions
diff --git a/frontend/hashtable.icl b/frontend/hashtable.icl
index e9ebca4..1ca48b5 100644
--- a/frontend/hashtable.icl
+++ b/frontend/hashtable.icl
@@ -3,7 +3,7 @@ implementation module hashtable
import predef, syntax, StdCompare, compare_constructor
:: HashTableEntry
- = HTE_Ident !Ident !IdentClass !Int !HashTableEntry !HashTableEntry
+ = HTE_Ident !BoxedIdent !IdentClass !Int !HashTableEntry !HashTableEntry
| HTE_Empty
:: HashTable =
@@ -115,11 +115,15 @@ where
insert name ident_class hte_mark0 hte_symbol_heap HTE_Empty
# (hte_symbol_ptr, hte_symbol_heap) = newPtr EmptySymbolTableEntry hte_symbol_heap
# ident = { id_name = name, id_info = hte_symbol_ptr}
- = ({boxed_ident=ident}, hte_symbol_heap, HTE_Ident ident ident_class hte_mark0 HTE_Empty HTE_Empty)
- insert name ident_class hte_mark0 hte_symbol_heap (HTE_Ident hte_ident=:{id_name,id_info} hte_class hte_mark hte_left hte_right)
+// = ({boxed_ident=ident}, hte_symbol_heap, HTE_Ident ident ident_class hte_mark0 HTE_Empty HTE_Empty)
+ # boxed_ident={boxed_ident=ident}
+ = (boxed_ident, hte_symbol_heap, HTE_Ident boxed_ident ident_class hte_mark0 HTE_Empty HTE_Empty)
+// insert name ident_class hte_mark0 hte_symbol_heap (HTE_Ident hte_ident=:{id_name,id_info} hte_class hte_mark hte_left hte_right)
+ insert name ident_class hte_mark0 hte_symbol_heap (HTE_Ident hte_ident=:{boxed_ident={id_name,id_info}} hte_class hte_mark hte_left hte_right)
# cmp = (name,ident_class) =< (id_name,hte_class)
| cmp == Equal
- = ({boxed_ident=hte_ident}, hte_symbol_heap, HTE_Ident hte_ident hte_class (hte_mark bitand hte_mark0) hte_left hte_right)
+// = ({boxed_ident=hte_ident}, hte_symbol_heap, HTE_Ident hte_ident hte_class (hte_mark bitand hte_mark0) hte_left hte_right)
+ = (hte_ident, hte_symbol_heap, HTE_Ident hte_ident hte_class (hte_mark bitand hte_mark0) hte_left hte_right)
| cmp == Smaller
#! (boxed_ident, hte_symbol_heap, hte_left) = insert name ident_class hte_mark0 hte_symbol_heap hte_left
= (boxed_ident, hte_symbol_heap, HTE_Ident hte_ident hte_class hte_mark hte_left hte_right)