Skip to content

Commit f43b45f

Browse files
authored
---
yaml --- r: 343797 b: refs/heads/master-rebranch c: 5664045 h: refs/heads/master i: 343795: 5122f51
1 parent 4078dea commit f43b45f

File tree

7 files changed

+58
-7
lines changed

7 files changed

+58
-7
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1455,7 +1455,7 @@ refs/tags/swift-DEVELOPMENT-SNAPSHOT-2019-08-02-a: ddd2b2976aa9bfde5f20fe37f6bd2
14551455
refs/tags/swift-DEVELOPMENT-SNAPSHOT-2019-08-03-a: 171cc166f2abeb5ca2a4003700a8a78a108bd300
14561456
refs/heads/benlangmuir-patch-1: baaebaf39d52f3bf36710d4fe40cf212e996b212
14571457
refs/heads/i-do-redeclare: 8c4e6d5de5c1e3f0a2cedccf319df713ea22c48e
1458-
refs/heads/master-rebranch: 78bb298389d3557b0740510b6ad4575379c1f550
1458+
refs/heads/master-rebranch: 5664045d01ceae4645c2b4d33f8c5384816ce991
14591459
refs/heads/rdar-53901732: 9bd06af3284e18a109cdbf9aa59d833b24eeca7b
14601460
refs/heads/revert-26776-subst-always-returns-a-type: 1b8e18fdd391903a348970a4c848995d4cdd789c
14611461
refs/heads/tensorflow-merge: 8b854f62f80d4476cb383d43c4aac2001dde3cec

branches/master-rebranch/lib/Sema/CSGen.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2478,11 +2478,11 @@ namespace {
24782478
}
24792479

24802480
Type visitDefaultArgumentExpr(DefaultArgumentExpr *expr) {
2481-
llvm_unreachable("Already type checked");
2481+
return expr->getType();
24822482
}
24832483

24842484
Type visitCallerDefaultArgumentExpr(CallerDefaultArgumentExpr *expr) {
2485-
llvm_unreachable("Already type checked");
2485+
return expr->getType();
24862486
}
24872487

24882488
Type visitApplyExpr(ApplyExpr *expr) {

branches/master-rebranch/lib/Sema/ConstraintSystem.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2880,6 +2880,9 @@ ConstraintSystem::getArgumentInfoLocator(ConstraintLocator *locator) {
28802880

28812881
Optional<ConstraintSystem::ArgumentInfo>
28822882
ConstraintSystem::getArgumentInfo(ConstraintLocator *locator) {
2883+
if (!locator)
2884+
return None;
2885+
28832886
if (auto *infoLocator = getArgumentInfoLocator(locator)) {
28842887
auto known = ArgumentInfos.find(infoLocator);
28852888
if (known != ArgumentInfos.end())

branches/master-rebranch/lib/Sema/TypeCheckCaptures.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,6 +645,12 @@ void TypeChecker::computeCaptures(AnyFunctionRef AFR) {
645645
}
646646
}
647647

648+
static bool isLazy(PatternBindingDecl *PBD) {
649+
if (auto var = PBD->getSingleVar())
650+
return var->getAttrs().hasAttribute<LazyAttr>();
651+
return false;
652+
}
653+
648654
void TypeChecker::checkPatternBindingCaptures(NominalTypeDecl *typeDecl) {
649655
auto &ctx = typeDecl->getASTContext();
650656

@@ -669,7 +675,7 @@ void TypeChecker::checkPatternBindingCaptures(NominalTypeDecl *typeDecl) {
669675
/*ObjC=*/false);
670676
init->walk(finder);
671677

672-
if (finder.getDynamicSelfCaptureLoc().isValid()) {
678+
if (finder.getDynamicSelfCaptureLoc().isValid() && !isLazy(PBD)) {
673679
ctx.Diags.diagnose(finder.getDynamicSelfCaptureLoc(),
674680
diag::dynamic_self_stored_property_init);
675681
}

branches/master-rebranch/test/type/self.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,4 +253,13 @@ class SelfStoredPropertyInit {
253253
static func myValue() -> Int { return 123 }
254254

255255
var value = Self.myValue() // expected-error {{covariant 'Self' type cannot be referenced from a stored property initializer}}
256-
}
256+
}
257+
258+
// rdar://problem/55273931 - erroneously rejecting 'Self' in lazy initializer
259+
class Foo {
260+
static var value: Int = 17
261+
262+
lazy var doubledValue: Int = {
263+
Self.value * 2
264+
}()
265+
}

branches/master-rebranch/tools/libSwiftSyntaxParser/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ if(SWIFT_NEED_EXPLICIT_LIBDISPATCH)
4747
endif()
4848

4949
add_dependencies(parser-lib libSwiftSyntaxParser)
50-
swift_install_in_component(FILES "${SWIFT_LIBRARY_OUTPUT_INTDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${SYNTAX_PARSER_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
51-
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
50+
swift_install_in_component(PROGRAMS "${SWIFT_LIBRARY_OUTPUT_INTDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}${SYNTAX_PARSER_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}"
5251
DESTINATION "lib${LLVM_LIBDIR_SUFFIX}/swift/${SWIFT_SDK_${SWIFT_HOST_VARIANT_SDK}_LIB_SUBDIR}"
5352
COMPONENT parser-lib)
5453
swift_install_in_component(DIRECTORY "${SWIFT_MAIN_INCLUDE_DIR}/swift-c/SyntaxParser/"
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// RUN: %target-swift-frontend -c %s
2+
3+
@propertyWrapper
4+
class OneOf<Value: Equatable> {
5+
var wrappedValue: Value {
6+
get { value }
7+
set { storeIfAllowed(newValue) }
8+
}
9+
10+
private var value: Value
11+
12+
private let allowedValues: [Value]
13+
14+
init(wrappedValue value: Value, _ allowedValues: Value...) {
15+
precondition(allowedValues.contains(value))
16+
self.value = value
17+
self.allowedValues = allowedValues
18+
}
19+
20+
private func storeIfAllowed(_ value: Value) {
21+
guard allowedValues.contains(value) else {
22+
return
23+
}
24+
25+
self.value = value
26+
}
27+
}
28+
29+
struct Test {
30+
@OneOf(4, 8, 15, 16, 23, 42) private var numbers: Int = 4
31+
}
32+
func test() {
33+
_ = Test()
34+
}

0 commit comments

Comments
 (0)