diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java index 668459d94d4640e282fa7ad33f75676da4711c89..a40f32383e6d598a0e8086fe2ecfd1fffc09d6fe 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JetTypeJetSignatureReader.java @@ -82,6 +82,7 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd private ClassDescriptor classDescriptor; + private JetType errorType; private boolean nullable; private List typeArguments; @@ -122,7 +123,8 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd } if (this.classDescriptor == null) { - throw new IllegalStateException("class not found by name: " + ourName); // TODO: wrong exception + // TODO: report in to trace + this.errorType = ErrorUtils.createErrorType("class not found by name: " + ourName); } this.nullable = nullable; this.typeArguments = new ArrayList(); @@ -180,12 +182,21 @@ public abstract class JetTypeJetSignatureReader extends JetSignatureExceptionsAd @Override public void visitEnd() { - JetType jetType = new JetTypeImpl( - Collections.emptyList(), - classDescriptor.getTypeConstructor(), - nullable, - typeArguments, - classDescriptor.getMemberScope(typeArguments)); + if ((errorType != null) == (classDescriptor != null)) { + throw new IllegalStateException("must initialize either errorType or classDescriptor"); + } + JetType jetType; + if (errorType != null) { + jetType = errorType; + } + else { + jetType = new JetTypeImpl( + Collections.emptyList(), + classDescriptor.getTypeConstructor(), + nullable, + typeArguments, + classDescriptor.getMemberScope(typeArguments)); + } done(jetType); }