Drop YIELD_IS_RESERVED diagnostic in 1.7.0 #KT-27750 Fixed
This commit is contained in:
committed by
teamcity
parent
0739925869
commit
61e0375900
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.cfg.pseudocode.instructions.eval.MagicKind.*
|
||||
import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.ConditionalJumpInstruction
|
||||
import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.ReturnValueInstruction
|
||||
import org.jetbrains.kotlin.cfg.pseudocode.instructions.jumps.ThrowExceptionInstruction
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.LocalVariableDescriptor
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -115,7 +116,9 @@ fun getExpectedTypePredicate(
|
||||
TracingStrategy.EMPTY,
|
||||
DataFlowInfoForArgumentsImpl(DataFlowInfo.EMPTY, call)
|
||||
)
|
||||
val status = ValueArgumentsToParametersMapper.mapValueArgumentsToParameters(call, TracingStrategy.EMPTY, candidateCall)
|
||||
val status = ValueArgumentsToParametersMapper.mapValueArgumentsToParameters(
|
||||
call, TracingStrategy.EMPTY, candidateCall, LanguageVersionSettingsImpl.DEFAULT
|
||||
)
|
||||
if (!status.isSuccess) continue
|
||||
|
||||
val candidateArgumentMap = candidateCall.valueArguments
|
||||
|
||||
@@ -255,7 +255,9 @@ class TypeResolver(
|
||||
|
||||
val referenceExpression = type.referenceExpression ?: return
|
||||
|
||||
checkReservedYield(referenceExpression, c.trace)
|
||||
if (!languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
checkReservedYield(referenceExpression, c.trace)
|
||||
}
|
||||
c.trace.record(BindingContext.REFERENCE_TARGET, referenceExpression, classifier)
|
||||
|
||||
result = resolveTypeForClassifier(c, classifier, qualifierResolutionResult, type, annotations)
|
||||
|
||||
@@ -138,7 +138,7 @@ class CandidateResolver(
|
||||
|
||||
private fun <D : CallableDescriptor> CallCandidateResolutionContext<D>.mapArguments() = check {
|
||||
val argumentMappingStatus = ValueArgumentsToParametersMapper.mapValueArgumentsToParameters(
|
||||
call, tracing, candidateCall
|
||||
call, tracing, candidateCall, languageVersionSettings
|
||||
)
|
||||
if (!argumentMappingStatus.isSuccess) {
|
||||
candidateCall.addStatus(ARGUMENTS_MAPPING_ERROR)
|
||||
|
||||
+16
-4
@@ -21,6 +21,8 @@ import kotlin.collections.CollectionsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.functions.FunctionInvokeDescriptor;
|
||||
import org.jetbrains.kotlin.config.LanguageFeature;
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
@@ -66,10 +68,11 @@ public class ValueArgumentsToParametersMapper {
|
||||
public static <D extends CallableDescriptor> Status mapValueArgumentsToParameters(
|
||||
@NotNull Call call,
|
||||
@NotNull TracingStrategy tracing,
|
||||
@NotNull MutableResolvedCall<D> candidateCall
|
||||
@NotNull MutableResolvedCall<D> candidateCall,
|
||||
@NotNull LanguageVersionSettings languageVersionSettings
|
||||
) {
|
||||
//return new ValueArgumentsToParametersMapper().process(call, tracing, candidateCall, unmappedArguments);
|
||||
Processor<D> processor = new Processor<>(call, candidateCall, tracing);
|
||||
Processor<D> processor = new Processor<>(call, candidateCall, tracing, languageVersionSettings);
|
||||
processor.process();
|
||||
return processor.status;
|
||||
}
|
||||
@@ -78,6 +81,7 @@ public class ValueArgumentsToParametersMapper {
|
||||
private final Call call;
|
||||
private final TracingStrategy tracing;
|
||||
private final MutableResolvedCall<D> candidateCall;
|
||||
private final LanguageVersionSettings languageVersionSettings;
|
||||
private final List<ValueParameterDescriptor> parameters;
|
||||
|
||||
private final Map<Name,ValueParameterDescriptor> parameterByName;
|
||||
@@ -87,11 +91,17 @@ public class ValueArgumentsToParametersMapper {
|
||||
private final Set<ValueParameterDescriptor> usedParameters = new HashSet<>();
|
||||
private Status status = OK;
|
||||
|
||||
private Processor(@NotNull Call call, @NotNull MutableResolvedCall<D> candidateCall, @NotNull TracingStrategy tracing) {
|
||||
private Processor(
|
||||
@NotNull Call call,
|
||||
@NotNull MutableResolvedCall<D> candidateCall,
|
||||
@NotNull TracingStrategy tracing,
|
||||
@NotNull LanguageVersionSettings languageVersionSettings
|
||||
) {
|
||||
this.call = call;
|
||||
this.tracing = tracing;
|
||||
this.candidateCall = candidateCall;
|
||||
this.parameters = candidateCall.getCandidateDescriptor().getValueParameters();
|
||||
this.languageVersionSettings = languageVersionSettings;
|
||||
|
||||
this.parameterByName = new HashMap<>();
|
||||
for (ValueParameterDescriptor valueParameter : parameters) {
|
||||
@@ -177,7 +187,9 @@ public class ValueArgumentsToParametersMapper {
|
||||
ValueParameterDescriptor valueParameterDescriptor = parameterByName.get(argumentName.getAsName());
|
||||
KtSimpleNameExpression nameReference = argumentName.getReferenceExpression();
|
||||
|
||||
ReservedCheckingKt.checkReservedYield(nameReference, candidateCall.getTrace());
|
||||
if (!languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
ReservedCheckingKt.checkReservedYield(nameReference, candidateCall.getTrace());
|
||||
}
|
||||
if (nameReference != null) {
|
||||
if (candidate instanceof MemberDescriptor && ((MemberDescriptor) candidate).isExpect() &&
|
||||
candidate.getContainingDeclaration() instanceof ClassDescriptor) {
|
||||
|
||||
+6
-2
@@ -166,7 +166,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
|
||||
@Override
|
||||
public KotlinTypeInfo visitSimpleNameExpression(@NotNull KtSimpleNameExpression expression, ExpressionTypingContext context) {
|
||||
ReservedCheckingKt.checkReservedYield(expression, context.trace);
|
||||
if (!components.languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
ReservedCheckingKt.checkReservedYield(expression, context.trace);
|
||||
}
|
||||
|
||||
// TODO : other members
|
||||
// TODO : type substitutions???
|
||||
@@ -884,7 +886,9 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
boolean isStatement
|
||||
) {
|
||||
KtSimpleNameExpression labelExpression = expression.getTargetLabel();
|
||||
ReservedCheckingKt.checkReservedYield(labelExpression, context.trace);
|
||||
if (!components.languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
ReservedCheckingKt.checkReservedYield(labelExpression, context.trace);
|
||||
}
|
||||
if (labelExpression != null) {
|
||||
PsiElement labelIdentifier = labelExpression.getIdentifier();
|
||||
UnderscoreChecker.INSTANCE.checkIdentifier(labelIdentifier, context.trace, components.languageVersionSettings);
|
||||
|
||||
+3
-1
@@ -743,7 +743,9 @@ class DoubleColonExpressionResolver(
|
||||
return when {
|
||||
resolutionResults.isNothing -> null
|
||||
else -> ResolutionResultsAndTraceCommitCallback(resolutionResults) {
|
||||
checkReservedYield(reference, outerContext.trace)
|
||||
if (!languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
checkReservedYield(reference, outerContext.trace)
|
||||
}
|
||||
if (resolutionMode != ResolveArgumentsMode.SHAPE_FUNCTION_ARGUMENTS || resolutionResults.isSuccess) {
|
||||
temporaryTrace.commit()
|
||||
}
|
||||
|
||||
+3
-1
@@ -149,7 +149,9 @@ internal class FunctionsTypingVisitor(facade: ExpressionTypingInternals) : Expre
|
||||
}
|
||||
|
||||
override fun visitLambdaExpression(expression: KtLambdaExpression, context: ExpressionTypingContext): KotlinTypeInfo? {
|
||||
checkReservedYieldBeforeLambda(expression, context.trace)
|
||||
if (!components.languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
checkReservedYieldBeforeLambda(expression, context.trace)
|
||||
}
|
||||
if (!expression.functionLiteral.hasBody()) return null
|
||||
|
||||
val expectedType = context.expectedType
|
||||
|
||||
@@ -116,7 +116,9 @@ object LabelResolver {
|
||||
|
||||
fun resolveControlLabel(expression: KtExpressionWithLabel, context: ResolutionContext<*>): KtElement? {
|
||||
val labelElement = expression.getTargetLabel()
|
||||
checkReservedYield(labelElement, context.trace)
|
||||
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.YieldIsNoMoreReserved)) {
|
||||
checkReservedYield(labelElement, context.trace)
|
||||
}
|
||||
|
||||
val labelName = expression.getLabelNameAsName()
|
||||
if (labelElement == null || labelName == null) return null
|
||||
|
||||
Reference in New Issue
Block a user