mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Adds a tool `swift-symbolgraph-extract` that reads an existing Swift module and prints a platform- and language-agnostic JSON description of the module, primarly for documentation. Adds a small sub-library `SymbolGraphGen` which houses the core implementation for collecting relevant information about declarations. The main entry point is integrated directly into the driver as a mode: the tool is meant to be run outside of the normal edit-compile-run/test workflow to avoid impacting build times. Along with common options for other tools, unique options include `pretty-print` for debugging, and a `minimum-access-level` options for including internal documentation. A symbol graph is a directed graph where the nodes are symbols in a module and the edges are relationships between them. For example, a `struct S` may have a member `var x`. The graph would have two nodes for `S` and `x`, and one "member-of" relationship edge. Other relationship kinds include "inherits-from" or "conforms to". The data format for a symbol graph is still under development and may change without notice until a specificiation and versioning scheme is published. Various aspects about a symbol are recorded in the nodes, such as availability, documentation comments, or data needed for printing the shapes of declarations without having to understand specifics about the langauge. Implicit and public-underscored stdlib declarations are not included by default. rdar://problem/55346798
153 lines
2.6 KiB
Swift
153 lines
2.6 KiB
Swift
// RUN: %target-swift-ide-test -print-comments -source-filename %s | %FileCheck %s
|
|
// REQUIRES: no_asan
|
|
|
|
///
|
|
func briefLine1() {}
|
|
|
|
/// Aaa.
|
|
func briefLine2() {}
|
|
|
|
/// Aaa.
|
|
/// Bbb.
|
|
func briefLine3() {}
|
|
|
|
/// Aaa.
|
|
///
|
|
/// Bbb.
|
|
func briefLine4() {}
|
|
|
|
/***/
|
|
func briefBlock1() {}
|
|
|
|
/**
|
|
*/
|
|
func briefBlock2() {}
|
|
|
|
/**
|
|
Aaa.
|
|
*/
|
|
func briefBlock3() {}
|
|
|
|
/**
|
|
Aaa.
|
|
*/
|
|
func briefBlock4() {}
|
|
|
|
/**
|
|
Aaa.
|
|
Bbb.
|
|
*/
|
|
func briefBlock5() {}
|
|
|
|
/**
|
|
Aaa.
|
|
|
|
Bbb.
|
|
*/
|
|
func briefBlock6() {}
|
|
|
|
/** Aaa.
|
|
* Bbb.
|
|
*/
|
|
func briefBlock7() {}
|
|
|
|
/** Aaa.
|
|
* Bbb.
|
|
* Ccc.
|
|
*/
|
|
func briefBlock8() {}
|
|
|
|
/** Aaa.
|
|
* Bbb.
|
|
Ccc.
|
|
*/
|
|
func briefBlock9() {}
|
|
|
|
/**
|
|
* Aaa.
|
|
*/
|
|
func briefBlockWithASCIIArt1() {}
|
|
|
|
/**
|
|
*
|
|
*/
|
|
func briefBlockWithASCIIArt2() {}
|
|
|
|
/**
|
|
* Aaa.
|
|
* Bbb.
|
|
*/
|
|
func briefBlockWithASCIIArt3() {}
|
|
|
|
/**
|
|
*Aaa.
|
|
*/
|
|
func briefBlockWithASCIIArt4() {}
|
|
|
|
/**
|
|
* Aaa.
|
|
Bbb.
|
|
*Ccc.
|
|
*/
|
|
func briefBlockWithASCIIArt5() {}
|
|
|
|
/**
|
|
* Aaa.
|
|
|
|
* Bbb.
|
|
*/
|
|
func briefBlockWithASCIIArt6() {}
|
|
|
|
|
|
/// Aaa.
|
|
/** Bbb. */
|
|
func briefMixed1() {}
|
|
|
|
/// Aaa.
|
|
/**
|
|
Bbb.
|
|
*/
|
|
func briefMixed2() {}
|
|
|
|
/**
|
|
Aaa.
|
|
*/
|
|
/**
|
|
Bbb.
|
|
*/
|
|
func briefMixed3() {}
|
|
|
|
struct Indentation {
|
|
/**
|
|
* Aaa.
|
|
*/
|
|
func briefBlockWithASCIIArt1() {}
|
|
}
|
|
|
|
|
|
// CHECK: Func/briefLine1 {{.*}} BriefComment=none
|
|
// CHECK-NEXT: Func/briefLine2 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefLine3 {{.*}} BriefComment=[Aaa. Bbb.]
|
|
// CHECK-NEXT: Func/briefLine4 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlock1 {{.*}} BriefComment=none
|
|
// CHECK-NEXT: Func/briefBlock2 {{.*}} BriefComment=none
|
|
// CHECK-NEXT: Func/briefBlock3 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlock4 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlock5 {{.*}} BriefComment=[Aaa. Bbb.]
|
|
// CHECK-NEXT: Func/briefBlock6 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlock7 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlock8 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlock9 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlockWithASCIIArt1 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefBlockWithASCIIArt2 {{.*}} BriefComment=none
|
|
// CHECK-NEXT: Func/briefBlockWithASCIIArt3 {{.*}} BriefComment=[Aaa. Bbb.]
|
|
// CHECK-NEXT: Func/briefBlockWithASCIIArt4 {{.*}} BriefComment=[*Aaa.]
|
|
// CHECK-NEXT: Func/briefBlockWithASCIIArt5 {{.*}} BriefComment=[Aaa. Bbb. *Ccc.]
|
|
// CHECK-NEXT: Func/briefBlockWithASCIIArt6 {{.*}} BriefComment=[Aaa.]
|
|
// CHECK-NEXT: Func/briefMixed1 {{.*}} BriefComment=[Aaa. Bbb.]
|
|
// CHECK-NEXT: Func/briefMixed2 {{.*}} BriefComment=[Aaa. Bbb.]
|
|
// CHECK-NEXT: Func/briefMixed3 {{.*}} BriefComment=[Aaa. Bbb.]
|
|
// CHECK-NEXT: Struct/Indentation RawComment=none
|
|
// CHECK-NEXT: Func/Indentation.briefBlockWithASCIIArt1 {{.*}} BriefComment=[Aaa.]
|
|
|