@@ -6,8 +6,6 @@ namespace System.CommandLine.StaticCompletions;
66/// </summary>
77public static class DynamicSymbolExtensions
88{
9- private static readonly Lock s_guard = new ( ) ;
10-
119 /// <summary>
1210 /// The state that is used to track which symbols are dynamic.
1311 /// </summary>
@@ -20,44 +18,38 @@ public static class DynamicSymbolExtensions
2018 /// </summary>
2119 public bool IsDynamic
2220 {
23- get
24- {
25- lock ( s_guard )
26- {
27- return s_dynamicSymbols . GetValueOrDefault ( option , false ) ;
28- }
29- }
30- set
31- {
32- lock ( s_guard )
33- {
34- s_dynamicSymbols [ option ] = value ;
35- }
36- }
21+ get => s_dynamicSymbols . GetValueOrDefault ( option , false ) ;
22+ set => s_dynamicSymbols [ option ] = value ;
23+ }
24+
25+ /// <summary>
26+ /// Mark this option as requiring dynamic completions.
27+ /// </summary>
28+ /// <returns></returns>
29+ public Option RequiresDynamicCompletion ( )
30+ {
31+ option . IsDynamic = true ;
32+ return option ;
3733 }
3834 }
3935
4036 extension ( Argument argument )
4137 {
42- /// <summary>
4338 /// Indicates whether this argument requires a dynamic call into the dotnet process to compute completions.
44- /// </summary>
4539 public bool IsDynamic
4640 {
47- get
48- {
49- lock ( s_guard )
50- {
51- return s_dynamicSymbols . GetValueOrDefault ( argument , false ) ;
52- }
53- }
54- set
55- {
56- lock ( s_guard )
57- {
58- s_dynamicSymbols [ argument ] = value ;
59- }
60- }
41+ get => s_dynamicSymbols . GetValueOrDefault ( argument , false ) ;
42+ set => s_dynamicSymbols [ argument ] = value ;
43+ }
44+
45+ /// <summary>
46+ /// Mark this argument as requiring dynamic completions.
47+ /// </summary>
48+ /// <returns></returns>
49+ public Argument RequiresDynamicCompletion ( )
50+ {
51+ argument . IsDynamic = true ;
52+ return argument ;
6153 }
6254 }
6355}
0 commit comments