@@ -693,6 +693,19 @@ internal List<CompletionResult> GetResultHelper(CompletionContext completionCont
693
693
return completions ;
694
694
}
695
695
}
696
+ else if ( lastAst is VariableExpressionAst && lastAst . Parent is ParameterAst paramAst && paramAst . Attributes . Count > 0 )
697
+ {
698
+ foreach ( AttributeBaseAst attribute in paramAst . Attributes )
699
+ {
700
+ if ( IsCursorWithinOrJustAfterExtent ( _cursorPosition , attribute . Extent ) )
701
+ {
702
+ completionContext . ReplacementIndex = replacementIndex += tokenAtCursor . Text . Length ;
703
+ completionContext . ReplacementLength = replacementLength = 0 ;
704
+ result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
705
+ break ;
706
+ }
707
+ }
708
+ }
696
709
else
697
710
{
698
711
// Handle scenarios such as 'configuration foo { File ab { Attributes ='
@@ -928,6 +941,18 @@ internal List<CompletionResult> GetResultHelper(CompletionContext completionCont
928
941
{
929
942
result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
930
943
}
944
+
945
+ if ( lastAst is VariableExpressionAst && lastAst . Parent is ParameterAst paramAst && paramAst . Attributes . Count > 0 )
946
+ {
947
+ foreach ( AttributeBaseAst attribute in paramAst . Attributes )
948
+ {
949
+ if ( IsCursorWithinOrJustAfterExtent ( _cursorPosition , attribute . Extent ) )
950
+ {
951
+ result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
952
+ break ;
953
+ }
954
+ }
955
+ }
931
956
break ;
932
957
933
958
case TokenKind . Ieq :
@@ -1003,6 +1028,21 @@ internal List<CompletionResult> GetResultHelper(CompletionContext completionCont
1003
1028
break ;
1004
1029
}
1005
1030
1031
+ if ( lastAst is VariableExpressionAst && lastAst . Parent is ParameterAst paramAst && paramAst . Attributes . Count > 0 )
1032
+ {
1033
+ foreach ( AttributeBaseAst attribute in paramAst . Attributes )
1034
+ {
1035
+ if ( IsCursorWithinOrJustAfterExtent ( _cursorPosition , attribute . Extent ) )
1036
+ {
1037
+ completionContext . ReplacementLength = replacementLength = 0 ;
1038
+ result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
1039
+ break ;
1040
+ }
1041
+ }
1042
+
1043
+ break ;
1044
+ }
1045
+
1006
1046
result = GetResultForEnumPropertyValueOfDSCResource ( completionContext , string . Empty , ref replacementIndex , ref replacementLength , out _ ) ;
1007
1047
break ;
1008
1048
}
@@ -2100,9 +2140,25 @@ private static List<CompletionResult> GetResultForIdentifier(CompletionContext c
2100
2140
}
2101
2141
}
2102
2142
}
2103
- if ( completionContext . TokenAtCursor . TokenFlags == TokenFlags . MemberName && ( lastAst is NamedAttributeArgumentAst || lastAst . Parent is NamedAttributeArgumentAst ) )
2143
+
2144
+ if ( completionContext . TokenAtCursor . TokenFlags == TokenFlags . MemberName )
2104
2145
{
2105
- result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
2146
+ if ( lastAst is NamedAttributeArgumentAst || lastAst . Parent is NamedAttributeArgumentAst )
2147
+ {
2148
+ result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
2149
+ }
2150
+ else if ( lastAst is VariableExpressionAst && lastAst . Parent is ParameterAst paramAst && paramAst . Attributes . Count > 0 )
2151
+ {
2152
+ foreach ( AttributeBaseAst attribute in paramAst . Attributes )
2153
+ {
2154
+ if ( IsCursorWithinOrJustAfterExtent ( completionContext . CursorPosition , attribute . Extent ) )
2155
+ {
2156
+ result = GetResultForAttributeArgument ( completionContext , ref replacementIndex , ref replacementLength ) ;
2157
+ break ;
2158
+ }
2159
+ }
2160
+ }
2161
+
2106
2162
if ( result is not null )
2107
2163
{
2108
2164
return result ;
0 commit comments