diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/assistant/signature/MethodSignatureTypeProvider.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/assistant/signature/MethodSignatureTypeProvider.java index 596db93a6..29edc6914 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/assistant/signature/MethodSignatureTypeProvider.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/assistant/signature/MethodSignatureTypeProvider.java @@ -11,6 +11,7 @@ import com.jetbrains.php.lang.psi.elements.StringLiteralExpression; import com.jetbrains.php.lang.psi.resolve.types.PhpType; import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3; +import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider4; import fr.adrienbrault.idea.symfony2plugin.Settings; import fr.adrienbrault.idea.symfony2plugin.extension.MethodSignatureTypeProviderExtension; import fr.adrienbrault.idea.symfony2plugin.extension.MethodSignatureTypeProviderParameter; @@ -27,7 +28,7 @@ * @author Adrien Brault * @author Daniel Espendiller */ -public class MethodSignatureTypeProvider implements PhpTypeProvider3 { +public class MethodSignatureTypeProvider implements PhpTypeProvider4 { final static char TRIM_KEY = '\u0181'; private static final ExtensionPointName EXTENSIONS = new ExtensionPointName<>("fr.adrienbrault.idea.symfony2plugin.extension.MethodSignatureTypeProviderExtension"); @@ -120,6 +121,11 @@ private Collection getSignatureSetting(String methodName return matchedSignatures; } + @Override + public PhpType complete(String expression, Project project) { + return null; + } + @Override public Collection getBySignature(String expression, Set visited, int depth, Project project) { // get back our original call diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/SymfonyContainerTypeProvider.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/SymfonyContainerTypeProvider.java index 7b66feedb..f3ca64892 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/SymfonyContainerTypeProvider.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/SymfonyContainerTypeProvider.java @@ -9,6 +9,7 @@ import com.jetbrains.php.lang.psi.elements.PhpNamedElement; import com.jetbrains.php.lang.psi.resolve.types.PhpType; import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3; +import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider4; import fr.adrienbrault.idea.symfony2plugin.Settings; import fr.adrienbrault.idea.symfony2plugin.dic.container.util.ServiceContainerUtil; import fr.adrienbrault.idea.symfony2plugin.stubs.ContainerCollectionResolver; @@ -24,7 +25,7 @@ * @author Adrien Brault * @author Daniel Espendiller */ -public class SymfonyContainerTypeProvider implements PhpTypeProvider3 { +public class SymfonyContainerTypeProvider implements PhpTypeProvider4 { private static char TRIM_KEY = '\u0182'; @Override @@ -48,6 +49,11 @@ public PhpType getType(PsiElement e) { return signature == null ? null : new PhpType().add("#" + this.getKey() + signature); } + @Override + public PhpType complete(String expression, Project project) { + return null; + } + @Override public Collection getBySignature(String expression, Set visited, int depth, Project project) { diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectManagerFindTypeProvider.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectManagerFindTypeProvider.java index 518b1600b..023f351ba 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectManagerFindTypeProvider.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectManagerFindTypeProvider.java @@ -10,6 +10,7 @@ import com.jetbrains.php.lang.psi.elements.PhpNamedElement; import com.jetbrains.php.lang.psi.resolve.types.PhpType; import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3; +import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider4; import fr.adrienbrault.idea.symfony2plugin.Settings; import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil; import fr.adrienbrault.idea.symfony2plugin.util.PhpTypeProviderUtil; @@ -24,7 +25,7 @@ * * @author Daniel Espendiller */ -public class ObjectManagerFindTypeProvider implements PhpTypeProvider3 { +public class ObjectManagerFindTypeProvider implements PhpTypeProvider4 { final static char TRIM_KEY = '\u0183'; @@ -62,6 +63,11 @@ public PhpType getType(PsiElement e) { return null; } + @Override + public PhpType complete(String expression, Project project) { + return null; + } + @Override public Collection getBySignature(String expression, Set visited, int depth, Project project) { // get back our original call diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryResultTypeProvider.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryResultTypeProvider.java index e782aaa8c..376d94ea3 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryResultTypeProvider.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryResultTypeProvider.java @@ -10,8 +10,9 @@ import com.jetbrains.php.lang.psi.elements.MethodReference; import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.PhpNamedElement; +import com.jetbrains.php.lang.psi.elements.impl.MethodImpl; import com.jetbrains.php.lang.psi.resolve.types.PhpType; -import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3; +import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider4; import fr.adrienbrault.idea.symfony2plugin.Settings; import fr.adrienbrault.idea.symfony2plugin.util.MethodMatcher; import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil; @@ -26,7 +27,7 @@ /** * @author Daniel Espendiller */ -public class ObjectRepositoryResultTypeProvider implements PhpTypeProvider3 { +public class ObjectRepositoryResultTypeProvider implements PhpTypeProvider4 { private static MethodMatcher.CallToSignature[] FIND_SIGNATURES = new MethodMatcher.CallToSignature[] { new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "find"), new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectRepository", "findOneBy"), @@ -102,7 +103,14 @@ public PhpType getType(PsiElement e) { repositorySignature = repositorySignature.substring(1, nextMethodCall); - return new PhpType().add("#" + this.getKey() + refSignature + TRIM_KEY + repositorySignature); + String signature = "#" + this.getKey() + refSignature.substring(0, refSignature.indexOf("|")) + TRIM_KEY + repositorySignature; + + return new PhpType().add(signature); + } + + @Override + public PhpType complete(String expression, Project project) { + return null; } @Override @@ -142,8 +150,10 @@ public Collection getBySignature(String expression, S String name = method.getName(); if(name.equals("findAll") || name.equals("findBy")) { - method.getType().add(phpClass.getFQN() + "[]"); - return phpNamedElementCollections; + Method m = new MethodImpl(method.getNode()); + m.getType().add(phpClass.getFQN() + "[]"); + + return PhpTypeProviderUtil.mergeSignatureResults(phpNamedElementCollections, m); } return PhpTypeProviderUtil.mergeSignatureResults(phpNamedElementCollections, phpClass); diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryTypeProvider.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryTypeProvider.java index 37b014293..9caa374db 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryTypeProvider.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/doctrine/ObjectRepositoryTypeProvider.java @@ -9,7 +9,7 @@ import com.jetbrains.php.lang.psi.elements.PhpClass; import com.jetbrains.php.lang.psi.elements.PhpNamedElement; import com.jetbrains.php.lang.psi.resolve.types.PhpType; -import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3; +import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider4; import fr.adrienbrault.idea.symfony2plugin.Settings; import fr.adrienbrault.idea.symfony2plugin.util.MethodMatcher; import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil; @@ -23,7 +23,7 @@ /** * @author Daniel Espendiller */ -public class ObjectRepositoryTypeProvider implements PhpTypeProvider3 { +public class ObjectRepositoryTypeProvider implements PhpTypeProvider4 { private static MethodMatcher.CallToSignature[] GET_REPOSITORIES_SIGNATURES = new MethodMatcher.CallToSignature[] { new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ManagerRegistry", "getRepository"), new MethodMatcher.CallToSignature("\\Doctrine\\Common\\Persistence\\ObjectManager", "getRepository"), @@ -59,6 +59,11 @@ public PhpType getType(PsiElement e) { return signature == null ? null : new PhpType().add("#" + this.getKey() + signature); } + @Override + public PhpType complete(String expression, Project project) { + return null; + } + @Override public Collection getBySignature(String expression, Set visited, int depth, Project project) { // get back our original call diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/util/EventDispatcherTypeProvider.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/util/EventDispatcherTypeProvider.java index b1d7da9f5..edba9af28 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/util/EventDispatcherTypeProvider.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/util/EventDispatcherTypeProvider.java @@ -6,6 +6,7 @@ import com.jetbrains.php.lang.psi.elements.*; import com.jetbrains.php.lang.psi.resolve.types.PhpType; import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider3; +import com.jetbrains.php.lang.psi.resolve.types.PhpTypeProvider4; import fr.adrienbrault.idea.symfony2plugin.Settings; import org.apache.commons.lang.StringUtils; import org.jetbrains.annotations.Nullable; @@ -17,7 +18,7 @@ /** * @author Daniel Espendiller */ -public class EventDispatcherTypeProvider implements PhpTypeProvider3 { +public class EventDispatcherTypeProvider implements PhpTypeProvider4 { private static char TRIM_KEY = '\u0197'; @@ -76,6 +77,11 @@ public PhpType getType(PsiElement e) { return new PhpType().add("#" + this.getKey() + refSignature + TRIM_KEY + signature); } + @Override + public PhpType complete(String expression, Project project) { + return null; + } + @Override public Collection getBySignature(String expression, Set visited, int depth, Project project) { // get back our original call diff --git a/src/main/resources/META-INF/plugin.xml b/src/main/resources/META-INF/plugin.xml index 7b2e4444a..41e56368f 100644 --- a/src/main/resources/META-INF/plugin.xml +++ b/src/main/resources/META-INF/plugin.xml @@ -100,12 +100,12 @@ - - - - - - + + + + + +