From ac306a18392b217388f67191c491a7e3f1275c15 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Thu, 23 Oct 2014 11:28:38 +0400 Subject: [PATCH] Converted FilteringScope to Kotlin --- .../lang/resolve/scopes/FilteringScope.java | 113 ------------------ .../jet/lang/resolve/scopes/FilteringScope.kt | 58 +++++++++ 2 files changed, 58 insertions(+), 113 deletions(-) delete mode 100644 core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.java create mode 100644 core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.java deleted file mode 100644 index 0581c10f79f..00000000000 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.java +++ /dev/null @@ -1,113 +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.scopes; - -import kotlin.Function1; -import kotlin.KotlinPackage; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.lang.descriptors.*; -import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.utils.Printer; - -import java.util.Collection; -import java.util.List; - -public class FilteringScope implements JetScope { - private final JetScope workerScope; - private final Function1 predicate; - - public FilteringScope(@NotNull JetScope workerScope, @NotNull Function1 predicate) { - this.workerScope = workerScope; - this.predicate = predicate; - } - - @NotNull - @Override - public Collection getFunctions(@NotNull Name name) { - return KotlinPackage.filter(workerScope.getFunctions(name), predicate); - } - - @NotNull - @Override - public DeclarationDescriptor getContainingDeclaration() { - return workerScope.getContainingDeclaration(); - } - - @Nullable - private D filterDescriptor(@Nullable D descriptor) { - return descriptor != null && predicate.invoke(descriptor) ? descriptor : null; - } - - @Nullable - @Override - public PackageViewDescriptor getPackage(@NotNull Name name) { - return filterDescriptor(workerScope.getPackage(name)); - } - - @Override - public ClassifierDescriptor getClassifier(@NotNull Name name) { - return filterDescriptor(workerScope.getClassifier(name)); - } - - @NotNull - @Override - public Collection getProperties(@NotNull Name name) { - return KotlinPackage.filter(workerScope.getProperties(name), predicate); - } - - @Override - public VariableDescriptor getLocalVariable(@NotNull Name name) { - return filterDescriptor(workerScope.getLocalVariable(name)); - } - - @NotNull - @Override - public Collection getAllDescriptors() { - return KotlinPackage.filter(workerScope.getAllDescriptors(), predicate); - } - - @NotNull - @Override - public List getImplicitReceiversHierarchy() { - return workerScope.getImplicitReceiversHierarchy(); - } - - @NotNull - @Override - public Collection getDeclarationsByLabel(@NotNull Name labelName) { - return KotlinPackage.filter(workerScope.getDeclarationsByLabel(labelName), predicate); - } - - @NotNull - @Override - public Collection getOwnDeclaredDescriptors() { - return KotlinPackage.filter(workerScope.getOwnDeclaredDescriptors(), predicate); - } - - @Override - public void printScopeStructure(@NotNull Printer p) { - p.println(getClass().getSimpleName(), " {"); - p.pushIndent(); - - p.print("workerScope = "); - workerScope.printScopeStructure(p.withholdIndentOnce()); - - p.popIndent(); - p.println("}"); - } -} diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt new file mode 100644 index 00000000000..eaecd57d95c --- /dev/null +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/scopes/FilteringScope.kt @@ -0,0 +1,58 @@ +/* + * 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.scopes + +import org.jetbrains.jet.lang.descriptors.* +import org.jetbrains.jet.lang.resolve.name.Name +import org.jetbrains.jet.utils.Printer + +public class FilteringScope(private val workerScope: JetScope, private val predicate: (DeclarationDescriptor) -> Boolean) : JetScope { + + override fun getFunctions(name: Name) = workerScope.getFunctions(name).filter(predicate) + + override fun getContainingDeclaration() = workerScope.getContainingDeclaration() + + private fun filterDescriptor(descriptor: D?): D? + = if (descriptor != null && predicate(descriptor)) descriptor else null + + override fun getPackage(name: Name) = filterDescriptor(workerScope.getPackage(name)) + + override fun getClassifier(name: Name) = filterDescriptor(workerScope.getClassifier(name)) + + override fun getProperties(name: Name) = workerScope.getProperties(name).filter(predicate) + + override fun getLocalVariable(name: Name) = filterDescriptor(workerScope.getLocalVariable(name)) + + override fun getAllDescriptors() = workerScope.getAllDescriptors().filter(predicate) + + override fun getImplicitReceiversHierarchy() = workerScope.getImplicitReceiversHierarchy() + + override fun getDeclarationsByLabel(labelName: Name) = workerScope.getDeclarationsByLabel(labelName).filter(predicate) + + override fun getOwnDeclaredDescriptors() = workerScope.getOwnDeclaredDescriptors().filter(predicate) + + override fun printScopeStructure(p: Printer) { + p.println(javaClass.getSimpleName(), " {") + p.pushIndent() + + p.print("workerScope = ") + workerScope.printScopeStructure(p.withholdIndentOnce()) + + p.popIndent() + p.println("}") + } +}