selectTree025ParityProbe method

Map<String, Object?> selectTree025ParityProbe()

Direct decision probe for Tree-sitter 0.25.10's private ts_parser__select_tree helper.

Implementation

Map<String, Object?> selectTree025ParityProbe() {
  const zero = TreeSitterTablePoint(0, 0);
  const one = TreeSitterTablePoint(0, 1);
  GeneratedTreeSitterNode leaf(int symbol, {int? structuralSymbol}) =>
      GeneratedTreeSitterNode(
        symbol: symbol,
        structuralSymbol: structuralSymbol,
        type: language.symbols[symbol].name,
        startByte: 0,
        endByte: 1,
        startPoint: zero,
        endPoint: one,
        named: language.symbols[symbol].named,
        visible: language.symbols[symbol].visible,
        extra: false,
      );
  GeneratedTreeSitterNode node({
    List<GeneratedTreeSitterNode> children = const [],
    int dynamicPrecedence = 0,
    int errorSpan = 0,
  }) {
    final isError = errorSpan > 0;
    return GeneratedTreeSitterNode(
      symbol: isError ? _treeSitterBuiltinErrorSymbol : 16,
      type: isError ? 'ERROR' : language.symbols[16].name,
      startByte: 0,
      endByte: isError ? errorSpan : 1,
      startPoint: zero,
      endPoint: TreeSitterTablePoint(0, isError ? errorSpan : 1),
      named: true,
      visible: true,
      extra: false,
      dynamicPrecedence: dynamicPrecedence,
      children: children,
    );
  }

  return <String, Object?>{
    'null_left': _selectGraphTree(null, leaf(1)),
    'null_right': _selectGraphTree(leaf(1), null),
    'right_lower_error': _selectGraphTree(
      node(children: [leaf(1)], errorSpan: 10),
      node(children: [leaf(1)], errorSpan: 1),
    ),
    'left_lower_error': _selectGraphTree(
      node(children: [leaf(1)], errorSpan: 1),
      node(children: [leaf(1)], errorSpan: 10),
    ),
    'right_higher_precedence': _selectGraphTree(
      node(children: [leaf(1)], dynamicPrecedence: 1),
      node(children: [leaf(1)], dynamicPrecedence: 2),
    ),
    'left_higher_precedence': _selectGraphTree(
      node(children: [leaf(1)], dynamicPrecedence: 2),
      node(children: [leaf(1)], dynamicPrecedence: 1),
    ),
    'equal_positive_error': _selectGraphTree(
      node(children: [leaf(1)], errorSpan: 1),
      node(children: [leaf(1)], errorSpan: 1),
    ),
    // Both nodes deliberately retain the same pre-alias structural symbol.
    // Native compares their effective (post-alias) symbols instead.
    'right_lower_effective_symbol': _selectGraphTree(
      leaf(2, structuralSymbol: 7),
      leaf(1, structuralSymbol: 7),
    ),
    'left_lower_effective_symbol': _selectGraphTree(
      leaf(1, structuralSymbol: 7),
      leaf(2, structuralSymbol: 7),
    ),
    'right_fewer_children': _selectGraphTree(
      node(children: [leaf(1), leaf(1)]),
      node(children: [leaf(1)]),
    ),
    'right_lower_recursive_symbol': _selectGraphTree(
      node(children: [leaf(2)]),
      node(children: [leaf(1)]),
    ),
    'equal_clean_tree': _selectGraphTree(
      node(children: [leaf(1)]),
      node(children: [leaf(1)]),
    ),
  };
}