diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java index f960da815bb..6e1178a050d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/JavaDescriptorResolver.java @@ -432,6 +432,7 @@ public class JavaDescriptorResolver { } return functionDescriptor; } + DeclarationDescriptor classDescriptor = method.hasModifierProperty(PsiModifier.STATIC) ? resolveNamespace(method.getContainingClass()) : resolveClass(method.getContainingClass()); PsiParameter[] parameters = method.getParameterList().getParameters(); FunctionDescriptorImpl functionDescriptorImpl = new FunctionDescriptorImpl( owner, @@ -443,7 +444,7 @@ public class JavaDescriptorResolver { initializeTypeParameters(method); functionDescriptorImpl.initialize( null, - DescriptorUtils.getExpectedThisObjectIfNeeded(owner), + DescriptorUtils.getExpectedThisObjectIfNeeded(classDescriptor), typeParameters, semanticServices.getDescriptorResolver().resolveParameterDescriptors(functionDescriptorImpl, parameters), semanticServices.getTypeTransformer().transformToType(returnType), diff --git a/compiler/testData/diagnostics/tests/regressions/kt498.jet b/compiler/testData/diagnostics/tests/regressions/kt498.jet new file mode 100644 index 00000000000..91e85567a83 --- /dev/null +++ b/compiler/testData/diagnostics/tests/regressions/kt498.jet @@ -0,0 +1,8 @@ +// KT-498 Very strange error in the type checker +// +JDK + +class IdUnavailableException() : Exception() {} + +fun T.getJavaClass() : Class { + return ((this as Object).getClass()) as Class // Some error here, because of Exception() used above. ?!!! +}