Skip to content

Test: Improve test coverage for TBDGen. #61636

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 20, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions test/AutoDiff/TBD/derivative_symbols.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ import _Differentiation
@differentiable(reverse)
public func topLevelDifferentiable(_ x: Float, _ y: Float) -> Float { x }

@differentiable(reverse)
@inlinable
public func topLevelDifferentiableInlinable(_ x: Float, _ y: Float) -> Float { x }

public func topLevelHasDerivative<T: Differentiable>(_ x: T) -> T {
x
}
Expand Down
22 changes: 22 additions & 0 deletions test/TBD/class.swift
Original file line number Diff line number Diff line change
Expand Up @@ -345,3 +345,25 @@ private class PrivateGeneric<T, U, V> {

private static func privateStaticGeneric<A>(_: A, default_: Int = 0) {}
}

public class PublicDynamicMembers {
public dynamic init() {}
public dynamic convenience init(x: Int) {
self.init()
}
public dynamic func dynamicMethod() {}
public dynamic class func dynamicClassMethod() {}
}

extension PublicDynamicMembers {
@_dynamicReplacement(for: init(x:))
public convenience init(y: Int) {
self.init()
}

@_dynamicReplacement(for: dynamicMethod())
public func methodReplacement() {}

@_dynamicReplacement(for: dynamicClassMethod())
public class func classMethodReplacement() {}
}
5 changes: 5 additions & 0 deletions test/TBD/function.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ private func privateNoArgs() {}
private func privateSomeArgs(_: Int, x: Int) {}
private func privateWithDefault(_: Int = 0) {}

public dynamic func publicDynamic() {}

@_dynamicReplacement(for: publicDynamic())
public func replacementForPublicDynamic() {}

@_cdecl("c_publicNoArgs") public func publicNoArgsCDecl() {}
@_cdecl("c_publicSomeArgs") public func publicSomeArgsCDecl(_: Int, x: Int) {}
@_cdecl("c_publicWithDefault") public func publicWithDefaultCDecl(_: Int = 0) {}
Expand Down
19 changes: 18 additions & 1 deletion test/TBD/opaque_result_type.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,15 @@ public var globalProp: some O {
return 0
}

public dynamic var dynGlobalProp: some O {
return 1
}

@_dynamicReplacement(for: dynGlobalProp)
public var dynReplacementProp: some O {
return 2
}

public class C: P, Q {
public func poo() -> some O {
return 0
Expand Down Expand Up @@ -59,9 +68,17 @@ public func baz<T: P & Q>(z: T) -> some P & Q {
return z
}

public dynamic func dyn(x: String) -> some P {
return x
}

@_dynamicReplacement(for: dyn(x:))
public func dynReplacement(x: String) -> some P {
return "replaced"
}

extension String: P {
public func poo() -> some O {
return 0
}
}

28 changes: 18 additions & 10 deletions test/TBD/protocol.swift
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
// REQUIRES: VENDOR=apple
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s -enable-testing
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s -enable-testing
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=all %s
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=all %s
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=all %s -enable-testing
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=all %s -enable-testing

// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s -O
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s -O
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s -enable-testing -O
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -validate-tbd-against-ir=missing %s -enable-testing -O
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=missing %s -O
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=missing %s -O
// RUN: %target-swift-frontend -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=missing %s -enable-testing -O
// RUN: %target-swift-frontend -enable-library-evolution -emit-ir -o/dev/null -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module -validate-tbd-against-ir=missing %s -enable-testing -O

// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -typecheck -parse-as-library -module-name test %s -emit-tbd -emit-tbd-path %t/typecheck.tbd
// RUN: %target-swift-frontend -emit-ir -parse-as-library -module-name test %s -emit-tbd -emit-tbd-path %t/emit-ir.tbd
// RUN: %target-swift-frontend -typecheck -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module %s -emit-tbd -emit-tbd-path %t/typecheck.tbd
// RUN: %target-swift-frontend -emit-ir -parse-as-library -module-name test -disable-objc-attr-requires-foundation-module %s -emit-tbd -emit-tbd-path %t/emit-ir.tbd
// RUN: diff -u %t/typecheck.tbd %t/emit-ir.tbd

public protocol Public {
Expand All @@ -33,6 +33,14 @@ private protocol Private {
var privateVarGetSet: Int { get set }
}

@_marker public protocol PublicMarker {}
@_marker internal protocol InternalMarker {}
@_marker private protocol PrivateMarker {}

@objc public protocol PublicObjc {}
@objc internal protocol InternalObjc {}
@objc private protocol PrivateObjc {}

// Naming scheme: type access, protocol access, witness access, type kind

public struct PublicPublicPublicStruct: Public {
Expand Down
22 changes: 22 additions & 0 deletions test/TBD/struct.swift
Original file line number Diff line number Diff line change
Expand Up @@ -286,3 +286,25 @@ private struct StructPrivateGeneric<T, U, V> {

private static func privateStaticGeneric<A>(_: A) {}
}

public struct StructDynamicMembers {
public dynamic init() {}
public dynamic init(x: Int) {
self.init()
}
public dynamic func dynamicMethod() {}
public dynamic static func dynamicStaticMethod() {}
}

extension StructDynamicMembers {
@_dynamicReplacement(for: init(x:))
public init(y: Int) {
self.init()
}

@_dynamicReplacement(for: dynamicMethod())
public func methodReplacement() {}

@_dynamicReplacement(for: dynamicStaticMethod())
public static func staticMethodReplacement() {}
}