From 3011a3cfcadcbfc5d50f34b3ca8d3665de137843 Mon Sep 17 00:00:00 2001 From: Victoria Mitchell Date: Wed, 22 Dec 2021 16:34:49 -0700 Subject: [PATCH] [SymbolGraphGen] don't emit access control attributes in declarations rdar://85280786 --- lib/SymbolGraphGen/SymbolGraph.cpp | 4 +++ .../CursorInfo/cursor_symbol_graph.swift | 9 ------- .../cursor_symbol_graph_referenced.swift | 16 ------------ .../ClangImporter/EmitWhileBuilding.swift | 26 +++++++++++++++++++ .../Headers/EmitWhileBuilding.h | 1 + .../EmitWhileBuilding.swiftmodule/.keep | 0 .../EmitWhileBuilding.framework/ObjcProperty | 0 .../EmitWhileBuilding.framework/module.map | 4 +++ 8 files changed, 35 insertions(+), 25 deletions(-) create mode 100644 test/SymbolGraph/ClangImporter/EmitWhileBuilding.swift create mode 100644 test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Headers/EmitWhileBuilding.h create mode 100644 test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Modules/EmitWhileBuilding.swiftmodule/.keep create mode 100644 test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/ObjcProperty create mode 100644 test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/module.map diff --git a/lib/SymbolGraphGen/SymbolGraph.cpp b/lib/SymbolGraphGen/SymbolGraph.cpp index e115a0928bcdc..66fc5900489b0 100644 --- a/lib/SymbolGraphGen/SymbolGraph.cpp +++ b/lib/SymbolGraphGen/SymbolGraph.cpp @@ -99,6 +99,10 @@ PrintOptions SymbolGraph::getDeclarationFragmentsPrintOptions() const { ExcludeAttrs.insert(std::make_pair("DAK_Postfix", DAK_Postfix)); ExcludeAttrs.insert(std::make_pair("DAK_Infix", DAK_Infix)); + // In "emit modules separately" jobs, access modifiers show up as attributes, + // but we don't want them to be printed in declarations + ExcludeAttrs.insert(std::make_pair("DAK_AccessControl", DAK_AccessControl)); + for (const auto &Entry : ExcludeAttrs) { Opts.ExcludeAttrList.push_back(Entry.getValue()); } diff --git a/test/SourceKit/CursorInfo/cursor_symbol_graph.swift b/test/SourceKit/CursorInfo/cursor_symbol_graph.swift index fca7007c94949..80794a94c4a1f 100644 --- a/test/SourceKit/CursorInfo/cursor_symbol_graph.swift +++ b/test/SourceKit/CursorInfo/cursor_symbol_graph.swift @@ -182,15 +182,6 @@ enum MyEnum { // CHECKY: "symbols": [ // CHECKY: { // CHECKY: "accessLevel": "private", -// CHECKY: "declarationFragments": [ -// CHECKY: { -// CHECKY: "kind": "keyword", -// CHECKY: "spelling": "private" -// CHECKY: }, -// CHECKY: { -// CHECKY: "kind": "text", -// CHECKY: "spelling": " " -// CHECKY: }, // CHECKY: { // CHECKY: "kind": "keyword", // CHECKY: "spelling": "var" diff --git a/test/SourceKit/CursorInfo/cursor_symbol_graph_referenced.swift b/test/SourceKit/CursorInfo/cursor_symbol_graph_referenced.swift index 5cfe3805389b3..1754032227536 100644 --- a/test/SourceKit/CursorInfo/cursor_symbol_graph_referenced.swift +++ b/test/SourceKit/CursorInfo/cursor_symbol_graph_referenced.swift @@ -237,14 +237,6 @@ extension Parent { // PRIVATE: "declarationFragments": [ // PRIVATE-NEXT: { // PRIVATE-NEXT: "kind": "keyword", -// PRIVATE-NEXT: "spelling": "private" -// PRIVATE-NEXT: }, -// PRIVATE-NEXT: { -// PRIVATE-NEXT: "kind": "text", -// PRIVATE-NEXT: "spelling": " " -// PRIVATE-NEXT: }, -// PRIVATE-NEXT: { -// PRIVATE-NEXT: "kind": "keyword", // PRIVATE-NEXT: "spelling": "func" // PRIVATE-NEXT: }, // PRIVATE-NEXT: { @@ -302,14 +294,6 @@ extension Parent { // SPI: "declarationFragments": [ // SPI-NEXT: { // SPI-NEXT: "kind": "keyword", -// SPI-NEXT: "spelling": "internal" -// SPI-NEXT: }, -// SPI-NEXT: { -// SPI-NEXT: "kind": "text", -// SPI-NEXT: "spelling": " " -// SPI-NEXT: }, -// SPI-NEXT: { -// SPI-NEXT: "kind": "keyword", // SPI-NEXT: "spelling": "func" // SPI-NEXT: }, // SPI-NEXT: { diff --git a/test/SymbolGraph/ClangImporter/EmitWhileBuilding.swift b/test/SymbolGraph/ClangImporter/EmitWhileBuilding.swift new file mode 100644 index 0000000000000..f44a3bdcf9b62 --- /dev/null +++ b/test/SymbolGraph/ClangImporter/EmitWhileBuilding.swift @@ -0,0 +1,26 @@ +// RUN: %empty-directory(%t) +// RUN: cp -r %S/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework %t +// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-objc-interop -emit-module-path %t/EmitWhileBuilding.framework/Modules/EmitWhileBuilding.swiftmodule/%target-swiftmodule-name -import-underlying-module -F %t -module-name EmitWhileBuilding -disable-objc-attr-requires-foundation-module %s -emit-symbol-graph -emit-symbol-graph-dir %t +// RUN: %{python} -m json.tool %t/EmitWhileBuilding.symbols.json %t/EmitWhileBuilding.formatted.symbols.json +// RUN: %FileCheck %s --input-file %t/EmitWhileBuilding.formatted.symbols.json + +// REQUIRES: objc_interop + +import Foundation + +public enum SwiftEnum {} + +// CHECK: "declarationFragments": [ +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "keyword", +// CHECK-NEXT: "spelling": "enum" +// CHECK-NEXT: }, +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "text", +// CHECK-NEXT: "spelling": " " +// CHECK-NEXT: }, +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "identifier", +// CHECK-NEXT: "spelling": "SwiftEnum" +// CHECK-NEXT: } +// CHECK-NEXT: ], diff --git a/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Headers/EmitWhileBuilding.h b/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Headers/EmitWhileBuilding.h new file mode 100644 index 0000000000000..97e9757f4261b --- /dev/null +++ b/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Headers/EmitWhileBuilding.h @@ -0,0 +1 @@ +double testVariable = 1.0; diff --git a/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Modules/EmitWhileBuilding.swiftmodule/.keep b/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/Modules/EmitWhileBuilding.swiftmodule/.keep new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/ObjcProperty b/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/ObjcProperty new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/module.map b/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/module.map new file mode 100644 index 0000000000000..11f3b12d04e5a --- /dev/null +++ b/test/SymbolGraph/ClangImporter/Inputs/EmitWhileBuilding/EmitWhileBuilding.framework/module.map @@ -0,0 +1,4 @@ +framework module EmitWhileBuilding { + header "EmitWhileBuilding.h" + export * +}