tree-sitter / tree-sitter-typescript

TypeScript grammar for tree-sitter
MIT License
335 stars 104 forks source link

Highlighting error after a tricky interface declaration #243

Closed cmdcolin closed 5 months ago

cmdcolin commented 1 year ago
function stuff<T>() {}
export interface MyInterface<T>
  extends ReturnType<typeof stuff<T>> {}

export function DoStuff<T>(arg: T) {
  if (arg) {
    return 'stuff'
  } else {
    return 'good'
  }
}

highlight in neovim

image

parse tree from TSPlaygroundToggle in neovim

function_declaration [0, 0] - [0, 22]
  name: identifier [0, 9] - [0, 14]
  type_parameters: type_parameters [0, 14] - [0, 17]
    type_parameter [0, 15] - [0, 16]
      name: type_identifier [0, 15] - [0, 16]
  parameters: formal_parameters [0, 17] - [0, 19]
  body: statement_block [0, 20] - [0, 22]
ERROR [1, 0] - [10, 1]
  identifier [1, 17] - [1, 40]
  type_parameters [1, 40] - [1, 43]
    type_parameter [1, 41] - [1, 42]
      name: type_identifier [1, 41] - [1, 42]
  identifier [2, 10] - [2, 20]
  ERROR [2, 21] - [8, 10]
    type_query [2, 21] - [2, 33]
      identifier [2, 28] - [2, 33]
    type_parameters [2, 33] - [2, 36]
      type_parameter [2, 34] - [2, 35]
        name: type_identifier [2, 34] - [2, 35]
    object_type [2, 38] - [2, 40]
    generic_type [4, 16] - [4, 41]
      name: type_identifier [4, 16] - [4, 38]
      type_arguments: type_arguments [4, 38] - [4, 41]
        type_identifier [4, 39] - [4, 40]
    formal_parameters [4, 41] - [4, 49]
      required_parameter [4, 42] - [4, 48]
        pattern: identifier [4, 42] - [4, 45]
        type: type_annotation [4, 45] - [4, 48]
          type_identifier [4, 47] - [4, 48]
    method_signature [5, 2] - [5, 10]
      name: property_identifier [5, 2] - [5, 4]
      parameters: formal_parameters [5, 5] - [5, 10]
        required_parameter [5, 6] - [5, 9]
          pattern: identifier [5, 6] - [5, 9]
    object_type [5, 11] - [7, 3]
      ERROR [6, 4] - [6, 10]
        property_identifier [6, 4] - [6, 10]
      property_signature [6, 11] - [6, 18]
        name: string [6, 11] - [6, 18]
          string_fragment [6, 12] - [6, 17]
  literal_type [8, 11] - [8, 17]
    string [8, 11] - [8, 17]
      string_fragment [8, 12] - [8, 16]
amaanq commented 5 months ago

Seems okay now, let me know if not.