Skip to content

Commit 6da529f

Browse files
authored
Merge pull request #79753 from artemcm/NewConstFeatureDefinition
[Compile Time Values] Add a new experimental feature and the parsing of the `@const` attribute
2 parents 3a744d2 + 13a8d4b commit 6da529f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+169
-120
lines changed

include/swift/AST/ASTBridging.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -2496,11 +2496,11 @@ BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext,
24962496
BridgedArrayRef types,
24972497
BridgedSourceLoc cFirstAmpLoc);
24982498

2499-
SWIFT_NAME("BridgedCompileTimeConstTypeRepr.createParsed(_:base:specifierLoc:)")
2500-
BridgedCompileTimeConstTypeRepr
2501-
BridgedCompileTimeConstTypeRepr_createParsed(BridgedASTContext cContext,
2502-
BridgedTypeRepr base,
2503-
BridgedSourceLoc cSpecifierLoc);
2499+
SWIFT_NAME("BridgedCompileTimeLiteralTypeRepr.createParsed(_:base:specifierLoc:)")
2500+
BridgedCompileTimeLiteralTypeRepr
2501+
BridgedCompileTimeLiteralTypeRepr_createParsed(BridgedASTContext cContext,
2502+
BridgedTypeRepr base,
2503+
BridgedSourceLoc cSpecifierLoc);
25042504

25052505
SWIFT_NAME("BridgedDeclRefTypeRepr.createParsed(_:base:name:nameLoc:"
25062506
"genericArguments:angleRange:)")

include/swift/AST/Decl.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -5939,7 +5939,7 @@ class AbstractStorageDecl : public ValueDecl {
59395939
void setStatic(bool IsStatic) {
59405940
Bits.AbstractStorageDecl.IsStatic = IsStatic;
59415941
}
5942-
bool isCompileTimeConst() const;
5942+
bool isCompileTimeLiteral() const;
59435943

59445944
/// \returns the way 'static'/'class' should be spelled for this declaration.
59455945
StaticSpellingKind getCorrectStaticSpelling() const;
@@ -6870,7 +6870,7 @@ class ParamDecl : public VarDecl {
68706870
Destructured = 1 << 0,
68716871

68726872
/// Whether or not this parameter is '_const'.
6873-
IsCompileTimeConst = 1 << 1,
6873+
IsCompileTimeLiteral = 1 << 1,
68746874
};
68756875

68766876
llvm::PointerIntPair<Identifier, 3, OptionSet<ArgumentNameFlags>>
@@ -7217,15 +7217,15 @@ class ParamDecl : public VarDecl {
72177217
}
72187218

72197219
/// Whether or not this parameter is marked with '_const'.
7220-
bool isCompileTimeConst() const {
7220+
bool isCompileTimeLiteral() const {
72217221
return ArgumentNameAndFlags.getInt().contains(
7222-
ArgumentNameFlags::IsCompileTimeConst);
7222+
ArgumentNameFlags::IsCompileTimeLiteral);
72237223
}
72247224

7225-
void setCompileTimeConst(bool value = true) {
7225+
void setCompileTimeLiteral(bool value = true) {
72267226
auto flags = ArgumentNameAndFlags.getInt();
7227-
flags = value ? flags | ArgumentNameFlags::IsCompileTimeConst
7228-
: flags - ArgumentNameFlags::IsCompileTimeConst;
7227+
flags = value ? flags | ArgumentNameFlags::IsCompileTimeLiteral
7228+
: flags - ArgumentNameFlags::IsCompileTimeLiteral;
72297229
ArgumentNameAndFlags.setInt(flags);
72307230
}
72317231

include/swift/AST/DeclAttr.def

+7-2
Original file line numberDiff line numberDiff line change
@@ -459,7 +459,7 @@ CONTEXTUAL_DECL_ATTR(nonisolated, Nonisolated,
459459
CONTEXTUAL_SIMPLE_DECL_ATTR(distributed, DistributedActor,
460460
DeclModifier | OnClass | OnFunc | OnAccessor | OnVar | ABIBreakingToAdd | ABIBreakingToRemove | APIBreakingToAdd | APIBreakingToRemove,
461461
118)
462-
CONTEXTUAL_SIMPLE_DECL_ATTR(_const, CompileTimeConst,
462+
CONTEXTUAL_SIMPLE_DECL_ATTR(_const, CompileTimeLiteral,
463463
DeclModifier | OnParam | OnVar | UserInaccessible | ABIStableToAdd | ABIStableToRemove | APIBreakingToAdd | APIStableToRemove,
464464
126)
465465
CONTEXTUAL_SIMPLE_DECL_ATTR(_local, KnownToBeLocal,
@@ -547,7 +547,12 @@ DECL_ATTR(execution, Execution,
547547
166)
548548
DECL_ATTR_FEATURE_REQUIREMENT(Execution, ExecutionAttribute)
549549

550-
LAST_DECL_ATTR(Execution)
550+
SIMPLE_DECL_ATTR(const, ConstVal,
551+
OnParam | OnVar | OnFunc | ABIStableToAdd | ABIBreakingToRemove | APIBreakingToAdd | APIBreakingToRemove,
552+
167)
553+
DECL_ATTR_FEATURE_REQUIREMENT(ConstVal, CompileTimeValues)
554+
555+
LAST_DECL_ATTR(ConstVal)
551556

552557
#undef DECL_ATTR_ALIAS
553558
#undef CONTEXTUAL_DECL_ATTR_ALIAS

include/swift/AST/RequirementMatch.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ enum class MatchKind : uint8_t {
103103
EnumCaseWithAssociatedValues,
104104

105105
/// The witness did not match due to _const/non-_const differences.
106-
CompileTimeConstConflict,
106+
CompileTimeLiteralConflict,
107107
};
108108

109109
// Describes the kind of optional adjustment performed when
@@ -357,7 +357,7 @@ struct RequirementMatch {
357357
case MatchKind::TypeConflict:
358358
case MatchKind::MissingRequirement:
359359
case MatchKind::StaticNonStaticConflict:
360-
case MatchKind::CompileTimeConstConflict:
360+
case MatchKind::CompileTimeLiteralConflict:
361361
case MatchKind::SettableConflict:
362362
case MatchKind::PrefixNonPrefixConflict:
363363
case MatchKind::PostfixNonPostfixConflict:
@@ -394,7 +394,7 @@ struct RequirementMatch {
394394
case MatchKind::TypeConflict:
395395
case MatchKind::MissingRequirement:
396396
case MatchKind::StaticNonStaticConflict:
397-
case MatchKind::CompileTimeConstConflict:
397+
case MatchKind::CompileTimeLiteralConflict:
398398
case MatchKind::SettableConflict:
399399
case MatchKind::PrefixNonPrefixConflict:
400400
case MatchKind::PostfixNonPostfixConflict:
@@ -430,7 +430,7 @@ struct RequirementMatch {
430430
case MatchKind::Circularity:
431431
case MatchKind::KindConflict:
432432
case MatchKind::StaticNonStaticConflict:
433-
case MatchKind::CompileTimeConstConflict:
433+
case MatchKind::CompileTimeLiteralConflict:
434434
case MatchKind::SettableConflict:
435435
case MatchKind::PrefixNonPrefixConflict:
436436
case MatchKind::PostfixNonPostfixConflict:

include/swift/AST/TypeRepr.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -1112,7 +1112,7 @@ class SpecifierTypeRepr : public TypeRepr {
11121112
static bool classof(const TypeRepr *T) {
11131113
return T->getKind() == TypeReprKind::Ownership ||
11141114
T->getKind() == TypeReprKind::Isolated ||
1115-
T->getKind() == TypeReprKind::CompileTimeConst ||
1115+
T->getKind() == TypeReprKind::CompileTimeLiteral ||
11161116
T->getKind() == TypeReprKind::LifetimeDependent ||
11171117
T->getKind() == TypeReprKind::Sending;
11181118
}
@@ -1174,15 +1174,15 @@ class IsolatedTypeRepr : public SpecifierTypeRepr {
11741174
/// \code
11751175
/// x : _const Int
11761176
/// \endcode
1177-
class CompileTimeConstTypeRepr : public SpecifierTypeRepr {
1177+
class CompileTimeLiteralTypeRepr : public SpecifierTypeRepr {
11781178
public:
1179-
CompileTimeConstTypeRepr(TypeRepr *Base, SourceLoc InOutLoc)
1180-
: SpecifierTypeRepr(TypeReprKind::CompileTimeConst, Base, InOutLoc) {}
1179+
CompileTimeLiteralTypeRepr(TypeRepr *Base, SourceLoc InOutLoc)
1180+
: SpecifierTypeRepr(TypeReprKind::CompileTimeLiteral, Base, InOutLoc) {}
11811181

11821182
static bool classof(const TypeRepr *T) {
1183-
return T->getKind() == TypeReprKind::CompileTimeConst;
1183+
return T->getKind() == TypeReprKind::CompileTimeLiteral;
11841184
}
1185-
static bool classof(const CompileTimeConstTypeRepr *T) { return true; }
1185+
static bool classof(const CompileTimeLiteralTypeRepr *T) { return true; }
11861186
};
11871187

11881188
/// A sending type.
@@ -1626,7 +1626,7 @@ inline bool TypeRepr::isSimple() const {
16261626
case TypeReprKind::Isolated:
16271627
case TypeReprKind::Sending:
16281628
case TypeReprKind::Placeholder:
1629-
case TypeReprKind::CompileTimeConst:
1629+
case TypeReprKind::CompileTimeLiteral:
16301630
case TypeReprKind::LifetimeDependent:
16311631
case TypeReprKind::Integer:
16321632
return true;

include/swift/AST/TypeReprNodes.def

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ TYPEREPR(Placeholder, TypeRepr)
6969
ABSTRACT_TYPEREPR(Specifier, TypeRepr)
7070
SPECIFIER_TYPEREPR(Ownership, SpecifierTypeRepr)
7171
SPECIFIER_TYPEREPR(Isolated, SpecifierTypeRepr)
72-
SPECIFIER_TYPEREPR(CompileTimeConst, SpecifierTypeRepr)
72+
SPECIFIER_TYPEREPR(CompileTimeLiteral, SpecifierTypeRepr)
7373
SPECIFIER_TYPEREPR(Sending, SpecifierTypeRepr)
7474
TYPEREPR(Fixed, TypeRepr)
7575
TYPEREPR(SILBox, TypeRepr)

include/swift/AST/Types.h

+13-13
Original file line numberDiff line numberDiff line change
@@ -2386,7 +2386,7 @@ class ParameterTypeFlags {
23862386
Specifier = 7 << SpecifierShift,
23872387
NoDerivative = 1 << 6,
23882388
Isolated = 1 << 7,
2389-
CompileTimeConst = 1 << 8,
2389+
CompileTimeLiteral = 1 << 8,
23902390
Sending = 1 << 9,
23912391
Addressable = 1 << 10,
23922392
NumBits = 11
@@ -2404,20 +2404,20 @@ class ParameterTypeFlags {
24042404

24052405
ParameterTypeFlags(bool variadic, bool autoclosure, bool nonEphemeral,
24062406
ParamSpecifier specifier, bool isolated, bool noDerivative,
2407-
bool compileTimeConst, bool isSending, bool isAddressable)
2407+
bool compileTimeLiteral, bool isSending, bool isAddressable)
24082408
: value((variadic ? Variadic : 0) | (autoclosure ? AutoClosure : 0) |
24092409
(nonEphemeral ? NonEphemeral : 0) |
24102410
uint8_t(specifier) << SpecifierShift | (isolated ? Isolated : 0) |
24112411
(noDerivative ? NoDerivative : 0) |
2412-
(compileTimeConst ? CompileTimeConst : 0) |
2412+
(compileTimeLiteral ? CompileTimeLiteral : 0) |
24132413
(isSending ? Sending : 0) |
24142414
(isAddressable ? Addressable : 0)) {}
24152415

24162416
/// Create one from what's present in the parameter type
24172417
inline static ParameterTypeFlags
24182418
fromParameterType(Type paramTy, bool isVariadic, bool isAutoClosure,
24192419
bool isNonEphemeral, ParamSpecifier ownership,
2420-
bool isolated, bool isNoDerivative, bool compileTimeConst,
2420+
bool isolated, bool isNoDerivative, bool compileTimeLiteral,
24212421
bool isSending, bool isAddressable);
24222422

24232423
bool isNone() const { return !value; }
@@ -2428,7 +2428,7 @@ class ParameterTypeFlags {
24282428
bool isShared() const { return getValueOwnership() == ValueOwnership::Shared;}
24292429
bool isOwned() const { return getValueOwnership() == ValueOwnership::Owned; }
24302430
bool isIsolated() const { return value.contains(Isolated); }
2431-
bool isCompileTimeConst() const { return value.contains(CompileTimeConst); }
2431+
bool isCompileTimeLiteral() const { return value.contains(CompileTimeLiteral); }
24322432
bool isNoDerivative() const { return value.contains(NoDerivative); }
24332433
bool isSending() const { return value.contains(Sending); }
24342434
bool isAddressable() const { return value.contains(Addressable); }
@@ -2450,9 +2450,9 @@ class ParameterTypeFlags {
24502450
: ParamSpecifier::Default);
24512451
}
24522452

2453-
ParameterTypeFlags withCompileTimeConst(bool isConst) const {
2454-
return ParameterTypeFlags(isConst ? value | ParameterTypeFlags::CompileTimeConst
2455-
: value - ParameterTypeFlags::CompileTimeConst);
2453+
ParameterTypeFlags withCompileTimeLiteral(bool isConst) const {
2454+
return ParameterTypeFlags(isConst ? value | ParameterTypeFlags::CompileTimeLiteral
2455+
: value - ParameterTypeFlags::CompileTimeLiteral);
24562456
}
24572457

24582458
ParameterTypeFlags withShared(bool isShared) const {
@@ -2598,7 +2598,7 @@ class YieldTypeFlags {
25982598
/*autoclosure*/ false,
25992599
/*nonEphemeral*/ false, getOwnershipSpecifier(),
26002600
/*isolated*/ false, /*noDerivative*/ false,
2601-
/*compileTimeConst*/ false,
2601+
/*compileTimeLiteral*/ false,
26022602
/*is sending*/ false,
26032603
/*is addressable*/ false);
26042604
}
@@ -3391,8 +3391,8 @@ class AnyFunctionType : public TypeBase {
33913391
/// Whether or not the parameter is 'sending'.
33923392
bool isSending() const { return Flags.isSending(); }
33933393

3394-
/// Whether the parameter is 'isCompileTimeConst'.
3395-
bool isCompileTimeConst() const { return Flags.isCompileTimeConst(); }
3394+
/// Whether the parameter is 'isCompileTimeLiteral'.
3395+
bool isCompileTimeLiteral() const { return Flags.isCompileTimeLiteral(); }
33963396

33973397
/// Whether the parameter is marked '@noDerivative'.
33983398
bool isNoDerivative() const { return Flags.isNoDerivative(); }
@@ -8077,7 +8077,7 @@ inline TupleTypeElt TupleTypeElt::getWithType(Type T) const {
80778077
inline ParameterTypeFlags ParameterTypeFlags::fromParameterType(
80788078
Type paramTy, bool isVariadic, bool isAutoClosure, bool isNonEphemeral,
80798079
ParamSpecifier ownership, bool isolated, bool isNoDerivative,
8080-
bool compileTimeConst, bool isSending, bool isAddressable) {
8080+
bool compileTimeLiteral, bool isSending, bool isAddressable) {
80818081
// FIXME(Remove InOut): The last caller that needs this is argument
80828082
// decomposition. Start by enabling the assertion there and fixing up those
80838083
// callers, then remove this, then remove
@@ -8088,7 +8088,7 @@ inline ParameterTypeFlags ParameterTypeFlags::fromParameterType(
80888088
ownership = ParamSpecifier::InOut;
80898089
}
80908090
return {isVariadic, isAutoClosure, isNonEphemeral, ownership,
8091-
isolated, isNoDerivative, compileTimeConst, isSending,
8091+
isolated, isNoDerivative, compileTimeLiteral, isSending,
80928092
isAddressable};
80938093
}
80948094

include/swift/Basic/Features.def

+3
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,9 @@ EXPERIMENTAL_FEATURE(IsolatedConformances, true)
479479
/// Syntax sugar features for concurrency.
480480
EXPERIMENTAL_FEATURE(ConcurrencySyntaxSugar, true)
481481

482+
/// Allow declaration of compile-time values
483+
EXPERIMENTAL_FEATURE(CompileTimeValues, true)
484+
482485
#undef EXPERIMENTAL_FEATURE_EXCLUDED_FROM_MODULE_INTERFACE
483486
#undef EXPERIMENTAL_FEATURE
484487
#undef UPCOMING_FEATURE

include/swift/Demangling/DemangleNodes.def

+1-1
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ NODE(AsyncSuspendResumePartialFunction)
370370

371371
// Added in Swift 5.6
372372
NODE(AccessibleFunctionRecord)
373-
NODE(CompileTimeConst)
373+
NODE(CompileTimeLiteral)
374374

375375
// Added in Swift 5.7
376376
NODE(BackDeploymentThunk)

include/swift/Sema/CSFix.h

+7-7
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ enum class FixKind : uint8_t {
409409
AllowAssociatedValueMismatch,
410410

411411
/// Produce an error for not getting a compile-time constant
412-
NotCompileTimeConst,
412+
NotCompileTimeLiteral,
413413

414414
/// Ignore a type mismatch while trying to infer generic parameter type
415415
/// from default expression.
@@ -2084,20 +2084,20 @@ class RemoveReturn final : public ContextualMismatch {
20842084
}
20852085
};
20862086

2087-
class NotCompileTimeConst final : public ContextualMismatch {
2088-
NotCompileTimeConst(ConstraintSystem &cs, Type paramTy, ConstraintLocator *locator);
2087+
class NotCompileTimeLiteral final : public ContextualMismatch {
2088+
NotCompileTimeLiteral(ConstraintSystem &cs, Type paramTy, ConstraintLocator *locator);
20892089

20902090
public:
20912091
std::string getName() const override { return "replace with an literal"; }
20922092

20932093
bool diagnose(const Solution &solution, bool asNote = false) const override;
20942094

2095-
static NotCompileTimeConst *create(ConstraintSystem &cs,
2096-
Type paramTy,
2097-
ConstraintLocator *locator);
2095+
static NotCompileTimeLiteral *create(ConstraintSystem &cs,
2096+
Type paramTy,
2097+
ConstraintLocator *locator);
20982098

20992099
static bool classof(const ConstraintFix *fix) {
2100-
return fix->getKind() == FixKind::NotCompileTimeConst;
2100+
return fix->getKind() == FixKind::NotCompileTimeLiteral;
21012101
}
21022102
};
21032103

lib/APIDigester/ModuleAnalyzerNodes.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2439,7 +2439,7 @@ class ConstExtractor: public ASTWalker {
24392439
}
24402440
assert(ReferencedDecl);
24412441
if (auto *VAR = dyn_cast<VarDecl>(ReferencedDecl)) {
2442-
if (!VAR->getAttrs().hasAttribute<CompileTimeConstAttr>()) {
2442+
if (!VAR->getAttrs().hasAttribute<CompileTimeLiteralAttr>()) {
24432443
return false;
24442444
}
24452445
if (auto *PD = VAR->getParentPatternBinding()) {

lib/AST/ASTDumper.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -4643,7 +4643,7 @@ class PrintTypeRepr : public TypeReprVisitor<PrintTypeRepr, void, Label>,
46434643
printFoot();
46444644
}
46454645

4646-
void visitCompileTimeConstTypeRepr(CompileTimeConstTypeRepr *T, Label label) {
4646+
void visitCompileTimeLiteralTypeRepr(CompileTimeLiteralTypeRepr *T, Label label) {
46474647
printCommon("_const", label);
46484648
printRec(T->getBase(), Label::optional("base"));
46494649
printFoot();
@@ -4810,7 +4810,8 @@ class PrintAttribute : public AttributeVisitor<PrintAttribute, void, Label>,
48104810
TRIVIAL_ATTR_PRINTER(AtRethrows, at_rethrows)
48114811
TRIVIAL_ATTR_PRINTER(Borrowed, borrowed)
48124812
TRIVIAL_ATTR_PRINTER(Borrowing, borrowing)
4813-
TRIVIAL_ATTR_PRINTER(CompileTimeConst, compile_time_const)
4813+
TRIVIAL_ATTR_PRINTER(CompileTimeLiteral, compile_time_literal)
4814+
TRIVIAL_ATTR_PRINTER(ConstVal, compile_time_value)
48144815
TRIVIAL_ATTR_PRINTER(CompilerInitialized, compiler_initialized)
48154816
TRIVIAL_ATTR_PRINTER(Consuming, consuming)
48164817
TRIVIAL_ATTR_PRINTER(Convenience, convenience)
@@ -5804,7 +5805,7 @@ namespace {
58045805
printFlag(paramFlags.isVariadic(), "vararg");
58055806
printFlag(paramFlags.isAutoClosure(), "autoclosure");
58065807
printFlag(paramFlags.isNonEphemeral(), "nonEphemeral");
5807-
printFlag(paramFlags.isCompileTimeConst(), "compileTimeConst");
5808+
printFlag(paramFlags.isCompileTimeLiteral(), "compileTimeLiteral");
58085809
printFlag(getDumpString(paramFlags.getValueOwnership()));
58095810
}
58105811

lib/AST/ASTMangler.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3482,7 +3482,7 @@ void ASTMangler::appendParameterTypeListElement(
34823482
appendOperator("Yi");
34833483
if (flags.isSending())
34843484
appendOperator("Yu");
3485-
if (flags.isCompileTimeConst())
3485+
if (flags.isCompileTimeLiteral())
34863486
appendOperator("Yt");
34873487

34883488
if (!name.empty())

lib/AST/ASTPrinter.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -3864,7 +3864,7 @@ static void printParameterFlags(ASTPrinter &printer,
38643864
if (!options.excludeAttrKind(TypeAttrKind::Escaping) && escaping)
38653865
printer.printKeyword("@escaping", options, " ");
38663866

3867-
if (flags.isCompileTimeConst())
3867+
if (flags.isCompileTimeLiteral())
38683868
printer.printKeyword("_const", options, " ");
38693869
}
38703870

lib/AST/ASTWalker.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2325,7 +2325,7 @@ bool Traversal::visitSendingTypeRepr(SendingTypeRepr *T) {
23252325
return doIt(T->getBase());
23262326
}
23272327

2328-
bool Traversal::visitCompileTimeConstTypeRepr(CompileTimeConstTypeRepr *T) {
2328+
bool Traversal::visitCompileTimeLiteralTypeRepr(CompileTimeLiteralTypeRepr *T) {
23292329
return doIt(T->getBase());
23302330
}
23312331

lib/AST/Bridging/TypeReprBridging.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,12 @@ BridgedCompositionTypeRepr_createParsed(BridgedASTContext cContext,
267267
SourceRange{firstAmpLoc, types.back()->getEndLoc()});
268268
}
269269

270-
BridgedCompileTimeConstTypeRepr
271-
BridgedCompileTimeConstTypeRepr_createParsed(BridgedASTContext cContext,
272-
BridgedTypeRepr base,
273-
BridgedSourceLoc cSpecifierLoc) {
270+
BridgedCompileTimeLiteralTypeRepr
271+
BridgedCompileTimeLiteralTypeRepr_createParsed(BridgedASTContext cContext,
272+
BridgedTypeRepr base,
273+
BridgedSourceLoc cSpecifierLoc) {
274274
return new (cContext.unbridged())
275-
CompileTimeConstTypeRepr(base.unbridged(), cSpecifierLoc.unbridged());
275+
CompileTimeLiteralTypeRepr(base.unbridged(), cSpecifierLoc.unbridged());
276276
}
277277

278278
BridgedFunctionTypeRepr BridgedFunctionTypeRepr_createParsed(

0 commit comments

Comments
 (0)