Skip to content

Commit 495c6e4

Browse files
authored
Merge pull request #65215 from hborla/5.9-enable-parameter-pack-functions
[5.9][SE-0393] Enable parameter packs for generic functions.
2 parents 6f96a91 + 4cbcd5a commit 495c6e4

34 files changed

+88
-110
lines changed

include/swift/AST/DiagnosticsCommon.def

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,13 @@ ERROR(macro_experimental,none,
225225
ERROR(ambiguous_macro_reference,none,
226226
"ambiguous reference to macro %0", (DeclName))
227227

228+
//------------------------------------------------------------------------------
229+
// MARK: tuple conformances
230+
//------------------------------------------------------------------------------
231+
ERROR(experimental_tuple_extension,none,
232+
"tuple extensions are experimental",
233+
())
234+
228235
//------------------------------------------------------------------------------
229236
// MARK: bridged diagnostics
230237
//------------------------------------------------------------------------------

include/swift/AST/DiagnosticsSema.def

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5370,6 +5370,10 @@ ERROR(tuple_pack_element_label,none,
53705370
ERROR(vararg_not_allowed,none,
53715371
"variadic parameter cannot appear outside of a function parameter list",
53725372
())
5373+
5374+
ERROR(experimental_type_with_parameter_pack,none,
5375+
"generic types with parameter packs are experimental",
5376+
())
53735377
ERROR(expansion_not_allowed,none,
53745378
"pack expansion %0 can only appear in a function parameter list, "
53755379
"tuple element, or generic argument list", (Type))

include/swift/Basic/Features.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ EXPERIMENTAL_FEATURE(NamedOpaqueTypes, false)
114114
EXPERIMENTAL_FEATURE(FlowSensitiveConcurrencyCaptures, false)
115115
EXPERIMENTAL_FEATURE(FreestandingMacros, true)
116116
EXPERIMENTAL_FEATURE(CodeItemMacros, true)
117+
EXPERIMENTAL_FEATURE(TupleConformances, false)
117118

118119
// FIXME: MoveOnlyClasses is not intended to be in production,
119120
// but our tests currently rely on it, and we want to run those

lib/AST/ASTPrinter.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3208,6 +3208,10 @@ static bool usesFeatureVariadicGenerics(Decl *decl) {
32083208
return false;
32093209
}
32103210

3211+
static bool usesFeatureTupleConformances(Decl *decl) {
3212+
return false;
3213+
}
3214+
32113215
static bool usesFeatureLayoutPrespecialization(Decl *decl) {
32123216
auto &attrs = decl->getAttrs();
32133217
return std::any_of(attrs.begin(), attrs.end(), [](auto *attr) {

lib/AST/NameLookup.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2981,7 +2981,16 @@ ExtendedNominalRequest::evaluate(Evaluator &evaluator,
29812981

29822982
// If there is more than 1 element, we will emit a warning or an error
29832983
// elsewhere, so don't handle that case here.
2984-
return nominalTypes.empty() ? nullptr : nominalTypes[0];
2984+
if (nominalTypes.empty())
2985+
return nullptr;
2986+
2987+
// Diagnose experimental tuple extensions.
2988+
if (isa<BuiltinTupleDecl>(nominalTypes[0]) &&
2989+
!ctx.LangOpts.hasFeature(Feature::TupleConformances)) {
2990+
ext->diagnose(diag::experimental_tuple_extension);
2991+
}
2992+
2993+
return nominalTypes[0];
29852994
}
29862995

29872996
/// Whether there are only associated types in the set of declarations.

lib/Parse/ParseDecl.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6459,8 +6459,7 @@ ParserResult<TypeDecl> Parser::parseDeclAssociatedType(Parser::ParseDeclOptions
64596459
}
64606460

64616461
// Reject variadic associated types with a specific error.
6462-
if (Context.LangOpts.hasFeature(Feature::VariadicGenerics) &&
6463-
Tok.isContextualKeyword("each")) {
6462+
if (Tok.isContextualKeyword("each")) {
64646463
const auto EachLoc = consumeToken();
64656464
diagnose(EachLoc, diag::associatedtype_cannot_be_variadic)
64666465
.fixItRemoveChars(EachLoc, Tok.getLoc());
@@ -6484,8 +6483,7 @@ ParserResult<TypeDecl> Parser::parseDeclAssociatedType(Parser::ParseDeclOptions
64846483
}
64856484

64866485
// Reject (early syntax) variadic associated types with a specific error.
6487-
if (Context.LangOpts.hasFeature(Feature::VariadicGenerics) &&
6488-
startsWithEllipsis(Tok)) {
6486+
if (startsWithEllipsis(Tok)) {
64896487
const auto EllipsisLoc = consumeStartingEllipsis();
64906488
const auto EllipsisEnd = Lexer::getLocForEndOfToken(SourceMgr, EllipsisLoc);
64916489
diagnose(EllipsisLoc, diag::associatedtype_cannot_be_variadic)

lib/Parse/ParseExpr.cpp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -531,8 +531,7 @@ ParserResult<Expr> Parser::parseExprUnary(Diag<> Message, bool isExprBasic) {
531531
tryLexRegexLiteral(/*forUnappliedOperator*/ false);
532532

533533
// 'repeat' as an expression prefix is a pack expansion expression.
534-
if (Context.LangOpts.hasFeature(Feature::VariadicGenerics) &&
535-
Tok.is(tok::kw_repeat)) {
534+
if (Tok.is(tok::kw_repeat)) {
536535
SourceLoc repeatLoc = consumeToken();
537536
auto patternExpr = parseExpr(Message);
538537
if (patternExpr.isNull())
@@ -3024,17 +3023,10 @@ ParserResult<Expr> Parser::parseTupleOrParenExpr(tok leftTok, tok rightTok) {
30243023
rightLoc);
30253024

30263025
// A tuple with a single, unlabeled element is just parentheses.
3027-
if (Context.LangOpts.hasFeature(Feature::VariadicGenerics)) {
3028-
if (elts.size() == 1 && !isa<PackExpansionExpr>(elts[0].E) &&
3029-
elts[0].LabelLoc.isInvalid()) {
3030-
return makeParserResult(
3031-
status, new (Context) ParenExpr(leftLoc, elts[0].E, rightLoc));
3032-
}
3033-
} else {
3034-
if (elts.size() == 1 && elts[0].Label.empty()) {
3035-
return makeParserResult(
3036-
status, new (Context) ParenExpr(leftLoc, elts[0].E, rightLoc));
3037-
}
3026+
if (elts.size() == 1 && !isa<PackExpansionExpr>(elts[0].E) &&
3027+
elts[0].Label.empty()) {
3028+
return makeParserResult(
3029+
status, new (Context) ParenExpr(leftLoc, elts[0].E, rightLoc));
30383030
}
30393031

30403032
SmallVector<Expr *, 8> exprs;

lib/Parse/ParseGeneric.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,7 @@ Parser::parseGenericParametersBeforeWhere(SourceLoc LAngleLoc,
6060

6161
// Parse the 'each' keyword for a type parameter pack 'each T'.
6262
SourceLoc EachLoc;
63-
if (Context.LangOpts.hasFeature(Feature::VariadicGenerics) &&
64-
Tok.isContextualKeyword("each")) {
63+
if (Tok.isContextualKeyword("each")) {
6564
TokReceiver->registerTokenKindChange(Tok.getLoc(),
6665
tok::contextual_keyword);
6766
EachLoc = consumeToken();
@@ -78,8 +77,7 @@ Parser::parseGenericParametersBeforeWhere(SourceLoc LAngleLoc,
7877

7978
// Parse and diagnose the unsupported ellipsis for a type parameter pack
8079
// 'T...'.
81-
if (Context.LangOpts.hasFeature(Feature::VariadicGenerics) &&
82-
startsWithEllipsis(Tok)) {
80+
if (startsWithEllipsis(Tok)) {
8381
const auto EllipsisLoc = consumeStartingEllipsis();
8482
// TODO: token length hardcoded because calculation for ellipsis
8583
// incorrectly includes '>' if one follows (as can occur in this parse).

lib/Parse/ParseStmt.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,7 @@ bool Parser::isStartOfStmt() {
6868
// is a pack expansion expression.
6969
// FIXME: 'repeat' followed by '{' could be a pack expansion
7070
// with a closure pattern.
71-
return !Context.LangOpts.hasFeature(Feature::VariadicGenerics) ||
72-
peekToken().is(tok::l_brace);
71+
return peekToken().is(tok::l_brace);
7372

7473
case tok::pound_line:
7574
// #line at the start of a line is a directive, when within, it is an expr.

lib/Sema/CSSimplify.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1755,8 +1755,7 @@ static ConstraintSystem::TypeMatchResult matchCallArguments(
17551755
// We pull these out special because variadic parameters ban lots of
17561756
// the more interesting typing constructs called out below like
17571757
// inout and @autoclosure.
1758-
if (cs.getASTContext().LangOpts.hasFeature(Feature::VariadicGenerics) &&
1759-
paramInfo.isVariadicGenericParameter(paramIdx)) {
1758+
if (paramInfo.isVariadicGenericParameter(paramIdx)) {
17601759
// If generic parameter comes from a variadic type declaration it's
17611760
// possible that it got specialized early and is no longer represented
17621761
// by a pack expansion type. For example, consider expression -

lib/Sema/MiscDiagnostics.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -293,15 +293,14 @@ static void diagSyntacticUseRestrictions(const Expr *E, const DeclContext *DC,
293293
}
294294
}
295295

296-
if (!Ctx.LangOpts.hasFeature(Feature::VariadicGenerics)) {
297-
// Diagnose single-element tuple expressions.
298-
if (auto *tupleExpr = dyn_cast<TupleExpr>(E)) {
299-
if (tupleExpr->getNumElements() == 1) {
300-
Ctx.Diags.diagnose(tupleExpr->getElementNameLoc(0),
301-
diag::tuple_single_element)
302-
.fixItRemoveChars(tupleExpr->getElementNameLoc(0),
303-
tupleExpr->getElement(0)->getStartLoc());
304-
}
296+
// Diagnose single-element tuple expressions.
297+
if (auto *tupleExpr = dyn_cast<TupleExpr>(E)) {
298+
if (tupleExpr->getNumElements() == 1 &&
299+
!isa<PackExpansionExpr>(tupleExpr->getElement(0))) {
300+
Ctx.Diags.diagnose(tupleExpr->getElementNameLoc(0),
301+
diag::tuple_single_element)
302+
.fixItRemoveChars(tupleExpr->getElementNameLoc(0),
303+
tupleExpr->getElement(0)->getStartLoc());
305304
}
306305
}
307306

lib/Sema/TypeCheckDeclPrimary.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,6 +473,15 @@ static void checkGenericParams(GenericContext *ownerCtx) {
473473
return;
474474

475475
for (auto gp : *genericParams) {
476+
// Diagnose generic types with a parameter packs if VariadicGenerics
477+
// is not enabled.
478+
auto *decl = ownerCtx->getAsDecl();
479+
auto &ctx = decl->getASTContext();
480+
if (gp->isParameterPack() && isa<GenericTypeDecl>(decl) &&
481+
!ctx.LangOpts.hasFeature(Feature::VariadicGenerics)) {
482+
decl->diagnose(diag::experimental_type_with_parameter_pack);
483+
}
484+
476485
TypeChecker::checkDeclAttributes(gp);
477486
checkInheritanceClause(gp);
478487
}

test/Constraints/pack_expansion_types.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
// RUN: %target-typecheck-verify-swift -enable-experimental-feature VariadicGenerics
2-
3-
// REQUIRES: asserts
1+
// RUN: %target-typecheck-verify-swift
42

53
func returnTuple1<each T>() -> (repeat each T) { fatalError() }
64
// expected-note@-1 3 {{in call to function 'returnTuple1()'}}

test/Constraints/variadic_generic_constraints.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
// RUN: %target-typecheck-verify-swift -enable-experimental-feature VariadicGenerics
2-
3-
// REQUIRES: asserts
1+
// RUN: %target-typecheck-verify-swift
42

53
// Test instantiation of constraint solver constraints from generic requirements
64
// involving type pack parameters

test/Constraints/variadic_generic_functions.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
// RUN: %target-typecheck-verify-swift -enable-experimental-feature VariadicGenerics
2-
3-
// REQUIRES: asserts
1+
// RUN: %target-typecheck-verify-swift
42

53
func debugPrint<each T>(_ items: repeat each T)
64
where repeat each T: CustomDebugStringConvertible

test/DebugInfo/variadic-generics-count.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
// RUN: %target-swift-frontend -emit-ir %s -g -o - \
2-
// RUN: -enable-experimental-feature VariadicGenerics \
32
// RUN: -parse-as-library -module-name a | %FileCheck %s
43

5-
// Because of -enable-experimental-feature VariadicGenerics
6-
// REQUIRES: asserts
7-
84
public func f1<each T>(ts: repeat each T) {
95
// CHECK: define {{.*}} @"$s1a2f12tsyxxQp_tRvzlF"(%swift.opaque** {{.*}}, i{{32|64}} [[COUNT1_1:.*]], %swift.type** {{.*}})
106
// CHECK-DAG: store i{{32|64}} [[COUNT1_1]], i{{32|64}}* %[[COUNT1_1_A:.*]], align

test/DebugInfo/variadic-generics.swift

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
// RUN: %target-swift-frontend -emit-ir %s -g -o - \
2-
// RUN: -enable-experimental-feature VariadicGenerics \
32
// RUN: -parse-as-library -module-name a | %FileCheck %s
43

5-
// Because of -enable-experimental-feature VariadicGenerics
6-
// REQUIRES: asserts
7-
84
public func foo<each T>(args: repeat each T) {
95
// CHECK: define {{.*}} @"$s1a3foo4argsyxxQp_tRvzlF"
106
// CHECK-SAME: %swift.type** %[[TYPE_PACK_ARG:.*]])

test/Generics/tuple-conformances.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %target-typecheck-verify-swift -enable-experimental-feature VariadicGenerics -parse-stdlib
1+
// RUN: %target-typecheck-verify-swift -enable-experimental-feature TupleConformances -parse-stdlib
22

33
// REQUIRES: asserts
44

test/IDE/complete_repeat.swift

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,23 @@ func enclosingFunc1() {
5252
// REPEAT_4: Decl[LocalVar]/Local: local0[#Int#];
5353
// REPEAT_4-NOT: LocalVar
5454

55-
repeat {
56-
let local1 = 1
57-
#^REPEAT_5^#
58-
} while
55+
do {
56+
repeat {
57+
let local1 = 1
58+
#^REPEAT_5^#
59+
} while
60+
}
5961
// REPEAT_5-NOT: LocalVar
6062
// REPEAT_5: Decl[LocalVar]/Local: local1[#Int#];
6163
// REPEAT_5-NOT: LocalVar
6264

63-
repeat {
64-
let local1 = 1
65+
do {
6566
repeat {
66-
let local2 = 1
67-
} while #^REPEAT_COND_1^#
67+
let local1 = 1
68+
repeat {
69+
let local2 = 1
70+
} while #^REPEAT_COND_1^#
71+
}
6872
}
6973
// REPEAT_COND_1-NOT: LocalVar
7074
// REPEAT_COND_1: Decl[LocalVar]/Local: local1[#Int#];

test/IRGen/run_variadic_generics.sil

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
// RUN: %empty-directory(%t)
22
// RUN: %target-build-swift-dylib(%t/%target-library-name(PrintShims)) -parse-stdlib %S/../Inputs/print-shims-stdlib.swift -module-name PrintShims -emit-module -emit-module-path %t/PrintShims.swiftmodule
33
// RUN: %target-codesign %t/%target-library-name(PrintShims)
4-
// RUN: %target-build-swift -enable-experimental-feature VariadicGenerics -g -parse-sil %s -emit-ir -I %t -L %t -lPrintShim | %FileCheck %s --check-prefix=CHECK-LL
5-
// RUN: %target-build-swift -enable-experimental-feature VariadicGenerics -g -parse-sil %s -module-name main -o %t/main -I %t -L %t -lPrintShims %target-rpath(%t)
4+
// RUN: %target-build-swift -g -parse-sil %s -emit-ir -I %t -L %t -lPrintShim | %FileCheck %s --check-prefix=CHECK-LL
5+
// RUN: %target-build-swift -g -parse-sil %s -module-name main -o %t/main -I %t -L %t -lPrintShims %target-rpath(%t)
66
// RUN: %target-codesign %t/main
77
// RUN: %target-run %t/main %t/%target-library-name(PrintShims) | %FileCheck %s
88

99
// REQUIRES: executable_test
1010

11-
// Because of -enable-experimental-feature VariadicGenerics
12-
// REQUIRES: asserts
13-
1411
import Builtin
1512
import Swift
1613
import PrintShims

test/IRGen/variadic_generic_captures.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
// REQUIRES: rdar107424494
2-
// RUN: %target-swift-frontend -emit-ir %s -enable-experimental-feature VariadicGenerics | %FileCheck %s -DINT=i%target-ptrsize
3-
4-
// Because of -enable-experimental-feature VariadicGenerics
5-
// REQUIRES: asserts
2+
// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize
63

74
public func takesNoEscape(_: () -> ()) {}
85

test/IRGen/variadic_generic_functions.sil

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// RUN: %target-swift-frontend -parse-sil -emit-ir -primary-file %s -enable-experimental-feature VariadicGenerics | %IRGenFileCheck %s
2-
3-
// Because of -enable-experimental-feature VariadicGenerics
4-
// REQUIRES: asserts
1+
// RUN: %target-swift-frontend -parse-sil -emit-ir -primary-file %s | %IRGenFileCheck %s
52

63
import Builtin
74
import Swift

test/IRGen/variadic_generic_functions.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// RUN: %target-swift-frontend -emit-ir -primary-file %s -enable-experimental-feature VariadicGenerics | %FileCheck %s
2-
3-
// Because of -enable-experimental-feature VariadicGenerics
4-
// REQUIRES: asserts
1+
// RUN: %target-swift-frontend -emit-ir -primary-file %s | %FileCheck %s
52

63
// REQUIRES: PTRSIZE=64
74

test/IRGen/variadic_generic_outlining.sil

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// RUN: %target-swift-frontend -emit-ir -primary-file %s -enable-experimental-feature VariadicGenerics | %IRGenFileCheck %s
2-
3-
// Because of -enable-experimental-feature VariadicGenerics
4-
// REQUIRES: asserts
1+
// RUN: %target-swift-frontend -emit-ir -primary-file %s | %IRGenFileCheck %s
52

63
import Builtin
74
import Swift

test/IRGen/variadic_generics.sil

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// RUN: %target-swift-frontend -emit-ir -primary-file %s -enable-experimental-feature VariadicGenerics | %IRGenFileCheck %s
2-
3-
// Because of -enable-experimental-feature VariadicGenerics
4-
// REQUIRES: asserts
1+
// RUN: %target-swift-frontend -emit-ir -primary-file %s | %IRGenFileCheck %s
52

63
import Builtin
74
import Swift

test/Interpreter/variadic_generic_captures.swift

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
1-
// RUN: %target-run-simple-swift(-enable-experimental-feature VariadicGenerics -Xfrontend -disable-concrete-type-metadata-mangled-name-accessors)
2-
// RUN: %target-run-simple-swift(-enable-experimental-feature VariadicGenerics)
1+
// RUN: %target-run-simple-swift(-Xfrontend -disable-concrete-type-metadata-mangled-name-accessors)
2+
// RUN: %target-run-simple-swift
33

44
// REQUIRES: executable_test
55

6-
// Because of -enable-experimental-feature VariadicGenerics
7-
// REQUIRES: asserts
8-
96
// UNSUPPORTED: use_os_stdlib
107
// UNSUPPORTED: back_deployment_runtime
118

test/Interpreter/variadic_generic_tuples.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
1-
// RUN: %target-run-simple-swift(-enable-experimental-feature VariadicGenerics)
1+
// RUN: %target-run-simple-swift
22

33
// FIXME: Fix the optimizer
44
// REQUIRES: swift_test_mode_optimize_none
55

66
// REQUIRES: executable_test
77

8-
// Because of -enable-experimental-feature VariadicGenerics
9-
// REQUIRES: asserts
10-
118
import StdlibUnittest
129

1310
var tuples = TestSuite("VariadicGenericTuples")

test/Macros/macro_expand_variadic.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
// RUN: %empty-directory(%t)
44
// RUN: %host-build-swift -swift-version 5 -emit-library -o %t/%target-library-name(MacroDefinition) -module-name=MacroDefinition %S/Inputs/variadic_macros.swift -g -no-toolchain-stdlib-rpath
5-
// RUN: %target-typecheck-verify-swift -swift-version 5 -enable-experimental-feature VariadicGenerics -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -swift-version 5
6-
// RUN: %target-build-swift -swift-version 5 -enable-experimental-feature VariadicGenerics -load-plugin-library %t/%target-library-name(MacroDefinition) %s -o %t/main -module-name MacroUser -swift-version 5
5+
// RUN: %target-typecheck-verify-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) -module-name MacroUser -DTEST_DIAGNOSTICS -swift-version 5
6+
// RUN: %target-build-swift -swift-version 5 -load-plugin-library %t/%target-library-name(MacroDefinition) %s -o %t/main -module-name MacroUser -swift-version 5
77
// RUN: %target-codesign %t/main
88
// RUN: %target-run %t/main | %FileCheck %s
99

test/SIL/Parser/variadic_generics.sil

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %target-sil-opt -enable-experimental-feature VariadicGenerics -enable-sil-verify-all=true %s | %target-sil-opt -enable-experimental-feature VariadicGenerics -enable-sil-verify-all=true | %FileCheck %s
1+
// RUN: %target-sil-opt -enable-sil-verify-all=true %s | %target-sil-opt -enable-sil-verify-all=true | %FileCheck %s
22

33
import Builtin
44
import Swift

test/SILGen/variadic-generic-arguments.swift

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
// RUN: %target-swift-emit-silgen -enable-experimental-feature VariadicGenerics %s | %FileCheck %s
2-
3-
// Because of -enable-experimental-feature VariadicGenerics
4-
// REQUIRES: asserts
1+
// RUN: %target-swift-emit-silgen %s | %FileCheck %s
52

63
// CHECK-LABEL: @$s4main14receive_simpleyyxxQpRvzlF : $@convention(thin) <each T> (@pack_guaranteed Pack{repeat each T}) -> () {
74
// CHECK: bb0(%0 : $*Pack{repeat each T}):

0 commit comments

Comments
 (0)