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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -14,24 +14,16 @@
|
|||||||
* limitations under the License.
|
* 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.annotations.ReadOnly;
|
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
public trait PackageFragmentProvider {
|
||||||
import java.util.List;
|
public fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor>
|
||||||
|
|
||||||
public interface PackageFragmentProvider {
|
|
||||||
@NotNull
|
|
||||||
@ReadOnly
|
|
||||||
List<PackageFragmentDescriptor> getPackageFragments(@NotNull FqName fqName);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return declared subpackages of {@code fqName}
|
* @return declared subpackages of {@code fqName}
|
||||||
*/
|
*/
|
||||||
@NotNull
|
public fun getSubPackagesOf(fqName: FqName): Collection<FqName>
|
||||||
@ReadOnly
|
|
||||||
Collection<FqName> getSubPackagesOf(@NotNull FqName 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