Extract interface JavaPackageFragmentDescriptor
This commit is contained in:
@@ -41,6 +41,7 @@ import org.jetbrains.jet.lang.resolve.java.AsmTypeConstants;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
import org.jetbrains.jet.lang.resolve.java.JvmAbi;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.mapping.KotlinToJavaTypesMap;
|
import org.jetbrains.jet.lang.resolve.java.mapping.KotlinToJavaTypesMap;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope;
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope;
|
||||||
@@ -144,7 +145,7 @@ public class JetTypeMapper extends BindingTraceAware {
|
|||||||
throw new IllegalStateException("Unexpected scope: " + packageScope.getClass());
|
throw new IllegalStateException("Unexpected scope: " + packageScope.getClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
JavaPackageFragmentProvider javaFragmentProvider = ((JavaPackageFragmentDescriptor) packageFragment).getProvider();
|
JavaPackageFragmentProvider javaFragmentProvider = ((JavaPackageFragmentDescriptorImpl) packageFragment).getProvider();
|
||||||
|
|
||||||
StringBuilder r = new StringBuilder();
|
StringBuilder r = new StringBuilder();
|
||||||
for (FqName pathItem : packageFragment.getFqName().parent().path()) {
|
for (FqName pathItem : packageFragment.getFqName().parent().path()) {
|
||||||
|
|||||||
+3
-3
@@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.resolve.java;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils;
|
||||||
|
|
||||||
public class JavaVisibilities {
|
public class JavaVisibilities {
|
||||||
@@ -67,9 +67,9 @@ public class JavaVisibilities {
|
|||||||
// protected static function or property
|
// protected static function or property
|
||||||
else {
|
else {
|
||||||
DeclarationDescriptor whatDeclarationDescriptor = what.getContainingDeclaration();
|
DeclarationDescriptor whatDeclarationDescriptor = what.getContainingDeclaration();
|
||||||
assert whatDeclarationDescriptor instanceof JavaPackageFragmentDescriptor : "Only static declarations can have protected_static visibility";
|
assert whatDeclarationDescriptor instanceof JavaPackageFragmentDescriptorImpl : "Only static declarations can have protected_static visibility";
|
||||||
whatClass = DescriptorResolverUtils
|
whatClass = DescriptorResolverUtils
|
||||||
.getClassForCorrespondingJavaPackage((JavaPackageFragmentDescriptor) whatDeclarationDescriptor);
|
.getClassForCorrespondingJavaPackage((JavaPackageFragmentDescriptorImpl) whatDeclarationDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
assert whatClass != null : "Couldn't find ClassDescriptor for protected static member " + what;
|
assert whatClass != null : "Couldn't find ClassDescriptor for protected static member " + what;
|
||||||
|
|||||||
+1
-73
@@ -16,79 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.java.descriptor;
|
package org.jetbrains.jet.lang.resolve.java.descriptor;
|
||||||
|
|
||||||
import com.intellij.util.NullableFunction;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageFragmentScope;
|
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
|
||||||
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
public interface JavaPackageFragmentDescriptor extends PackageFragmentDescriptor {
|
||||||
|
|
||||||
public class JavaPackageFragmentDescriptor extends DeclarationDescriptorImpl implements PackageFragmentDescriptor {
|
|
||||||
private final JavaPackageFragmentProvider provider;
|
|
||||||
private final FqName fqName;
|
|
||||||
private final JavaPackageFragmentScope memberScope;
|
|
||||||
|
|
||||||
private JavaPackageFragmentDescriptor(
|
|
||||||
@NotNull JavaPackageFragmentProvider provider,
|
|
||||||
@NotNull FqName fqName,
|
|
||||||
@NotNull NullableFunction<JavaPackageFragmentDescriptor, JavaPackageFragmentScope> scopeFactory
|
|
||||||
) {
|
|
||||||
super(Collections.<AnnotationDescriptor>emptyList(), fqName.shortNameOrSpecial());
|
|
||||||
this.provider = provider;
|
|
||||||
this.fqName = fqName;
|
|
||||||
this.memberScope = scopeFactory.fun(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public static JavaPackageFragmentDescriptor create(
|
|
||||||
@NotNull JavaPackageFragmentProvider provider,
|
|
||||||
@NotNull FqName fqName,
|
|
||||||
@NotNull NullableFunction<JavaPackageFragmentDescriptor, JavaPackageFragmentScope> scopeFactory
|
|
||||||
) {
|
|
||||||
JavaPackageFragmentDescriptor descriptor = new JavaPackageFragmentDescriptor(provider, fqName, scopeFactory);
|
|
||||||
return descriptor.memberScope == null ? null : descriptor;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public ModuleDescriptor getContainingDeclaration() {
|
|
||||||
return provider.getModule();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nullable
|
|
||||||
@Override
|
|
||||||
public DeclarationDescriptor substitute(@NotNull TypeSubstitutor substitutor) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
|
||||||
return visitor.visitPackageFragmentDescriptor(this, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public JavaPackageFragmentScope getMemberScope() {
|
|
||||||
return memberScope;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
public FqName getFqName() {
|
|
||||||
return fqName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public JavaPackageFragmentProvider getProvider() {
|
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+93
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* 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.descriptor;
|
||||||
|
|
||||||
|
import com.intellij.util.NullableFunction;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageFragmentScope;
|
||||||
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
|
import org.jetbrains.jet.lang.types.TypeSubstitutor;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
public class JavaPackageFragmentDescriptorImpl extends DeclarationDescriptorImpl implements JavaPackageFragmentDescriptor {
|
||||||
|
private final JavaPackageFragmentProvider provider;
|
||||||
|
private final FqName fqName;
|
||||||
|
private final JavaPackageFragmentScope memberScope;
|
||||||
|
|
||||||
|
private JavaPackageFragmentDescriptorImpl(
|
||||||
|
@NotNull JavaPackageFragmentProvider provider,
|
||||||
|
@NotNull FqName fqName,
|
||||||
|
@NotNull NullableFunction<JavaPackageFragmentDescriptor, JavaPackageFragmentScope> scopeFactory
|
||||||
|
) {
|
||||||
|
super(Collections.<AnnotationDescriptor>emptyList(), fqName.shortNameOrSpecial());
|
||||||
|
this.provider = provider;
|
||||||
|
this.fqName = fqName;
|
||||||
|
this.memberScope = scopeFactory.fun(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
public static JavaPackageFragmentDescriptorImpl create(
|
||||||
|
@NotNull JavaPackageFragmentProvider provider,
|
||||||
|
@NotNull FqName fqName,
|
||||||
|
@NotNull NullableFunction<JavaPackageFragmentDescriptor, JavaPackageFragmentScope> scopeFactory
|
||||||
|
) {
|
||||||
|
JavaPackageFragmentDescriptorImpl descriptor = new JavaPackageFragmentDescriptorImpl(provider, fqName, scopeFactory);
|
||||||
|
return descriptor.memberScope == null ? null : descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public ModuleDescriptor getContainingDeclaration() {
|
||||||
|
return provider.getModule();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public DeclarationDescriptor substitute(@NotNull TypeSubstitutor substitutor) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <R, D> R accept(DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||||
|
return visitor.visitPackageFragmentDescriptor(this, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public JavaPackageFragmentScope getMemberScope() {
|
||||||
|
return memberScope;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public FqName getFqName() {
|
||||||
|
return fqName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public JavaPackageFragmentProvider getProvider() {
|
||||||
|
return provider;
|
||||||
|
}
|
||||||
|
}
|
||||||
+9
-9
@@ -23,9 +23,9 @@ import org.jetbrains.jet.lang.descriptors.impl.TypeParameterDescriptorImpl;
|
|||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.OverridingUtil;
|
import org.jetbrains.jet.lang.resolve.OverridingUtil;
|
||||||
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.sam.SingleAbstractMethodUtils;
|
import org.jetbrains.jet.lang.resolve.java.sam.SingleAbstractMethodUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
import org.jetbrains.jet.lang.resolve.java.structure.*;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -286,7 +286,7 @@ public final class DescriptorResolverUtils {
|
|||||||
// +-- package fragment Bar
|
// +-- package fragment Bar
|
||||||
// We need to find class 'Baz' in fragment 'foo.Bar'.
|
// We need to find class 'Baz' in fragment 'foo.Bar'.
|
||||||
@Nullable
|
@Nullable
|
||||||
static JavaClassDescriptor findClassInPackage(@NotNull JavaPackageFragmentDescriptor fragment, @NotNull Name name) {
|
static JavaClassDescriptor findClassInPackage(@NotNull JavaPackageFragmentDescriptorImpl fragment, @NotNull Name name) {
|
||||||
// First, try to find in fragment directly
|
// First, try to find in fragment directly
|
||||||
JavaClassDescriptor found = findClassInScope(fragment.getMemberScope(), name);
|
JavaClassDescriptor found = findClassInScope(fragment.getMemberScope(), name);
|
||||||
if (found != null) {
|
if (found != null) {
|
||||||
@@ -294,7 +294,7 @@ public final class DescriptorResolverUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If unsuccessful, try to find class of the same name as current (class 'foo.Bar')
|
// If unsuccessful, try to find class of the same name as current (class 'foo.Bar')
|
||||||
JavaPackageFragmentDescriptor parentPackage = getParentPackage(fragment);
|
JavaPackageFragmentDescriptorImpl parentPackage = getParentPackage(fragment);
|
||||||
if (parentPackage == null) {
|
if (parentPackage == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -310,20 +310,20 @@ public final class DescriptorResolverUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static JavaPackageFragmentDescriptor getParentPackage(@NotNull JavaPackageFragmentDescriptor fragment) {
|
private static JavaPackageFragmentDescriptorImpl getParentPackage(@NotNull JavaPackageFragmentDescriptorImpl fragment) {
|
||||||
FqName fqName = fragment.getFqName();
|
FqName fqName = fragment.getFqName();
|
||||||
if (fqName.isRoot()) {
|
if (fqName.isRoot()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
JavaPackageFragmentDescriptor parentPackage = fragment.getProvider().getOrCreatePackage(fqName.parent());
|
JavaPackageFragmentDescriptorImpl parentPackage = fragment.getProvider().getOrCreatePackage(fqName.parent());
|
||||||
assert parentPackage != null : " couldn't find parent package for " + fragment;
|
assert parentPackage != null : " couldn't find parent package for " + fragment;
|
||||||
return parentPackage;
|
return parentPackage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static JavaClassDescriptor getClassForCorrespondingJavaPackage(@NotNull JavaPackageFragmentDescriptor fragment) {
|
public static JavaClassDescriptor getClassForCorrespondingJavaPackage(@NotNull JavaPackageFragmentDescriptorImpl fragment) {
|
||||||
JavaPackageFragmentDescriptor parentPackage = getParentPackage(fragment);
|
JavaPackageFragmentDescriptorImpl parentPackage = getParentPackage(fragment);
|
||||||
if (parentPackage == null) {
|
if (parentPackage == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -334,10 +334,10 @@ public final class DescriptorResolverUtils {
|
|||||||
@Nullable
|
@Nullable
|
||||||
public static JavaPackageFragmentDescriptor getPackageForCorrespondingJavaClass(@NotNull JavaClassDescriptor javaClass) {
|
public static JavaPackageFragmentDescriptor getPackageForCorrespondingJavaClass(@NotNull JavaClassDescriptor javaClass) {
|
||||||
PackageFragmentDescriptor packageFragment = DescriptorUtils.getParentOfType(javaClass, PackageFragmentDescriptor.class);
|
PackageFragmentDescriptor packageFragment = DescriptorUtils.getParentOfType(javaClass, PackageFragmentDescriptor.class);
|
||||||
assert packageFragment instanceof JavaPackageFragmentDescriptor :
|
assert packageFragment instanceof JavaPackageFragmentDescriptorImpl :
|
||||||
"java class " + javaClass + " is under non-java fragment: " + packageFragment;
|
"java class " + javaClass + " is under non-java fragment: " + packageFragment;
|
||||||
|
|
||||||
JavaPackageFragmentProvider provider = ((JavaPackageFragmentDescriptor) packageFragment).getProvider();
|
JavaPackageFragmentProvider provider = ((JavaPackageFragmentDescriptorImpl) packageFragment).getProvider();
|
||||||
return provider.getOrCreatePackage(getFqNameSafe(javaClass));
|
return provider.getOrCreatePackage(getFqNameSafe(javaClass));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-7
@@ -21,10 +21,7 @@ import org.jetbrains.annotations.Nullable;
|
|||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.descriptors.impl.SimpleFunctionDescriptorImpl;
|
import org.jetbrains.jet.lang.descriptors.impl.SimpleFunctionDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaClassDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaMethodDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor;
|
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.NamedMembers;
|
import org.jetbrains.jet.lang.resolve.java.scope.NamedMembers;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaMethod;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaType;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaType;
|
||||||
@@ -197,8 +194,8 @@ public final class JavaFunctionResolver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (owner instanceof JavaPackageFragmentDescriptor) {
|
if (owner instanceof JavaPackageFragmentDescriptorImpl) {
|
||||||
SamConstructorDescriptor samConstructor = resolveSamConstructor((JavaPackageFragmentDescriptor) owner, members);
|
SamConstructorDescriptor samConstructor = resolveSamConstructor((JavaPackageFragmentDescriptorImpl) owner, members);
|
||||||
if (samConstructor != null) {
|
if (samConstructor != null) {
|
||||||
functionsFromCurrent.add(samConstructor);
|
functionsFromCurrent.add(samConstructor);
|
||||||
}
|
}
|
||||||
@@ -228,7 +225,7 @@ public final class JavaFunctionResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public static SamConstructorDescriptor resolveSamConstructor(@NotNull JavaPackageFragmentDescriptor owner, @NotNull NamedMembers namedMembers) {
|
public static SamConstructorDescriptor resolveSamConstructor(@NotNull JavaPackageFragmentDescriptorImpl owner, @NotNull NamedMembers namedMembers) {
|
||||||
if (namedMembers.getSamInterface() != null) {
|
if (namedMembers.getSamInterface() != null) {
|
||||||
JavaClassDescriptor klass = DescriptorResolverUtils.findClassInPackage(owner, namedMembers.getName());
|
JavaClassDescriptor klass = DescriptorResolverUtils.findClassInPackage(owner, namedMembers.getName());
|
||||||
if (klass != null) {
|
if (klass != null) {
|
||||||
|
|||||||
+5
-4
@@ -27,6 +27,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider;
|
|||||||
import org.jetbrains.jet.lang.resolve.java.JavaClassFinder;
|
import org.jetbrains.jet.lang.resolve.java.JavaClassFinder;
|
||||||
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
import org.jetbrains.jet.lang.resolve.java.PackageClassUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope;
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaFullPackageScope;
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaFullPackageScope;
|
||||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageFragmentScope;
|
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageFragmentScope;
|
||||||
@@ -45,7 +46,7 @@ import java.util.*;
|
|||||||
|
|
||||||
public final class JavaPackageFragmentProvider implements PackageFragmentProvider {
|
public final class JavaPackageFragmentProvider implements PackageFragmentProvider {
|
||||||
@NotNull
|
@NotNull
|
||||||
private final Map<FqName, JavaPackageFragmentDescriptor> packageFragments = Maps.newHashMap();
|
private final Map<FqName, JavaPackageFragmentDescriptorImpl> packageFragments = Maps.newHashMap();
|
||||||
|
|
||||||
private JavaClassFinder javaClassFinder;
|
private JavaClassFinder javaClassFinder;
|
||||||
private JavaResolverCache cache;
|
private JavaResolverCache cache;
|
||||||
@@ -95,7 +96,7 @@ public final class JavaPackageFragmentProvider implements PackageFragmentProvide
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
|
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
|
||||||
JavaPackageFragmentDescriptor packageFragment = getOrCreatePackage(fqName);
|
JavaPackageFragmentDescriptorImpl packageFragment = getOrCreatePackage(fqName);
|
||||||
if (packageFragment == null) {
|
if (packageFragment == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
@@ -104,12 +105,12 @@ public final class JavaPackageFragmentProvider implements PackageFragmentProvide
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
public JavaPackageFragmentDescriptor getOrCreatePackage(@NotNull final FqName fqName) {
|
public JavaPackageFragmentDescriptorImpl getOrCreatePackage(@NotNull final FqName fqName) {
|
||||||
if (packageFragments.containsKey(fqName)) {
|
if (packageFragments.containsKey(fqName)) {
|
||||||
return packageFragments.get(fqName);
|
return packageFragments.get(fqName);
|
||||||
}
|
}
|
||||||
|
|
||||||
JavaPackageFragmentDescriptor packageFragment = JavaPackageFragmentDescriptor.create(
|
JavaPackageFragmentDescriptorImpl packageFragment = JavaPackageFragmentDescriptorImpl.create(
|
||||||
this, fqName, new NullableFunction<JavaPackageFragmentDescriptor, JavaPackageFragmentScope>() {
|
this, fqName, new NullableFunction<JavaPackageFragmentDescriptor, JavaPackageFragmentScope>() {
|
||||||
@Override
|
@Override
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
+2
-2
@@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.resolve.java.scope;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptorImpl;
|
||||||
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor;
|
import org.jetbrains.jet.lang.resolve.java.descriptor.SamConstructorDescriptor;
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.*;
|
import org.jetbrains.jet.lang.resolve.java.resolver.*;
|
||||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass;
|
||||||
@@ -97,7 +97,7 @@ public final class JavaPurePackageScope extends JavaBaseScope implements JavaPac
|
|||||||
if (members == null) {
|
if (members == null) {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
SamConstructorDescriptor samConstructor = JavaFunctionResolver.resolveSamConstructor((JavaPackageFragmentDescriptor) descriptor, members);
|
SamConstructorDescriptor samConstructor = JavaFunctionResolver.resolveSamConstructor((JavaPackageFragmentDescriptorImpl) descriptor, members);
|
||||||
if (samConstructor == null) {
|
if (samConstructor == null) {
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user