docs(union): describe first-class union nodes
This commit is contained in:
+1
-1
@@ -17,7 +17,7 @@ and adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
- Unions are now indexed in C, C++, Objective-C and Rust. A `union` declaration previously produced no symbol at all, so it never appeared in search or `codegraph_explore`, and anything attached to it disappeared with it — in Rust, every `impl SomeTrait for MyUnion` lost its edge, and the methods from that impl were left pointing at a type the graph did not contain. A `typedef union { … } Name;` in C now carries the typedef's name like `typedef struct` already did. Re-index after upgrading to pick up the new symbols.
|
- C, C++, Objective-C and Rust unions are now indexed as first-class `union` nodes. A `union` declaration previously produced no symbol at all, so it never appeared in search or `codegraph_explore`, and anything attached to it disappeared with it — in Rust, every `impl SomeTrait for MyUnion` lost its edge, and the methods from that impl were left pointing at a type the graph did not contain. A `typedef union { … } Name;` in C now carries the typedef's name and remains distinguishable from a struct. Re-index after upgrading to replace the earlier struct-shaped union nodes.
|
||||||
|
|
||||||
- `codegraph_explore` now concentrates its answer on the code that actually answers your question instead of spreading it across files that merely share a word with it, so more of the answer arrives in a single call. Thanks @LeDuyViet for the detailed measurements and reproduction. (#1500)
|
- `codegraph_explore` now concentrates its answer on the code that actually answers your question instead of spreading it across files that merely share a word with it, so more of the answer arrives in a single call. Thanks @LeDuyViet for the detailed measurements and reproduction. (#1500)
|
||||||
- Files only weakly related to your question now come back as a name, symbol and line number instead of spending the answer on their source — name one of them in a follow-up `codegraph_explore` to get it back in full. (#1500)
|
- Files only weakly related to your question now come back as a name, symbol and line number instead of spending the answer on their source — name one of them in a follow-up `codegraph_explore` to get it back in full. (#1500)
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ The public API surface is `src/index.ts` — the `CodeGraph` class wires all the
|
|||||||
|
|
||||||
Defined in `src/types.ts`. Both extractors and resolvers must use these exact strings.
|
Defined in `src/types.ts`. Both extractors and resolvers must use these exact strings.
|
||||||
|
|
||||||
- **NodeKind**: `file`, `module`, `class`, `struct`, `interface`, `trait`, `protocol`, `function`, `method`, `property`, `field`, `variable`, `constant`, `enum`, `enum_member`, `type_alias`, `namespace`, `parameter`, `import`, `export`, `route`, `component`.
|
- **NodeKind**: `file`, `module`, `class`, `struct`, `interface`, `trait`, `protocol`, `function`, `method`, `property`, `field`, `variable`, `constant`, `enum`, `enum_member`, `type_alias`, `namespace`, `parameter`, `import`, `export`, `route`, `component`, `union`.
|
||||||
- **EdgeKind**: `contains`, `calls`, `imports`, `exports`, `extends`, `implements`, `references`, `type_of`, `returns`, `instantiates`, `overrides`, `decorates`.
|
- **EdgeKind**: `contains`, `calls`, `imports`, `exports`, `extends`, `implements`, `references`, `type_of`, `returns`, `instantiates`, `overrides`, `decorates`.
|
||||||
|
|
||||||
### Multi-agent installer
|
### Multi-agent installer
|
||||||
|
|||||||
@@ -139,10 +139,9 @@ walker mirrors, with file:line anchors (as of `705e501`). Read WITH
|
|||||||
## Extractor configs (languages/c-cpp.ts — read the whole file when porting)
|
## Extractor configs (languages/c-cpp.ts — read the whole file when porting)
|
||||||
|
|
||||||
**cExtractor (line 180):** functionTypes=[function_definition]; NO
|
**cExtractor (line 180):** functionTypes=[function_definition]; NO
|
||||||
class/method/interface types; structTypes=[struct_specifier]
|
class/method/interface types; structTypes=[struct_specifier];
|
||||||
(superseded: `union_specifier` joined structTypes — a named `union U { … };`
|
unionTypes=[union_specifier] (a named `union U { … };` is a definition, and
|
||||||
is a definition, extracted with kind `struct`, and `typedef union { … } N;`
|
`typedef union { … } N;` resolves to a first-class `union` node);
|
||||||
resolves through resolveTypeAliasKind like `typedef struct`);
|
|
||||||
enumTypes=[enum_specifier]; enumMemberTypes=[enumerator];
|
enumTypes=[enum_specifier]; enumMemberTypes=[enumerator];
|
||||||
typeAliasTypes=[type_definition]; importTypes=[preproc_include];
|
typeAliasTypes=[type_definition]; importTypes=[preproc_include];
|
||||||
callTypes=[call_expression]; variableTypes=[declaration];
|
callTypes=[call_expression]; variableTypes=[declaration];
|
||||||
|
|||||||
@@ -54,9 +54,9 @@ Types: functionTypes=[`function_item`, **`function_signature_item`**] (the
|
|||||||
latter = a trait method DECLARATION `fn render(&self);` — extracted so a
|
latter = a trait method DECLARATION `fn render(&self);` — extracted so a
|
||||||
trait's method set is first-class); classTypes=[] (impl blocks instead);
|
trait's method set is first-class); classTypes=[] (impl blocks instead);
|
||||||
methodTypes = same two; interfaceTypes=[`trait_item`] with
|
methodTypes = same two; interfaceTypes=[`trait_item`] with
|
||||||
**interfaceKind:'trait'**; structTypes=[`struct_item`] (superseded:
|
**interfaceKind:'trait'**; structTypes=[`struct_item`];
|
||||||
`union_item` joined structTypes — same `body` field, same extractor, kind
|
unionTypes=[`union_item`] (same body walk, distinct `union` node kind);
|
||||||
`struct`); enumTypes=[`enum_item`];
|
enumTypes=[`enum_item`];
|
||||||
enumMemberTypes=[`enum_variant`]; typeAliasTypes=[`type_item`];
|
enumMemberTypes=[`enum_variant`]; typeAliasTypes=[`type_item`];
|
||||||
importTypes=[`use_declaration`]; callTypes=[`call_expression`];
|
importTypes=[`use_declaration`]; callTypes=[`call_expression`];
|
||||||
variableTypes=[`let_declaration`, `const_item`, `static_item`].
|
variableTypes=[`let_declaration`, `const_item`, `static_item`].
|
||||||
|
|||||||
Reference in New Issue
Block a user