Skip to content

Commit 1114204

Browse files
committed
Merge branch 'astgen-fixfix' into astgen-enable
2 parents 3286b0a + 54da89e commit 1114204

25 files changed

+375
-67
lines changed

include/swift/AST/ASTBridging.h

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ BridgedDeclBaseName
176176
BridgedDeclBaseName_createIdentifier(BridgedIdentifier identifier);
177177

178178
class BridgedDeclNameRef {
179-
void *_Nonnull opaque;
179+
void *_Nullable opaque;
180180

181181
public:
182182
BRIDGED_INLINE BridgedDeclNameRef();
@@ -317,6 +317,10 @@ enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedEndianness : size_t {
317317
EndianBig,
318318
};
319319

320+
SWIFT_NAME("getter:BridgedASTContext.langOptsAttachCommentsToDecls(self:)")
321+
bool BridgedASTContext_langOptsAttachCommentsToDecls(
322+
BridgedASTContext cContext);
323+
320324
SWIFT_NAME("getter:BridgedASTContext.langOptsTargetEndianness(self:)")
321325
BridgedEndianness BridgedASTContext_langOptsTargetEndianness(BridgedASTContext cContext);
322326

@@ -843,6 +847,9 @@ struct BridgedDeclAttributes {
843847
BRIDGED_INLINE swift::DeclAttributes unbridged() const;
844848
};
845849

850+
SWIFT_NAME("BridgedDeclAttribute.shouldBeRejectedByParser(_:)")
851+
bool BridgedDeclAttribute_shouldBeRejectedByParser(BridgedDeclAttrKind cKind);
852+
846853
SWIFT_NAME("BridgedDeclAttribute.isDeclModifier(_:)")
847854
bool BridgedDeclAttribute_isDeclModifier(BridgedDeclAttrKind cKind);
848855

@@ -870,15 +877,16 @@ enum ENUM_EXTENSIBILITY_ATTR(closed) BridgedAvailableAttrKind {
870877

871878
SWIFT_NAME("BridgedAvailableAttr.createParsed(_:atLoc:range:domainIdentifier:"
872879
"domainLoc:kind:message:renamed:introduced:introducedRange:"
873-
"deprecated:deprecatedRange:obsoleted:obsoletedRange:)")
880+
"deprecated:deprecatedRange:obsoleted:obsoletedRange:isSPI:)")
874881
BridgedAvailableAttr BridgedAvailableAttr_createParsed(
875882
BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
876883
BridgedSourceRange cRange, BridgedIdentifier cDomainIdentifier,
877884
BridgedSourceLoc cDomainLoc, BridgedAvailableAttrKind cKind,
878885
BridgedStringRef cMessage, BridgedStringRef cRenamed,
879886
BridgedVersionTuple cIntroduced, BridgedSourceRange cIntroducedRange,
880887
BridgedVersionTuple cDeprecated, BridgedSourceRange cDeprecatedRange,
881-
BridgedVersionTuple cObsoleted, BridgedSourceRange cObsoletedRange);
888+
BridgedVersionTuple cObsoleted, BridgedSourceRange cObsoletedRange,
889+
bool isSPI);
882890

883891
SWIFT_NAME("BridgedAvailableAttr.createUnavailableInEmbedded(_:atLoc:range:)")
884892
BridgedAvailableAttr
@@ -1368,6 +1376,11 @@ BridgedTransposeAttr BridgedTransposeAttr_createParsed(
13681376
BridgedDeclNameRef cOriginalName, BridgedDeclNameLoc cOriginalNameLoc,
13691377
BridgedArrayRef cParams);
13701378

1379+
SWIFT_NAME("BridgedTypeEraserAttr.createParsed(_:atLoc:range:typeExpr:)")
1380+
BridgedTypeEraserAttr BridgedTypeEraserAttr_createParsed(
1381+
BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
1382+
BridgedSourceRange cRange, BridgedTypeExpr cTypeExpr);
1383+
13711384
SWIFT_NAME(
13721385
"BridgedUnavailableFromAsyncAttr.createParsed(_:atLoc:range:message:)")
13731386
BridgedUnavailableFromAsyncAttr BridgedUnavailableFromAsyncAttr_createParsed(
@@ -1590,13 +1603,15 @@ BridgedAssociatedTypeDecl BridgedAssociatedTypeDecl_createParsed(
15901603

15911604
SWIFT_NAME(
15921605
"BridgedMacroDecl.createParsed(_:declContext:macroKeywordLoc:name:nameLoc:"
1593-
"genericParamList:paramList:arrowLoc:resultType:definition:)")
1606+
"genericParamList:paramList:arrowLoc:resultType:definition:"
1607+
"genericWhereClause:)")
15941608
BridgedMacroDecl BridgedMacroDecl_createParsed(
15951609
BridgedASTContext cContext, BridgedDeclContext cDeclContext,
15961610
BridgedSourceLoc cMacroLoc, BridgedIdentifier cName,
15971611
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList cGenericParams,
15981612
BridgedParameterList cParams, BridgedSourceLoc cArrowLoc,
1599-
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition);
1613+
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition,
1614+
BridgedNullableTrailingWhereClause genericWhereClause);
16001615

16011616
SWIFT_NAME("BridgedMacroExpansionDecl.createParsed(_:poundLoc:macroNameRef:"
16021617
"macroNameLoc:leftAngleLoc:genericArgs:rightAngleLoc:args:)")
@@ -2696,6 +2711,11 @@ BridgedOwnershipTypeRepr BridgedOwnershipTypeRepr_createParsed(
26962711
BridgedASTContext cContext, BridgedTypeRepr base,
26972712
BridgedParamSpecifier cSpecifier, BridgedSourceLoc cSpecifierLoc);
26982713

2714+
SWIFT_NAME("BridgedPlaceholderTypeRepr.createParsed(_:loc:)")
2715+
BridgedPlaceholderTypeRepr
2716+
BridgedPlaceholderTypeRepr_createParsed(BridgedASTContext cContext,
2717+
BridgedSourceLoc cLoc);
2718+
26992719
SWIFT_NAME("BridgedProtocolTypeRepr.createParsed(_:base:protocolKeywordLoc:)")
27002720
BridgedProtocolTypeRepr
27012721
BridgedProtocolTypeRepr_createParsed(BridgedASTContext cContext,
@@ -2727,10 +2747,11 @@ BridgedTupleTypeRepr BridgedTupleTypeRepr_createParsed(
27272747
BridgedASTContext cContext, BridgedArrayRef elements,
27282748
BridgedSourceLoc cLParenLoc, BridgedSourceLoc cRParenLoc);
27292749

2730-
SWIFT_NAME("BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:)")
2731-
BridgedNamedOpaqueReturnTypeRepr
2732-
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
2733-
BridgedTypeRepr baseTy);
2750+
SWIFT_NAME(
2751+
"BridgedNamedOpaqueReturnTypeRepr.createParsed(_:base:genericParamList:)")
2752+
BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
2753+
BridgedASTContext cContext, BridgedTypeRepr baseTy,
2754+
BridgedGenericParamList genericParams);
27342755

27352756
SWIFT_NAME("BridgedOpaqueReturnTypeRepr.createParsed(_:someKeywordLoc:base:)")
27362757
BridgedOpaqueReturnTypeRepr
@@ -2770,6 +2791,9 @@ SWIFT_NAME("BridgedAnyPattern.createParsed(_:loc:)")
27702791
BridgedAnyPattern BridgedAnyPattern_createParsed(BridgedASTContext cContext,
27712792
BridgedSourceLoc cLoc);
27722793

2794+
SWIFT_NAME("BridgedAnyPattern.createImplicit(_:)")
2795+
BridgedAnyPattern BridgedAnyPattern_createImplicit(BridgedASTContext cContext);
2796+
27732797
SWIFT_NAME("BridgedBindingPattern.createParsed(_:keywordLoc:isLet:subPattern:)")
27742798
BridgedBindingPattern
27752799
BridgedBindingPattern_createParsed(BridgedASTContext cContext,

lib/AST/Bridging/ASTContextBridging.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ BridgedASTContext_langOptsTargetPointerBitWidth(BridgedASTContext cContext) {
9898
: 0;
9999
}
100100

101+
bool BridgedASTContext_langOptsAttachCommentsToDecls(
102+
BridgedASTContext cContext) {
103+
return cContext.unbridged().LangOpts.AttachCommentsToDecls;
104+
}
105+
101106
BridgedEndianness
102107
BridgedASTContext_langOptsTargetEndianness(BridgedASTContext cContext) {
103108
return cContext.unbridged().LangOpts.Target.isLittleEndian() ? EndianLittle

lib/AST/Bridging/DeclAttributeBridging.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ BridgedDeclAttribute BridgedDeclAttribute_createSimple(
101101
cAtLoc.unbridged(), cAttrLoc.unbridged());
102102
}
103103

104+
bool BridgedDeclAttribute_shouldBeRejectedByParser(BridgedDeclAttrKind cKind) {
105+
auto optKind = unbridged(cKind);
106+
if (!optKind)
107+
return false;
108+
return DeclAttribute::shouldBeRejectedByParser(*optKind);
109+
}
110+
104111
bool BridgedDeclAttribute_isDeclModifier(BridgedDeclAttrKind cKind) {
105112
auto optKind = unbridged(cKind);
106113
if (!optKind)
@@ -136,7 +143,8 @@ BridgedAvailableAttr BridgedAvailableAttr_createParsed(
136143
BridgedStringRef cMessage, BridgedStringRef cRenamed,
137144
BridgedVersionTuple cIntroduced, BridgedSourceRange cIntroducedRange,
138145
BridgedVersionTuple cDeprecated, BridgedSourceRange cDeprecatedRange,
139-
BridgedVersionTuple cObsoleted, BridgedSourceRange cObsoletedRange) {
146+
BridgedVersionTuple cObsoleted, BridgedSourceRange cObsoletedRange,
147+
bool isSPI) {
140148

141149
return new (cContext.unbridged())
142150
AvailableAttr(cAtLoc.unbridged(), cRange.unbridged(),
@@ -146,7 +154,7 @@ BridgedAvailableAttr BridgedAvailableAttr_createParsed(
146154
cDeprecated.unbridged(), cDeprecatedRange.unbridged(),
147155
cObsoleted.unbridged(), cObsoletedRange.unbridged(),
148156
/*Implicit=*/false,
149-
/*IsSPI=*/false);
157+
/*IsSPI=*/isSPI);
150158
}
151159

152160
BridgedAvailableAttr
@@ -860,6 +868,15 @@ BridgedTransposeAttr BridgedTransposeAttr_createParsed(
860868
params);
861869
}
862870

871+
BridgedTypeEraserAttr BridgedTypeEraserAttr_createParsed(
872+
BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
873+
BridgedSourceRange cRange, BridgedTypeExpr cTypeExpr
874+
875+
) {
876+
return TypeEraserAttr::create(cContext.unbridged(), cAtLoc.unbridged(),
877+
cRange.unbridged(), cTypeExpr.unbridged());
878+
}
879+
863880
BridgedUnavailableFromAsyncAttr BridgedUnavailableFromAsyncAttr_createParsed(
864881
BridgedASTContext cContext, BridgedSourceLoc cAtLoc,
865882
BridgedSourceRange cRange, BridgedStringRef cMessage) {

lib/AST/Bridging/DeclBridging.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,15 +290,18 @@ BridgedMacroDecl BridgedMacroDecl_createParsed(
290290
BridgedSourceLoc cMacroLoc, BridgedIdentifier cName,
291291
BridgedSourceLoc cNameLoc, BridgedNullableGenericParamList cGenericParams,
292292
BridgedParameterList cParams, BridgedSourceLoc cArrowLoc,
293-
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition) {
293+
BridgedNullableTypeRepr cResultType, BridgedNullableExpr cDefinition,
294+
BridgedNullableTrailingWhereClause genericWhereClause) {
294295
ASTContext &context = cContext.unbridged();
295296
auto *params = cParams.unbridged();
296297
DeclName fullName = DeclName(context, cName.unbridged(), params);
297-
return new (context)
298+
auto *decl = new (context)
298299
MacroDecl(cMacroLoc.unbridged(), fullName, cNameLoc.unbridged(),
299300
cGenericParams.unbridged(), params, cArrowLoc.unbridged(),
300301
cResultType.unbridged(), cDefinition.unbridged(),
301302
cDeclContext.unbridged());
303+
decl->setTrailingWhereClause(genericWhereClause.unbridged());
304+
return decl;
302305
}
303306

304307
BridgedTypeAliasDecl BridgedTypeAliasDecl_createParsed(

lib/AST/Bridging/PatternBridging.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ BridgedAnyPattern BridgedAnyPattern_createParsed(BridgedASTContext cContext,
4242
return new (cContext.unbridged()) AnyPattern(cLoc.unbridged());
4343
}
4444

45+
BridgedAnyPattern BridgedAnyPattern_createImplicit(BridgedASTContext cContext) {
46+
return AnyPattern::createImplicit(cContext.unbridged());
47+
}
48+
4549
BridgedBindingPattern
4650
BridgedBindingPattern_createParsed(BridgedASTContext cContext,
4751
BridgedSourceLoc cKeywordLoc, bool isLet,

lib/AST/Bridging/TypeReprBridging.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,12 @@ BridgedOwnershipTypeRepr BridgedOwnershipTypeRepr_createParsed(
141141
base.unbridged(), unbridge(cSpecifier), cSpecifierLoc.unbridged());
142142
}
143143

144+
BridgedPlaceholderTypeRepr
145+
BridgedPlaceholderTypeRepr_createParsed(BridgedASTContext cContext,
146+
BridgedSourceLoc cLoc) {
147+
return new (cContext.unbridged()) PlaceholderTypeRepr(cLoc.unbridged());
148+
}
149+
144150
BridgedProtocolTypeRepr
145151
BridgedProtocolTypeRepr_createParsed(BridgedASTContext cContext,
146152
BridgedTypeRepr baseType,
@@ -287,11 +293,12 @@ BridgedFunctionTypeRepr BridgedFunctionTypeRepr_createParsed(
287293
resultType.unbridged());
288294
}
289295

290-
BridgedNamedOpaqueReturnTypeRepr
291-
BridgedNamedOpaqueReturnTypeRepr_createParsed(BridgedASTContext cContext,
292-
BridgedTypeRepr baseTy) {
296+
BridgedNamedOpaqueReturnTypeRepr BridgedNamedOpaqueReturnTypeRepr_createParsed(
297+
BridgedASTContext cContext, BridgedTypeRepr baseTy,
298+
BridgedGenericParamList genericParams) {
293299
ASTContext &context = cContext.unbridged();
294-
return new (context) NamedOpaqueReturnTypeRepr(baseTy.unbridged(), nullptr);
300+
return new (context)
301+
NamedOpaqueReturnTypeRepr(baseTy.unbridged(), genericParams.unbridged());
295302
}
296303

297304
BridgedOpaqueReturnTypeRepr

lib/AST/Module.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3751,6 +3751,10 @@ void SourceFile::setAvailabilityScope(AvailabilityScope *scope) {
37513751

37523752
ArrayRef<OpaqueTypeDecl *> SourceFile::getOpaqueReturnTypeDecls() {
37533753
for (auto *vd : UnvalidatedDeclsWithOpaqueReturnTypes.takeVector()) {
3754+
if (vd->getDeclContext()->getInnermostSkippedFunctionContext()) {
3755+
// Ignore things in skipped functions.
3756+
continue;
3757+
}
37543758
if (auto opaqueDecl = vd->getOpaqueResultTypeDecl()) {
37553759
auto inserted = ValidatedOpaqueReturnTypes.insert(
37563760
{opaqueDecl->getOpaqueReturnTypeIdentifier().str(),

lib/ASTGen/Sources/ASTGen/ASTGen.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,9 +128,17 @@ struct ASTGenVisitor {
128128
case .generated(let generated):
129129
return generated
130130
case .ignored:
131-
// Let regular 'self.generate(expr:)' generate the macro expansions.
132131
break
133132
}
133+
134+
// In non-script files, macro expansion at top-level must be a decl.
135+
if !declContext.parentSourceFile.isScriptMode {
136+
return withDeclContext(parentDC) {
137+
return .decl(self.generateMacroExpansionDecl(macroExpansionExpr: node).asDecl)
138+
}
139+
}
140+
141+
// Otherwise, let regular 'self.generate(expr:)' generate the macro expansions.
134142
}
135143
return .expr(self.generate(expr: node))
136144
}

lib/ASTGen/Sources/ASTGen/Availability.swift

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ extension ASTGenVisitor {
2323
func generateAvailableAttr(
2424
atLoc: BridgedSourceLoc,
2525
range: BridgedSourceRange,
26+
attrName: SyntaxText,
2627
args: AvailabilityArgumentListSyntax
2728
) -> [BridgedAvailableAttr] {
2829

30+
let isSPI = attrName == "_spi_available"
31+
2932
// Check if this is "shorthand" syntax.
3033
if let firstArg = args.first?.argument {
3134
// We need to check availability macros specified by '-define-availability'.
@@ -40,15 +43,14 @@ extension ASTGenVisitor {
4043
isShorthand = false
4144
}
4245
if isShorthand {
43-
return self.generateAvailableAttrShorthand(atLoc: atLoc, range: range, args: args)
46+
return self.generateAvailableAttrShorthand(atLoc: atLoc, range: range, args: args, isSPI: isSPI)
4447
}
4548
}
4649

4750
// E.g.
4851
// @available(macOS, introduced: 10.12, deprecated: 11.2)
4952
// @available(*, unavailable, message: "out of service")
50-
let attr = self.generateAvailableAttrExtended(atLoc: atLoc, range: range, args: args)
51-
53+
let attr = self.generateAvailableAttrExtended(atLoc: atLoc, range: range, args: args, isSPI: isSPI)
5254
if let attr {
5355
return [attr]
5456
} else {
@@ -66,7 +68,8 @@ extension ASTGenVisitor {
6668
func generateAvailableAttrShorthand(
6769
atLoc: BridgedSourceLoc,
6870
range: BridgedSourceRange,
69-
args: AvailabilityArgumentListSyntax
71+
args: AvailabilityArgumentListSyntax,
72+
isSPI: Bool
7073
) -> [BridgedAvailableAttr] {
7174
let specs = self.generateAvailabilitySpecList(args: args, context: .availableAttr)
7275

@@ -100,7 +103,8 @@ extension ASTGenVisitor {
100103
deprecated: BridgedVersionTuple(),
101104
deprecatedRange: BridgedSourceRange(),
102105
obsoleted: BridgedVersionTuple(),
103-
obsoletedRange: BridgedSourceRange()
106+
obsoletedRange: BridgedSourceRange(),
107+
isSPI: isSPI
104108
)
105109
attr.setIsGroupMember()
106110
if containsWildCard {
@@ -119,7 +123,8 @@ extension ASTGenVisitor {
119123
func generateAvailableAttrExtended(
120124
atLoc: BridgedSourceLoc,
121125
range: BridgedSourceRange,
122-
args: AvailabilityArgumentListSyntax
126+
args: AvailabilityArgumentListSyntax,
127+
isSPI: Bool
123128
) -> BridgedAvailableAttr? {
124129
var args = args[...]
125130

@@ -262,7 +267,8 @@ extension ASTGenVisitor {
262267
deprecated: deprecated?.version.bridged ?? BridgedVersionTuple(),
263268
deprecatedRange: deprecated?.range ?? BridgedSourceRange(),
264269
obsoleted: obsoleted?.version.bridged ?? BridgedVersionTuple(),
265-
obsoletedRange: obsoleted?.range ?? BridgedSourceRange()
270+
obsoletedRange: obsoleted?.range ?? BridgedSourceRange(),
271+
isSPI: isSPI
266272
)
267273
}
268274

lib/ASTGen/Sources/ASTGen/BuiltinPound.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ extension ASTGenVisitor {
166166
return BridgedMagicIdentifierLiteralExpr.createParsed(
167167
self.ctx,
168168
kind: kind,
169-
loc: self.generateSourceLoc(node.macroName)
169+
loc: self.generateSourceLoc(node.pound)
170170
)
171171
}
172172

@@ -195,10 +195,10 @@ extension ASTGenVisitor {
195195
}
196196

197197
func generateObjCSelectorExpr(freestandingMacroExpansion node: some FreestandingMacroExpansionSyntax) -> BridgedObjCSelectorExpr {
198-
fatalError("unimplemented")
198+
fatalError("unimplemented (objc selector)")
199199
}
200200

201201
func generateObjCKeyPathExpr(freestandingMacroExpansion node: some FreestandingMacroExpansionSyntax) -> BridgedKeyPathExpr {
202-
fatalError("unimplemented")
202+
fatalError("unimplemented (objc keypath)")
203203
}
204204
}

0 commit comments

Comments
 (0)