[InlayParameterHints] show param name for this argument

This commit is contained in:
Yaroslav Lepenkin
2016-09-22 15:37:59 +03:00
parent 58362705a6
commit fd6fa85527
2 changed files with 26 additions and 4 deletions
@@ -59,7 +59,7 @@ public class ParameterNameHintsManager {
myDescriptors = descriptors;
}
static boolean isLiteralExpression(@Nullable PsiElement callArgument) {
static boolean isUnclearExpression(@Nullable PsiElement callArgument) {
if (callArgument instanceof PsiLiteralExpression)
return true;
@@ -70,6 +70,10 @@ public class ParameterNameHintsManager {
|| JavaTokenType.PLUS.equals(tokenType)) && expr.getOperand() instanceof PsiLiteralExpression;
}
if (callArgument instanceof PsiThisExpression) {
return true;
}
return false;
}
@@ -150,7 +154,7 @@ public class ParameterNameHintsManager {
return true;
}
if (isLiteralExpression(argument)) {
if (isUnclearExpression(argument)) {
PsiType parameterType = resolveResult.getSubstitutor().substitute(paramType);
return TypeConversionUtil.isAssignable(parameterType, argType);
}
@@ -166,7 +170,7 @@ public class ParameterNameHintsManager {
private static boolean hasLiteralInVarargs(int index, PsiExpression[] callArguments) {
for (int i = index; i < callArguments.length; i++) {
PsiExpression arg = callArguments[i];
if (isLiteralExpression(arg)) return true;
if (isUnclearExpression(arg)) return true;
}
return false;
}
@@ -178,7 +182,7 @@ public class ParameterNameHintsManager {
private static boolean hasLiteralExpression(@NotNull PsiExpression[] arguments) {
for (PsiExpression argument : arguments) {
if (isLiteralExpression(argument)) return true;
if (isUnclearExpression(argument)) return true;
}
return false;
}
@@ -424,6 +424,24 @@ public class VarArgTest {
onLineStartingWith("check(")
.assertInlays("beginIndex->10", "endIndex->1000", """x->"su"""" )
}
fun `test inline this`() {
setup("""
public class VarArgTest {
public void main() {
check(this, 1000);
}
public void check(VarArgTest test, int endIndex) {
}
}
""")
onLineStartingWith("check(t")
.assertInlays("test->this", "endIndex->1000")
}
private fun onLineStartingWith(text: String): InlayAssert {