Use java.util.function.Predicate instead of Guava in JS modules

This commit is contained in:
Alexander Udalov
2017-04-01 12:58:01 +03:00
parent 7c3ad97df5
commit f723ad76f7
16 changed files with 100 additions and 113 deletions
@@ -16,11 +16,9 @@
package org.jetbrains.kotlin.js.patterns;
import com.google.common.base.Predicate;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
import java.util.function.Predicate;
public interface DescriptorPredicate extends Predicate<FunctionDescriptor> {
@Override
boolean apply(@Nullable FunctionDescriptor descriptor);
}
@@ -16,13 +16,11 @@
package org.jetbrains.kotlin.js.patterns;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.PrimitiveType;
import org.jetbrains.kotlin.name.Name;
@@ -30,6 +28,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
public final class NamePredicate implements Predicate<Name> {
@@ -75,7 +74,7 @@ public final class NamePredicate implements Predicate<Name> {
this(Arrays.asList(validNames));
}
public NamePredicate(@NotNull List<String> validNames) {
private NamePredicate(@NotNull List<String> validNames) {
for (String validName : validNames) {
this.validNames.add(Name.guessByFirstCharacter(validName));
}
@@ -90,7 +89,7 @@ public final class NamePredicate implements Predicate<Name> {
}
@Override
public boolean apply(@Nullable Name name) {
return name != null && validNames.contains(name);
public boolean test(Name name) {
return validNames.contains(name);
}
}
@@ -122,7 +122,7 @@ public final class PatternBuilder {
private static DescriptorPredicate pattern(@NotNull List<NamePredicate> checkers, @Nullable List<NamePredicate> arguments) {
assert !checkers.isEmpty();
final List<NamePredicate> checkersWithPrefixChecker = Lists.newArrayList();
if (!checkers.get(0).apply(KOTLIN_NAME)) {
if (!checkers.get(0).test(KOTLIN_NAME)) {
checkersWithPrefixChecker.add(KOTLIN_NAME_PREDICATE);
}
@@ -134,8 +134,7 @@ public final class PatternBuilder {
return new DescriptorPredicate() {
@Override
public boolean apply(@Nullable FunctionDescriptor descriptor) {
assert descriptor != null : "argument for DescriptorPredicate.apply should not be null, checkers=" + checkersWithPrefixChecker;
public boolean test(FunctionDescriptor descriptor) {
//TODO: no need to wrap if we check beforehand
try {
return doApply(descriptor);
@@ -162,7 +161,7 @@ public final class PatternBuilder {
ValueParameterDescriptor valueParameterDescriptor = valueParameterDescriptors.get(i);
Name name = DescriptorUtilsKt.getNameIfStandardType(valueParameterDescriptor.getType());
NamePredicate namePredicate = argumentCheckers.get(i);
if (!namePredicate.apply(name)) return false;
if (!namePredicate.test(name)) return false;
}
}
return true;
@@ -172,7 +171,7 @@ public final class PatternBuilder {
for (int i = 0; i < nameParts.size(); ++i) {
Name namePart = nameParts.get(i);
NamePredicate correspondingPredicate = checkersWithPrefixChecker.get(i);
if (!correspondingPredicate.apply(namePart)) {
if (!correspondingPredicate.test(namePart)) {
return false;
}
}
@@ -233,9 +232,7 @@ public final class PatternBuilder {
}
@Override
public boolean apply(@Nullable FunctionDescriptor functionDescriptor) {
assert functionDescriptor != null :
"argument for DescriptorPredicate.apply should not be null, receiverFqName=" + receiverFqName + " names=" + Arrays.asList(names);
public boolean test(FunctionDescriptor functionDescriptor) {
ReceiverParameterDescriptor actualReceiver = functionDescriptor.getExtensionReceiverParameter();
if (actualReceiver != null) {
if (receiverFqName == null) return false;
@@ -16,13 +16,11 @@
package org.jetbrains.kotlin.js.patterns.typePredicates
import com.google.common.base.Predicate
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.types.KotlinType
import java.util.function.Predicate
public interface TypePredicate : Predicate<KotlinType> {
override fun apply(type: KotlinType?): Boolean
}
interface TypePredicate : Predicate<KotlinType>
private val KOTLIN = TypePredicateImpl("kotlin")
val COMPARABLE: TypePredicate = KOTLIN.inner("Comparable")
@@ -40,8 +38,8 @@ private class TypePredicateImpl
: TypePredicate {
constructor(name: String) : this(listOf(name))
override fun apply(type: KotlinType?): Boolean {
var descriptor: DeclarationDescriptor? = type?.constructor?.declarationDescriptor ?: return false
override fun test(type: KotlinType): Boolean {
var descriptor: DeclarationDescriptor? = type.constructor.declarationDescriptor ?: return false
for (i in nameParts.lastIndex downTo 0) {
if (nameParts[i] != descriptor?.name?.asString()) return false
@@ -16,9 +16,6 @@
package org.jetbrains.kotlin.js.resolve.diagnostics
import org.jetbrains.kotlin.js.backend.ast.JsFunctionScope
import org.jetbrains.kotlin.js.backend.ast.JsProgram
import org.jetbrains.kotlin.js.backend.ast.JsRootScope
import com.google.gwt.dev.js.parserExceptions.AbortParsingException
import com.google.gwt.dev.js.rhino.CodePosition
import com.google.gwt.dev.js.rhino.ErrorReporter
@@ -29,6 +26,9 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory1
import org.jetbrains.kotlin.js.backend.ast.JsFunctionScope
import org.jetbrains.kotlin.js.backend.ast.JsProgram
import org.jetbrains.kotlin.js.backend.ast.JsRootScope
import org.jetbrains.kotlin.js.parser.parse
import org.jetbrains.kotlin.js.patterns.DescriptorPredicate
import org.jetbrains.kotlin.js.patterns.PatternBuilder
@@ -57,7 +57,7 @@ class JsCallChecker(
@JvmStatic fun <F : CallableDescriptor?> ResolvedCall<F>.isJsCall(): Boolean {
val descriptor = resultingDescriptor
return descriptor is SimpleFunctionDescriptor && JS_PATTERN.apply(descriptor)
return descriptor is SimpleFunctionDescriptor && JS_PATTERN.test(descriptor)
}
@JvmStatic fun extractStringValue(compileTimeConstant: CompileTimeConstant<*>?): String? {