1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
@propertyWrapper
struct /*wrapper:def*/Foo<T> {
public var wrappedValue: T
init(initialValue: T) {
wrappedValue = initialValue
}
init(initialValue: T, otherThing: Bool) {
self.init(initialValue: initialValue)
}
var projectedValue: Projection<T> {
get { Projection(item: wrappedValue) }
}
}
struct Projection<T> {
var item: T
}
@resultBuilder
struct /*builder:def*/Other {
public static func buildBlock(_ components: String...) -> String {
return components.joined()
}
}
struct Bar {
@/*wrapper*/Foo
var /*wrapped:def*/foo: Int = 10
@/*wrapper*/Foo(initialValue: "hello")
var bar: String
@/*wrapper*/Foo
var jim: String = {
struct Bar {
@/*wrapper*/Foo
var inner: String = "It's 42"
}
return Bar().inner
}()
func combined(@/*builder*/Other _ a: () -> String) -> String {
return a()
}
@/*builder*/Other
func hello() -> String {
"hello"
"there"
}
func baz() {
let _: /*wrapper*/Foo<Int> = /*wrapped+1*/_foo
let _: Int = /*wrapped+1*/_foo.wrappedValue
let _: Int = /*wrapped*/foo
let _: Projection<Int> = /*wrapped+1*/$foo
let _: /*wrapper*/Foo<String> = _bar
}
}
// REQUIRES: swift_swift_parser
// RUN: %empty-directory(%t.result)
// RUN: %empty-directory(%t.ranges)
// RUN: %refactor -find-rename-ranges -source-filename %s -pos="wrapper" -is-non-protocol-type -old-name "Foo" >> %t.ranges/custom-attrs-Foo.swift
// RUN: %refactor -find-rename-ranges -source-filename %s -pos="wrapped" -old-name "foo" >> %t.ranges/custom-attrs-wrapped.swift
// RUN: %refactor -find-rename-ranges -source-filename %s -pos="builder" -is-non-protocol-type -old-name "Other" >> %t.ranges/custom-attrs-Other.swift
// RUN: diff -u %S/Outputs/custom-attrs/Foo.swift.expected %t.ranges/custom-attrs-Foo.swift
// RUN: diff -u %S/Outputs/custom-attrs/wrapped.swift.expected %t.ranges/custom-attrs-wrapped.swift
// RUN: diff -u %S/Outputs/custom-attrs/Other.swift.expected %t.ranges/custom-attrs-Other.swift
|