diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java index 26d400c915a..2b61bfdf345 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java @@ -110,7 +110,7 @@ public class DescriptorSerializer { //TODO builder.addAnnotations() - DescriptorSerializer local = this;//createChildSerializer(); + DescriptorSerializer local = createChildSerializer(); for (TypeParameterDescriptor typeParameterDescriptor : descriptor.getTypeParameters()) { builder.addTypeParameters(local.typeParameter(typeParameterDescriptor)); diff --git a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/Interner.java b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/Interner.java index 6c7816c4bbf..b50a560aeb2 100644 --- a/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/Interner.java +++ b/compiler/frontend/serialization/src/org/jetbrains/jet/descriptors/serialization/Interner.java @@ -52,6 +52,9 @@ public final class Interner { public int intern(@NotNull T obj) { assert parent == null || parent.all.size() == firstIndex : "Parent changed in parallel with child: indexes will be wrong"; + if (parent != null && parent.interned.contains(obj)) { + return parent.intern(obj); + } if (interned.contains(obj)) { return interned.get(obj); }