mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Uast: guessCorrespondingParameter support for varargs (IDEA-CR-29257)
This commit is contained in:
@@ -29,6 +29,27 @@ class TestDataFileReferenceTest : TestDataReferenceTestCase() {
|
||||
assertResolvedTo(javaFile, "TestClass.java")
|
||||
}
|
||||
|
||||
fun testDataFileResolveVarags() {
|
||||
val testClass1 = myContentRootSubdir.writeChild("TestClass1.java", "some java code here")
|
||||
val testClass2 = myContentRootSubdir.writeChild("TestClass2.java", "some java code here")
|
||||
|
||||
myFixture.configureByText("ATest.java", """
|
||||
import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
|
||||
@com.intellij.testFramework.TestDataPath("${"\$"}CONTENT_ROOT/contentRootSubdir/")
|
||||
public class ATest extends LightCodeInsightFixtureTestCase {
|
||||
protected void doTest() {
|
||||
configureByFiles("TestClass1.java", "TestClass2.java");
|
||||
}
|
||||
|
||||
void configureByFiles(@com.intellij.testFramework.TestDataFile String... files){}
|
||||
}
|
||||
""".trimIndent())
|
||||
|
||||
assertResolvedTo(testClass1, "TestClass1.java")
|
||||
assertResolvedTo(testClass2, "TestClass2.java")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -184,7 +184,12 @@ fun guessCorrespondingParameter(callExpression: UCallExpression, arg: UExpressio
|
||||
val parameters = psiMethod.parameterList.parameters
|
||||
|
||||
if (callExpression is UCallExpressionEx)
|
||||
return parameters.withIndex().find { (i, _) -> callExpression.getArgumentForParameter(i) == arg }?.value
|
||||
return parameters.withIndex().find { (i, p) ->
|
||||
val argumentForParameter = callExpression.getArgumentForParameter(i) ?: return@find false
|
||||
if (argumentForParameter == arg) return@find true
|
||||
if (p.isVarArgs && argumentForParameter is UExpressionList) return@find argumentForParameter.expressions.contains(arg)
|
||||
return@find false
|
||||
}?.value
|
||||
|
||||
// not everyone implements UCallExpressionEx, lets try to guess
|
||||
val indexInArguments = callExpression.valueArguments.indexOf(arg)
|
||||
|
||||
Reference in New Issue
Block a user