diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/ClassPsiDeclarationProviderImpl.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/ClassPsiDeclarationProviderImpl.java index 91a573bbbfe..cd43dbf9070 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/ClassPsiDeclarationProviderImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/ClassPsiDeclarationProviderImpl.java @@ -18,16 +18,10 @@ package org.jetbrains.jet.lang.resolve.java.provider; import com.intellij.psi.PsiClass; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.resolve.java.PsiClassFinder; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.JAVA; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.KOTLIN; - public class ClassPsiDeclarationProviderImpl extends PsiDeclarationProviderBase implements ClassPsiDeclarationProvider { - @NotNull - protected final DeclarationOrigin declarationOrigin; @NotNull protected final PsiClassFinder psiClassFinder; @@ -40,14 +34,12 @@ public class ClassPsiDeclarationProviderImpl extends PsiDeclarationProviderBase this.staticMembers = staticMembers; this.psiClass = psiClass; this.psiClassFinder = psiClassFinder; - this.declarationOrigin = determineOrigin(psiClass); } @Override @NotNull protected MembersCache buildMembersCache() { - return MembersCache.buildMembersByNameCache(new MembersCache(), psiClassFinder, psiClass, null, staticMembers, - getDeclarationOrigin() == KOTLIN); + return MembersCache.buildMembersByNameCache(new MembersCache(), psiClassFinder, psiClass, null, staticMembers); } @Override @@ -56,17 +48,6 @@ public class ClassPsiDeclarationProviderImpl extends PsiDeclarationProviderBase return psiClass; } - @Override - @NotNull - public DeclarationOrigin getDeclarationOrigin() { - return declarationOrigin; - } - - @NotNull - private static DeclarationOrigin determineOrigin(@Nullable PsiClass psiClass) { - return JAVA; - } - @Override public boolean isStaticMembers() { return staticMembers; diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/DeclarationOrigin.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/DeclarationOrigin.java deleted file mode 100644 index ed0f7782b75..00000000000 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/DeclarationOrigin.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.lang.resolve.java.provider; - -public enum DeclarationOrigin { - JAVA, - KOTLIN -} diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/MembersCache.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/MembersCache.java index 02cd099fc60..c54afb1976f 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/MembersCache.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/MembersCache.java @@ -104,11 +104,10 @@ public final class MembersCache { @NotNull PsiClassFinder finder, @Nullable PsiClass psiClass, @Nullable PsiPackage psiPackage, - boolean staticMembers, - boolean isKotlin + boolean staticMembers ) { if (psiClass != null) { - membersCache.new ClassMemberProcessor(new PsiClassWrapper(psiClass), staticMembers, isKotlin).process(); + membersCache.new ClassMemberProcessor(new PsiClassWrapper(psiClass), staticMembers).process(); } //TODO: @@ -145,12 +144,10 @@ public final class MembersCache { @NotNull private final PsiClassWrapper psiClass; private final boolean staticMembers; - private final boolean kotlin; - private ClassMemberProcessor(@NotNull PsiClassWrapper psiClass, boolean staticMembers, boolean kotlin) { + private ClassMemberProcessor(@NotNull PsiClassWrapper psiClass, boolean staticMembers) { this.psiClass = psiClass; this.staticMembers = staticMembers; - this.kotlin = kotlin; } public void process() { @@ -160,10 +157,6 @@ public final class MembersCache { } private void processFields() { - // Hack to load static members for enum class loaded from class file - if (kotlin && !psiClass.getPsiClass().isEnum()) { - return; - } for (final PsiField field : psiClass.getPsiClass().getAllFields()) { addTask(field, new RunOnce() { @Override diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PackagePsiDeclarationProviderImpl.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PackagePsiDeclarationProviderImpl.java index 8cec1861ad9..c95f8f56555 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PackagePsiDeclarationProviderImpl.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PackagePsiDeclarationProviderImpl.java @@ -20,9 +20,6 @@ import com.intellij.psi.PsiPackage; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.resolve.java.PsiClassFinder; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.JAVA; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.KOTLIN; - public final class PackagePsiDeclarationProviderImpl extends PsiDeclarationProviderBase implements PackagePsiDeclarationProvider { @NotNull @@ -48,12 +45,6 @@ public final class PackagePsiDeclarationProviderImpl extends PsiDeclarationProvi @NotNull @Override protected MembersCache buildMembersCache() { - return MembersCache.buildMembersByNameCache(new MembersCache(), psiClassFinder, null, getPsiPackage(), true, getDeclarationOrigin() == KOTLIN); - } - - @NotNull - @Override - public DeclarationOrigin getDeclarationOrigin() { - return JAVA; + return MembersCache.buildMembersByNameCache(new MembersCache(), psiClassFinder, null, getPsiPackage(), true); } } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PsiDeclarationProvider.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PsiDeclarationProvider.java index 76fc7e3cf5f..8494a463cc1 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PsiDeclarationProvider.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/provider/PsiDeclarationProvider.java @@ -22,7 +22,4 @@ public interface PsiDeclarationProvider { @NotNull MembersCache getMembersCache(); - - @NotNull - DeclarationOrigin getDeclarationOrigin(); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java index 80d2840ae5d..5929077d35d 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaClassResolver.java @@ -289,7 +289,7 @@ public final class JavaClassResolver { // TODO: ugly hack: tests crash if initializeTypeParameters called with class containing proper supertypes List classTypeParameters = classDescriptor.getTypeConstructor().getParameters(); - supertypes.addAll(supertypesResolver.getSupertypes(classDescriptor, new PsiClassWrapper(psiClass), classData, classTypeParameters)); + supertypes.addAll(supertypesResolver.getSupertypes(classDescriptor, new PsiClassWrapper(psiClass), classTypeParameters)); if (psiClass.isEnum()) { ClassDescriptorFromJvmBytecode classObjectDescriptor = createClassObjectDescriptorForEnum(classDescriptor, psiClass); diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java index d37f832fe4e..53e8cc06d40 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaFunctionResolver.java @@ -34,7 +34,9 @@ import org.jetbrains.jet.lang.resolve.java.*; import org.jetbrains.jet.lang.resolve.java.descriptor.ClassDescriptorFromJvmBytecode; import org.jetbrains.jet.lang.resolve.java.kotlinSignature.AlternativeMethodSignatureData; import org.jetbrains.jet.lang.resolve.java.kotlinSignature.SignaturesPropagationData; -import org.jetbrains.jet.lang.resolve.java.provider.*; +import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider; +import org.jetbrains.jet.lang.resolve.java.provider.NamedMembers; +import org.jetbrains.jet.lang.resolve.java.provider.PackagePsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.java.wrapper.PsiMethodWrapper; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -49,8 +51,6 @@ import java.util.Set; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.*; import static org.jetbrains.jet.lang.resolve.OverridingUtil.*; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.JAVA; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.KOTLIN; import static org.jetbrains.jet.lang.resolve.java.sam.SingleAbstractMethodUtils.*; public final class JavaFunctionResolver { @@ -97,13 +97,13 @@ public final class JavaFunctionResolver { ) { PsiClass containingClass = method.getPsiMethod().getContainingClass(); assert containingClass != null : "containing class is null for " + method; - return resolveMethodToFunctionDescriptor(containingClass, method, DeclarationOrigin.JAVA, ownerDescriptor, false); + return resolveMethodToFunctionDescriptor(containingClass, method, ownerDescriptor, false); } @Nullable private SimpleFunctionDescriptor resolveMethodToFunctionDescriptor( @NotNull PsiClass psiClass, PsiMethodWrapper method, - @NotNull DeclarationOrigin declarationOrigin, @NotNull ClassOrNamespaceDescriptor ownerDescriptor, boolean record + @NotNull ClassOrNamespaceDescriptor ownerDescriptor, boolean record ) { if (!DescriptorResolverUtils.isCorrectOwnerForEnumMember(ownerDescriptor, method.getPsiMember())) { return null; @@ -116,14 +116,6 @@ public final class JavaFunctionResolver { PsiMethod psiMethod = method.getPsiMethod(); PsiClass containingClass = psiMethod.getContainingClass(); - if (declarationOrigin == KOTLIN) { - // TODO: unless maybe class explicitly extends Object - assert containingClass != null; - String ownerClassName = containingClass.getQualifiedName(); - if (DescriptorResolverUtils.OBJECT_FQ_NAME.asString().equals(ownerClassName)) { - return null; - } - } if (trace.get(BindingContext.FUNCTION, psiMethod) != null) { return trace.get(BindingContext.FUNCTION, psiMethod); @@ -195,7 +187,7 @@ public final class JavaFunctionResolver { BindingContextUtils.recordFunctionDeclarationToDescriptor(trace, psiMethod, functionDescriptorImpl); } - if (declarationOrigin == JAVA && record) { + if (record) { trace.record(JavaBindingContext.IS_DECLARED_IN_JAVA, functionDescriptorImpl); } @@ -260,7 +252,7 @@ public final class JavaFunctionResolver { @NotNull private Set resolveNamedGroupFunctions( @NotNull ClassOrNamespaceDescriptor owner, @NotNull PsiClass psiClass, - NamedMembers namedMembers, Name methodName, PsiDeclarationProvider scopeData + NamedMembers namedMembers, Name methodName ) { Set functionsFromSupertypes = null; @@ -271,7 +263,7 @@ public final class JavaFunctionResolver { Set functionsFromCurrent = Sets.newHashSet(); for (PsiMethodWrapper method : namedMembers.getMethods()) { SimpleFunctionDescriptor function = - resolveMethodToFunctionDescriptor(psiClass, method, scopeData.getDeclarationOrigin(), owner, true); + resolveMethodToFunctionDescriptor(psiClass, method, owner, true); if (function != null) { functionsFromCurrent.add(function); ContainerUtil.addIfNotNull(functionsFromCurrent, resolveSamAdapter(function)); @@ -393,7 +385,7 @@ public final class JavaFunctionResolver { return Collections.emptySet(); } PsiClass psiClass = scopeData.getPsiClass(); - return resolveNamedGroupFunctions(ownerDescriptor, psiClass, namedMembers, methodName, scopeData); + return resolveNamedGroupFunctions(ownerDescriptor, psiClass, namedMembers, methodName); } @NotNull diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java index 1642a56cb53..75774ddd6c8 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaPropertyResolver.java @@ -41,8 +41,6 @@ import org.jetbrains.jet.lang.types.TypeUtils; import javax.inject.Inject; import java.util.*; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.JAVA; - //TODO: getters and setter are not working public final class JavaPropertyResolver { @@ -85,14 +83,13 @@ public final class JavaPropertyResolver { return Collections.emptySet(); } - return resolveNamedGroupProperties(ownerDescriptor, scopeData, namedMembers, fieldName, + return resolveNamedGroupProperties(ownerDescriptor, namedMembers, fieldName, "class or namespace " + DescriptorUtils.getFQName(ownerDescriptor)); } @NotNull private Set resolveNamedGroupProperties( @NotNull ClassOrNamespaceDescriptor ownerDescriptor, - @NotNull PsiDeclarationProvider scopeData, @NotNull NamedMembers namedMembers, @NotNull Name propertyName, @NotNull String context @@ -116,7 +113,7 @@ public final class JavaPropertyResolver { continue; } - propertiesFromCurrent.add(resolveProperty(ownerDescriptor, scopeData, propertyName, context, propertyPsiData)); + propertiesFromCurrent.add(resolveProperty(ownerDescriptor, propertyName, context, propertyPsiData)); } Set propertiesFromSupertypes = getPropertiesFromSupertypes(propertyName, ownerDescriptor); @@ -163,12 +160,10 @@ public final class JavaPropertyResolver { @NotNull private PropertyDescriptor resolveProperty( @NotNull ClassOrNamespaceDescriptor owner, - @NotNull PsiDeclarationProvider scopeData, @NotNull Name propertyName, @NotNull String context, @NotNull PropertyPsiData psiData ) { - boolean isFinal = isPropertyFinal(scopeData, psiData); boolean isVar = psiData.isVar(); PropertyPsiDataElement characteristicMember = psiData.getCharacteristicMember(); @@ -182,7 +177,7 @@ public final class JavaPropertyResolver { } PropertyDescriptorImpl propertyDescriptor = - createPropertyDescriptor(owner, propertyName, psiData, isFinal, isVar, visibility, kind); + createPropertyDescriptor(owner, propertyName, psiData, true, isVar, visibility, kind); PropertyGetterDescriptorImpl getterDescriptor = resolveGetter(visibility, kind, getter, propertyDescriptor); PropertySetterDescriptorImpl setterDescriptor = resolveSetter(psiData, kind, propertyDescriptor); @@ -206,12 +201,9 @@ public final class JavaPropertyResolver { receiverType ); initializeSetterAndGetter(propertyDescriptor, getterDescriptor, setterDescriptor, propertyType, psiData); - trace.record(BindingContext.VARIABLE, psiData.getCharacteristicPsi(), propertyDescriptor); - if (scopeData.getDeclarationOrigin() == JAVA) { - trace.record(JavaBindingContext.IS_DECLARED_IN_JAVA, propertyDescriptor); - } + trace.record(JavaBindingContext.IS_DECLARED_IN_JAVA, propertyDescriptor); if (AnnotationUtils.isPropertyAcceptableAsAnnotationParameter(propertyDescriptor) && psiData.getCharacteristicPsi() instanceof PsiField) { PsiExpression initializer = ((PsiField) psiData.getCharacteristicPsi()).getInitializer(); @@ -442,13 +434,6 @@ public final class JavaPropertyResolver { return regularPropertiesCount; } - private static boolean isPropertyFinal(PsiDeclarationProvider scopeData, PropertyPsiData psiData) { - if (scopeData.getDeclarationOrigin() == JAVA) { - return true; - } - return psiData.isFinal(); - } - @NotNull private static Set getPropertiesFromSupertypes( @NotNull Name propertyName, @NotNull ClassOrNamespaceDescriptor ownerDescriptor diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java index 65a5d41cc75..8550f5841db 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/resolver/JavaSupertypeResolver.java @@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.java.*; -import org.jetbrains.jet.lang.resolve.java.provider.ClassPsiDeclarationProvider; import org.jetbrains.jet.lang.resolve.java.wrapper.PsiClassWrapper; import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; @@ -38,8 +37,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import static org.jetbrains.jet.lang.resolve.java.provider.DeclarationOrigin.KOTLIN; - public final class JavaSupertypeResolver { private BindingTrace trace; @@ -64,7 +61,6 @@ public final class JavaSupertypeResolver { public Collection getSupertypes( @NotNull ClassDescriptor classDescriptor, @NotNull PsiClassWrapper psiClass, - @NotNull ClassPsiDeclarationProvider classData, @NotNull List typeParameters ) { @@ -80,20 +76,17 @@ public final class JavaSupertypeResolver { reportIncompleteHierarchyForErrorTypes(classDescriptor, result); if (result.isEmpty()) { - addBaseClass(psiClass, classData, classDescriptor, result); + addBaseClass(psiClass, classDescriptor, result); } return result; } private void addBaseClass( @NotNull PsiClassWrapper psiClass, - @NotNull ClassPsiDeclarationProvider classData, @NotNull ClassDescriptor classDescriptor, @NotNull List result ) { - if (classData.getDeclarationOrigin() == KOTLIN - || DescriptorResolverUtils.OBJECT_FQ_NAME.equalsTo(psiClass.getQualifiedName()) - // TODO: annotations + if (DescriptorResolverUtils.OBJECT_FQ_NAME.equalsTo(psiClass.getQualifiedName()) || classDescriptor.getKind() == ClassKind.ANNOTATION_CLASS) { result.add(KotlinBuiltIns.getInstance().getAnyType()); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/wrapper/PropertyPsiData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/wrapper/PropertyPsiData.java index 8a50ced17e2..798340e176b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/wrapper/PropertyPsiData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/wrapper/PropertyPsiData.java @@ -69,15 +69,18 @@ public final class PropertyPsiData { } private static void checkDuplicatePropertyComponent( - @NotNull PropertyPsiDataElement checked, @NotNull String componentTypeName, @Nullable PropertyPsiDataElement existent) { + @NotNull PropertyPsiDataElement checked, @NotNull String componentTypeName, @Nullable PropertyPsiDataElement existent + ) { if (existent != null) { PsiClass checkedElementClass = checked.getMember().getPsiMember().getContainingClass(); PsiClass existentElementClass = existent.getMember().getPsiMember().getContainingClass(); throw new IllegalStateException( String.format("Psi element '%s' in class '%s' overwrites '%s' in class '%s' while generating %s component for property", - checked.getMember().getPsiMember(), checkedElementClass != null ? checkedElementClass.getQualifiedName() : "", - existent.getMember().getPsiMember(), existentElementClass != null ? existentElementClass.getQualifiedName() : "", + checked.getMember().getPsiMember(), + checkedElementClass != null ? checkedElementClass.getQualifiedName() : "", + existent.getMember().getPsiMember(), + existentElementClass != null ? existentElementClass.getQualifiedName() : "", componentTypeName)); } } @@ -194,15 +197,4 @@ public final class PropertyPsiData { public boolean isPropertyForNamedObject() { return field != null && JvmAbi.INSTANCE_FIELD.equals(field.getMember().getName()); } - - public boolean isFinal() { - if (getter != null) { - return getter.getMember().isFinal(); - } - if (setter != null) { - return setter.getMember().isFinal(); - } - assert field != null : "Property with no getter and no setter should at least have a backing field"; - return field.getMember().isFinal(); - } }