diff --git a/src/main/java/intellij_awk/psi/AwkElementFactory.java b/src/main/java/intellij_awk/psi/AwkElementFactory.java index f39a9d5..f52394b 100644 --- a/src/main/java/intellij_awk/psi/AwkElementFactory.java +++ b/src/main/java/intellij_awk/psi/AwkElementFactory.java @@ -18,6 +18,11 @@ public static AwkFunctionName createFunctionName(Project project, String name) { return createAwkPsiElement(project, "function " + name + "(){}", AwkFunctionName.class); } + public static AwkStr createString(Project project, String str) { + return createAwkPsiElement( + project, "{ a = \"" + str.replace("\"", "\\\"") + "\" }", AwkStr.class); + } + public static AwkItem createFunctionItem(Project project, String name) { return createAwkPsiElement(project, "function " + name + "(){}", AwkItem.class); } diff --git a/src/main/java/intellij_awk/psi/AwkStringMixin.java b/src/main/java/intellij_awk/psi/AwkStringMixin.java index 180b671..049f978 100644 --- a/src/main/java/intellij_awk/psi/AwkStringMixin.java +++ b/src/main/java/intellij_awk/psi/AwkStringMixin.java @@ -37,7 +37,7 @@ static boolean canBeFunctionName(String s) { } public PsiElement setName(String newName) { - return replaceNameNode(AwkElementFactory.createFunctionCallName(getProject(), newName)); + return replaceNameNode(AwkElementFactory.createString(getProject(), newName)); } @Override diff --git a/src/test/java/intellij_awk/AwkRenameTests.java b/src/test/java/intellij_awk/AwkRenameTests.java index 40f6215..82d1e79 100644 --- a/src/test/java/intellij_awk/AwkRenameTests.java +++ b/src/test/java/intellij_awk/AwkRenameTests.java @@ -12,6 +12,7 @@ public class AwkRenameTests extends BasePlatformTestCase { public void testVars6() { checkByFile(); } public void testVars7() { checkByFile(); } public void testFunc1() { checkByFile(); } + public void testFuncRef() { checkByFile(); } public void testIndirect1() { checkByFile(); } @Override diff --git a/src/test/testData/rename/funcRef.awk b/src/test/testData/rename/funcRef.awk new file mode 100644 index 0000000..a5408b8 --- /dev/null +++ b/src/test/testData/rename/funcRef.awk @@ -0,0 +1,8 @@ +BEGIN { + a = "fname" + b("fname") + substr("fname") + print "fname" +} +function b() {} +function fname() {} \ No newline at end of file diff --git a/src/test/testData/rename/funcRefAfter.awk b/src/test/testData/rename/funcRefAfter.awk new file mode 100644 index 0000000..69a0b56 --- /dev/null +++ b/src/test/testData/rename/funcRefAfter.awk @@ -0,0 +1,8 @@ +BEGIN { + a = "newName" + b("newName") + substr("fname") + print "fname" +} +function b() {} +function newName() {} \ No newline at end of file