Fixed keywords after 'this@' completion + fixed implementation of JetExpressionWithLabel.getLabelName()
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.psi
|
||||
|
||||
import com.intellij.lang.ASTNode
|
||||
import org.jetbrains.kotlin.JetNodeTypes
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
open public class JetExpressionWithLabel(node: ASTNode) : JetExpressionImpl(node) {
|
||||
|
||||
@@ -25,7 +26,8 @@ open public class JetExpressionWithLabel(node: ASTNode) : JetExpressionImpl(node
|
||||
findChildByType<JetContainerNode>(JetNodeTypes.LABEL_QUALIFIER)?.
|
||||
findChildByType(JetNodeTypes.LABEL) as? JetSimpleNameExpression
|
||||
|
||||
public fun getLabelName(): String? = getTargetLabel()?.getIdentifier()?.getText()
|
||||
public fun getLabelName(): String? = getTargetLabel()?.getReferencedName()
|
||||
public fun getLabelNameAsName(): Name? = getTargetLabel()?.getReferencedNameAsName()
|
||||
|
||||
override fun <R, D> accept(visitor: JetVisitor<R, D>, data: D) = visitor.visitExpressionWithLabel(this, data)
|
||||
}
|
||||
|
||||
+2
-2
@@ -429,10 +429,10 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
|
||||
ExpressionTypingContext context,
|
||||
boolean onlyClassReceivers
|
||||
) {
|
||||
String labelName = expression.getLabelName();
|
||||
Name labelName = expression.getLabelNameAsName();
|
||||
if (labelName != null) {
|
||||
LabelResolver.LabeledReceiverResolutionResult resolutionResult =
|
||||
LabelResolver.INSTANCE.resolveThisOrSuperLabel(expression, context, Name.identifier(labelName));
|
||||
LabelResolver.INSTANCE.resolveThisOrSuperLabel(expression, context, labelName);
|
||||
if (resolutionResult.success()) {
|
||||
ReceiverParameterDescriptor receiverParameterDescriptor = resolutionResult.getReceiverParameterDescriptor();
|
||||
recordThisOrSuperCallInTraceAndCallExtension(context, receiverParameterDescriptor, expression);
|
||||
|
||||
@@ -57,9 +57,9 @@ public class LabelResolver {
|
||||
@Nullable
|
||||
private Name getLabelNameIfAny(@NotNull PsiElement element) {
|
||||
if (element instanceof JetLabeledExpression) {
|
||||
String labelName = ((JetLabeledExpression) element).getLabelName();
|
||||
Name labelName = ((JetLabeledExpression) element).getLabelNameAsName();
|
||||
if (labelName != null) {
|
||||
return Name.identifier(labelName);
|
||||
return labelName;
|
||||
}
|
||||
}
|
||||
if (element instanceof JetFunctionLiteralExpression) {
|
||||
@@ -126,10 +126,9 @@ public class LabelResolver {
|
||||
@NotNull ResolutionContext context
|
||||
) {
|
||||
JetSimpleNameExpression labelElement = expression.getTargetLabel();
|
||||
String name = expression.getLabelName();
|
||||
if (labelElement == null || name == null) return null;
|
||||
Name labelName = expression.getLabelNameAsName();
|
||||
if (labelElement == null || labelName == null) return null;
|
||||
|
||||
Name labelName = Name.identifier(name);
|
||||
Collection<DeclarationDescriptor> declarationsByLabel = context.scope.getDeclarationsByLabel(labelName);
|
||||
int size = declarationsByLabel.size();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user