Skip to content

Commit d06d85f

Browse files
authored
Merge pull request #3589 from swiftwasm/main
[pull] swiftwasm from main
2 parents 6a03dca + 0b93c99 commit d06d85f

File tree

12 files changed

+141
-25
lines changed

12 files changed

+141
-25
lines changed

README.md

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,13 @@ to track the status of our builds, please refer to our [GitHub Actions page](htt
3535

3636
| **OS** | **Architecture** | **Build** |
3737
|---|:---:|:---:|
38-
|**[Ubuntu 16.04 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/ppc64le_ubuntu_16_04.json)** | PPC64LE |[![Build Status](https://ci-external.swift.org/job/oss-swift-5.1-RA-linux-ubuntu-16.04-ppc64le/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-5.1-RA-linux-ubuntu-16.04-ppc64le)|
39-
|**[Ubuntu 18.04](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/aarch64_ubuntu_18.04_docker.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-18.04-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-18.04-aarch64)|
40-
|**[Ubuntu 20.04](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/aarch64_ubuntu_20.04_docker.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-20.04-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-20.04-aarch64)|
41-
|**[CentOS 8 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/aarch64_centos_8_docker.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-centos8-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-centos8-aarch64)|
42-
|**[Amazon Linux 2](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/aarch64_amazon_linux_2_docker.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-amazon-linux-2-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-amazon-linux-2-aarch64)|
43-
|**[Android](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_ubuntu_16_04_LTS_android.json)** | ARMv7 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android)|
44-
|**[Android](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_ubuntu_16_04_LTS_android.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64)|
45-
|**[Windows 2019 (VS 2017)](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_windows_2019.json)** | x86_64 | [![Build Status](https://ci-external.swift.org/job/oss-swift-windows-x86_64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-windows-x86_64)|
46-
|**[Windows 2019 (VS 2019)](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_windows_2019_VS2019.json)** | x86_64 | [![Build Status](https://ci-external.swift.org/job/oss-swift-windows-x86_64-vs2019/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-windows-x86_64-vs2019)|
38+
|**[Ubuntu 16.04 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/ppc64le_ubuntu_16_04.json)** | PPC64LE |[![Build Status](https://ci-external.swift.org/job/oss-swift-5.1-RA-linux-ubuntu-16.04-ppc64le/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-5.1-RA-linux-ubuntu-16.04-ppc64le)|
39+
|**[Ubuntu 18.04](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/aarch64_ubuntu_18.04_docker.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-18.04-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-18.04-aarch64)|
40+
|**[Ubuntu 20.04](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/aarch64_ubuntu_20.04_docker.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-20.04-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-ubuntu-20.04-aarch64)|
41+
|**[Android](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/x86_64_ubuntu_16_04_LTS_android.json)** | ARMv7 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android)|
42+
|**[Android](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/x86_64_ubuntu_16_04_LTS_android.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-android-arm64)|
43+
|**[Windows 2019 (VS 2017)](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/x86_64_windows_2019.json)** | x86_64 | [![Build Status](https://ci-external.swift.org/job/oss-swift-windows-x86_64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-windows-x86_64)|
44+
|**[Windows 2019 (VS 2019)](https://github.com/apple/swift-community-hosted-continuous-integration/blob/main/nodes/x86_64_windows_2019_VS2019.json)** | x86_64 | [![Build Status](https://ci-external.swift.org/job/oss-swift-windows-x86_64-vs2019/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-windows-x86_64-vs2019)|
4745

4846
## Welcome to Swift
4947

lib/Serialization/Serialization.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5280,6 +5280,7 @@ static void collectInterestingNestedDeclarations(
52805280
Serializer::ObjCMethodTable &objcMethods,
52815281
Serializer::NestedTypeDeclsTable &nestedTypeDecls,
52825282
Serializer::UniquedDerivativeFunctionConfigTable &derivativeConfigs,
5283+
Serializer::DeclFingerprintsTable &declFingerprints,
52835284
bool isLocal = false) {
52845285
const NominalTypeDecl *nominalParent = nullptr;
52855286

@@ -5347,10 +5348,15 @@ static void collectInterestingNestedDeclarations(
53475348

53485349
// Recurse into nested declarations.
53495350
if (auto iterable = dyn_cast<IterableDeclContext>(member)) {
5351+
if (auto bodyFP = iterable->getBodyFingerprint()) {
5352+
declFingerprints.insert({S.addDeclRef(member), *bodyFP});
5353+
}
5354+
53505355
collectInterestingNestedDeclarations(S, iterable->getAllMembers(),
53515356
operatorMethodDecls,
53525357
objcMethods, nestedTypeDecls,
53535358
derivativeConfigs,
5359+
declFingerprints,
53545360
isLocal);
53555361
}
53565362
}
@@ -5432,7 +5438,8 @@ void Serializer::writeAST(ModuleOrSourceFile DC) {
54325438
collectInterestingNestedDeclarations(*this, IDC->getAllMembers(),
54335439
operatorMethodDecls, objcMethods,
54345440
nestedTypeDecls,
5435-
uniquedDerivativeConfigs);
5441+
uniquedDerivativeConfigs,
5442+
declFingerprints);
54365443
}
54375444
}
54385445

@@ -5466,6 +5473,7 @@ void Serializer::writeAST(ModuleOrSourceFile DC) {
54665473
operatorMethodDecls, objcMethods,
54675474
nestedTypeDecls,
54685475
uniquedDerivativeConfigs,
5476+
declFingerprints,
54695477
/*isLocal=*/true);
54705478
}
54715479
}

lib/SymbolGraphGen/SymbolGraph.cpp

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -431,16 +431,11 @@ SymbolGraph::recordRequirementRelationships(Symbol S) {
431431
void SymbolGraph::recordOptionalRequirementRelationships(Symbol S) {
432432
const auto VD = S.getSymbolDecl();
433433
if (const auto *Protocol = dyn_cast<ProtocolDecl>(VD->getDeclContext())) {
434-
if (VD->isProtocolRequirement()) {
435-
if (const auto *ClangDecl = VD->getClangDecl()) {
436-
if (const auto *Method = dyn_cast<clang::ObjCMethodDecl>(ClangDecl)) {
437-
if (Method->isOptional()) {
438-
recordEdge(Symbol(this, VD, nullptr),
439-
Symbol(this, Protocol, nullptr),
440-
RelationshipKind::OptionalRequirementOf());
441-
}
442-
}
443-
}
434+
if (VD->isProtocolRequirement() &&
435+
VD->getAttrs().hasAttribute<OptionalAttr>()) {
436+
recordEdge(Symbol(this, VD, nullptr),
437+
Symbol(this, Protocol, nullptr),
438+
RelationshipKind::OptionalRequirementOf());
444439
}
445440
}
446441
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
struct S {}
2+
3+
extension S {
4+
enum A {
5+
case a1
6+
var pi: Int {3}
7+
}
8+
enum B {
9+
case a1
10+
}
11+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
struct S {}
2+
3+
extension S {
4+
enum A {
5+
case a1
6+
}
7+
enum B {
8+
case a1
9+
}
10+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"main.swift": {
3+
"object": "./main.o",
4+
"swift-dependencies": "./main.swiftdeps"
5+
},
6+
"definesAB.swift": {
7+
"object": "./definesAB.o",
8+
"swift-dependencies": "./definesAB.swiftdeps"
9+
},
10+
"usesA.swift": {
11+
"object": "./usesA.o",
12+
"swift-dependencies": "./usesA.swiftdeps"
13+
},
14+
"usesB.swift": {
15+
"object": "./usesB.o",
16+
"swift-dependencies": "./usesB.swiftdeps"
17+
},
18+
"": {
19+
"swift-dependencies": "./main~buildrecord.swiftdeps"
20+
}
21+
}
22+
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
let a = S.A.a1
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
let b = S.B.a1
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Test per-type-body fingerprints for enums nested in extensions
2+
//
3+
4+
// Establish status quo
5+
6+
// RUN: %empty-directory(%t)
7+
// RUN: cp %S/Inputs/nested-enum-fingerprint/* %t
8+
// RUN: cp %t/definesAB{-before,}.swift
9+
10+
// Seeing weird failure on CI, so set the mod times
11+
// RUN: touch -t 200101010101 %t/*.swift
12+
13+
// RUN: cd %t && %target-swiftc_driver -enable-batch-mode -j2 -incremental -driver-show-incremental main.swift definesAB.swift usesA.swift usesB.swift -module-name main -output-file-map ofm.json >&output3
14+
15+
// only-run-for-debugging: cp %t/usesB.swiftdeps %t/usesB3.swiftdeps
16+
17+
18+
// Change one type, only uses of that type get recompiled
19+
20+
// RUN: cp %t/definesAB{-after,}.swift
21+
22+
// Seeing weird failure on CI, so ensure that definesAB.swift is newer
23+
// RUN: touch -t 200201010101 %t/*
24+
// RUN: touch -t 200101010101 %t/*.swift
25+
// RUN: touch -t 200301010101 %t/definesAB.swift
26+
27+
// RUN: cd %t && %target-swiftc_driver -enable-batch-mode -j2 -incremental -driver-show-incremental main.swift definesAB.swift usesA.swift usesB.swift -module-name main -output-file-map ofm.json >&output4
28+
29+
// only-run-for-debugging: cp %t/usesB.swiftdeps %t/usesB4.swiftdeps
30+
31+
// RUN: %FileCheck -check-prefix=CHECK-MAINAB-RECOMPILED %s < %t/output4
32+
33+
// CHECK-MAINAB-RECOMPILED: Queuing (initial): {compile: definesAB.o <= definesAB.swift}
34+
// CHECK-MAINAB-RECOMPILED: Queuing because of dependencies discovered later: {compile: usesA.o <= usesA.swift}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
// REQUIRES: objc_interop
2+
3+
// RUN: %empty-directory(%t)
4+
// RUN: mkdir -p %t/frameworks/OptionalRequirementOf.framework/Modules/OptionalRequirementOf.swiftmodule
5+
// RUN: split-file %s %t
6+
7+
// RUN: %target-build-swift %t/reqs.swift -module-name OptionalRequirementOf -emit-module-path %t/frameworks/OptionalRequirementOf.framework/Modules/OptionalRequirementOf.swiftmodule/%target-swiftmodule-name -import-underlying-module -F %t/frameworks -Xfrontend -disable-objc-attr-requires-foundation-module
8+
// RUN: %target-swift-symbolgraph-extract -module-name OptionalRequirementOf -F %t/frameworks -pretty-print -output-dir %t
9+
// RUN: %FileCheck %s --input-file %t/OptionalRequirementOf.symbols.json
10+
11+
// ObjCProto.objcReq -> ObjCProto
12+
// CHECK-DAG: "kind": "requirementOf",{{[[:space:]]*}}"source": "c:@M@OptionalRequirementOf@objc(pl)SwiftProto(im)swiftReq",{{[[:space:]]*}}"target": "c:@M@OptionalRequirementOf@objc(pl)SwiftProto"
13+
// CHECK-DAG: "kind": "optionalRequirementOf",{{[[:space:]]*}}"source": "c:@M@OptionalRequirementOf@objc(pl)SwiftProto(im)swiftReq",{{[[:space:]]*}}"target": "c:@M@OptionalRequirementOf@objc(pl)SwiftProto"
14+
15+
// SwiftProto.swiftReq -> SwiftProto
16+
// CHECK-DAG: "kind": "requirementOf",{{[[:space:]]*}}"source": "c:objc(pl)ObjCProto(im)objcReq",{{[[:space:]]*}}"target": "c:objc(pl)ObjCProto"
17+
// CHECK-DAG: "kind": "optionalRequirementOf",{{[[:space:]]*}}"source": "c:objc(pl)ObjCProto(im)objcReq",{{[[:space:]]*}}"target": "c:objc(pl)ObjCProto"
18+
19+
//--- reqs.swift
20+
@objc
21+
public protocol SwiftProto {
22+
@objc optional func swiftReq()
23+
}
24+
25+
//--- frameworks/OptionalRequirementOf.framework/module.map
26+
framework module OptionalRequirementOf {
27+
header "req.h"
28+
export *
29+
}
30+
31+
//--- frameworks/OptionalRequirementOf.framework/Headers/req.h
32+
@protocol ObjCProto
33+
@optional
34+
- (void)objcReq;
35+
@end
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-build-swift %s -module-name ConformsTo -emit-module -emit-module-path %t/
3-
// RUN: %target-swift-symbolgraph-extract -module-name ConformsTo -I %t -pretty-print -output-dir %t
4-
// RUN: %FileCheck %s --input-file %t/ConformsTo.symbols.json
2+
// RUN: %target-build-swift %s -module-name RequirementOf -emit-module -emit-module-path %t/
3+
// RUN: %target-swift-symbolgraph-extract -module-name RequirementOf -I %t -pretty-print -output-dir %t
4+
// RUN: %FileCheck %s --input-file %t/RequirementOf.symbols.json
55

66
public protocol P {
77
var x: Int { get }
88
}
99

1010
// CHECK: "kind": "requirementOf"
11-
// CHECK-NEXT: "source": "s:10ConformsTo1PP1xSivp"
12-
// CHECK-NEXT: "target": "s:10ConformsTo1PP"
11+
// CHECK-NEXT: "source": "s:13RequirementOf1PP1xSivp"
12+
// CHECK-NEXT: "target": "s:13RequirementOf1PP"
1313
// CHECK-NOT: defaultImplementationOf

0 commit comments

Comments
 (0)