override fun parse()

in src/main/kotlin/jsitter/impl/TSParser.kt [26:60]


  override fun parse(text: Text, adjustedTree: Tree<T>?, cancellationToken: CancellationToken?): Tree<T>? {
    if (adjustedTree?.actual == true) {
      return adjustedTree
    }
    synchronized(this) {
      SubtreeAccess.unsafe.putLong(this.cancellationFlagPtr, 0)
      cancellationToken?.onCancel {
        SubtreeAccess.unsafe.putLong(this.cancellationFlagPtr, 1)
      }
      if (cancellationToken?.cancelled == true) {
        return null
      }
      val newTreePtr = JSitter.parse(
              this.parserPtr,
              (adjustedTree as TSTree?)?.treePtr ?: 0L,
              TSTextInput(text, this.readingBuffer),
              text.encoding.i,
              this.readingBuffer)
        JSitter.parserReset(parserPtr)
      if (newTreePtr == 0L) {
        return null
      }
      if (cancellationToken?.cancelled == true) {
          JSitter.releaseTree(newTreePtr)
        return null
      }
      return TSTree(
              treePtr = newTreePtr,
              root = TSSubtree(
                      language = this.language,
                      lifetime = TSTreeResource(newTreePtr),
                      subtreePtr = SubtreeAccess.root(newTreePtr)),
              actual = true)
    }
  }