@@ -23,7 +23,8 @@ module ts.formatting {
2323 }
2424
2525 export function formatOnEnter ( position : number , sourceFile : SourceFile , rulesProvider : RulesProvider , options : FormatCodeOptions ) : TextChange [ ] {
26- var line = getNonAdjustedLineAndCharacterFromPosition ( position , sourceFile ) . line ;
26+ var line = sourceFile . getLineAndCharacterFromPosition ( position ) . line ;
27+ Debug . assert ( line >= 2 ) ;
2728 // get the span for the previous\current line
2829 var span = {
2930 // get start position for the previous line
@@ -140,7 +141,7 @@ module ts.formatting {
140141 formattingScanner . advance ( ) ;
141142
142143 if ( formattingScanner . isOnToken ( ) ) {
143- var startLine = getNonAdjustedLineAndCharacterFromPosition ( enclosingNode . getStart ( sourceFile ) , sourceFile ) . line ;
144+ var startLine = sourceFile . getLineAndCharacterFromPosition ( enclosingNode . getStart ( sourceFile ) ) . line ;
144145 processNode ( enclosingNode , enclosingNode , startLine , initialIndentation ) ;
145146 }
146147 return edits ;
@@ -226,7 +227,7 @@ module ts.formatting {
226227 return ;
227228 }
228229
229- var childStartLine = getNonAdjustedLineAndCharacterFromPosition ( start , sourceFile ) . line ;
230+ var childStartLine = sourceFile . getLineAndCharacterFromPosition ( start ) . line ;
230231
231232 if ( listElementIndex === - 1 ) {
232233 // child is not list element
@@ -240,7 +241,7 @@ module ts.formatting {
240241 // NOTE: SI uses non-adjusted lines
241242 var increaseIndentation =
242243 childStartLine !== nodeStartLine &&
243- ! SmartIndenter . childStartsOnTheSameLineWithElseInIfStatement ( node , child , childStartLine + 1 , sourceFile ) &&
244+ ! SmartIndenter . childStartsOnTheSameLineWithElseInIfStatement ( node , child , childStartLine , sourceFile ) &&
244245 SmartIndenter . shouldIndentChildNode ( node , child ) ;
245246
246247 processNode ( child , childContextNode , childStartLine , increaseIndentation ? indentation + options . IndentSize : indentation ) ;
@@ -267,7 +268,7 @@ module ts.formatting {
267268 var indentToken : boolean = true ;
268269 if ( isTokenInRange ) {
269270 var prevStartLine = previousRangeStartLine ;
270- var tokenStart = getNonAdjustedLineAndCharacterFromPosition ( currentTokenInfo . token . pos , sourceFile ) ;
271+ var tokenStart = sourceFile . getLineAndCharacterFromPosition ( currentTokenInfo . token . pos ) ;
271272 lineAdded = processRange ( currentTokenInfo . token , tokenStart , parent , contextNode , indentation ) ;
272273 if ( lineAdded !== undefined ) {
273274 indentToken = lineAdded ;
@@ -321,7 +322,7 @@ module ts.formatting {
321322 for ( var i = 0 , len = trivia . length ; i < len ; ++ i ) {
322323 var triviaItem = trivia [ i ] ;
323324 if ( isComment ( triviaItem . kind ) && rangeContainsRange ( originalRange , triviaItem ) ) {
324- var triviaItemStart = getNonAdjustedLineAndCharacterFromPosition ( triviaItem . pos , sourceFile ) ;
325+ var triviaItemStart = sourceFile . getLineAndCharacterFromPosition ( triviaItem . pos ) ;
325326 processRange ( triviaItem , triviaItemStart , parent , contextNode , indentation ) ;
326327 }
327328 }
@@ -332,7 +333,7 @@ module ts.formatting {
332333 var lineAdded : boolean ;
333334 if ( ! previousRange ) {
334335 // trim whitespaces starting from the beginning of the span up to the current line
335- var originalStart = getNonAdjustedLineAndCharacterFromPosition ( originalRange . pos , sourceFile ) ;
336+ var originalStart = sourceFile . getLineAndCharacterFromPosition ( originalRange . pos ) ;
336337 trimTrailingWhitespacesForLines ( originalStart . line , rangeStart . line ) ;
337338 }
338339 else {
@@ -409,18 +410,18 @@ module ts.formatting {
409410 recordReplace ( pos , 0 , indentationString ) ;
410411 }
411412 else {
412- var tokenRange = getNonAdjustedLineAndCharacterFromPosition ( pos , sourceFile ) ;
413- if ( indentation !== tokenRange . character ) {
413+ var tokenRange = sourceFile . getLineAndCharacterFromPosition ( pos ) ;
414+ if ( indentation !== tokenRange . character - 1 ) {
414415 var startLinePosition = getStartPositionOfLine ( tokenRange . line , sourceFile ) ;
415- recordReplace ( startLinePosition , tokenRange . character , indentationString ) ;
416+ recordReplace ( startLinePosition , tokenRange . character - 1 , indentationString ) ;
416417 }
417418 }
418419 }
419420
420421 function indentMultilineComment ( commentRange : TextRange , indentation : number , firstLineIsIndented : boolean ) {
421422 // split comment in lines
422- var startLine = getNonAdjustedLineAndCharacterFromPosition ( commentRange . pos , sourceFile ) . line ;
423- var endLine = getNonAdjustedLineAndCharacterFromPosition ( commentRange . end , sourceFile ) . line ;
423+ var startLine = sourceFile . getLineAndCharacterFromPosition ( commentRange . pos ) . line ;
424+ var endLine = sourceFile . getLineAndCharacterFromPosition ( commentRange . end ) . line ;
424425
425426 if ( startLine === endLine ) {
426427 if ( ! firstLineIsIndented ) {
0 commit comments