SILGen: Fix crash with access to unowned/weak property in other module

Fixes <rdar://problem/30290896>.
This commit is contained in:
Slava Pestov
2017-02-01 00:21:08 -08:00
parent c36b5373b3
commit ec2c75fab2
3 changed files with 46 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
// RUN: rm -rf %t && mkdir %t
// RUN: %target-swift-frontend -emit-module -emit-module-path=%t/weak_other.swiftmodule -module-name=weak_other %S/Inputs/weak_other.swift
// RUN: %target-swift-frontend -Xllvm -new-mangling-for-tests -I %t -emit-silgen %s | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-runtime
import weak_other
// CHECK-LABEL: sil hidden @_T021weak_multiple_modules11doSomethingSb0A6_other2UIC2ui_tF : $@convention(thin) (@owned UI) -> Bool
func doSomething(ui: UI) -> Bool {
// CHECK: ref_element_addr
// CHECK-objc: load_unowned
// CHECK-native: load [take]
// CHECK-native: strong_retain_unowned
// CHECK: open_existential_ref
// CHECK: witness_method
// CHECK: apply
// CHECK: open_existential_ref
// CHECK: function_ref
// CHECK: apply
// CHECK: return
return ui.environment.router.flags.asBoolean()
}