Commit Graph

5 Commits

Author SHA1 Message Date
Kazuki Yamada d10814163d fix(core): Cover const and external constructors in Dart query
Three constructor variants were silently dropped during --compress:

- `const Foo(...);` and `const Foo.named(...) : ...;` parse as
  `(declaration (constant_constructor_signature ...))` — a node type the
  existing constructor query did not list.
- `const factory Foo() = Bar;` parses as
  `(redirecting_factory_constructor_signature (const_builtin) (identifier) ...)`
  whose first named child is `const_builtin`, so the leading-anchor
  `. (identifier)` pattern failed to match.
- `external factory Foo.make();` parses as
  `(declaration (factory_constructor_signature ...))` — bare under
  `declaration`, not wrapped in `method_signature`, so the existing
  factory query missed it.

Switch the constructor / factory / redirecting-factory queries to
capture the whole signature node as `@name.definition.method`. This
emits the same source line(s) DefaultParseStrategy already produces and
is robust across all body / external / const / redirecting variants.
2026-05-06 22:12:39 +09:00
Kazuki Yamada def2985b30 feat(core): Capture plain constructor and operator overload in Dart query
Two pre-existing gaps surfaced while extending queryDart:

- Plain constructors (e.g. `Animal(this.name);`) live directly under
  `declaration`, not wrapped in `method_signature`, so the existing
  `(method_signature (constructor_signature ...))` query never matched
  them. Add a sibling query against `(declaration (constructor_signature ...))`.
- Operator overloads (`operator +`, `operator []`, `operator []=`,
  `operator ==`, ...) parse as `(method_signature (operator_signature ...))`
  but `operator_signature` has no identifier name field — the operator
  token surfaces as `(binary_operator)` / `([])` / `([]=)` children.
  Capture the whole `operator_signature` as `@name.definition.method` so
  DefaultParseStrategy emits its full source range.

Verified against `--compress` on a real Dart file: signatures that were
previously dropped (only their `///` doc comments survived) now appear
in compressed output.
2026-05-06 22:12:39 +09:00
Kazuki Yamada ada200a080 feat(core): Capture mixin, typedef, getter, setter, and factory in Dart query
intent(dart-query): make --compress preserve Dart definition kinds that were silently dropped — mixin, typedef, getter, setter, factory, and redirecting factory
decision(capture-naming): align Dart captures with the dominant @name.definition.X convention used by queryTypeScript/queryPython/queryRust; output is unchanged because DefaultParseStrategy matches via name.includes('name')
constraint(redirecting-factory): tree-sitter-dart grammar makes redirecting_factory_constructor_signature a child of `declaration`, not `method_signature`, so it must be queried bare to avoid a "Bad pattern structure" parse error
constraint(type-alias): type_alias's name node is `type_identifier`, not `identifier` — using `identifier` would silently match nothing
learned(external-keyword): `external` modifier in Dart is a sibling token outside function_signature/method_signature, so existing captures already cover `external void foo();` without changes
2026-05-06 22:12:39 +09:00
Kazuki Yamada d5d4213dfd refactor(compress): Enhance Dart query to support enum, extension, and constructor
Expand Dart tree-sitter query based on grammar analysis to capture:
- Enum declarations for better type understanding
- Extension declarations (commonly used in modern Dart)
- Constructor signatures (important for class structure)

This addresses feedback from code review bots suggesting more comprehensive
structural element capture while maintaining simplicity. The implementation
is validated against actual tree-sitter-dart grammar and includes test
coverage for all new node types.

Updated biome.json schema version to match CLI version 2.2.5.
2025-10-15 00:06:45 +09:00
Kazuki Yamada 23fe3416cd feat(compress): Add Dart language support for tree-sitter compression
Update tree-sitter-wasms to v0.1.13 which includes Dart support. Add
compression functionality for Dart files including:
- Import/export statements
- Class definitions
- Function declarations
- Comments (single-line and documentation)

The implementation extracts code structure while omitting implementation
details, making it easier to understand Dart codebases at a glance.
2025-10-14 23:31:06 +09:00