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))); }
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); } }