diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlCompletionContributor.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlCompletionContributor.java index a2e3f04f9..409419714 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlCompletionContributor.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlCompletionContributor.java @@ -62,7 +62,7 @@ public class YamlCompletionContributor extends CompletionContributor { // @TODO: use xsd file // Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd - private static final Map SERVICE_KEYS = Collections.unmodifiableMap(new HashMap() {{ + private static final Map SERVICE_KEYS = Collections.unmodifiableMap(new HashMap<>() {{ put("class", "(string)"); put("public", "(bool)"); put("tags", null); @@ -96,7 +96,7 @@ public class YamlCompletionContributor extends CompletionContributor { put("exclude", ">= 2.8"); }}); - private static final Map ROUTE_KEYS = Collections.unmodifiableMap(new HashMap() {{ + private static final Map ROUTE_KEYS = Collections.unmodifiableMap(new HashMap<>() {{ put("pattern", "deprecated"); put("defaults", "(bool)"); put("path", "(string)"); @@ -136,28 +136,28 @@ public YamlCompletionContributor() { extend( CompletionType.BASIC, YamlElementPatternHelper.getServiceParameterDefinition(), - new CompletionProvider() { + new CompletionProvider<>() { public void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet resultSet) { - if(!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) { + if (!Symfony2ProjectComponent.isEnabled(parameters.getPosition())) { return; } PsiElement element = parameters.getOriginalPosition(); - if(element == null) { + if (element == null) { return; } - for(ContainerParameter containerParameter: ContainerCollectionResolver.getParameters(parameters.getPosition().getProject()).values()) { + for (ContainerParameter containerParameter : ContainerCollectionResolver.getParameters(parameters.getPosition().getProject()).values()) { resultSet.addElement(new ParameterLookupElement(containerParameter, ParameterPercentWrapInsertHandler.getInstance(), element.getText())); } for (String s : DotEnvUtil.getEnvironmentVariables(element.getProject())) { - resultSet.addElement(new ParameterLookupElement(new ContainerParameter("env(" + s +")", false), ParameterPercentWrapInsertHandler.getInstance(), element.getText())); - resultSet.addElement(new ParameterLookupElement(new ContainerParameter("env(resolve:" + s +")", false), ParameterPercentWrapInsertHandler.getInstance(), element.getText())); + resultSet.addElement(new ParameterLookupElement(new ContainerParameter("env(" + s + ")", false), ParameterPercentWrapInsertHandler.getInstance(), element.getText())); + resultSet.addElement(new ParameterLookupElement(new ContainerParameter("env(resolve:" + s + ")", false), ParameterPercentWrapInsertHandler.getInstance(), element.getText())); } } } @@ -271,7 +271,7 @@ public void addCompletions(@NotNull CompletionParameters parameters, */ private static class MyFactoryStringMethodCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = parameters.getPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { return; @@ -307,7 +307,7 @@ protected void addCompletions(@NotNull CompletionParameters parameters, Processi private static class FactoryMethodCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = parameters.getPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { @@ -335,7 +335,7 @@ protected void addCompletions(@NotNull CompletionParameters parameters, Processi public static class DirectoryScopeCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters completionParameters, final ProcessingContext processingContext, @NotNull final CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, final @NotNull ProcessingContext processingContext, @NotNull final CompletionResultSet completionResultSet) { PsiFile originalFile = completionParameters.getOriginalFile(); if(!Symfony2ProjectComponent.isEnabled(originalFile)) { @@ -380,7 +380,7 @@ public boolean visitFile(@NotNull VirtualFile file) { */ private static class MyServiceKeyAsClassCompletionParametersCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = parameters.getPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { @@ -405,7 +405,7 @@ protected void addCompletions(@NotNull CompletionParameters parameters, Processi */ private static class NamedArgumentCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet result) { + protected void addCompletions(@NotNull CompletionParameters parameters, @NotNull ProcessingContext context, @NotNull CompletionResultSet result) { HashSet uniqueParameters = new HashSet<>(); ServiceContainerUtil.visitNamedArguments(parameters.getPosition().getContainingFile(), parameter -> { @@ -430,9 +430,9 @@ protected void addCompletions(@NotNull CompletionParameters parameters, Processi * tags: * - { method: 'foobar' } */ - private class ServiceCallsMethodTestCompletion extends CompletionProvider { + private static class ServiceCallsMethodTestCompletion extends CompletionProvider { - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { if(!Symfony2ProjectComponent.isEnabled(completionParameters.getPosition())) { return; } @@ -450,15 +450,14 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters } } - private class ServiceClassMethodInsideScalarKeyCompletion extends CompletionProvider { - - private String yamlArrayKeyName; + private static class ServiceClassMethodInsideScalarKeyCompletion extends CompletionProvider { + private final String yamlArrayKeyName; ServiceClassMethodInsideScalarKeyCompletion(String yamlArrayKeyName) { this.yamlArrayKeyName = yamlArrayKeyName; } - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { if(!Symfony2ProjectComponent.isEnabled(completionParameters.getPosition())) { return; @@ -476,9 +475,9 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters } - private class ServiceCallsMethodCompletion extends CompletionProvider { + private static class ServiceCallsMethodCompletion extends CompletionProvider { - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { if(!Symfony2ProjectComponent.isEnabled(completionParameters.getPosition())) { return; } @@ -517,7 +516,7 @@ private static void addYamlClassMethods(@Nullable PsiElement psiElement, Complet private static class FormAliasCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { if(!Symfony2ProjectComponent.isEnabled(completionParameters.getPosition())) { return; @@ -547,7 +546,7 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters private static class OrmRelationCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = completionParameters.getPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { @@ -590,7 +589,7 @@ protected void addCompletions(@NotNull CompletionParameters completionParameters */ private static class ReferencedColumnCompletionProvider extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { PsiElement position = completionParameters.getPosition(); if(!Symfony2ProjectComponent.isEnabled(position)) { @@ -661,9 +660,9 @@ public void addCompletions(@NotNull CompletionParameters parameters, ProcessingC /** * "requirements" on "path/pattern: /hello/{name}" */ - private class RouteRequirementsCompletion extends CompletionProvider { + private static class RouteRequirementsCompletion extends CompletionProvider { @Override - protected void addCompletions(@NotNull CompletionParameters completionParameters, ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { + protected void addCompletions(@NotNull CompletionParameters completionParameters, @NotNull ProcessingContext processingContext, @NotNull CompletionResultSet completionResultSet) { YAMLKeyValue yamlKeyValue = PsiTreeUtil.getParentOfType(completionParameters.getOriginalPosition(), YAMLKeyValue.class); if(yamlKeyValue != null) { PsiElement compoundValue = yamlKeyValue.getParent(); diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java index 9bc4c91a1..80d9ffecf 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/config/yaml/YamlElementPatternHelper.java @@ -843,7 +843,18 @@ public boolean accepts(@NotNull YAMLKeyValue yamlKeyValue, ProcessingContext con PlatformPatterns.psiElement(YAMLScalar.class).withParent(PlatformPatterns.or(bindKey, argumentsKey)) ); - return PlatformPatterns.or(argumentPattern, incompleteCodePattern); + // incomplete code 2.0 for new phpstorm version. + // bind: + // $ + PsiElementPattern.Capture incompleteCodePattern2 = PlatformPatterns.psiElement(YAMLTokenTypes.TEXT).withText(PlatformPatterns.string().startsWith("$")).withParent(PlatformPatterns.psiElement(YAMLScalar.class).withParent(PlatformPatterns.psiElement(YAMLKeyValue.class).with(new PatternCondition("KeyText") { + @Override + public boolean accepts(@NotNull YAMLKeyValue yamlKeyValue, ProcessingContext context) { + String keyText = yamlKeyValue.getKeyText(); + return "arguments".equals(keyText) || "bind".equals(keyText); + } + }))); + + return PlatformPatterns.or(argumentPattern, incompleteCodePattern, incompleteCodePattern2); } /** diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java index e4810b128..3c6f5b6ff 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/dic/container/util/ServiceContainerUtil.java @@ -588,6 +588,11 @@ public static boolean hasMissingYamlNamedArgumentForInspection(@NotNull PsiEleme * _defaults: * bind: * $: '' + * + * services: + * Foo: + * arguments: + * $ */ public static void visitNamedArguments(@NotNull PsiFile psiFile, @NotNull Consumer processor) { if (psiFile instanceof YAMLFile) {