Skip to content

Commit e7727c5

Browse files
authored
---
yaml --- r: 327677 b: refs/heads/tensorflow c: 73315ba h: refs/heads/master i: 327675: e860e8a
1 parent d48bbd6 commit e7727c5

File tree

89 files changed

+853
-560
lines changed

Some content is hidden

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

89 files changed

+853
-560
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -816,7 +816,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-04-25-a: 22f738a831d43aff2b9c9773bcb65
816816
refs/tags/swift-DEVELOPMENT-SNAPSHOT-2018-05-08-a: 7d98cc16689baba5c8a3b90a9329bdcc1a12b4e9
817817
refs/heads/cherr42: a566ad54b073c2c56ac0a705d0a5bed9743135a5
818818
"refs/heads/codable_test_comment_fix": fc8f6824f7f347e1e8db55bff62db385c5728b5a
819-
refs/heads/tensorflow: 7b1b0a00770d87d122b95341d3685889b272c1f5
819+
refs/heads/tensorflow: 73315ba01ea98b078b84179eb435e89db956bdc7
820820
refs/tags/swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-11-a: 8126fd7a652e2f70ad6d76505239e34fb2ef3e1a
821821
refs/tags/swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-12-a: b3fd3dd84df6717f2e2e9df58c6d7e99fed57086
822822
refs/tags/swift-4.1-DEVELOPMENT-SNAPSHOT-2018-05-13-a: 71135119579039dc321c5f65d870050fe36efda2

branches/tensorflow/README.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,6 @@
1414

1515
| **OS** | **Architecture** | **Build** |
1616
|---|:---:|:---:|
17-
|**[Debian 9.1 (Raspberry Pi)](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/armv7_debian_stretch.json)** | ARMv7 | [![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-debian-9_1/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-debian-9_1)|
18-
|**[Fedora 27](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_fedora_27.json)** | x86_64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-fedora-27/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-fedora-27)|
19-
|**[Ubuntu 16.04](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/x86_64_ubuntu_16_04.json)** | x86_64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04)|
2017
|**[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)|
2118
|**[Ubuntu 16.04 ](https://github.com/apple/swift-community-hosted-continuous-integration/blob/master/nodes/aarch64_ubuntu_16.04.json)** | AArch64 |[![Build Status](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-aarch64/lastCompletedBuild/badge/icon)](https://ci-external.swift.org/job/oss-swift-RA-linux-ubuntu-16.04-aarch64)|
2219
|**[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)|

branches/tensorflow/include/swift/AST/DiagnosticsModuleDiffer.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ ERROR(new_decl_without_intro,none,"%0 is a new API without @available attribute"
9898

9999
ERROR(objc_name_change,none,"%0 has ObjC name change from %1 to %2", (StringRef, StringRef, StringRef))
100100

101+
ERROR(desig_init_added,none,"%0 has been added as a designated initializer to an open class", (StringRef))
102+
101103
#ifndef DIAG_NO_UNDEF
102104
# if defined(DIAG)
103105
# undef DIAG

branches/tensorflow/include/swift/AST/ImportCache.h

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -140,52 +140,13 @@ class alignas(ModuleDecl::ImportedModule) ImportCache {
140140
return !getAllVisibleAccessPaths(mod, dc).empty();
141141
}
142142

143-
/// Determines if 'mod' is visible from 'dc' as a result of a scoped import.
144-
/// Note that if 'mod' was not imported from 'dc' at all, this also returns
145-
/// false.
146-
bool isScopedImport(const ModuleDecl *mod, DeclBaseName name,
147-
const DeclContext *dc) {
148-
auto accessPaths = getAllVisibleAccessPaths(mod, dc);
149-
for (auto accessPath : accessPaths) {
150-
if (accessPath.empty())
151-
continue;
152-
if (ModuleDecl::matchesAccessPath(accessPath, name))
153-
return true;
154-
}
155-
156-
return false;
157-
}
158-
159143
/// Returns all access paths in 'mod' that are visible from 'dc' if we
160144
/// subtract imports of 'other'.
161145
ArrayRef<ModuleDecl::AccessPathTy>
162146
getAllAccessPathsNotShadowedBy(const ModuleDecl *mod,
163147
const ModuleDecl *other,
164148
const DeclContext *dc);
165149

166-
/// Returns 'true' if a declaration named 'name' defined in 'other' shadows
167-
/// defined in 'mod', because no access paths can find 'name' in 'mod' from
168-
/// 'dc' if we ignore imports of 'other'.
169-
bool isShadowedBy(const ModuleDecl *mod,
170-
const ModuleDecl *other,
171-
DeclBaseName name,
172-
const DeclContext *dc) {
173-
auto accessPaths = getAllAccessPathsNotShadowedBy(mod, other, dc);
174-
return llvm::none_of(accessPaths,
175-
[&](ModuleDecl::AccessPathTy accessPath) {
176-
return ModuleDecl::matchesAccessPath(accessPath, name);
177-
});
178-
}
179-
180-
/// Qualified lookup into types uses a slightly different check that does not
181-
/// take access paths into account.
182-
bool isShadowedBy(const ModuleDecl *mod,
183-
const ModuleDecl *other,
184-
const DeclContext *dc) {
185-
auto accessPaths = getAllAccessPathsNotShadowedBy(mod, other, dc);
186-
return accessPaths.empty();
187-
}
188-
189150
/// This is a hack to cope with main file parsing and REPL parsing, where
190151
/// we can add ImportDecls after name binding.
191152
void clear() {

branches/tensorflow/include/swift/AST/PropertyWrappers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ struct PropertyWrapperMutability {
109109
}
110110
return std::max(Getter, Setter);
111111
}
112+
llvm_unreachable("Unhandled Value in switch");
112113
}
113114

114115
bool operator==(PropertyWrapperMutability other) const {

branches/tensorflow/include/swift/AST/Requirement.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ class Requirement {
167167
case RequirementKind::Layout:
168168
return lhs.getLayoutConstraint() == rhs.getLayoutConstraint();
169169
}
170+
llvm_unreachable("Unhandled RequirementKind in switch");
170171
}
171172
};
172173

branches/tensorflow/include/swift/AST/ResilienceExpansion.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ inline llvm::raw_ostream &operator<<(llvm::raw_ostream &os,
5454
case ResilienceExpansion::Maximal:
5555
return os << "Maximal";
5656
}
57+
llvm_unreachable("Unhandled ResilienceExpansion in switch");
5758
}
5859

5960
} // namespace swift

branches/tensorflow/include/swift/IDE/DigesterEnums.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ KEY_STRING(IntrotvOS, intro_tvOS)
152152
KEY_STRING(IntrowatchOS, intro_watchOS)
153153
KEY_STRING(Introswift, intro_swift)
154154
KEY_STRING(ObjCName, objc_name)
155+
KEY_STRING(InitKind, init_kind)
155156

156157
KEY_STRING_ARR(SuperclassNames, superclassNames)
157158
KEY_STRING_ARR(ToolArgs, tool_arguments)

branches/tensorflow/include/swift/Runtime/ObjCBridge.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ namespace swift {
7979
SWIFT_RUNTIME_EXPORT
8080
void swift_rootObjCDealloc(HeapObject *self);
8181

82+
// Uses Swift bridging to box a C string into an NSString without introducing
83+
// a link-time dependency on NSString.
84+
SWIFT_CC(swift) SWIFT_RUNTIME_STDLIB_API
85+
id swift_stdlib_NSStringFromUTF8(const char *cstr, int len);
86+
8287
}
8388

8489
#endif // SWIFT_OBJC_INTEROP

branches/tensorflow/include/swift/SIL/AbstractionPattern.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,7 @@ class AbstractionPattern {
402402
case Kind::Tuple:
403403
return false;
404404
}
405+
llvm_unreachable("Unhandled AbstractionPatternKind in switch");
405406
}
406407

407408
CanGenericSignature getGenericSignature() const {

branches/tensorflow/include/swift/Sema/IDETypeChecking.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ namespace swift {
4747
/// \returns true on convertible, false on not.
4848
bool isConvertibleTo(Type T1, Type T2, bool openArchetypes, DeclContext &DC);
4949

50-
bool isEqual(Type T1, Type T2, DeclContext &DC);
51-
52-
bool canPossiblyEqual(Type T1, Type T2, DeclContext &DC);
53-
5450
void collectDefaultImplementationForProtocolMembers(ProtocolDecl *PD,
5551
llvm::SmallDenseMap<ValueDecl*, ValueDecl*> &DefaultMap);
5652

branches/tensorflow/include/swift/Sema/IDETypeCheckingRequests.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,6 @@ class IsDeclApplicableRequest:
8787
// Type relation checking
8888
//----------------------------------------------------------------------------//
8989
enum class TypeRelation: uint8_t {
90-
EqualTo,
91-
PossiblyEqualTo,
9290
ConvertTo,
9391
};
9492

@@ -158,8 +156,6 @@ struct TypeRelationCheckInput {
158156
out << " is ";
159157
switch(owner.Relation) {
160158
#define CASE(NAME) case TypeRelation::NAME: out << #NAME << " "; break;
161-
CASE(EqualTo)
162-
CASE(PossiblyEqualTo)
163159
CASE(ConvertTo)
164160
#undef CASE
165161
}

branches/tensorflow/lib/AST/ASTContext.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4477,6 +4477,7 @@ bool ASTContext::overrideGenericSignatureReqsSatisfied(
44774477
case OverrideGenericSignatureReqCheck::DerivedReqSatisfiedByBase:
44784478
return derivedSig->requirementsNotSatisfiedBy(sig).empty();
44794479
}
4480+
llvm_unreachable("Unhandled OverrideGenericSignatureReqCheck in switch");
44804481
}
44814482

44824483
SILLayout *SILLayout::get(ASTContext &C,

branches/tensorflow/lib/AST/ASTScope.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,17 @@ Optional<bool> ASTScope::computeIsCascadingUse(
5353
return ASTScopeImpl::computeIsCascadingUse(history, initialIsCascadingUse);
5454
}
5555

56+
#if SWIFT_COMPILER_IS_MSVC
57+
#pragma warning(push)
58+
#pragma warning(disable : 4996)
59+
#endif
60+
5661
void ASTScope::dump() const { impl->dump(); }
62+
63+
#if SWIFT_COMPILER_IS_MSVC
64+
#pragma warning(pop)
65+
#endif
66+
5767
void ASTScope::print(llvm::raw_ostream &out) const { impl->print(out); }
5868
void ASTScope::dumpOneScopeMapLocation(std::pair<unsigned, unsigned> lineCol) {
5969
impl->dumpOneScopeMapLocation(lineCol);

branches/tensorflow/lib/AST/ASTScopeCreation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,7 @@ ConditionalClauseScope::expandAScopeThatCreatesANewInsertionPoint(
11781178
return {ccPatternUseScope,
11791179
"Succeeding code must be in scope of conditional variables"};
11801180
}
1181+
llvm_unreachable("Unhandled StmtConditionKind in switch");
11811182
}
11821183

11831184
AnnotatedInsertionPoint

branches/tensorflow/lib/AST/Decl.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7660,6 +7660,7 @@ ParseAbstractFunctionBodyRequest::getCachedResult() const {
76607660
case BodyKind::Unparsed:
76617661
return None;
76627662
}
7663+
llvm_unreachable("Unhandled BodyKing in switch");
76637664
}
76647665

76657666
void ParseAbstractFunctionBodyRequest::cacheResult(BraceStmt *value) const {

branches/tensorflow/lib/AST/DeclContext.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,7 @@ SourceLoc swift::extractNearestSourceLoc(const DeclContext *dc) {
10371037
case DeclContextKind::SerializedLocal:
10381038
return extractNearestSourceLoc(dc->getParent());
10391039
}
1040+
llvm_unreachable("Unhandled DeclCopntextKindin switch");
10401041
}
10411042

10421043
#define DECL(Id, Parent) \

branches/tensorflow/lib/AST/GenericSignature.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1091,4 +1091,5 @@ Requirement Requirement::getCanonical() const {
10911091
case RequirementKind::Layout:
10921092
return Requirement(getKind(), firstType, getLayoutConstraint());
10931093
}
1094+
llvm_unreachable("Unhandled RequirementKind in switch");
10941095
}

branches/tensorflow/lib/AST/NameLookup.cpp

Lines changed: 43 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,27 @@ static void recordShadowedDeclsAfterSignatureMatch(
193193
auto firstDecl = decls[firstIdx];
194194
auto firstModule = firstDecl->getModuleContext();
195195
auto name = firstDecl->getBaseName();
196+
197+
auto isShadowed = [&](ArrayRef<ModuleDecl::AccessPathTy> paths) {
198+
for (auto path : paths) {
199+
if (ModuleDecl::matchesAccessPath(path, name))
200+
return false;
201+
}
202+
203+
return true;
204+
};
205+
206+
auto isScopedImport = [&](ArrayRef<ModuleDecl::AccessPathTy> paths) {
207+
for (auto path : paths) {
208+
if (path.empty())
209+
continue;
210+
if (ModuleDecl::matchesAccessPath(path, name))
211+
return true;
212+
}
213+
214+
return false;
215+
};
216+
196217
for (unsigned secondIdx : range(firstIdx + 1, decls.size())) {
197218
// Determine whether one module takes precedence over another.
198219
auto secondDecl = decls[secondIdx];
@@ -206,22 +227,28 @@ static void recordShadowedDeclsAfterSignatureMatch(
206227
if (firstModule != secondModule &&
207228
firstDecl->getDeclContext()->isModuleScopeContext() &&
208229
secondDecl->getDeclContext()->isModuleScopeContext()) {
209-
// First, scoped imports shadow unscoped imports.
210-
bool firstScoped = imports.isScopedImport(firstModule, name, dc);
211-
bool secondScoped = imports.isScopedImport(secondModule, name, dc);
212-
if (!firstScoped && secondScoped) {
230+
auto firstPaths = imports.getAllAccessPathsNotShadowedBy(
231+
firstModule, secondModule, dc);
232+
auto secondPaths = imports.getAllAccessPathsNotShadowedBy(
233+
secondModule, firstModule, dc);
234+
235+
// Check if one module shadows the other.
236+
if (isShadowed(firstPaths)) {
213237
shadowed.insert(firstDecl);
214238
break;
215-
} else if (firstScoped && !secondScoped) {
239+
} else if (isShadowed(secondPaths)) {
216240
shadowed.insert(secondDecl);
217241
continue;
218242
}
219243

220-
// Now check if one module shadows the other.
221-
if (imports.isShadowedBy(firstModule, secondModule, name, dc)) {
244+
// We might be in a situation where neither module shadows the
245+
// other, but one declaration is visible via a scoped import.
246+
bool firstScoped = isScopedImport(firstPaths);
247+
bool secondScoped = isScopedImport(secondPaths);
248+
if (!firstScoped && secondScoped) {
222249
shadowed.insert(firstDecl);
223250
break;
224-
} else if (imports.isShadowedBy(secondModule, firstModule, name, dc)) {
251+
} else if (firstScoped && !secondScoped) {
225252
shadowed.insert(secondDecl);
226253
continue;
227254
}
@@ -278,10 +305,16 @@ static void recordShadowedDeclsAfterSignatureMatch(
278305
if (firstModule != secondModule &&
279306
!firstDecl->getDeclContext()->isModuleScopeContext() &&
280307
!secondDecl->getDeclContext()->isModuleScopeContext()) {
281-
if (imports.isShadowedBy(firstModule, secondModule, dc)) {
308+
auto firstPaths = imports.getAllAccessPathsNotShadowedBy(
309+
firstModule, secondModule, dc);
310+
auto secondPaths = imports.getAllAccessPathsNotShadowedBy(
311+
secondModule, firstModule, dc);
312+
313+
// Check if one module shadows the other.
314+
if (isShadowed(firstPaths)) {
282315
shadowed.insert(firstDecl);
283316
break;
284-
} else if (imports.isShadowedBy(secondModule, firstModule, dc)) {
317+
} else if (isShadowed(secondPaths)) {
285318
shadowed.insert(secondDecl);
286319
continue;
287320
}

branches/tensorflow/lib/AST/Type.cpp

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,11 @@ bool TypeBase::isExactSuperclassOf(Type ty) {
14791479
ty->getSuperclass()->getAnyNominal()->hasClangNode())))
14801480
return false;
14811481

1482+
SmallPtrSet<ClassDecl *, 8> seen;
14821483
do {
1484+
if (auto *classDecl = ty->getClassOrBoundGenericClass())
1485+
if (!seen.insert(classDecl).second)
1486+
return false;
14831487
if (ty->isEqual(this))
14841488
return true;
14851489
} while ((ty = ty->getSuperclass()));
@@ -1510,6 +1514,10 @@ bool TypeBase::isBindableTo(Type b) {
15101514
if (orig->requiresClass() && !subst->satisfiesClassConstraint())
15111515
return false;
15121516

1517+
if (auto superclass = orig->getSuperclass())
1518+
if (!superclass->isBindableToSuperclassOf(subst))
1519+
return false;
1520+
15131521
// TODO: If the archetype has a superclass constraint, check that the
15141522
// substitution is a subclass.
15151523

@@ -1528,7 +1536,7 @@ bool TypeBase::isBindableTo(Type b) {
15281536
if (CanType(orig) == subst)
15291537
return true;
15301538

1531-
llvm_unreachable("not a valid canonical type substitution");
1539+
return false;
15321540
}
15331541

15341542
bool visitNominalType(NominalType *nom, CanType subst) {
@@ -1580,17 +1588,20 @@ bool TypeBase::isBindableTo(Type b) {
15801588
}
15811589

15821590
bool visitDependentMemberType(DependentMemberType *dt, CanType subst) {
1583-
llvm_unreachable("can't visit dependent types");
1591+
return true;
15841592
}
15851593
bool visitGenericTypeParamType(GenericTypeParamType *dt, CanType subst) {
1586-
llvm_unreachable("can't visit dependent types");
1594+
return true;
15871595
}
15881596

15891597
bool visitFunctionType(FunctionType *func, CanType subst) {
15901598
if (auto substFunc = dyn_cast<FunctionType>(subst)) {
15911599
if (func->getExtInfo() != substFunc->getExtInfo())
15921600
return false;
15931601

1602+
if (func->getParams().size() != substFunc->getParams().size())
1603+
return false;
1604+
15941605
for (unsigned i : indices(func->getParams())) {
15951606
if (!visit(func->getParams()[i].getOldType(),
15961607
substFunc.getParams()[i].getOldType()))
@@ -1708,20 +1719,13 @@ bool TypeBase::isBindableToSuperclassOf(Type ty) {
17081719
if (!ty->mayHaveSuperclass())
17091720
return false;
17101721

1711-
// If the type is itself an archetype, we could always potentially bind it
1712-
// to the superclass (via external retroactive conformance, even if the
1713-
// type isn't statically known to conform).
1714-
//
1715-
// We could theoretically reject cases where the set of conformances is known
1716-
// (say the protocol or classes are private or internal).
1717-
if (is<ArchetypeType>())
1718-
return true;
1719-
1722+
SmallPtrSet<ClassDecl *, 8> seen;
17201723
do {
1724+
if (auto *classDecl = ty->getClassOrBoundGenericClass())
1725+
if (!seen.insert(classDecl).second)
1726+
return false;
17211727
if (isBindableTo(ty))
17221728
return true;
1723-
if (ty->getAnyNominal() && ty->getAnyNominal()->isInvalid())
1724-
return false;
17251729
} while ((ty = ty->getSuperclass()));
17261730
return false;
17271731
}

branches/tensorflow/lib/Basic/FileSystem.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ std::error_code swift::moveFileIfDifferent(const llvm::Twine &source,
257257
// Files are different; overwrite the destination file.
258258
return fs::rename(source, destination);
259259
}
260+
llvm_unreachable("Unhandled FileDifference in switch");
260261
}
261262

262263
llvm::ErrorOr<std::unique_ptr<llvm::MemoryBuffer>>

branches/tensorflow/lib/Basic/LangOptions.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ ArrayRef<StringRef> getSupportedConditionalCompilationValues(const PlatformCondi
8686
case PlatformConditionKind::TargetEnvironment:
8787
return SupportedConditionalCompilationTargetEnvironments;
8888
}
89+
llvm_unreachable("Unhandled PlatformConditionKind in switch");
8990
}
9091

9192
PlatformConditionKind suggestedPlatformConditionKind(PlatformConditionKind Kind, const StringRef &V,

0 commit comments

Comments
 (0)