From ea4f0ab214dd85dae009b1bd498e78a3a25d1c5c Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 2 Dec 2014 15:50:16 +0300 Subject: [PATCH] Methods in KotlinBuiltIns made static where already possible --- .../resolve/DiagnosticsWithSuppression.java | 2 +- .../lang/resolve/FunctionDescriptorUtil.java | 8 ++-- .../resolve/calls/ArgumentTypeResolver.java | 2 +- .../lang/resolve/calls/CallResolverUtil.java | 8 ++-- .../lang/resolve/calls/CandidateResolver.java | 2 +- .../calls/InlineCallResolverExtension.java | 4 +- .../resolve/calls/checkTraitRequirements.kt | 2 +- .../calls/tasks/TracingStrategyForInvoke.java | 2 +- .../extension/InlineAnalyzerExtension.java | 3 +- .../lazy/descriptors/LazyClassDescriptor.java | 2 +- .../ClosureExpressionsTypingVisitor.java | 10 ++--- .../jet/test/util/DescriptorValidator.java | 2 +- .../calls/inference/ConstraintSystemImpl.java | 7 ++-- .../jet/lang/types/lang/KotlinBuiltIns.java | 42 +++++++++---------- .../jet/renderer/DescriptorRendererImpl.java | 9 ++-- .../serialization/DescriptorSerializer.java | 2 +- .../FunctionsHighlightingVisitor.java | 5 +-- .../quickfix/KotlinSuppressIntentionAction.kt | 2 +- .../internal/FindImplicitNothingAction.kt | 2 +- .../plugin/completion/LookupElementFactory.kt | 4 +- .../completion/LookupElementsCollector.kt | 4 +- .../completion/handlers/GenerateLambda.kt | 8 ++-- .../plugin/completion/smart/LambdaItems.kt | 2 +- .../completion/smart/SmartCompletion.kt | 2 +- .../smart/TypeInstantiationItems.kt | 4 +- 25 files changed, 68 insertions(+), 72 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java index 19e592c1682..e746edff4c3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java @@ -232,7 +232,7 @@ public class DiagnosticsWithSuppression implements Diagnostics { builder.addAll(suppressStringProvider.get(annotationDescriptor)); } - if (!KotlinBuiltIns.getInstance().isSuppressAnnotation(annotationDescriptor)) continue; + if (!KotlinBuiltIns.isSuppressAnnotation(annotationDescriptor)) continue; // We only add strings and skip other values to facilitate recovery in presence of erroneous code for (CompileTimeConstant arrayValue : annotationDescriptor.getAllValueArguments().values()) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java index 64657cb3441..3a7122d8bbb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/FunctionDescriptorUtil.java @@ -98,12 +98,12 @@ public class FunctionDescriptorUtil { @NotNull Visibility visibility ) { - assert KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(functionType); - functionDescriptor.initialize(KotlinBuiltIns.getInstance().getReceiverType(functionType), + assert KotlinBuiltIns.isFunctionOrExtensionFunctionType(functionType); + functionDescriptor.initialize(KotlinBuiltIns.getReceiverType(functionType), dispatchReceiverParameter, Collections.emptyList(), - KotlinBuiltIns.getInstance().getValueParameters(functionDescriptor, functionType), - KotlinBuiltIns.getInstance().getReturnTypeFromFunctionType(functionType), + KotlinBuiltIns.getValueParameters(functionDescriptor, functionType), + KotlinBuiltIns.getReturnTypeFromFunctionType(functionType), modality, visibility); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java index 0c1fdec8695..1eb4a762d0b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java @@ -78,7 +78,7 @@ public class ArgumentTypeResolver { } private static boolean isFunctionOrErrorType(@NotNull JetType supertype) { - return KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(supertype) || supertype.isError(); + return KotlinBuiltIns.isFunctionOrExtensionFunctionType(supertype) || supertype.isError(); } public void checkTypesWithNoCallee(@NotNull CallResolutionContext context) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java index f0a2dadebb3..eacfe724922 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolverUtil.java @@ -42,7 +42,7 @@ public class CallResolverUtil { public static boolean hasUnknownFunctionParameter(@NotNull JetType type) { - assert KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(type); + assert KotlinBuiltIns.isFunctionOrExtensionFunctionType(type); List arguments = type.getArguments(); // last argument is return type of function type List functionParameters = arguments.subList(0, arguments.size() - 1); @@ -56,13 +56,13 @@ public class CallResolverUtil { } public static boolean hasUnknownReturnType(@NotNull JetType type) { - assert KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(type); - JetType returnTypeFromFunctionType = KotlinBuiltIns.getInstance().getReturnTypeFromFunctionType(type); + assert KotlinBuiltIns.isFunctionOrExtensionFunctionType(type); + JetType returnTypeFromFunctionType = KotlinBuiltIns.getReturnTypeFromFunctionType(type); return ErrorUtils.containsErrorType(returnTypeFromFunctionType); } public static JetType replaceReturnTypeByUnknown(@NotNull JetType type) { - assert KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(type); + assert KotlinBuiltIns.isFunctionOrExtensionFunctionType(type); List arguments = type.getArguments(); List newArguments = Lists.newArrayList(); newArguments.addAll(arguments.subList(0, arguments.size() - 1)); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java index a1daa17ce97..9879911ed97 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java @@ -250,7 +250,7 @@ public class CandidateResolver { if (expectedType == null || TypeUtils.isDontCarePlaceholder(expectedType)) { expectedType = argumentTypeResolver.getShapeTypeOfFunctionLiteral(functionLiteralExpression, context.scope, context.trace, false); } - if (expectedType == null || !KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(expectedType) + if (expectedType == null || !KotlinBuiltIns.isFunctionOrExtensionFunctionType(expectedType) || CallResolverUtil.hasUnknownFunctionParameter(expectedType)) { return; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java index 9d945f9d047..f1ed8a49615 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/InlineCallResolverExtension.java @@ -221,7 +221,7 @@ public class InlineCallResolverExtension implements CallResolverExtension { private static boolean isInlinableParameter(@NotNull CallableDescriptor descriptor) { JetType type = descriptor.getReturnType(); return type != null && - KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(type) && + KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(type) && !type.isNullable() && !InlineUtil.hasNoinlineAnnotation(descriptor); } @@ -234,7 +234,7 @@ public class InlineCallResolverExtension implements CallResolverExtension { DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration(); boolean isInvoke = descriptor.getName().asString().equals("invoke") && containingDeclaration instanceof ClassDescriptor && - KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(((ClassDescriptor) containingDeclaration).getDefaultType()); + KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(((ClassDescriptor) containingDeclaration).getDefaultType()); return isInvoke || //or inline extension diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/checkTraitRequirements.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/checkTraitRequirements.kt index 11f82723ff3..d0c4ca592d5 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/checkTraitRequirements.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/checkTraitRequirements.kt @@ -54,7 +54,7 @@ private fun getSuperClassesReachableByClassInheritance( ): Set { val superClass = getSuperClass(descriptor) result.add(superClass) - if (!KotlinBuiltIns.getInstance().isAny(superClass)) { + if (!KotlinBuiltIns.isAny(superClass)) { getSuperClassesReachableByClassInheritance(superClass, result) } return result diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyForInvoke.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyForInvoke.java index 888b18777c9..3fb55406a57 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyForInvoke.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyForInvoke.java @@ -91,7 +91,7 @@ public class TracingStrategyForInvoke extends AbstractTracingStrategy { } private void functionExpectedOrNoReceiverAllowed(BindingTrace trace) { - if (KotlinBuiltIns.getInstance().isFunctionType(calleeType)) { + if (KotlinBuiltIns.isFunctionType(calleeType)) { LOG.assertTrue(call.getExplicitReceiver().exists(), "'Invoke' is not found on expression of function type (" + calleeType + "): " + PsiUtilPackage.getTextWithLocation(call.getCallElement())); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java index 323d9810d05..9802b574ef0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/extension/InlineAnalyzerExtension.java @@ -149,9 +149,8 @@ public class InlineAnalyzerExtension implements FunctionAnalyzerExtension.Analyz @NotNull CallableDescriptor functionDescriptor, @Nullable BindingTrace trace ) { - KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); JetType type = parameter.getReturnType(); - if (type != null && builtIns.isExactFunctionOrExtensionFunctionType(type)) { + if (type != null && KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(type)) { if (!InlineUtil.hasNoinlineAnnotation(parameter)) { if (type.isNullable()) { if (trace != null) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 40198fb9646..88107f2c796 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -500,7 +500,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes new Function0() { @Override public Supertypes invoke() { - if (KotlinBuiltIns.getInstance().isSpecialClassWithNoSupertypes(LazyClassDescriptor.this)) { + if (KotlinBuiltIns.isSpecialClassWithNoSupertypes(LazyClassDescriptor.this)) { return new Supertypes(Collections.emptyList()); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java index e6950100ef6..c5566eca7bc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ClosureExpressionsTypingVisitor.java @@ -107,7 +107,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { if (!expression.getFunctionLiteral().hasBody()) return null; JetType expectedType = context.expectedType; - boolean functionTypeExpected = !noExpectedType(expectedType) && KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType( + boolean functionTypeExpected = !noExpectedType(expectedType) && KotlinBuiltIns.isFunctionOrExtensionFunctionType( expectedType); AnonymousFunctionDescriptor functionDescriptor = createFunctionDescriptor(expression, context, functionTypeExpected); @@ -118,7 +118,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { List valueParametersTypes = ExpressionTypingUtils.getValueParametersTypes(functionDescriptor.getValueParameters()); JetType resultType = KotlinBuiltIns.getInstance().getFunctionType( Annotations.EMPTY, receiver, valueParametersTypes, safeReturnType); - if (!noExpectedType(expectedType) && KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(expectedType)) { + if (!noExpectedType(expectedType) && KotlinBuiltIns.isFunctionOrExtensionFunctionType(expectedType)) { // all checks were done before return JetTypeInfo.create(resultType, context.dataFlowInfo); } @@ -145,7 +145,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { JetType effectiveReceiverType; if (receiverTypeRef == null) { if (functionTypeExpected) { - effectiveReceiverType = KotlinBuiltIns.getInstance().getReceiverType(context.expectedType); + effectiveReceiverType = KotlinBuiltIns.getReceiverType(context.expectedType); } else { effectiveReceiverType = null; @@ -177,7 +177,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { List declaredValueParameters = functionLiteral.getValueParameters(); List expectedValueParameters = (functionTypeExpected) - ? KotlinBuiltIns.getInstance().getValueParameters(functionDescriptor, context.expectedType) + ? KotlinBuiltIns.getValueParameters(functionDescriptor, context.expectedType) : null; JetParameterList valueParameterList = functionLiteral.getValueParameterList(); @@ -261,7 +261,7 @@ public class ClosureExpressionsTypingVisitor extends ExpressionTypingVisitor { @NotNull SimpleFunctionDescriptorImpl functionDescriptor, boolean functionTypeExpected ) { - JetType expectedReturnType = functionTypeExpected ? KotlinBuiltIns.getInstance().getReturnTypeFromFunctionType(context.expectedType) : null; + JetType expectedReturnType = functionTypeExpected ? KotlinBuiltIns.getReturnTypeFromFunctionType(context.expectedType) : null; JetType returnType = computeUnsafeReturnType(expression, context, functionDescriptor, expectedReturnType); if (!expression.getFunctionLiteral().hasDeclaredReturnType() && functionTypeExpected) { diff --git a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java index 45ff80ab8ee..d8dcb16a668 100644 --- a/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java +++ b/compiler/tests/org/jetbrains/jet/test/util/DescriptorValidator.java @@ -236,7 +236,7 @@ public class DescriptorValidator { Collection supertypes = descriptor.getTypeConstructor().getSupertypes(); if (supertypes.isEmpty() && descriptor.getKind() != ClassKind.TRAIT - && !KotlinBuiltIns.getInstance().isSpecialClassWithNoSupertypes(descriptor)) { + && !KotlinBuiltIns.isSpecialClassWithNoSupertypes(descriptor)) { report(collector, descriptor, "No supertypes for non-trait"); } validateTypes(descriptor, collector, supertypes); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java index 31534f78dca..467fa3fbc47 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/calls/inference/ConstraintSystemImpl.java @@ -367,9 +367,8 @@ public class ConstraintSystemImpl implements ConstraintSystem { assert superType != TypeUtils.PLACEHOLDER_FUNCTION_TYPE : "The type for " + constraintPosition + " shouldn't be a placeholder for function type"; - KotlinBuiltIns kotlinBuiltIns = KotlinBuiltIns.getInstance(); if (subType == TypeUtils.PLACEHOLDER_FUNCTION_TYPE) { - if (!kotlinBuiltIns.isFunctionOrExtensionFunctionType(superType)) { + if (!KotlinBuiltIns.isFunctionOrExtensionFunctionType(superType)) { if (isMyTypeVariable(superType)) { // a constraint binds type parameter and any function type, so there is no new info and no error return; @@ -383,7 +382,7 @@ public class ConstraintSystemImpl implements ConstraintSystem { // function literal without declaring receiver type { x -> ... } // can be considered as extension function if one is expected // (special type constructor for function/ extension function should be introduced like PLACEHOLDER_FUNCTION_TYPE) - if (constraintKind == SUB_TYPE && kotlinBuiltIns.isFunctionType(subType) && kotlinBuiltIns.isExtensionFunctionType(superType)) { + if (constraintKind == SUB_TYPE && KotlinBuiltIns.isFunctionType(subType) && KotlinBuiltIns.isExtensionFunctionType(superType)) { subType = createCorrespondingExtensionFunctionType(subType, DONT_CARE); } @@ -522,7 +521,7 @@ public class ConstraintSystemImpl implements ConstraintSystem { @NotNull public static JetType createCorrespondingExtensionFunctionType(@NotNull JetType functionType, @NotNull JetType receiverType) { - assert KotlinBuiltIns.getInstance().isFunctionType(functionType); + assert KotlinBuiltIns.isFunctionType(functionType); List typeArguments = functionType.getArguments(); assert !typeArguments.isEmpty(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index 7f11dcc2b27..e675f6b3c55 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -103,7 +103,7 @@ public class KotlinBuiltIns { private final Map primitiveJetTypeToJetArrayType; private final Map jetArrayTypeToPrimitiveJetType; - private final FqNames fqNames = new FqNames(); + private static final FqNames FQ_NAMES = new FqNames(); private KotlinBuiltIns() { builtInsModule = new ModuleDescriptorImpl( @@ -734,11 +734,11 @@ public class KotlinBuiltIns { // Functions - public boolean isFunctionOrExtensionFunctionType(@NotNull JetType type) { + public static boolean isFunctionOrExtensionFunctionType(@NotNull JetType type) { return isFunctionType(type) || isExtensionFunctionType(type); } - public boolean isFunctionType(@NotNull JetType type) { + public static boolean isFunctionType(@NotNull JetType type) { if (isExactFunctionType(type)) return true; for (JetType superType : type.getConstructor().getSupertypes()) { @@ -748,7 +748,7 @@ public class KotlinBuiltIns { return false; } - public boolean isExtensionFunctionType(@NotNull JetType type) { + public static boolean isExtensionFunctionType(@NotNull JetType type) { if (isExactExtensionFunctionType(type)) return true; for (JetType superType : type.getConstructor().getSupertypes()) { @@ -758,16 +758,16 @@ public class KotlinBuiltIns { return false; } - public boolean isExactFunctionOrExtensionFunctionType(@NotNull JetType type) { + public static boolean isExactFunctionOrExtensionFunctionType(@NotNull JetType type) { return isExactFunctionType(type) || isExactExtensionFunctionType(type); } - public boolean isExactFunctionType(@NotNull JetType type) { - return isTypeConstructorFqNameInSet(type, fqNames.functionClasses); + public static boolean isExactFunctionType(@NotNull JetType type) { + return isTypeConstructorFqNameInSet(type, FQ_NAMES.functionClasses); } - public boolean isExactExtensionFunctionType(@NotNull JetType type) { - return isTypeConstructorFqNameInSet(type, fqNames.extensionFunctionClasses); + public static boolean isExactExtensionFunctionType(@NotNull JetType type) { + return isTypeConstructorFqNameInSet(type, FQ_NAMES.extensionFunctionClasses); } private static boolean isTypeConstructorFqNameInSet(@NotNull JetType type, @NotNull Set classes) { @@ -780,7 +780,7 @@ public class KotlinBuiltIns { } @Nullable - public JetType getReceiverType(@NotNull JetType type) { + public static JetType getReceiverType(@NotNull JetType type) { assert isFunctionOrExtensionFunctionType(type) : type; if (isExtensionFunctionType(type)) { return type.getArguments().get(0).getType(); @@ -789,7 +789,7 @@ public class KotlinBuiltIns { } @NotNull - public List getValueParameters(@NotNull FunctionDescriptor functionDescriptor, @NotNull JetType type) { + public static List getValueParameters(@NotNull FunctionDescriptor functionDescriptor, @NotNull JetType type) { assert isFunctionOrExtensionFunctionType(type); List parameterTypes = getParameterTypeProjectionsFromFunctionType(type); List valueParameters = new ArrayList(parameterTypes.size()); @@ -805,14 +805,14 @@ public class KotlinBuiltIns { } @NotNull - public JetType getReturnTypeFromFunctionType(@NotNull JetType type) { + public static JetType getReturnTypeFromFunctionType(@NotNull JetType type) { assert isFunctionOrExtensionFunctionType(type); List arguments = type.getArguments(); return arguments.get(arguments.size() - 1).getType(); } @NotNull - public List getParameterTypeProjectionsFromFunctionType(@NotNull JetType type) { + public static List getParameterTypeProjectionsFromFunctionType(@NotNull JetType type) { assert isFunctionOrExtensionFunctionType(type); List arguments = type.getArguments(); int first = isExtensionFunctionType(type) ? 1 : 0; @@ -826,13 +826,13 @@ public class KotlinBuiltIns { // Recognized & special - public boolean isSpecialClassWithNoSupertypes(@NotNull ClassDescriptor descriptor) { + public static boolean isSpecialClassWithNoSupertypes(@NotNull ClassDescriptor descriptor) { FqNameUnsafe fqName = DescriptorUtils.getFqName(descriptor); - return fqNames.any.equals(fqName) || fqNames.nothing.equals(fqName); + return FQ_NAMES.any.equals(fqName) || FQ_NAMES.nothing.equals(fqName); } - public boolean isAny(@NotNull ClassDescriptor descriptor) { - return fqNames.any.equals(DescriptorUtils.getFqName(descriptor)); + public static boolean isAny(@NotNull ClassDescriptor descriptor) { + return FQ_NAMES.any.equals(DescriptorUtils.getFqName(descriptor)); } public boolean isNothing(@NotNull JetType type) { @@ -861,8 +861,8 @@ public class KotlinBuiltIns { return getStringType().equals(type); } - public boolean isCloneable(@NotNull ClassDescriptor descriptor) { - return fqNames.cloneable.equals(DescriptorUtils.getFqName(descriptor)); + public static boolean isCloneable(@NotNull ClassDescriptor descriptor) { + return FQ_NAMES.cloneable.equals(DescriptorUtils.getFqName(descriptor)); } public boolean isData(@NotNull ClassDescriptor classDescriptor) { @@ -877,9 +877,9 @@ public class KotlinBuiltIns { return containsAnnotation(declarationDescriptor, getTailRecursiveAnnotationClass()); } - public boolean isSuppressAnnotation(@NotNull AnnotationDescriptor annotationDescriptor) { + public static boolean isSuppressAnnotation(@NotNull AnnotationDescriptor annotationDescriptor) { ClassifierDescriptor classifier = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor(); - return classifier != null && fqNames.suppress.equals(DescriptorUtils.getFqName(classifier)); + return classifier != null && FQ_NAMES.suppress.equals(DescriptorUtils.getFqName(classifier)); } static boolean containsAnnotation(DeclarationDescriptor descriptor, ClassDescriptor annotationClass) { diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index ae40e531fc1..b7011989da0 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -43,7 +43,6 @@ import org.jetbrains.jet.utils.UtilsPackage; import java.util.*; import static org.jetbrains.jet.lang.types.TypeUtils.CANT_INFER_LAMBDA_PARAM_TYPE; -import static org.jetbrains.jet.lang.types.TypeUtils.DONT_CARE; public class DescriptorRendererImpl implements DescriptorRenderer { @@ -360,7 +359,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { } private boolean shouldRenderAsPrettyFunctionType(@NotNull JetType type) { - return KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(type) && prettyFunctionTypes; + return KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(type) && prettyFunctionTypes; } @NotNull @@ -484,16 +483,16 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private String renderFunctionType(@NotNull JetType type) { StringBuilder sb = new StringBuilder(); - JetType receiverType = KotlinBuiltIns.getInstance().getReceiverType(type); + JetType receiverType = KotlinBuiltIns.getReceiverType(type); if (receiverType != null) { sb.append(renderNormalizedType(receiverType)); sb.append("."); } sb.append("("); - appendTypeProjections(KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(type), sb); + appendTypeProjections(KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(type), sb); sb.append(") ").append(arrow()).append(" "); - sb.append(renderNormalizedType(KotlinBuiltIns.getInstance().getReturnTypeFromFunctionType(type))); + sb.append(renderNormalizedType(KotlinBuiltIns.getReturnTypeFromFunctionType(type))); if (type.isNullable()) { return "(" + sb + ")?"; diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java index f91e424aa53..afe60462229 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/DescriptorSerializer.java @@ -91,7 +91,7 @@ public class DescriptorSerializer { builder.addTypeParameter(typeParameter(typeParameterDescriptor)); } - if (!KotlinBuiltIns.getInstance().isSpecialClassWithNoSupertypes(classDescriptor)) { + if (!KotlinBuiltIns.isSpecialClassWithNoSupertypes(classDescriptor)) { // Special classes (Any, Nothing) have no supertypes for (JetType supertype : classDescriptor.getTypeConstructor().getSupertypes()) { builder.addSupertype(type(supertype)); diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java index 161e46b7398..9f3774b5bfa 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/highlighter/FunctionsHighlightingVisitor.java @@ -103,15 +103,14 @@ public class FunctionsHighlightingVisitor extends AfterAnalysisHighlightingVisit return false; } - KotlinBuiltIns builtIns = KotlinBuiltIns.getInstance(); JetType defaultType = ((ClassDescriptor) parent).getDefaultType(); - if (builtIns.isFunctionOrExtensionFunctionType(defaultType)) { + if (KotlinBuiltIns.isFunctionOrExtensionFunctionType(defaultType)) { return true; } for (JetType supertype : TypeUtils.getAllSupertypes(defaultType)) { - if (builtIns.isFunctionOrExtensionFunctionType(supertype)) { + if (KotlinBuiltIns.isFunctionOrExtensionFunctionType(supertype)) { return true; } } diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt index 0bb8c45b291..74f69eb4828 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt @@ -135,7 +135,7 @@ public class KotlinSuppressIntentionAction( val context = annotated.analyze() for (entry in annotated.getAnnotationEntries()) { val annotationDescriptor = context.get(BindingContext.ANNOTATION, entry) - if (annotationDescriptor != null && KotlinBuiltIns.getInstance().isSuppressAnnotation(annotationDescriptor)) { + if (annotationDescriptor != null && KotlinBuiltIns.isSuppressAnnotation(annotationDescriptor)) { return entry } } diff --git a/idea/src/org/jetbrains/jet/plugin/actions/internal/FindImplicitNothingAction.kt b/idea/src/org/jetbrains/jet/plugin/actions/internal/FindImplicitNothingAction.kt index 87ecd6327e2..8eec92ea09d 100644 --- a/idea/src/org/jetbrains/jet/plugin/actions/internal/FindImplicitNothingAction.kt +++ b/idea/src/org/jetbrains/jet/plugin/actions/internal/FindImplicitNothingAction.kt @@ -130,7 +130,7 @@ public class FindImplicitNothingAction : AnAction() { return when { builtIns.isNothing(this) -> true - builtIns.isExactFunctionOrExtensionFunctionType(this) -> builtIns.getReturnTypeFromFunctionType(this).isNothingOrNothingFunctionType() + KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(this) -> KotlinBuiltIns.getReturnTypeFromFunctionType(this).isNothingOrNothingFunctionType() else -> false } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt index 9dc41cf5e39..83f1e61785a 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementFactory.kt @@ -133,8 +133,8 @@ public open class LookupElementFactory protected() { 1 -> { val parameterType = parameters.single().getType() - if (KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(parameterType)) { - val parameterCount = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(parameterType).size() + if (KotlinBuiltIns.isFunctionOrExtensionFunctionType(parameterType)) { + val parameterCount = KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(parameterType).size() if (parameterCount <= 1) { // otherwise additional item with lambda template is to be added return KotlinFunctionInsertHandler(CaretPosition.IN_BRACKETS, GenerateLambdaInfo(parameterType, false)) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt index 4da20a09e5b..9acdce70c21 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/LookupElementsCollector.kt @@ -79,8 +79,8 @@ class LookupElementsCollector( val parameters = descriptor.getValueParameters() if (parameters.size() == 1) { val parameterType = parameters.get(0).getType() - if (KotlinBuiltIns.getInstance().isFunctionOrExtensionFunctionType(parameterType)) { - val parameterCount = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(parameterType).size() + if (KotlinBuiltIns.isFunctionOrExtensionFunctionType(parameterType)) { + val parameterCount = KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(parameterType).size() if (parameterCount > 1) { val lookupElement = boldImmediateLookupElementFactory.createLookupElement(resolutionFacade, descriptor) addElement(object : LookupElementDecorator(lookupElement) { diff --git a/idea/src/org/jetbrains/jet/plugin/completion/handlers/GenerateLambda.kt b/idea/src/org/jetbrains/jet/plugin/completion/handlers/GenerateLambda.kt index 599e3983eb4..dd64f842ac3 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/handlers/GenerateLambda.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/handlers/GenerateLambda.kt @@ -86,11 +86,11 @@ private fun needExplicitParameterTypes(context: InsertionContext, placeholderRan val resolutionFacade = file.getResolutionFacade() val bindingContext = resolutionFacade.analyzeWithPartialBodyResolve(expression) val expectedInfos = ExpectedInfos(bindingContext, resolutionFacade).calculate(expression) ?: return false - val functionTypes = expectedInfos.map { it.type }.filter { KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(it) }.toSet() + val functionTypes = expectedInfos.map { it.type }.filter { KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(it) }.toSet() if (functionTypes.size <= 1) return false - val lambdaParameterCount = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(lambdaType).size - return functionTypes.filter { KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(it).size == lambdaParameterCount }.size > 1 + val lambdaParameterCount = KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(lambdaType).size + return functionTypes.filter { KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(it).size == lambdaParameterCount }.size > 1 } private fun buildTemplate(lambdaType: JetType, explicitParameterTypes: Boolean, project: Project): Template { @@ -138,4 +138,4 @@ private class ParameterNameExpression(val nameSuggestions: Array) : Expr } fun functionParameterTypes(functionType: JetType): List - = KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(functionType).map { it.getType() } + = KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(functionType).map { it.getType() } diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/LambdaItems.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/LambdaItems.kt index 195b2fcb6a7..430a61b418a 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/LambdaItems.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/LambdaItems.kt @@ -31,7 +31,7 @@ object LambdaItems { val distinctTypes = functionExpectedInfos.map { it.type }.toSet() val singleType = if (distinctTypes.size == 1) distinctTypes.single() else null - val singleSignatureLength = singleType?.let { KotlinBuiltIns.getInstance().getParameterTypeProjectionsFromFunctionType(it).size } + val singleSignatureLength = singleType?.let { KotlinBuiltIns.getParameterTypeProjectionsFromFunctionType(it).size } val offerNoParametersLambda = singleSignatureLength == 0 || singleSignatureLength == 1 if (offerNoParametersLambda) { val lookupElement = LookupElementBuilder.create("{...}") diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt index 050a19797a3..8b7c879c25f 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/SmartCompletion.kt @@ -119,7 +119,7 @@ class SmartCompletion(val expression: JetSimpleNameExpression, val itemsToSkip = calcItemsToSkip(expressionWithType) - val functionExpectedInfos = expectedInfos.filter { KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(it.type) } + val functionExpectedInfos = expectedInfos.filter { KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(it.type) } fun filterDeclaration(descriptor: DeclarationDescriptor): Collection { val result = ArrayList() diff --git a/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt b/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt index 19b72b672e3..7111ddc3930 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/smart/TypeInstantiationItems.kt @@ -87,7 +87,7 @@ class TypeInstantiationItems( type: JetType, tail: Tail? ) { - if (KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(type)) return // do not show "object: ..." for function types + if (KotlinBuiltIns.isExactFunctionOrExtensionFunctionType(type)) return // do not show "object: ..." for function types val classifier = type.getConstructor().getDeclarationDescriptor() if (classifier !is ClassDescriptor) return @@ -97,7 +97,7 @@ class TypeInstantiationItems( val typeArgs = type.getArguments() items.addIfNotNull(createTypeInstantiationItem(classifier, typeArgs, tail)) - if (!KotlinBuiltIns.getInstance().isAny(classifier)) { // do not search inheritors of Any + if (!KotlinBuiltIns.isAny(classifier)) { // do not search inheritors of Any inheritanceSearchers.addInheritorSearcher(classifier, classifier, typeArgs, tail) val javaAnalogFqName = KotlinToJavaTypesMap.getInstance().getKotlinToJavaFqName(DescriptorUtils.getFqNameSafe(classifier))