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]>, 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">; 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 // swift-symbolgraph-extract-only options
def output_dir : Separate<["-"], "output-dir">, def output_dir : Separate<["-"], "output-dir">,
Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption, Flags<[NoDriverOption, SwiftSymbolGraphExtractOption, SwiftAPIDigesterOption,

View File

@@ -980,6 +980,7 @@ Remangler::mangleDependentGenericConformanceRequirement(Node *node,
unsigned depth) { unsigned depth) {
DEMANGLER_ASSERT(node->getNumChildren() == 2, node); DEMANGLER_ASSERT(node->getNumChildren() == 2, node);
Node *ProtoOrClass = node->getChild(1); Node *ProtoOrClass = node->getChild(1);
DEMANGLER_ASSERT(ProtoOrClass->hasChildren(), ProtoOrClass);
if (ProtoOrClass->getFirstChild()->getKind() == Node::Kind::Protocol) { if (ProtoOrClass->getFirstChild()->getKind() == Node::Kind::Protocol) {
RETURN_IF_ERROR(manglePureProtocol(ProtoOrClass, depth + 1)); RETURN_IF_ERROR(manglePureProtocol(ProtoOrClass, depth + 1));
auto Mangling = mangleConstrainedType(node->getChild(0), 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_emit_symbol_graph_dir);
} }
context.Args.AddLastArg(Arguments, options::OPT_include_spi_symbols); 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_symbol_graph_minimum_access_level);
return II; 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);
context.Args.AddLastArg(Arguments, options::OPT_emit_symbol_graph_dir); 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_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_symbol_graph_minimum_access_level);
context.Args.AddLastArg(Arguments, options::OPT_import_objc_header); 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_skip_inherited_docs),
ParsedArgs.hasArg(OPT_include_spi_symbols), ParsedArgs.hasArg(OPT_include_spi_symbols),
/*IncludeClangDocs=*/false, /*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)) { 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.SkipInheritedDocs = Args.hasArg(OPT_skip_inherited_docs);
Opts.IncludeSPISymbols = Args.hasArg(OPT_include_spi_symbols); Opts.IncludeSPISymbols = Args.hasArg(OPT_include_spi_symbols);
Opts.EmitExtensionBlockSymbols = 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)) { if (auto *A = Args.getLastArg(OPT_symbol_graph_minimum_access_level)) {
Opts.MinimumAccessLevel = Opts.MinimumAccessLevel =

View File

@@ -26,6 +26,9 @@
}, },
{ {
"name": "emit-const-value-sidecar" "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. /// - Parameter elements: A variadic list of elements of the new set.
@inlinable @inlinable
@inline(__always)
public init(arrayLiteral elements: Element...) { public init(arrayLiteral elements: Element...) {
if elements.isEmpty { if elements.isEmpty {
self.init() self.init()
return return
} }
self.init(_nonEmptyArrayLiteral: elements)
}
@_alwaysEmitIntoClient
internal init(_nonEmptyArrayLiteral elements: [Element]) {
let native = _NativeSet<Element>(capacity: elements.count) let native = _NativeSet<Element>(capacity: elements.count)
for element in elements { for element in elements {
let (bucket, found) = native.find(element) 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: %empty-directory(%t)
// RUN: %target-build-swift %s -module-name BasicExtension -emit-module -emit-module-path %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: %FileCheck %s --input-file %t/BasicExtension@Swift.symbols.json --check-prefixes ALL,EXTRACT,EBSOff,EBSOff_EXTRACT
// RUN: %empty-directory(%t) // 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 // RUN: %FileCheck %s --input-file %t/BasicExtension@Swift.symbols.json --check-prefixes ALL,BUILD,EBSOff,EBSOff_BUILD