mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
Serialization: Handle precedence groups and operators in ExternallyAccessibleDeclVisitor.
This commit is contained in:
@@ -3413,8 +3413,6 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
|
||||
UNREACHABLE(MacroExpansion);
|
||||
UNREACHABLE(GenericTypeParam);
|
||||
UNREACHABLE(Param);
|
||||
UNREACHABLE(PrecedenceGroup);
|
||||
UNREACHABLE(Operator);
|
||||
|
||||
#undef UNREACHABLE
|
||||
|
||||
@@ -3427,7 +3425,9 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
|
||||
#define UNINTERESTING(KIND) \
|
||||
bool visit##KIND##Decl(const KIND##Decl *D) { return true; }
|
||||
UNINTERESTING(IfConfig);
|
||||
UNINTERESTING(PrecedenceGroup);
|
||||
UNINTERESTING(EnumCase);
|
||||
UNINTERESTING(Operator);
|
||||
|
||||
#undef UNINTERESTING
|
||||
};
|
||||
|
||||
@@ -256,3 +256,18 @@ extension PublicStruct {
|
||||
public static func inactiveMethod() -> DoesNotExist {}
|
||||
#endif
|
||||
}
|
||||
|
||||
// MARK: - Operators & Precedence Groups
|
||||
|
||||
precedencegroup FooPrecedence {
|
||||
assignment: true
|
||||
associativity: right
|
||||
}
|
||||
|
||||
infix operator <<<: FooPrecedence
|
||||
|
||||
extension PublicStruct {
|
||||
public static func <<<(lhs: inout Self, rhs: Self) {
|
||||
lhs = rhs
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,3 +94,8 @@ func testConditionalConformance<T>(_ s: PublicGenericStruct<T>) {
|
||||
func testTypealiases() {
|
||||
let _: PublicStruct = PublicStructAlias(x: 1)
|
||||
}
|
||||
|
||||
func testOperators() {
|
||||
var a: PublicStruct
|
||||
a <<< PublicStruct(x: 2)
|
||||
}
|
||||
|
||||
@@ -106,6 +106,14 @@
|
||||
// CHECK: extension lazy_typecheck.PublicStruct {
|
||||
// CHECK: public static func activeMethod()
|
||||
// CHECK: }
|
||||
// CHECK: precedencegroup FooPrecedence {
|
||||
// CHECK: associativity: right
|
||||
// CHECK: assignment: true
|
||||
// CHECK: }
|
||||
// CHECK: infix operator <<< : FooPrecedence
|
||||
// CHECK: extension lazy_typecheck.PublicStruct {
|
||||
// CHECK: public static func <<< (lhs: inout lazy_typecheck.PublicStruct, rhs: lazy_typecheck.PublicStruct)
|
||||
// CHECK: }
|
||||
// CHECK: @available(*, unavailable)
|
||||
// CHECK-NEXT: extension lazy_typecheck.PublicGenericStruct : lazy_typecheck.EmptyPublicProto where T : _ConstraintThatIsNotPartOfTheAPIOfThisLibrary {}
|
||||
// CHECK: extension lazy_typecheck.PublicStructIndirectlyConformingToPublicProto : lazy_typecheck.PublicProto {}
|
||||
|
||||
@@ -102,8 +102,9 @@ exports:
|
||||
'_$s14lazy_typecheck12PublicStructV26publicPropertyInferredTypeSSvg',
|
||||
'_$s14lazy_typecheck12PublicStructV26publicPropertyInferredTypeSSvpMV',
|
||||
'_$s14lazy_typecheck12PublicStructV26publicPropertyInferredTypeSSvs',
|
||||
'_$s14lazy_typecheck12PublicStructVMa', '_$s14lazy_typecheck12PublicStructVMn',
|
||||
'_$s14lazy_typecheck12PublicStructVN', '_$s14lazy_typecheck13PublicWrapperV12wrappedValueACyxGx_tcfC',
|
||||
'_$s14lazy_typecheck12PublicStructV3llloiyyACz_ACtFZ', '_$s14lazy_typecheck12PublicStructVMa',
|
||||
'_$s14lazy_typecheck12PublicStructVMn', '_$s14lazy_typecheck12PublicStructVN',
|
||||
'_$s14lazy_typecheck13PublicWrapperV12wrappedValueACyxGx_tcfC',
|
||||
'_$s14lazy_typecheck13PublicWrapperV12wrappedValuexvM', '_$s14lazy_typecheck13PublicWrapperV12wrappedValuexvg',
|
||||
'_$s14lazy_typecheck13PublicWrapperV12wrappedValuexvpMV',
|
||||
'_$s14lazy_typecheck13PublicWrapperV12wrappedValuexvs', '_$s14lazy_typecheck13PublicWrapperV14projectedValueACyxGvg',
|
||||
|
||||
Reference in New Issue
Block a user