diff --git a/src/lib/converter/symbols.ts b/src/lib/converter/symbols.ts index 023121154..1bd7ef269 100644 --- a/src/lib/converter/symbols.ts +++ b/src/lib/converter/symbols.ts @@ -69,6 +69,17 @@ export function convertSymbol( return; } + // This check can catch symbols which ought to be documented as references + // but aren't aliased symbols because `export *` was used. + const previous = context.project.getReflectionFromSymbol(symbol); + if ( + previous && + previous.parent?.kindOf(ReflectionKind.Module | ReflectionKind.Project) + ) { + createAlias(previous, context, symbol, exportSymbol); + return; + } + let flags = removeFlag( symbol.flags, ts.SymbolFlags.Transient | @@ -708,27 +719,33 @@ function convertAlias( exportSymbol ?? symbol ); } else { - // We already have this. Create a reference. - const ref = new ReferenceReflection( - exportSymbol?.name ?? symbol.name, - reflection, - context.scope - ); - context.addChild(ref); - context.registerReflection(ref, symbol); - - context.trigger( - ConverterEvents.CREATE_DECLARATION, - ref, - // FIXME this isn't good enough. - context.converter.getNodesForSymbol( - symbol, - ReflectionKind.Reference - )[0] - ); + createAlias(reflection, context, symbol, exportSymbol); } } +function createAlias( + target: Reflection, + context: Context, + symbol: ts.Symbol, + exportSymbol: ts.Symbol | undefined +) { + // We already have this. Create a reference. + const ref = new ReferenceReflection( + exportSymbol?.name ?? symbol.name, + target, + context.scope + ); + context.addChild(ref); + context.registerReflection(ref, symbol); + + context.trigger( + ConverterEvents.CREATE_DECLARATION, + ref, + // FIXME this isn't good enough. + context.converter.getNodesForSymbol(symbol, ReflectionKind.Reference)[0] + ); +} + function convertVariable( context: Context, symbol: ts.Symbol, diff --git a/src/test/converter/exports/specs.json b/src/test/converter/exports/specs.json index b67aac4a0..7eb1e1f32 100644 --- a/src/test/converter/exports/specs.json +++ b/src/test/converter/exports/specs.json @@ -11,6 +11,14 @@ "kindString": "Module", "flags": {}, "children": [ + { + "id": 50, + "name": "GH1453Helper", + "kind": 16777216, + "kindString": "Reference", + "flags": {}, + "target": 41 + }, { "id": 43, "name": "Mod", @@ -44,7 +52,15 @@ "kind": 16777216, "kindString": "Reference", "flags": {}, - "target": 33 + "target": 40 + }, + { + "id": 46, + "name": "a", + "kind": 16777216, + "kindString": "Reference", + "flags": {}, + "target": 36 }, { "id": 47, @@ -55,7 +71,7 @@ "comment": { "shortText": "An export of a local under a different name." }, - "target": 36 + "target": 37 }, { "id": 42, @@ -223,34 +239,6 @@ } ] }, - { - "id": 50, - "name": "GH1453Helper", - "kind": 4194304, - "kindString": "Type alias", - "flags": {}, - "type": { - "type": "literal", - "value": "1" - } - }, - { - "id": 46, - "name": "a", - "kind": 32, - "kindString": "Variable", - "flags": { - "isConst": true - }, - "comment": { - "shortText": "A simple named export that will be exported from export.ts" - }, - "type": { - "type": "literal", - "value": 1 - }, - "defaultValue": "1" - }, { "id": 18, "name": "add", @@ -334,10 +322,12 @@ "title": "References", "kind": 16777216, "children": [ + 50, 43, 45, 44, 49, + 46, 47, 42 ] @@ -350,20 +340,6 @@ 29 ] }, - { - "title": "Type aliases", - "kind": 4194304, - "children": [ - 50 - ] - }, - { - "title": "Variables", - "kind": 32, - "children": [ - 46 - ] - }, { "title": "Functions", "kind": 64, diff --git a/src/test/renderer/specs/modules/mod2.html b/src/test/renderer/specs/modules/mod2.html index 54192a411..63b5a5115 100644 --- a/src/test/renderer/specs/modules/mod2.html +++ b/src/test/renderer/specs/modules/mod2.html @@ -70,10 +70,10 @@

Index

-

Variables

+

References

@@ -86,37 +86,16 @@

Functions

-

Variables

-
+

References

+
-

Const a

-
a: 1 = 1
- +

a

+ Re-exports a
-
+
-

Const gh1475

-
gh1475: { both: string; get getIt(): number; set setIt(n: number) } = ...
- -
-

Type declaration

-
    -
  • -
    get both(): string
    -
  • -
  • -
    set both(x: string): void
    -
  • -
  • -
    get getIt(): number
    -
  • -
  • -
    set setIt(n: number): void
    -
  • -
-
+

gh1475

+ Re-exports gh1475
@@ -194,10 +173,10 @@

Returns void