@@ -44,12 +44,25 @@ type internal FSharpFixIndexerAccessCodeFixProvider() =
4444|> Seq.iter( fun diagnostic ->
4545let diagnostics = ImmutableArray.Create diagnostic
4646let span , replacement =
47- context.Span, sourceText.GetSubText( context.Span). ToString()
47+ try
48+ let span = ref context.Span
49+
50+ // skip all braces and blanks until we find [
51+ while
52+ (! span). End< sourceText.Length&&
53+ let t = TextSpan((! span). Start,(! span). Length+ 1 )
54+ let s = sourceText.GetSubText( t). ToString()
55+ s.[ s.Length-1 ] <> '[' do
56+ span:= TextSpan ((! span ). Start ,(! span ). Length + 1 )
57+
58+ ! span, sourceText.GetSubText(! span). ToString()
59+ with
60+ | _ -> context.Span, sourceText.GetSubText( context.Span). ToString()
4861
4962let codefix =
5063 createCodeFix(
5164 FSComp.SR.addIndexerDot(),
5265 context,
53- TextChange( span, replacement+ " ." ))
66+ TextChange( span, replacement.TrimEnd () + " ." ))
5467 context.RegisterCodeFix( codefix, diagnostics))
5568} |> RoslynHelpers.StartAsyncUnitAsTask( context.CancellationToken)