Converting PackageFragmentProvider and its implementations to Kotlin
This commit is contained in:
-78
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
* 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.
|
||||
* 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;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MutablePackageFragmentProvider implements PackageFragmentProvider {
|
||||
private final ModuleDescriptor module;
|
||||
|
||||
private final Map<FqName, MutablePackageFragmentDescriptor> fqNameToPackage = Maps.newHashMap();
|
||||
private final MultiMap<FqName, FqName> subPackages = MultiMap.create();
|
||||
|
||||
public MutablePackageFragmentProvider(@NotNull ModuleDescriptor module) {
|
||||
this.module = module;
|
||||
fqNameToPackage.put(FqName.ROOT, new MutablePackageFragmentDescriptor(module, FqName.ROOT));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName) {
|
||||
return ContainerUtil.<PackageFragmentDescriptor>createMaybeSingletonList(fqNameToPackage.get(fqName));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
|
||||
return subPackages.get(fqName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public MutablePackageFragmentDescriptor getOrCreateFragment(@NotNull FqName fqName) {
|
||||
if (!fqNameToPackage.containsKey(fqName)) {
|
||||
FqName parent = fqName.parent();
|
||||
getOrCreateFragment(parent); // assure that parent exists
|
||||
|
||||
fqNameToPackage.put(fqName, new MutablePackageFragmentDescriptor(module, fqName));
|
||||
subPackages.putValue(parent, fqName);
|
||||
}
|
||||
|
||||
return fqNameToPackage.get(fqName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public ModuleDescriptor getModule() {
|
||||
return module;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Collection<MutablePackageFragmentDescriptor> getAllFragments() {
|
||||
return fqNameToPackage.values();
|
||||
}
|
||||
}
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* 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.
|
||||
* 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
|
||||
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import com.intellij.util.containers.MultiMap
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
import java.util.HashMap
|
||||
|
||||
public class MutablePackageFragmentProvider(public val module: ModuleDescriptor) : PackageFragmentProvider {
|
||||
|
||||
private val fqNameToPackage = HashMap<FqName, MutablePackageFragmentDescriptor>()
|
||||
private val subPackages = MultiMap.create<FqName, FqName>()
|
||||
|
||||
;{
|
||||
fqNameToPackage.put(FqName.ROOT, MutablePackageFragmentDescriptor(module, FqName.ROOT))
|
||||
}
|
||||
|
||||
override fun getPackageFragments(fqName: FqName)
|
||||
= ContainerUtil.createMaybeSingletonList<PackageFragmentDescriptor>(fqNameToPackage.get(fqName))
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName) = subPackages[fqName]
|
||||
|
||||
public fun getOrCreateFragment(fqName: FqName): MutablePackageFragmentDescriptor {
|
||||
if (!fqNameToPackage.containsKey(fqName)) {
|
||||
val parent = fqName.parent()
|
||||
getOrCreateFragment(parent) // assure that parent exists
|
||||
|
||||
fqNameToPackage.put(fqName, MutablePackageFragmentDescriptor(module, fqName))
|
||||
subPackages.putValue(parent, fqName)
|
||||
}
|
||||
|
||||
return fqNameToPackage[fqName]
|
||||
}
|
||||
|
||||
public fun getAllFragments(): Collection<MutablePackageFragmentDescriptor> = fqNameToPackage.values()
|
||||
}
|
||||
+7
-15
@@ -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.
|
||||
@@ -14,24 +14,16 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.jet.lang.descriptors;
|
||||
package org.jetbrains.jet.lang.descriptors
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.ReadOnly;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.annotations.ReadOnly
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public interface PackageFragmentProvider {
|
||||
@NotNull
|
||||
@ReadOnly
|
||||
List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName);
|
||||
public trait PackageFragmentProvider {
|
||||
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||
|
||||
/**
|
||||
* @return declared subpackages of {@code fqName}
|
||||
*/
|
||||
@NotNull
|
||||
@ReadOnly
|
||||
Collection<FqName> getSubPackagesOf(@NotNull FqName fqName);
|
||||
public fun getSubPackagesOf(fqName: FqName): Collection<FqName>
|
||||
}
|
||||
-54
@@ -1,54 +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.descriptors.impl;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class CompositePackageFragmentProvider implements PackageFragmentProvider {
|
||||
// can be modified from outside
|
||||
private final List<PackageFragmentProvider> providers;
|
||||
|
||||
public CompositePackageFragmentProvider(@NotNull List<PackageFragmentProvider> providers) {
|
||||
this.providers = providers;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName) {
|
||||
ArrayList<PackageFragmentDescriptor> result = new ArrayList<PackageFragmentDescriptor>();
|
||||
for (PackageFragmentProvider provider : providers) {
|
||||
result.addAll(provider.getPackageFragments(fqName));
|
||||
}
|
||||
result.trimToSize();
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<FqName> getSubPackagesOf(@NotNull FqName fqName) {
|
||||
Set<FqName> result = new HashSet<FqName>();
|
||||
for (PackageFragmentProvider provider : providers) {
|
||||
result.addAll(provider.getSubPackagesOf(fqName));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
+46
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* 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.
|
||||
* 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.descriptors.impl
|
||||
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
|
||||
import java.util.*
|
||||
import kotlin.List
|
||||
import kotlin.Collection
|
||||
|
||||
public class CompositePackageFragmentProvider(// can be modified from outside
|
||||
private val providers: List<PackageFragmentProvider>) : PackageFragmentProvider {
|
||||
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
val result = ArrayList<PackageFragmentDescriptor>()
|
||||
for (provider in providers) {
|
||||
result.addAll(provider.getPackageFragments(fqName))
|
||||
}
|
||||
result.trimToSize()
|
||||
return result
|
||||
}
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName): Collection<FqName> {
|
||||
val result = HashSet<FqName>()
|
||||
for (provider in providers) {
|
||||
result.addAll(provider.getSubPackagesOf(fqName))
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user