fix inner classes in JavaDescriptorResolver, kill type variable by psi resolver

This commit is contained in:
Stepan Koltsov
2012-02-15 00:02:06 +04:00
parent 9248cf9659
commit b67bb356bd
23 changed files with 265 additions and 306 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.descriptors;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeSubstitutor;
import java.util.List;
@@ -22,6 +22,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
import org.jetbrains.jet.lang.types.JetType;
import org.jetbrains.jet.lang.types.TypeSubstitutor;
import java.util.Collections;
import java.util.List;
@@ -17,8 +17,10 @@
package org.jetbrains.jet.lang.descriptors;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.SubstitutingScope;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
@@ -112,7 +114,11 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor {
@NotNull
@Override
public Set<ConstructorDescriptor> getConstructors() {
throw new UnsupportedOperationException(); // TODO
Set<ConstructorDescriptor> r = Sets.newHashSet();
for (ConstructorDescriptor constructor : original.getConstructors()) {
r.add((ConstructorDescriptor) constructor.substitute(getSubstitutor()));
}
return r;
}
@Override
@@ -68,6 +68,12 @@ public abstract class WritableScopeWithImports extends JetScopeAdapter implement
throw new IllegalStateException("cannot write with lock level " + lockLevel + " at " + debugName);
}
}
protected void checkMayNotWrite() {
if (lockLevel == LockLevel.WRITING || lockLevel == LockLevel.BOTH) {
throw new IllegalStateException("cannot write with lock level " + lockLevel + " at " + debugName);
}
}