private PartialParseResultInternal HandleInsertionAfterIdPart(Span target, SourceChange change)
 {
     // If the insertion is a full identifier part, accept it
     if (ParserHelpers.IsIdentifier(change.NewText, requireIdentifierStart: false))
     {
         return(TryAcceptChange(target, change));
     }
     else if (IsDoubleParenthesisInsertion(change) || IsOpenParenthesisInsertion(change))
     {
         // Allow inserting parens after an identifier - this is needed to support signature
         // help intellisense in VS.
         return(TryAcceptChange(target, change));
     }
     else if (EndsWithDot(change.NewText))
     {
         // Accept it, possibly provisionally
         var result = PartialParseResultInternal.Accepted;
         if (!AcceptTrailingDot)
         {
             result |= PartialParseResultInternal.Provisional;
         }
         return(TryAcceptChange(target, change, result));
     }
     else
     {
         return(PartialParseResultInternal.Rejected);
     }
 }
 private PartialParseResultInternal HandleInsertionAfterDot(Span target, SourceChange change)
 {
     // If the insertion is a full identifier or another dot, accept it
     if (ParserHelpers.IsIdentifier(change.NewText) || change.NewText == ".")
     {
         return(TryAcceptChange(target, change));
     }
     return(PartialParseResultInternal.Rejected);
 }
 // Completing 'DateTime' in intellisense with a '.' could result in: '@DateT' -> '@DateT.' -> '@DateTime.' which is accepted.
 private static bool IsNewDotlessCommitInsertion(Span target, SourceChange change)
 {
     return(!IsAtEndOfSpan(target, change) &&
            change.Span.AbsoluteIndex > 0 &&
            change.NewText.Length > 0 &&
            target.Content.Last() == '.' &&
            ParserHelpers.IsIdentifier(change.NewText, requireIdentifierStart: false) &&
            (change.Span.Length == 0 || ParserHelpers.IsIdentifier(change.GetOriginalText(target), requireIdentifierStart: false)));
 }
예제 #4
0
 private PartialParseResultInternal HandleInsertionAfterIdPart(Span target, SourceChange change)
 {
     // If the insertion is a full identifier part, accept it
     if (ParserHelpers.IsIdentifier(change.NewText, requireIdentifierStart: false))
     {
         return(TryAcceptChange(target, change));
     }
     else if (EndsWithDot(change.NewText))
     {
         // Accept it, possibly provisionally
         var result = PartialParseResultInternal.Accepted;
         if (!AcceptTrailingDot)
         {
             result |= PartialParseResultInternal.Provisional;
         }
         return(TryAcceptChange(target, change, result));
     }
     else
     {
         return(PartialParseResultInternal.Rejected);
     }
 }