blob: 0c662c2e7b181a19caf296117c76be2355a3b74d [file] [log] [blame]
#if MODULE
public dynamic var public_global_var = "public_global_var"
public dynamic func public_global_func() -> String {
return "public_global_func"
}
public dynamic func public_global_generic_func<T>(_ t: T.Type) -> String {
return "public_global_generic_func"
}
public class PublicClass {
public var str : String = ""
public init() {}
public dynamic init(x: Int) { str = "public_class_init" }
public dynamic func function() -> String {
return "public_class_func"
}
public dynamic final func finalFunction() -> String {
return "public_class_final_func"
}
public dynamic func genericFunction<T>(_ t: T.Type) -> String {
return "public_class_generic_func"
}
}
public struct PublicStruct {
public var str = ""
public init() {}
public dynamic init(x: Int) { str = "public_struct_init" }
public dynamic func function() -> String {
return "public_struct_func"
}
public dynamic func genericFunction<T>(_ t: T.Type) -> String {
return "public_struct_generic_func"
}
public dynamic var public_stored_property : String = "public_stored_property"
public dynamic subscript(_ x: Int) -> String {
get {
return "public_subscript_get"
}
set {
str = newValue
}
}
public dynamic subscript(y x: Int) -> String {
_read {
yield "public_subscript_get_modify_read"
}
_modify {
yield &str
}
}
}
public enum PublicEnumeration<Q> {
case A
case B
public dynamic func function() -> String {
return "public_enum_func"
}
public dynamic func genericFunction<T>(_ t: T.Type) -> String {
return "public_enum_generic_func"
}
}
#elseif MODULENODYNAMIC
public dynamic var public_global_var = "public_global_var"
public func public_global_func() -> String {
return "public_global_func"
}
public func public_global_generic_func<T>(_ t: T.Type) -> String {
return "public_global_generic_func"
}
public class PublicClass {
public var str : String = ""
public init() {}
public init(x: Int) { str = "public_class_init" }
public func function() -> String {
return "public_class_func"
}
public final func finalFunction() -> String {
return "public_class_final_func"
}
public func genericFunction<T>(_ t: T.Type) -> String {
return "public_class_generic_func"
}
}
public struct PublicStruct {
public var str = ""
public init() {}
public init(x: Int) { str = "public_struct_init" }
public func function() -> String {
return "public_struct_func"
}
public func genericFunction<T>(_ t: T.Type) -> String {
return "public_struct_generic_func"
}
dynamic public var public_stored_property : String = "public_stored_property"
public subscript(_ x: Int) -> String {
get {
return "public_subscript_get"
}
set {
str = newValue
}
}
public subscript(y x: Int) -> String {
_read {
yield "public_subscript_get_modify_read"
}
_modify {
yield &str
}
}
}
public enum PublicEnumeration<Q> {
case A
case B
public func function() -> String {
return "public_enum_func"
}
public func genericFunction<T>(_ t: T.Type) -> String {
return "public_enum_generic_func"
}
}
#elseif MODULE2
import Module1
/// Public global functions, struct, class, and enum.
@_dynamicReplacement(for: public_global_var)
public var replacement_for_public_global_var : String {
return "replacement of public_global_var"
}
@_dynamicReplacement(for: public_global_func())
public func replacement_for_public_global_func() -> String {
return "replacement of " + public_global_func()
}
@_dynamicReplacement(for: public_global_generic_func(_:))
public func replacement_for_public_global_generic_func<T>(_ t: T.Type) -> String {
return "replacement of " + public_global_generic_func(t)
}
extension PublicClass {
@_dynamicReplacement(for: init(x:))
public init(y: Int) {
str = "replacement of public_class_init"
}
@_dynamicReplacement(for: function())
public func replacement_function() -> String {
return "replacement of " + function()
}
@_dynamicReplacement(for: finalFunction())
public func replacement_finalFunction() -> String {
return "replacement of " + finalFunction()
}
@_dynamicReplacement(for: genericFunction(_:))
public func replacement_genericFunction<T>(_ t: T.Type) -> String {
return "replacement of " + genericFunction(t)
}
}
extension PublicStruct {
@_dynamicReplacement(for: init(x:))
public init(y: Int) {
self.init(x: y)
str = "replacement of public_struct_init"
}
@_dynamicReplacement(for: function())
public func replacement_function() -> String {
return "replacement of " + function()
}
@_dynamicReplacement(for: genericFunction(_:))
public func replacement_genericFunction<T>(_ t: T.Type) -> String {
return "replacement of " + genericFunction(t)
}
@_dynamicReplacement(for: public_stored_property)
var replacement_public_stored_property : String {
return "replacement of " + public_stored_property
}
@_dynamicReplacement(for: subscript(_:))
subscript(x x: Int) -> String {
get {
return "replacement of " + self[x]
}
set {
str = "replacement of " + newValue
}
}
@_dynamicReplacement(for: subscript(y:))
public subscript(z x: Int) -> String {
_read {
yield "replacement of " + self[y: x]
}
_modify {
yield &str
str = "replacement of " + str
}
}
}
extension PublicEnumeration {
@_dynamicReplacement(for: function())
public func replacement_function() -> String {
return "replacement of " + function()
}
@_dynamicReplacement(for: genericFunction(_:))
public func replacement_genericFunction<T>(_ t: T.Type) -> String {
return "replacement of " + genericFunction(t)
}
}
#endif