Files
swift-mirror/test/IDE/comment_brief.swift
Ashley Garland 7a3a0a9e23 Symbol graph support
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
2020-01-10 09:53:37 -08:00

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.]