[
  {
    "name": "small (3 diagnostics, one duplicate pair)",
    "method": "textDocument/publishDiagnostics",
    "params": {
      "uri": "file:///src/main.rs",
      "diagnostics": [
        {
          "range": { "start": { "line": 10, "character": 5 }, "end": { "line": 10, "character": 15 } },
          "severity": 2,
          "message": "unused variable: `x`",
          "source": "rust-analyzer",
          "code": "unused_variables"
        },
        {
          "range": { "start": { "line": 11, "character": 5 }, "end": { "line": 11, "character": 15 } },
          "severity": 2,
          "message": "unused variable: `x`",
          "source": "rust-analyzer",
          "code": "unused_variables"
        },
        {
          "range": { "start": { "line": 20, "character": 0 }, "end": { "line": 20, "character": 10 } },
          "severity": 1,
          "message": "cannot find value `y` in this scope",
          "source": "rust-analyzer",
          "code": "E0425"
        }
      ]
    }
  },
  {
    "name": "medium (15 diagnostics, mixed duplicates and unique)",
    "method": "textDocument/publishDiagnostics",
    "params": {
      "uri": "file:///src/lib.rs",
      "diagnostics": [
        { "range": { "start": { "line": 5, "character": 0 }, "end": { "line": 5, "character": 10 } }, "severity": 2, "message": "unused variable: `foo`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 8, "character": 0 }, "end": { "line": 8, "character": 15 } }, "severity": 2, "message": "unused variable: `bar`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 12, "character": 4 }, "end": { "line": 12, "character": 12 } }, "severity": 2, "message": "unused variable: `baz`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 15, "character": 0 }, "end": { "line": 15, "character": 8 } }, "severity": 2, "message": "unused variable: `foo`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 20, "character": 0 }, "end": { "line": 25, "character": 0 } }, "severity": 1, "message": "mismatched types: expected `i32`, found `String`", "source": "rust-analyzer", "code": "E0308" },
        { "range": { "start": { "line": 22, "character": 8 }, "end": { "line": 22, "character": 15 } }, "severity": 2, "message": "unused variable: `bar`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 30, "character": 0 }, "end": { "line": 30, "character": 5 } }, "severity": 3, "message": "consider using `cloned()` here", "source": "rust-analyzer", "code": "clippy::cloned_instead_of_map" },
        { "range": { "start": { "line": 35, "character": 4 }, "end": { "line": 35, "character": 20 } }, "severity": 2, "message": "unused variable: `baz`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 40, "character": 0 }, "end": { "line": 40, "character": 10 } }, "severity": 1, "message": "cannot return value referencing local variable `x`", "source": "rust-analyzer", "code": "E0515" },
        { "range": { "start": { "line": 42, "character": 0 }, "end": { "line": 42, "character": 10 } }, "severity": 2, "message": "unused import: `HashMap`", "source": "rust-analyzer", "code": "unused_imports" },
        { "range": { "start": { "line": 45, "character": 0 }, "end": { "line": 45, "character": 10 } }, "severity": 2, "message": "unused variable: `x`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 48, "character": 4 }, "end": { "line": 48, "character": 12 } }, "severity": 2, "message": "unused variable: `x`", "source": "rust-analyzer", "code": "unused_variables" },
        { "range": { "start": { "line": 50, "character": 0 }, "end": { "line": 50, "character": 5 } }, "severity": 4, "message": "type alias `Foo` is never used", "source": "rust-analyzer", "code": "dead_code" },
        { "range": { "start": { "line": 55, "character": 0 }, "end": { "line": 55, "character": 10 } }, "severity": 2, "message": "unused import: `HashSet`", "source": "rust-analyzer", "code": "unused_imports" },
        { "range": { "start": { "line": 60, "character": 0 }, "end": { "line": 60, "character": 8 } }, "severity": 1, "message": "use of moved value: `data`", "source": "rust-analyzer", "code": "E0382" }
      ]
    }
  },
  {
    "name": "large (60 diagnostics, many duplicates — TypeScript lint flood)",
    "method": "textDocument/publishDiagnostics",
    "params": {
      "uri": "file:///src/app.ts",
      "diagnostics": [
        { "range": { "start": { "line": 1, "character": 0 }, "end": { "line": 1, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 3, "character": 0 }, "end": { "line": 3, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 5, "character": 0 }, "end": { "line": 5, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 7, "character": 0 }, "end": { "line": 7, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 9, "character": 0 }, "end": { "line": 9, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 11, "character": 0 }, "end": { "line": 11, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 13, "character": 0 }, "end": { "line": 13, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 15, "character": 0 }, "end": { "line": 15, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 17, "character": 0 }, "end": { "line": 17, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },
        { "range": { "start": { "line": 19, "character": 0 }, "end": { "line": 19, "character": 10 } }, "severity": 1, "message": "Type 'number' is not assignable to type 'string'", "source": "ts", "code": 2322 },

        { "range": { "start": { "line": 2, "character": 4 }, "end": { "line": 2, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 4, "character": 4 }, "end": { "line": 4, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 6, "character": 4 }, "end": { "line": 6, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 8, "character": 4 }, "end": { "line": 8, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 10, "character": 4 }, "end": { "line": 10, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 12, "character": 4 }, "end": { "line": 12, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 14, "character": 4 }, "end": { "line": 14, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 16, "character": 4 }, "end": { "line": 16, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 18, "character": 4 }, "end": { "line": 18, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 20, "character": 4 }, "end": { "line": 20, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },

        { "range": { "start": { "line": 6, "character": 0 }, "end": { "line": 6, "character": 20 } }, "severity": 2, "message": "'unusedImport' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 7, "character": 0 }, "end": { "line": 7, "character": 20 } }, "severity": 2, "message": "'unusedImport' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 8, "character": 0 }, "end": { "line": 8, "character": 20 } }, "severity": 2, "message": "'unusedImport' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 9, "character": 0 }, "end": { "line": 9, "character": 20 } }, "severity": 2, "message": "'unusedImport' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 10, "character": 0 }, "end": { "line": 10, "character": 20 } }, "severity": 2, "message": "'unusedImport' is declared but its value is never read", "source": "ts", "code": 6133 },

        { "range": { "start": { "line": 25, "character": 2 }, "end": { "line": 25, "character": 15 } }, "severity": 1, "message": "Property 'foo' does not exist on type 'Bar'", "source": "ts", "code": 2339 },
        { "range": { "start": { "line": 28, "character": 2 }, "end": { "line": 28, "character": 15 } }, "severity": 1, "message": "Property 'foo' does not exist on type 'Bar'", "source": "ts", "code": 2339 },
        { "range": { "start": { "line": 31, "character": 2 }, "end": { "line": 31, "character": 15 } }, "severity": 1, "message": "Property 'foo' does not exist on type 'Bar'", "source": "ts", "code": 2339 },
        { "range": { "start": { "line": 34, "character": 2 }, "end": { "line": 34, "character": 15 } }, "severity": 1, "message": "Property 'foo' does not exist on type 'Bar'", "source": "ts", "code": 2339 },
        { "range": { "start": { "line": 37, "character": 2 }, "end": { "line": 37, "character": 15 } }, "severity": 1, "message": "Property 'foo' does not exist on type 'Bar'", "source": "ts", "code": 2339 },

        { "range": { "start": { "line": 40, "character": 0 }, "end": { "line": 40, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 41, "character": 0 }, "end": { "line": 41, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 42, "character": 0 }, "end": { "line": 42, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 43, "character": 0 }, "end": { "line": 43, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 44, "character": 0 }, "end": { "line": 44, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 45, "character": 0 }, "end": { "line": 45, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 46, "character": 0 }, "end": { "line": 46, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 47, "character": 0 }, "end": { "line": 47, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 48, "character": 0 }, "end": { "line": 48, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 49, "character": 0 }, "end": { "line": 49, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 50, "character": 0 }, "end": { "line": 50, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 51, "character": 0 }, "end": { "line": 51, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 52, "character": 0 }, "end": { "line": 52, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 53, "character": 0 }, "end": { "line": 53, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },
        { "range": { "start": { "line": 54, "character": 0 }, "end": { "line": 54, "character": 25 } }, "severity": 1, "message": "Cannot find name 'undeclared'", "source": "ts", "code": 2304 },

        { "range": { "start": { "line": 60, "character": 0 }, "end": { "line": 60, "character": 30 } }, "severity": 1, "message": "Argument of type 'X' is not assignable to parameter of type 'Y'", "source": "ts", "code": 2345 },
        { "range": { "start": { "line": 62, "character": 0 }, "end": { "line": 62, "character": 30 } }, "severity": 1, "message": "Argument of type 'X' is not assignable to parameter of type 'Y'", "source": "ts", "code": 2345 },
        { "range": { "start": { "line": 64, "character": 0 }, "end": { "line": 64, "character": 30 } }, "severity": 1, "message": "Argument of type 'X' is not assignable to parameter of type 'Y'", "source": "ts", "code": 2345 },
        { "range": { "start": { "line": 66, "character": 0 }, "end": { "line": 66, "character": 30 } }, "severity": 1, "message": "Argument of type 'X' is not assignable to parameter of type 'Y'", "source": "ts", "code": 2345 },
        { "range": { "start": { "line": 68, "character": 0 }, "end": { "line": 68, "character": 30 } }, "severity": 1, "message": "Argument of type 'X' is not assignable to parameter of type 'Y'", "source": "ts", "code": 2345 },

        { "range": { "start": { "line": 70, "character": 4 }, "end": { "line": 70, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 72, "character": 4 }, "end": { "line": 72, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 74, "character": 4 }, "end": { "line": 74, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 76, "character": 4 }, "end": { "line": 76, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },
        { "range": { "start": { "line": 78, "character": 4 }, "end": { "line": 78, "character": 8 } }, "severity": 2, "message": "'unusedVar' is declared but its value is never read", "source": "ts", "code": 6133 },

        { "range": { "start": { "line": 80, "character": 0 }, "end": { "line": 80, "character": 10 } }, "severity": 3, "message": "Variable 'x' is used before being assigned", "source": "ts", "code": 2454 },
        { "range": { "start": { "line": 82, "character": 0 }, "end": { "line": 82, "character": 10 } }, "severity": 3, "message": "Variable 'x' is used before being assigned", "source": "ts", "code": 2454 },
        { "range": { "start": { "line": 84, "character": 0 }, "end": { "line": 84, "character": 10 } }, "severity": 3, "message": "Variable 'x' is used before being assigned", "source": "ts", "code": 2454 },
        { "range": { "start": { "line": 86, "character": 0 }, "end": { "line": 86, "character": 10 } }, "severity": 3, "message": "Variable 'x' is used before being assigned", "source": "ts", "code": 2454 },
        { "range": { "start": { "line": 88, "character": 0 }, "end": { "line": 88, "character": 10 } }, "severity": 3, "message": "Variable 'x' is used before being assigned", "source": "ts", "code": 2454 }
      ]
    }
  }
]
