From f14ff9405d6289874e2755ac076a2c5f8d595e12 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 10 Feb 2014 19:33:25 +0400 Subject: [PATCH] Force resolve descriptor type --- .../lang/resolve/lazy/ForceResolveUtil.java | 7 ++++++- ...classWithObjectLiteralInClassObjectField.kt | 9 +++++++++ ...ssWithObjectLiteralInConstructorProperty.kt | 5 +++++ .../classWithObjectLiteralInField.kt | 7 +++++++ .../javaFacade/classWithObjectLiteralInFun.kt | 7 +++++++ .../plugin/javaFacade/JetJavaFacadeTest.java | 18 +++++++++++++++++- 6 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 idea/testData/javaFacade/classWithObjectLiteralInClassObjectField.kt create mode 100644 idea/testData/javaFacade/classWithObjectLiteralInConstructorProperty.kt create mode 100644 idea/testData/javaFacade/classWithObjectLiteralInField.kt create mode 100644 idea/testData/javaFacade/classWithObjectLiteralInFun.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java index 99b2a35a339..b40877f3944 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,7 @@ package org.jetbrains.jet.lang.resolve.lazy; import com.intellij.openapi.diagnostic.Logger; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -70,6 +71,10 @@ public class ForceResolveUtil { LazyEntity lazyEntity = (LazyEntity) object; lazyEntity.forceResolveAllContents(); } + else if (object instanceof CallableDescriptor) { + CallableDescriptor callableDescriptor = (CallableDescriptor) object; + forceResolveAllContents(callableDescriptor.getReturnType()); + } } public static void forceResolveAllContents(@Nullable JetType type) { diff --git a/idea/testData/javaFacade/classWithObjectLiteralInClassObjectField.kt b/idea/testData/javaFacade/classWithObjectLiteralInClassObjectField.kt new file mode 100644 index 00000000000..35fc26be02f --- /dev/null +++ b/idea/testData/javaFacade/classWithObjectLiteralInClassObjectField.kt @@ -0,0 +1,9 @@ +package test + +trait A + +class B { + class object { + fun bar() = object : A { } + } +} diff --git a/idea/testData/javaFacade/classWithObjectLiteralInConstructorProperty.kt b/idea/testData/javaFacade/classWithObjectLiteralInConstructorProperty.kt new file mode 100644 index 00000000000..1ef6a42dade --- /dev/null +++ b/idea/testData/javaFacade/classWithObjectLiteralInConstructorProperty.kt @@ -0,0 +1,5 @@ +package test + +trait A + +class B(val bar: A = object: A {}, val withError = object: A {}, notProperty = object: A {}) \ No newline at end of file diff --git a/idea/testData/javaFacade/classWithObjectLiteralInField.kt b/idea/testData/javaFacade/classWithObjectLiteralInField.kt new file mode 100644 index 00000000000..9f965fd0843 --- /dev/null +++ b/idea/testData/javaFacade/classWithObjectLiteralInField.kt @@ -0,0 +1,7 @@ +package test + +trait A + +public class B { + private val bar = object : A {} +} diff --git a/idea/testData/javaFacade/classWithObjectLiteralInFun.kt b/idea/testData/javaFacade/classWithObjectLiteralInFun.kt new file mode 100644 index 00000000000..7b6f00d0404 --- /dev/null +++ b/idea/testData/javaFacade/classWithObjectLiteralInFun.kt @@ -0,0 +1,7 @@ +package test + +trait A + +public class B { + private fun bar() = object : A { } +} diff --git a/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java b/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java index f6163f3c7e7..e13f508be8c 100644 --- a/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/javaFacade/JetJavaFacadeTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2014 JetBrains s.r.o. + * Copyright 2010-2013 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -63,6 +63,22 @@ public class JetJavaFacadeTest extends JetLightCodeInsightFixtureTestCase { doTestWrapClass(); } + public void testClassWithObjectLiteralInClassObjectField() { + doTestWrapClass(); + } + + public void testClassWithObjectLiteralInConstructorProperty() { + doTestWrapClass(); + } + + public void testClassWithObjectLiteralInFun() { + doTestWrapClass(); + } + + public void testClassWithObjectLiteralInField() { + doTestWrapClass(); + } + public void testWrapFunInClassObject() { doTestWrapMethod(true); }