def nextToken()

in rsc/src/main/scala/rsc/parse/scala/Scanners.scala [29:90]


    def nextToken(): Unit = {
      if (oneTokenBehind) {
        oneTokenBehind = false
        offset = scanner.start
        token = if (overrideToken != -1) overrideToken else scanner.token
        overrideToken = -1
        value = scanner.value
        adjustRegions(token)
      } else {
        lastOffset = scanner.end
        scanner.next()

        var firstNewLine = NoOffset
        var secondNewLine = NoOffset
        var prevTokenWasNewline = false
        while (scanner.token == WHITESPACE ||
               scanner.token == NEWLINE ||
               scanner.token == COMMENT) {
          if (scanner.token == NEWLINE) {
            if (firstNewLine == NoOffset) {
              firstNewLine = scanner.start
            } else if (secondNewLine == NoOffset && prevTokenWasNewline) {
              secondNewLine = scanner.start
            }
          }
          prevTokenWasNewline = scanner.token == NEWLINE
          scanner.next()
        }

        if (scanner.token == CASE) {
          val snapshot = scanner.snapshot()
          scanner.next()
          while (scanner.token == WHITESPACE ||
                 scanner.token == NEWLINE ||
                 scanner.token == COMMENT) {
            scanner.next()
          }
          if (scanner.token == CLASS) overrideToken = CASECLASS
          else if (scanner.token == OBJECT) overrideToken = CASEOBJECT
          else scanner.restore(snapshot)
        }

        if (firstNewLine != NoOffset &&
            statTokens.canEnd.contains(in.token) &&
            statTokens.canStart.contains(scanner.token) &&
            (regions.isEmpty ||
            regions.head == RBRACE ||
            regions.head == ARROW && scanner.token == CASE)) {
          oneTokenBehind = true
          offset = firstNewLine
          token = if (secondNewLine == NoOffset) NL1 else NL2
          value = null
        } else {
          oneTokenBehind = false
          offset = scanner.start
          token = if (overrideToken != -1) overrideToken else scanner.token
          overrideToken = -1
          value = scanner.value
          adjustRegions(token)
        }
      }
    }