4
4
import com .intellij .openapi .util .Key ;
5
5
import com .intellij .psi .search .GlobalSearchScope ;
6
6
import com .intellij .psi .util .CachedValue ;
7
+ import com .intellij .util .indexing .FileBasedIndexImpl ;
7
8
import fr .adrienbrault .idea .symfony2plugin .config .component .parser .ParameterServiceParser ;
8
9
import fr .adrienbrault .idea .symfony2plugin .dic .ContainerParameter ;
9
10
import fr .adrienbrault .idea .symfony2plugin .dic .ContainerService ;
10
11
import fr .adrienbrault .idea .symfony2plugin .dic .XmlServiceParser ;
11
12
import fr .adrienbrault .idea .symfony2plugin .dic .container .ServiceInterface ;
13
+ import fr .adrienbrault .idea .symfony2plugin .dic .container .dict .ContainerBuilderCall ;
12
14
import fr .adrienbrault .idea .symfony2plugin .dic .webDeployment .ServiceContainerRemoteFileStorage ;
13
15
import fr .adrienbrault .idea .symfony2plugin .routing .webDeployment .RoutingRemoteFileStorage ;
14
16
import fr .adrienbrault .idea .symfony2plugin .stubs .cache .FileIndexCaches ;
17
+ import fr .adrienbrault .idea .symfony2plugin .stubs .indexes .ContainerBuilderStubIndex ;
15
18
import fr .adrienbrault .idea .symfony2plugin .stubs .indexes .ContainerParameterStubIndex ;
16
19
import fr .adrienbrault .idea .symfony2plugin .stubs .indexes .ServicesDefinitionStubIndex ;
17
20
import fr .adrienbrault .idea .symfony2plugin .util .service .ServiceXmlParserFactory ;
@@ -371,7 +374,7 @@ private Map<String, ContainerParameter> getParameters() {
371
374
return this .containerParameterMap ;
372
375
}
373
376
374
- this .containerParameterMap = new TreeMap <String , ContainerParameter >(String .CASE_INSENSITIVE_ORDER );
377
+ this .containerParameterMap = new TreeMap <>(String .CASE_INSENSITIVE_ORDER );
375
378
376
379
if (this .sources .contains (Source .COMPILER )) {
377
380
// local filesystem
@@ -400,6 +403,23 @@ private Map<String, ContainerParameter> getParameters() {
400
403
}
401
404
}
402
405
406
+ // setParameter("foo") for ContainerBuilder
407
+ for (ContainerBuilderCall call : FileBasedIndexImpl .getInstance ().getValues (ContainerBuilderStubIndex .KEY , "setParameter" , GlobalSearchScope .allScope (project ))) {
408
+ Collection <String > parameters = call .getParameter ();
409
+ if (parameters == null || parameters .size () == 0 ) {
410
+ continue ;
411
+ }
412
+
413
+ for (String parameter : parameters ) {
414
+ if (this .containerParameterMap .containsKey (parameter )) {
415
+ continue ;
416
+ }
417
+
418
+ this .containerParameterMap .put (parameter , new ContainerParameter (parameter , true ));
419
+ }
420
+
421
+ }
422
+
403
423
}
404
424
405
425
return this .containerParameterMap ;
@@ -413,7 +433,7 @@ private Set<String> getNames() {
413
433
return this .containerParameterMap .keySet ();
414
434
}
415
435
416
- Set <String > parameterNames = new TreeSet <String >(String .CASE_INSENSITIVE_ORDER );
436
+ Set <String > parameterNames = new TreeSet <>(String .CASE_INSENSITIVE_ORDER );
417
437
418
438
if (this .sources .contains (Source .COMPILER )) {
419
439
// local filesystem
@@ -424,11 +444,17 @@ private Set<String> getNames() {
424
444
parameterNames .addAll (
425
445
FileIndexCaches .getIndexKeysCache (project , SERVICE_PARAMETER_INDEX_NAMES , ContainerParameterStubIndex .KEY )
426
446
);
447
+
448
+ // setParameter("foo") for ContainerBuilder
449
+ for (ContainerBuilderCall call : FileBasedIndexImpl .getInstance ().getValues (ContainerBuilderStubIndex .KEY , "setParameter" , GlobalSearchScope .allScope (project ))) {
450
+ Collection <String > parameter = call .getParameter ();
451
+ if (parameter != null ) {
452
+ parameterNames .addAll (parameter );
453
+ }
454
+ }
427
455
}
428
456
429
457
return parameterNames ;
430
-
431
-
432
458
}
433
459
434
460
}
0 commit comments