From 9acb754e7fa13c9b228d5dfbe9a75780b3ff9246 Mon Sep 17 00:00:00 2001 From: Oliver Nybroe Date: Wed, 4 Nov 2020 13:18:18 +0100 Subject: [PATCH] Closure to arrow function --- CHANGELOG.md | 8 +- README.md | 4 + art/usage/closureToArrow.gif | Bin 0 -> 139005 bytes src/main/kotlin/dev/nybroe/collector/Util.kt | 32 ++++--- .../ClosureToArrowFunctionInspection.kt | 85 ++++++++++++++++++ .../MapFlattenToFlatMapInspection.kt | 2 +- .../ClosureToArrowFunctionQuickFix.kt | 58 ++++++++++++ src/main/resources/META-INF/plugin.xml | 11 +++ .../resources/messages/MyBundle.properties | 3 + .../ClosureToArrowFunctionInspectionTest.kt | 46 ++++++++++ ...ll-to-arrow-function-with-return.after.php | 9 ++ ...ion-call-to-arrow-function-with-return.php | 11 +++ ...call-to-arrow-function-with-uses.after.php | 11 +++ ...ction-call-to-arrow-function-with-uses.php | 13 +++ ...-function-call-to-arrow-function.after.php | 9 ++ .../each-function-call-to-arrow-function.php | 11 +++ ...h-function-call-to-arrow-function-echo.php | 11 +++ ...function-call-to-arrow-function-php730.php | 11 +++ ...-arrow-function-with-uses-by-reference.php | 13 +++ ...ll-to-arrow-function-not-in-collection.php | 13 +++ 20 files changed, 343 insertions(+), 18 deletions(-) create mode 100644 art/usage/closureToArrow.gif create mode 100644 src/main/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspection.kt create mode 100644 src/main/kotlin/dev/nybroe/collector/quickFixes/ClosureToArrowFunctionQuickFix.kt create mode 100644 src/test/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspectionTest.kt create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.after.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.after.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.after.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-echo.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-php730.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-with-uses-by-reference.php create mode 100644 src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/function-call-to-arrow-function-not-in-collection.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c73fa9..e341ca8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,17 +4,11 @@ ## [Unreleased] ### Added - -### Changed - -### Deprecated - -### Removed +- Added closure to arrow function inside collection ### Fixed - Fixed foreach refactoring. `use` statement contains empty variable when expression inside string interpolation. -### Security ## [0.0.1-EAP.6] ### Fixed - Fixed foreach refactoring. `use` statement missing array variable when used in foreach. diff --git a/README.md b/README.md index 502ffbf..d02ae89 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,10 @@ However, if you would like to enforce yourself to never use `foreach`, you can c ### Remove nested collections ![recursive-collection-example](https://github.com/olivernybroe/collector-intellij/blob/main/art/usage/recursiveCollection.gif) +## Closure to arrow functions +![closure-to-arrow-example](https://github.com/olivernybroe/collector-intellij/blob/main/art/usage/closureToArrow.gif) + + ## Credits - [Oliver Nybroe](https://github.com/olivernybroe) diff --git a/art/usage/closureToArrow.gif b/art/usage/closureToArrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..07f846de062402d887d6611a5ca1a194fa377975 GIT binary patch literal 139005 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

D%0r(7h1Hx!U359HazQMn0`qU?DxY=YO2 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 b3E3zm2XnsjnoX{&0~wMhTHGX&fc*afbEc$c literal 0 HcmV?d00001 diff --git a/src/main/kotlin/dev/nybroe/collector/Util.kt b/src/main/kotlin/dev/nybroe/collector/Util.kt index 81ea5b9..44cd1c4 100644 --- a/src/main/kotlin/dev/nybroe/collector/Util.kt +++ b/src/main/kotlin/dev/nybroe/collector/Util.kt @@ -1,26 +1,38 @@ package dev.nybroe.collector +import com.jetbrains.php.lang.psi.elements.Function import com.jetbrains.php.lang.psi.elements.FunctionReference import com.jetbrains.php.lang.psi.elements.Method import com.jetbrains.php.lang.psi.elements.MethodReference import com.jetbrains.php.lang.psi.elements.PhpClass import com.jetbrains.php.lang.psi.elements.PhpReference +import com.jetbrains.php.lang.psi.elements.impl.FunctionImpl +import com.jetbrains.php.lang.psi.resolve.types.PhpType fun FunctionReference.isGlobalFunctionCallWithName(name: String): Boolean { return this.name == name } -fun PhpClass.isCollectionClass(): Boolean { - return this.fqn == "\\Illuminate\\Support\\Collection" -} +val PhpClass.isCollectionClass: Boolean + get() = this.fqn == "\\Illuminate\\Support\\Collection" -fun Method.isCollectionMethod(): Boolean { - return this.containingClass?.isCollectionClass() ?: false -} +val Method.isCollectionMethod: Boolean + get() = this.containingClass?.isCollectionClass ?: false -fun MethodReference.isCollectionMethod(): Boolean { - return (this.resolve() as? Method)?.isCollectionMethod() ?: false -} +val MethodReference.isCollectionMethod: Boolean + get() = (this.resolve() as? Method)?.isCollectionMethod ?: false + +val Function.returnsCollection: Boolean + get() = this.type.global(this.project).isCollection + +val FunctionReference.returnsCollection: Boolean + get() = (this.resolve() as? Function)?.returnsCollection ?: false val PhpReference.isCollectionType: Boolean - get() = this.type.global(this.project).types.contains("\\Illuminate\\Support\\Collection") + get() = this.type.global(this.project).isCollection + +val Function.isShortArrowFunction: Boolean + get() = FunctionImpl.isShortArrowFunction(this) + +val PhpType.isCollection: Boolean + get() = this.types.contains("\\Illuminate\\Support\\Collection") diff --git a/src/main/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspection.kt b/src/main/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspection.kt new file mode 100644 index 0000000..eeccd70 --- /dev/null +++ b/src/main/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspection.kt @@ -0,0 +1,85 @@ +package dev.nybroe.collector.inspections + +import com.intellij.codeInspection.ProblemHighlightType +import com.intellij.codeInspection.ProblemsHolder +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiElementVisitor +import com.intellij.psi.util.elementType +import com.jetbrains.php.config.PhpLanguageFeature +import com.jetbrains.php.lang.inspections.PhpInspection +import com.jetbrains.php.lang.lexer.PhpTokenTypes +import com.jetbrains.php.lang.psi.PhpPsiUtil +import com.jetbrains.php.lang.psi.elements.Function +import com.jetbrains.php.lang.psi.elements.FunctionReference +import com.jetbrains.php.lang.psi.elements.GroupStatement +import com.jetbrains.php.lang.psi.elements.ParameterList +import com.jetbrains.php.lang.psi.elements.PhpUseList +import com.jetbrains.php.lang.psi.visitors.PhpElementVisitor +import dev.nybroe.collector.MyBundle +import dev.nybroe.collector.isShortArrowFunction +import dev.nybroe.collector.quickFixes.ClosureToArrowFunctionQuickFix +import dev.nybroe.collector.returnsCollection + +class ClosureToArrowFunctionInspection : PhpInspection() { + override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor { + return object : PhpElementVisitor() { + override fun visitPhpFunction(closure: Function) { + // Check that the PHP version supports arrow functions + if (!PhpLanguageFeature.ARROW_FUNCTION_SYNTAX.isSupported(closure.project)) { + return + } + + // Make sure we are in a closure + if (!closure.isClosure) { + return + } + + // And not already using arrow functions + if (closure.isShortArrowFunction) { + return + } + + // And no use arguments are by reference + if (useByReferenceExists(closure)) { + return + } + + // And closure is inside a collection. + val methodReference = PhpPsiUtil + .getParentByCondition(closure, ParameterList.INSTANCEOF)?.parent ?: return + val functionReference = PhpPsiUtil + .getChildByCondition(methodReference, FunctionReference.INSTANCEOF) ?: return + if (!functionReference.returnsCollection) { + return + } + + // Get the closure body and make sure the size is 1 + val body = PhpPsiUtil.getChildByCondition(closure, GroupStatement.INSTANCEOF) ?: return + + if (body.statements.size != 1) { + return + } + + // And cannot be done on echo call + if (body.statements[0].firstChild.elementType === PhpTokenTypes.kwECHO) { + return + } + + holder.registerProblem( + closure, + MyBundle.message("closureToArrowFunctionDescription"), + ProblemHighlightType.WEAK_WARNING, + ClosureToArrowFunctionQuickFix() + ) + } + } + } + + private fun useByReferenceExists(closure: Function): Boolean { + val useList = PhpPsiUtil + .getChildByCondition(closure, PhpUseList.INSTANCEOF) as PhpUseList? ?: return false + + return useList.children + .any { it.prevSibling.elementType === PhpTokenTypes.opBIT_AND } + } +} diff --git a/src/main/kotlin/dev/nybroe/collector/inspections/MapFlattenToFlatMapInspection.kt b/src/main/kotlin/dev/nybroe/collector/inspections/MapFlattenToFlatMapInspection.kt index 00db44c..7bd4891 100644 --- a/src/main/kotlin/dev/nybroe/collector/inspections/MapFlattenToFlatMapInspection.kt +++ b/src/main/kotlin/dev/nybroe/collector/inspections/MapFlattenToFlatMapInspection.kt @@ -17,7 +17,7 @@ class MapFlattenToFlatMapInspection : PhpInspection() { return object : PhpElementVisitor() { override fun visitPhpMethodReference(reference: MethodReference) { // Check that method reference is collection method. - if (!reference.isCollectionMethod()) { + if (!reference.isCollectionMethod) { return } diff --git a/src/main/kotlin/dev/nybroe/collector/quickFixes/ClosureToArrowFunctionQuickFix.kt b/src/main/kotlin/dev/nybroe/collector/quickFixes/ClosureToArrowFunctionQuickFix.kt new file mode 100644 index 0000000..94f97e4 --- /dev/null +++ b/src/main/kotlin/dev/nybroe/collector/quickFixes/ClosureToArrowFunctionQuickFix.kt @@ -0,0 +1,58 @@ +package dev.nybroe.collector.quickFixes + +import com.intellij.codeInspection.LocalQuickFix +import com.intellij.codeInspection.ProblemDescriptor +import com.intellij.openapi.project.Project +import com.intellij.psi.PsiElement +import com.intellij.psi.util.elementType +import com.jetbrains.php.lang.lexer.PhpTokenTypes +import com.jetbrains.php.lang.psi.PhpPsiElementFactory +import com.jetbrains.php.lang.psi.PhpPsiUtil +import com.jetbrains.php.lang.psi.elements.Function +import com.jetbrains.php.lang.psi.elements.GroupStatement +import com.jetbrains.php.lang.psi.elements.PhpUseList + +class ClosureToArrowFunctionQuickFix : LocalQuickFix { + companion object { + const val QUICK_FIX_NAME = "Closure can be converted to arrow function" + } + + override fun getFamilyName(): String { + return QUICK_FIX_NAME + } + + override fun applyFix(project: Project, descriptor: ProblemDescriptor) { + val closure = descriptor.psiElement as? Function ?: return + + val body = PhpPsiUtil.getChildByCondition(closure, GroupStatement.INSTANCEOF) ?: return + + // Replace `function` with `fn` + val functionKeyword = closure.node.findChildByType(PhpTokenTypes.kwFUNCTION)?.psi ?: return + functionKeyword.replace(PhpPsiElementFactory.createFromText(project, PhpTokenTypes.kwFN, "fn()")) + + // Replace body with dummy arrow function + val arrow = body.replace(PhpPsiElementFactory.createFromText(project, PhpTokenTypes.opHASH_ARRAY, "fn() => 1")) + + // Add body + arrow.parent.addAfter(copyBody(body), arrow) + + // Delete use list + PhpPsiUtil.getChildByCondition(closure, PhpUseList.INSTANCEOF)?.delete() + } + + private fun copyBody(body: GroupStatement): PsiElement { + val statement = body.statements[0].copy() + + // Delete semi colon + if (statement.lastChild.elementType === PhpTokenTypes.opSEMICOLON) { + statement.lastChild.delete() + } + + // Delete return keyword if exist + if (statement.firstChild.elementType === PhpTokenTypes.kwRETURN) { + statement.firstChild.delete() + } + + return statement + } +} diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 2c99a1d..11c3bff 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -52,5 +52,16 @@ key="collectFunctionInCollectionInspectionDisplayName" implementationClass="dev.nybroe.collector.inspections.CollectFunctionInCollectionInspection" /> + + diff --git a/src/main/resources/messages/MyBundle.properties b/src/main/resources/messages/MyBundle.properties index 431adbe..d6153ca 100644 --- a/src/main/resources/messages/MyBundle.properties +++ b/src/main/resources/messages/MyBundle.properties @@ -10,5 +10,8 @@ arrayMapToCollectionDescription='array_map' used instead of 'Collection' mapFlattenToFlatMapDisplayName='map()->flatten()' used instead of 'flatmap()' mapFlattenToFlatMapDescription='map()->flatten()' used instead of 'flatmap()' +closureToArrowFunctionDisplayName=Closure can be converted to arrow function +closureToArrowFunctionDescription=Closure can be converted to arrow function + collectFunctionInCollectionInspectionDisplayName=Recursive call on collection collectFunctionInCollectionInspectionDescription=Recursive call on collection \ No newline at end of file diff --git a/src/test/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspectionTest.kt b/src/test/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspectionTest.kt new file mode 100644 index 0000000..b123088 --- /dev/null +++ b/src/test/kotlin/dev/nybroe/collector/inspections/ClosureToArrowFunctionInspectionTest.kt @@ -0,0 +1,46 @@ +package dev.nybroe.collector.inspections + +import com.intellij.codeInspection.InspectionProfileEntry +import com.jetbrains.php.config.PhpLanguageLevel +import com.jetbrains.php.config.PhpProjectConfigurationFacade +import dev.nybroe.collector.quickFixes.ClosureToArrowFunctionQuickFix + +internal class ClosureToArrowFunctionInspectionTest : InspectionTest() { + override fun defaultInspection(): InspectionProfileEntry = ClosureToArrowFunctionInspection() + override fun defaultAction(): String = ClosureToArrowFunctionQuickFix.QUICK_FIX_NAME + + fun testEachFunctionCallToArrow() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP740 + doTest("each-function-call-to-arrow-function") + } + + fun testEachFunctionCallToArrowWithUses() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP740 + doTest("each-function-call-to-arrow-function-with-uses") + } + + fun testEachFunctionCallToArrowNotOnPHP730() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP730 + doNotMatchTest("each-function-call-to-arrow-function-php730") + } + + fun testEachFunctionCallToArrowWithReturn() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP740 + doTest("each-function-call-to-arrow-function-with-return") + } + + fun testEachFunctionCallToArrowNotOnUsesByReference() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP740 + doNotMatchTest("each-function-call-to-arrow-function-with-uses-by-reference") + } + + fun testEachFunctionCallToArrowNotOnEchoCall() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP740 + doNotMatchTest("each-function-call-to-arrow-function-echo") + } + + fun testFunctionCallToArrowFunctionNotOnNonCollectionFunctions() { + PhpProjectConfigurationFacade.getInstance(project).languageLevel = PhpLanguageLevel.PHP740 + doNotMatchTest("function-call-to-arrow-function-not-in-collection") + } +} diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.after.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.after.php new file mode 100644 index 0000000..de59bef --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.after.php @@ -0,0 +1,9 @@ +each(fn($item) => doAction($item)); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.php new file mode 100644 index 0000000..8d9aad3 --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-return.php @@ -0,0 +1,11 @@ +each(function ($item) { + return doAction($item); +}); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.after.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.after.php new file mode 100644 index 0000000..9f04a8c --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.after.php @@ -0,0 +1,11 @@ +each(fn($item) => doAction($item, $name)); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.php new file mode 100644 index 0000000..b05c44c --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function-with-uses.php @@ -0,0 +1,13 @@ +each(function ($item) use ($name) { + doAction($item, $name); +}); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.after.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.after.php new file mode 100644 index 0000000..de59bef --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.after.php @@ -0,0 +1,9 @@ +each(fn($item) => doAction($item)); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.php new file mode 100644 index 0000000..f3b1919 --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/each-function-call-to-arrow-function.php @@ -0,0 +1,11 @@ +each(function ($item) { + doAction($item); +}); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-echo.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-echo.php new file mode 100644 index 0000000..79a4d06 --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-echo.php @@ -0,0 +1,11 @@ +each(function ($item) { + echo doAction($item); +}); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-php730.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-php730.php new file mode 100644 index 0000000..fa78cf2 --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-php730.php @@ -0,0 +1,11 @@ +each(function ($item) { + doAction($item); +}); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-with-uses-by-reference.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-with-uses-by-reference.php new file mode 100644 index 0000000..1712db5 --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/each-function-call-to-arrow-function-with-uses-by-reference.php @@ -0,0 +1,13 @@ +each(function ($item) use (&$name) { + doAction($item, $name); +}); diff --git a/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/function-call-to-arrow-function-not-in-collection.php b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/function-call-to-arrow-function-not-in-collection.php new file mode 100644 index 0000000..923d248 --- /dev/null +++ b/src/test/resources/inspections/ClosureToArrowFunctionInspection/nonMatches/function-call-to-arrow-function-not-in-collection.php @@ -0,0 +1,13 @@ +each(function ($item) { + doAction($item); +}); + +collect($array)->map()->each(fn($item) => doAction($item));