summaryrefslogtreecommitdiff
path: root/sources/scalac/symtab/Scope.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/symtab/Scope.java')
-rw-r--r--sources/scalac/symtab/Scope.java17
1 files changed, 10 insertions, 7 deletions
diff --git a/sources/scalac/symtab/Scope.java b/sources/scalac/symtab/Scope.java
index 3bd22f51ed..f1fa915c55 100644
--- a/sources/scalac/symtab/Scope.java
+++ b/sources/scalac/symtab/Scope.java
@@ -210,19 +210,22 @@ public class Scope {
/** remove entry
*/
public void unlink(Entry e) {
- Entry e1 = hashtable[e.sym.name.index & HASHMASK];
- if (e1 == e) {
- hashtable[e.sym.name.index & HASHMASK] = e.tail;
- } else {
- while (e1.tail != e) e1 = e1.tail;
- }
if (elems == e) {
elems = e.next;
} else {
- e1 = elems;
+ Entry e1 = elems;
while (e1.next != e) e1 = e1.next;
e1.next = e.next;
}
+ if (hashtable != null) {
+ Entry e1 = hashtable[e.sym.name.index & HASHMASK];
+ if (e1 == e) {
+ hashtable[e.sym.name.index & HASHMASK] = e.tail;
+ } else {
+ while (e1.tail != e) e1 = e1.tail;
+ e1.tail = e.tail;
+ }
+ }
elemsCache = null;
}