diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java index 2368a139319..4343f270286 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java @@ -28,7 +28,7 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme private final Set callableMembers = Sets.newHashSet(); private final Set properties = Sets.newHashSet(); private final Set functions = Sets.newHashSet(); - private List typeParameters = Lists.newArrayList(); + private List typeParameters; private Collection supertypes = Lists.newArrayList(); private Map innerClassesAndObjects = Maps.newHashMap(); @@ -217,6 +217,10 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme } public void setTypeParameterDescriptors(List typeParameters) { + if (this.typeParameters != null) { + throw new IllegalStateException(); + } + this.typeParameters = new ArrayList(); for (TypeParameterDescriptor typeParameterDescriptor : typeParameters) { this.typeParameters.add(typeParameterDescriptor); scopeForSupertypeResolution.addTypeParameterDescriptor(typeParameterDescriptor); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java index 4c797de0114..852cf89e6f8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java @@ -94,6 +94,7 @@ public class TypeHierarchyResolver { classObjectDescriptor.setName("class-object-for-" + klass.getName()); classObjectDescriptor.setModality(Modality.FINAL); classObjectDescriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(klass.getModifierList())); + classObjectDescriptor.setTypeParameterDescriptors(new ArrayList(0)); classObjectDescriptor.createTypeConstructor(); createPrimaryConstructorForObject(null, classObjectDescriptor); mutableClassDescriptor.setClassObjectDescriptor(classObjectDescriptor); @@ -243,6 +244,7 @@ public class TypeHierarchyResolver { MutableClassDescriptor descriptor = entry.getValue(); descriptor.setModality(Modality.FINAL); descriptor.setVisibility(DescriptorResolver.resolveVisibilityFromModifiers(objectDeclaration.getModifierList())); + descriptor.setTypeParameterDescriptors(new ArrayList(0)); descriptor.createTypeConstructor(); } }