diff --git a/src/services/syntax/syntax.ts b/src/services/syntax/syntax.ts index 96301d0c19c..2f0b5853bd8 100644 --- a/src/services/syntax/syntax.ts +++ b/src/services/syntax/syntax.ts @@ -132,40 +132,6 @@ module TypeScript.Syntax { return false; } - function findSkippedTokenOnLeftInTriviaList(positionedToken: ISyntaxToken, position: number, lookInLeadingTriviaList: boolean): ISyntaxToken { - var triviaList: TypeScript.ISyntaxTriviaList = undefined; - var fullEnd: number; - - if (lookInLeadingTriviaList) { - triviaList = positionedToken.leadingTrivia(); - fullEnd = positionedToken.fullStart() + triviaList.fullWidth(); - } - else { - triviaList = positionedToken.trailingTrivia(); - fullEnd = TypeScript.fullEnd(positionedToken); - } - - if (triviaList && triviaList.hasSkippedToken()) { - for (var i = triviaList.count() - 1; i >= 0; i--) { - var trivia = triviaList.syntaxTriviaAt(i); - var triviaWidth = trivia.fullWidth(); - - if (trivia.isSkippedToken() && position >= fullEnd) { - return trivia.skippedToken(); - } - - fullEnd -= triviaWidth; - } - } - - return undefined; - } - - export function findSkippedTokenOnLeft(positionedToken: ISyntaxToken, position: number): ISyntaxToken { - var positionInLeadingTriviaList = (position < start(positionedToken)); - return findSkippedTokenOnLeftInTriviaList(positionedToken, position, /*lookInLeadingTriviaList*/ positionInLeadingTriviaList); - } - export function getAncestorOfKind(positionedToken: ISyntaxElement, kind: SyntaxKind): ISyntaxElement { while (positionedToken && positionedToken.parent) { if (positionedToken.parent.kind() === kind) { @@ -218,18 +184,14 @@ module TypeScript.Syntax { return current; } - export function findTokenOnLeft(element: ISyntaxElement, position: number, includeSkippedTokens: boolean = false): ISyntaxToken { - var positionedToken = findToken(element, position, /*includeSkippedTokens*/ false); + export function findTokenOnLeft(element: ISyntaxElement, position: number): ISyntaxToken { + var positionedToken = findToken(element, position); var _start = start(positionedToken); // Position better fall within this token. // Debug.assert(position >= positionedToken.fullStart()); // Debug.assert(position < positionedToken.fullEnd() || positionedToken.token().tokenKind === SyntaxKind.EndOfFileToken); - if (includeSkippedTokens) { - positionedToken = findSkippedTokenOnLeft(positionedToken, position) || positionedToken; - } - // if position is after the start of the token, then this token is the token on the left. if (position > _start) { return positionedToken; @@ -241,26 +203,22 @@ module TypeScript.Syntax { return undefined; } - return previousToken(positionedToken, includeSkippedTokens); + return previousToken(positionedToken); } - export function findCompleteTokenOnLeft(element: ISyntaxElement, position: number, includeSkippedTokens: boolean = false): ISyntaxToken { - var positionedToken = findToken(element, position, /*includeSkippedTokens*/ false); + export function findCompleteTokenOnLeft(element: ISyntaxElement, position: number): ISyntaxToken { + var positionedToken = findToken(element, position); // Position better fall within this token. // Debug.assert(position >= positionedToken.fullStart()); // Debug.assert(position < positionedToken.fullEnd() || positionedToken.token().tokenKind === SyntaxKind.EndOfFileToken); - if (includeSkippedTokens) { - positionedToken = findSkippedTokenOnLeft(positionedToken, position) || positionedToken; - } - // if position is after the end of the token, then this token is the token on the left. if (width(positionedToken) > 0 && position >= end(positionedToken)) { return positionedToken; } - return previousToken(positionedToken, includeSkippedTokens); + return previousToken(positionedToken); } export function firstTokenInLineContainingPosition(syntaxTree: SyntaxTree, position: number): ISyntaxToken { diff --git a/src/services/syntax/syntaxElement.ts b/src/services/syntax/syntaxElement.ts index f43edadcd10..d6d7b374e7d 100644 --- a/src/services/syntax/syntaxElement.ts +++ b/src/services/syntax/syntaxElement.ts @@ -36,28 +36,13 @@ module TypeScript { return (info & SyntaxConstants.NodeParsedInStrictModeMask) !== 0; } - export function previousToken(token: ISyntaxToken, includeSkippedTokens: boolean = false): ISyntaxToken { - if (includeSkippedTokens) { - var triviaList = token.leadingTrivia(); - if (triviaList && triviaList.hasSkippedToken()) { - var currentTriviaEndPosition = TypeScript.start(token); - for (var i = triviaList.count() - 1; i >= 0; i--) { - var trivia = triviaList.syntaxTriviaAt(i); - if (trivia.isSkippedToken()) { - return trivia.skippedToken(); - } - - currentTriviaEndPosition -= trivia.fullWidth(); - } - } - } - + export function previousToken(token: ISyntaxToken): ISyntaxToken { var start = token.fullStart(); if (start === 0) { return undefined; } - return findToken(syntaxTree(token).sourceUnit(), start - 1, includeSkippedTokens); + return findToken(syntaxTree(token).sourceUnit(), start - 1); } /** @@ -73,7 +58,7 @@ module TypeScript { * Note: findToken will always return a non-missing token with width greater than or equal to * 1 (except for EOF). Empty tokens synthesized by the parser are never returned. */ - export function findToken(element: ISyntaxElement, position: number, includeSkippedTokens?: boolean): ISyntaxToken { + export function findToken(element: ISyntaxElement, position: number): ISyntaxToken { var endOfFileToken = tryGetEndOfFileAt(element, position); if (endOfFileToken) { return endOfFileToken; @@ -84,12 +69,6 @@ module TypeScript { } var positionedToken = findTokenWorker(element, 0, position); - - if (includeSkippedTokens) { - return findSkippedTokenInPositionedToken(positionedToken, position) || positionedToken; - } - - // Could not find a better match return positionedToken; } @@ -178,24 +157,12 @@ module TypeScript { return undefined; } - export function nextToken(token: ISyntaxToken, text?: ISimpleText, includeSkippedTokens: boolean = false): ISyntaxToken { + export function nextToken(token: ISyntaxToken, text?: ISimpleText): ISyntaxToken { if (token.kind() === SyntaxKind.EndOfFileToken) { return undefined; } - if (includeSkippedTokens) { - var triviaList = token.trailingTrivia(text); - if (triviaList && triviaList.hasSkippedToken()) { - for (var i = 0, n = triviaList.count(); i < n; i++) { - var trivia = triviaList.syntaxTriviaAt(i); - if (trivia.isSkippedToken()) { - return trivia.skippedToken(); - } - } - } - } - - return findToken(syntaxTree(token).sourceUnit(), fullEnd(token), includeSkippedTokens); + return findToken(syntaxTree(token).sourceUnit(), fullEnd(token)); } export function isNode(element: ISyntaxElement): boolean {