Merge remote-tracking branch 'origin/main' into rebranch

This commit is contained in:
swift-ci
2022-12-01 01:34:17 -08:00
9 changed files with 57 additions and 6 deletions

View File

@@ -1406,6 +1406,11 @@ def emit_extension_block_symbols: Flag<["-"], "emit-extension-block-symbols">,
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
HelpText<"Emit 'swift.extension' symbols for extensions to external types instead of directly associating members and conformances with the extended nominal when generating symbol graphs">;
def omit_extension_block_symbols: Flag<["-"], "omit-extension-block-symbols">,
Flags<[SwiftSymbolGraphExtractOption, FrontendOption,
NoInteractiveOption, SupplementaryOutput, HelpHidden]>,
HelpText<"Directly associate members and conformances with the extended nominal when generating symbol graphs instead of emitting 'swift.extension' symbols for extensions to external types">;
// swift-symbolgraph-extract-only options
def output_dir : Separate<["-"], "output-dir">,
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption,

View File

@@ -980,6 +980,7 @@ Remangler::mangleDependentGenericConformanceRequirement(Node *node,
unsigned depth) {
DEMANGLER_ASSERT(node->getNumChildren() == 2, node);
Node *ProtoOrClass = node->getChild(1);
DEMANGLER_ASSERT(ProtoOrClass->hasChildren(), ProtoOrClass);
if (ProtoOrClass->getFirstChild()->getKind() == Node::Kind::Protocol) {
RETURN_IF_ERROR(manglePureProtocol(ProtoOrClass, depth + 1));
auto Mangling = mangleConstrainedType(node->getChild(0), depth + 1);

View File

@@ -619,7 +619,8 @@ ToolChain::constructInvocation(const CompileJobAction &job,
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
}
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
options::OPT_omit_extension_block_symbols);
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
return II;
@@ -1116,7 +1117,8 @@ ToolChain::constructInvocation(const MergeModuleJobAction &job,
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph);
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir);
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols);
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols);
context.Args.AddLastArg(Arguments, options::OPT_emit_extension_block_symbols,
options::OPT_omit_extension_block_symbols);
context.Args.AddLastArg(Arguments, options::OPT_symbol_graph_minimum_access_level);
context.Args.AddLastArg(Arguments, options::OPT_import_objc_header);

View File

@@ -172,7 +172,8 @@ int swift_symbolgraph_extract_main(ArrayRef<const char *> Args,
ParsedArgs.hasArg(OPT_skip_inherited_docs),
ParsedArgs.hasArg(OPT_include_spi_symbols),
/*IncludeClangDocs=*/false,
ParsedArgs.hasArg(OPT_emit_extension_block_symbols),
ParsedArgs.hasFlag(OPT_emit_extension_block_symbols,
OPT_omit_extension_block_symbols, /*default=*/false),
};
if (auto *A = ParsedArgs.getLastArg(OPT_minimum_access_level)) {

View File

@@ -1323,7 +1323,8 @@ static void ParseSymbolGraphArgs(symbolgraphgen::SymbolGraphOptions &Opts,
Opts.SkipInheritedDocs = Args.hasArg(OPT_skip_inherited_docs);
Opts.IncludeSPISymbols = Args.hasArg(OPT_include_spi_symbols);
Opts.EmitExtensionBlockSymbols =
Args.hasArg(OPT_emit_extension_block_symbols);
Args.hasFlag(OPT_emit_extension_block_symbols,
OPT_omit_extension_block_symbols, /*default=*/false);
if (auto *A = Args.getLastArg(OPT_symbol_graph_minimum_access_level)) {
Opts.MinimumAccessLevel =

View File

@@ -26,6 +26,9 @@
},
{
"name": "emit-const-value-sidecar"
},
{
"name": "emit-extension-block-symbols"
}
]
}

View File

@@ -212,11 +212,17 @@ extension Set: ExpressibleByArrayLiteral {
///
/// - Parameter elements: A variadic list of elements of the new set.
@inlinable
@inline(__always)
public init(arrayLiteral elements: Element...) {
if elements.isEmpty {
self.init()
return
}
self.init(_nonEmptyArrayLiteral: elements)
}
@_alwaysEmitIntoClient
internal init(_nonEmptyArrayLiteral elements: [Element]) {
let native = _NativeSet<Element>(capacity: elements.count)
for element in elements {
let (bucket, found) = native.find(element)

View File

@@ -0,0 +1,32 @@
// RUN: %target-swift-frontend -parse-as-library -primary-file %s -O -sil-verify-all -module-name=test -emit-sil | %FileCheck %s
// RUN: %target-swift-frontend -parse-as-library -primary-file %s -Osize -sil-verify-all -module-name=test -emit-sil | %FileCheck %s
// REQUIRES: swift_stdlib_no_asserts,optimized_stdlib
// REQUIRES: swift_in_compiler
// Test optimal code generation for creating empty sets.
// CHECK-LABEL: sil @$s4test30createEmptySetFromArrayLiteralShySiGyF
// CHECK: global_addr @_swiftEmptySetSingleton
// CHECK-NOT: apply
// CHECK: } // end sil function '$s4test30createEmptySetFromArrayLiteralShySiGyF'
public func createEmptySetFromArrayLiteral() -> Set<Int> {
return []
}
// CHECK-LABEL: sil @$s4test29createEmptySetWithInitializerShySiGyF
// CHECK: global_addr @_swiftEmptySetSingleton
// CHECK-NOT: apply
// CHECK: } // end sil function '$s4test29createEmptySetWithInitializerShySiGyF'
public func createEmptySetWithInitializer() -> Set<Int> {
return Set<Int>()
}
// CHECK-LABEL: sil @$s4test17createNonEmptySetShySiGyF
// CHECK: global_value
// CHECK: [[F:%[0-9]+]] = function_ref @$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfCSi_Tg5
// CHECK: apply [[F]]
// CHECK: } // end sil function '$s4test17createNonEmptySetShySiGyF'
public func createNonEmptySet() -> Set<Int> {
return [1, 2, 3]
}

View File

@@ -2,11 +2,11 @@
// RUN: %empty-directory(%t)
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t
// RUN: %target-swift-symbolgraph-extract -module-name BasicExtension -I %t -pretty-print -output-dir %t -omit-extension-block-symbols
// RUN: %FileCheck %s --input-file %t/BasicExtension@Swift.symbols.json --check-prefixes ALL,EXTRACT,EBSOff,EBSOff_EXTRACT
// RUN: %empty-directory(%t)
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %t/ -emit-symbol-graph -emit-symbol-graph-dir %t -omit-extension-block-symbols
// RUN: %FileCheck %s --input-file %t/BasicExtension@Swift.symbols.json --check-prefixes ALL,BUILD,EBSOff,EBSOff_BUILD