Skip to content

Commit 8a401cf

Browse files
author
Mykola Silin
authored
Merge branch '4.3.0-develop' into 603-fix-js-css-rewrite
2 parents 1f094cb + e2c1e88 commit 8a401cf

File tree

3 files changed

+67
-12
lines changed

3 files changed

+67
-12
lines changed

resources/META-INF/plugin.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,5 +617,7 @@
617617
<frameworkProjectConfigurableProvider implementation="com.magento.idea.magento2plugin.project.ConfigurableProvider"/>
618618
<frameworkUsageProvider implementation="com.magento.idea.magento2plugin.project.UsagesProvider"/>
619619
<libraryRoot id="phpstorm.meta.php" path="/.phpstorm.meta.php/" runtime="false"/>
620+
621+
<referenceResolver2 implementation="com.magento.idea.magento2plugin.lang.php.MagentoProxyDeclarationFilter" order="first"/>
620622
</extensions>
621623
</idea-plugin>

src/com/magento/idea/magento2plugin/actions/generation/util/FillTextBufferWithPluginMethods.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
import com.jetbrains.php.lang.psi.PhpPsiElementFactory;
1212
import com.jetbrains.php.lang.psi.elements.Method;
1313
import com.jetbrains.php.lang.psi.elements.Parameter;
14-
import com.jetbrains.php.lang.psi.elements.PhpReturnType;
1514
import com.magento.idea.magento2plugin.actions.generation.data.code.PluginMethodData;
15+
import com.magento.idea.magento2plugin.actions.generation.generator.util.PhpClassGeneratorUtil;
1616
import com.magento.idea.magento2plugin.actions.generation.references.PhpClassReferenceResolver;
1717
import com.magento.idea.magento2plugin.util.php.PhpTypeMetadataParserUtil;
1818
import java.util.ArrayList;
@@ -55,19 +55,19 @@ public void execute(
5555
final PsiElement targetClass = (PsiElement) pluginMethod.getTargetMethod()
5656
.getUserData(targetClassKey);
5757
resolver.processElement(targetClass);
58-
PhpReturnType returnType = targetMethod.getReturnType();
59-
final String returnTypeFqn =
60-
PhpTypeMetadataParserUtil.getMethodReturnType(targetMethod);
6158

62-
if (returnType == null && returnTypeFqn != null) {
63-
returnType = PhpPsiElementFactory.createReturnType(
64-
pluginMethod.getTargetMethod().getProject(),
65-
returnTypeFqn
66-
);
67-
}
59+
final String returnTypeCandidate = PhpTypeMetadataParserUtil.getMethodReturnType(
60+
targetMethod
61+
);
6862

69-
if (returnType != null) {
70-
resolver.processElement(returnType);
63+
if (returnTypeCandidate != null
64+
&& PhpClassGeneratorUtil.isValidFqn(returnTypeCandidate)) {
65+
resolver.processElement(
66+
PhpPsiElementFactory.createReturnType(
67+
pluginMethod.getTargetMethod().getProject(),
68+
returnTypeCandidate
69+
)
70+
);
7171
}
7272

7373
textBuf.append('\n');
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Copyright © Magento, Inc. All rights reserved.
3+
* See COPYING.txt for license details.
4+
*/
5+
6+
package com.magento.idea.magento2plugin.lang.php;
7+
8+
import com.intellij.openapi.util.registry.Registry;
9+
import com.intellij.openapi.vfs.VirtualFile;
10+
import com.intellij.psi.PsiElement;
11+
import com.intellij.psi.PsiFile;
12+
import com.intellij.util.containers.ContainerUtil;
13+
import com.jetbrains.php.lang.psi.PhpMultipleDeclarationFilter;
14+
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
15+
import com.magento.idea.magento2plugin.project.Settings;
16+
import java.util.Collection;
17+
import org.jetbrains.annotations.NotNull;
18+
19+
public class MagentoProxyDeclarationFilter implements PhpMultipleDeclarationFilter {
20+
21+
@SuppressWarnings({"PMD.CognitiveComplexity", "PMD.ConfusingTernary"})
22+
@Override
23+
public <E extends PhpNamedElement> Collection<E> filter(
24+
final @NotNull PsiElement psiElement,
25+
final Collection<E> candidates
26+
) {
27+
if (!Settings.isEnabled(psiElement.getProject())) {
28+
return candidates;
29+
} else if (!Registry.is("php.use.multiproject.ref.resolver", true)) {
30+
return candidates;
31+
} else if (candidates.size() == 1) { // NOPMD
32+
return candidates;
33+
} else if (psiElement.getContainingFile() == null) {
34+
return candidates;
35+
}
36+
37+
return ContainerUtil.filter(candidates,
38+
(candidate) -> {
39+
final PsiFile file = candidate.getContainingFile();
40+
41+
if (file == null) {
42+
return false;
43+
}
44+
final VirtualFile virtualFile = file.getVirtualFile();
45+
46+
if (virtualFile == null) {
47+
return false;
48+
}
49+
50+
return !virtualFile.getPath().contains("/generated/");
51+
});
52+
}
53+
}

0 commit comments

Comments
 (0)