Add 'operator' keyword

This commit is contained in:
Yan Zhulanow
2015-09-16 19:59:02 +03:00
parent 4a32993cc3
commit bc727a170b
58 changed files with 179 additions and 54 deletions
@@ -176,6 +176,7 @@ public interface JetTokens {
JetModifierKeywordToken EXTERNAL_KEYWORD = JetModifierKeywordToken.softKeywordModifier("external");
JetModifierKeywordToken ANNOTATION_KEYWORD = JetModifierKeywordToken.softKeywordModifier("annotation");
JetModifierKeywordToken CROSSINLINE_KEYWORD = JetModifierKeywordToken.softKeywordModifier("crossinline");
JetModifierKeywordToken OPERATOR_KEYWORD = JetModifierKeywordToken.softKeywordModifier("operator");
JetModifierKeywordToken CONST_KEYWORD = JetModifierKeywordToken.softKeywordModifier("const");
@@ -196,7 +197,7 @@ public interface JetTokens {
FIELD_KEYWORD, PROPERTY_KEYWORD, RECEIVER_KEYWORD, PARAM_KEYWORD, SPARAM_KEYWORD,
LATE_INIT_KEYWORD,
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD,
ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, CONST_KEYWORD
ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD, CONST_KEYWORD, OPERATOR_KEYWORD
);
/*
@@ -210,7 +211,7 @@ public interface JetTokens {
PUBLIC_KEYWORD, INTERNAL_KEYWORD, PROTECTED_KEYWORD, OUT_KEYWORD, IN_KEYWORD, FINAL_KEYWORD, VARARG_KEYWORD,
REIFIED_KEYWORD, COMPANION_KEYWORD, SEALED_KEYWORD, LATE_INIT_KEYWORD,
DATA_KEYWORD, INLINE_KEYWORD, NOINLINE_KEYWORD, TAILREC_KEYWORD, EXTERNAL_KEYWORD, ANNOTATION_KEYWORD, CROSSINLINE_KEYWORD,
CONST_KEYWORD
CONST_KEYWORD, OPERATOR_KEYWORD
};
// Please synchronize this array with org.jetbrains.kotlin.descriptors.annotations.ANNOTATION_MODIFIERS_FQ_NAMES
@@ -34,7 +34,7 @@ import org.jetbrains.kotlin.psi.stubs.KotlinFileStub;
import java.io.IOException;
public class JetFileElementType extends IStubFileElementType<KotlinFileStub> {
public static final int STUB_VERSION = 58;
public static final int STUB_VERSION = 59;
private static final String NAME = "kotlin.FILE";
@@ -241,7 +241,8 @@ public class DescriptorResolver {
Collections.<ValueParameterDescriptor>emptyList(),
returnType,
Modality.FINAL,
property.getVisibility()
property.getVisibility(),
false
);
trace.record(BindingContext.DATA_CLASS_COMPONENT_FUNCTION, parameter, functionDescriptor);
@@ -289,7 +290,8 @@ public class DescriptorResolver {
parameterDescriptors,
returnType,
Modality.FINAL,
Visibilities.PUBLIC
Visibilities.PUBLIC,
false
);
trace.record(BindingContext.DATA_CLASS_COPY_FUNCTION, classDescriptor, functionDescriptor);
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl.create
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
import org.jetbrains.kotlin.diagnostics.DiagnosticUtils
import org.jetbrains.kotlin.diagnostics.Errors.*
import org.jetbrains.kotlin.lexer.JetTokens
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.DescriptorResolver.*
@@ -170,7 +171,8 @@ class FunctionDescriptorResolver(
valueParameterDescriptors,
returnType,
modality,
visibility
visibility,
function.hasModifier(JetTokens.OPERATOR_KEYWORD)
)
receiverType?.let { ForceResolveUtil.forceResolveAllContents(it.getAnnotations()) }
for (valueParameterDescriptor in valueParameterDescriptors) {
@@ -103,7 +103,8 @@ public class FunctionDescriptorUtil {
KotlinBuiltIns.getValueParameters(functionDescriptor, functionType),
KotlinBuiltIns.getReturnTypeFromFunctionType(functionType),
modality,
visibility);
visibility,
false);
}
public static <D extends CallableDescriptor> D alphaConvertTypeParameters(D candidate) {
@@ -155,7 +156,8 @@ public class FunctionDescriptorUtil {
parameters,
function.getReturnType(),
function.getModality(),
function.getVisibility());
function.getVisibility(),
function.isOperator());
return descriptor;
}
}
@@ -66,7 +66,8 @@ public object ModifierCheckerCore {
EXTERNAL_KEYWORD to EnumSet.of(FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER),
ANNOTATION_KEYWORD to EnumSet.of(ANNOTATION_CLASS),
CROSSINLINE_KEYWORD to EnumSet.of(VALUE_PARAMETER),
CONST_KEYWORD to EnumSet.of(MEMBER_PROPERTY, TOP_LEVEL_PROPERTY)
CONST_KEYWORD to EnumSet.of(MEMBER_PROPERTY, TOP_LEVEL_PROPERTY),
OPERATOR_KEYWORD to EnumSet.of(FUNCTION)
)
// NOTE: redundant targets must be possible!
@@ -129,7 +129,8 @@ object DynamicCallableDescriptors {
createValueParameters(functionDescriptor, call),
DynamicType,
Modality.FINAL,
Visibilities.PUBLIC
Visibilities.PUBLIC,
false
)
return functionDescriptor
}
@@ -80,7 +80,8 @@ private fun createSynthesizedFunctionWithFirstParameterAsReceiver(descriptor: Fu
},
original.getReturnType(),
original.getModality(),
original.getVisibility()
original.getVisibility(),
original.isOperator
)
return result
@@ -124,7 +124,8 @@ public class ControlStructureTypingUtils {
valueParameters,
type,
Modality.FINAL,
Visibilities.PUBLIC
Visibilities.PUBLIC,
false
);
return function;
}