Skip to content

Treat package as resilient as non-frozen public by default #70141

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
Jan 22, 2024
Merged

Conversation

elsh
Copy link
Contributor

@elsh elsh commented Nov 30, 2023

Currently package types are treated non-resilient by default. This PR changes that to treat them as
resilient as non-frozen public by default. If the defining module is built resiliently, treat the package
decl as resilient, just as we do for public decls. Access methods to package should be the same
as for non-frozen public, i.e. indirect.
Added tests for SIL/IR wrt serialization and indirect access with/out resilience enabled.

Resolves rdar://118947451

@elsh
Copy link
Contributor Author

elsh commented Nov 30, 2023

@swift-ci smoke test

@elsh
Copy link
Contributor Author

elsh commented Nov 30, 2023

@swift-ci smoke test

@elsh elsh changed the title Define package decl to be resilient Treat package decl as resilient, similar to non-frozen public decl Jan 11, 2024
@elsh
Copy link
Contributor Author

elsh commented Jan 11, 2024

@swift-ci smoke test

1 similar comment
@elsh
Copy link
Contributor Author

elsh commented Jan 12, 2024

@swift-ci smoke test

@elsh elsh requested a review from aschwaighofer January 18, 2024 22:24
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1p16resilient_struct5PointVvpWvd" = constant [[INT]] {{8|16}}, align [[#WORDSIZE]]
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1s16resilient_struct4SizeVvpWvd" = constant [[INT]] {{32|16}}, align [[#WORDSIZE]]
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1p16resilient_struct5PointVvpWvd" = hidden global [[INT]] 0,
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1s16resilient_struct4SizeVvpWvd" = hidden global [[INT]] 0,
Copy link
Contributor Author

@elsh elsh Jan 18, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI I get hidden global for a public decl as well, with or without this PR.

For example,

public struct PublicSize {
  public var w: Int // should have getter and setter
  public let h: Int // getter only

  public init(w: Int, h: Int) {
    self.w = w
    self.h = h
  }

  public func method() {}
  public mutating func mutantMethod() {}
}

referenced in

public class PublicClassWithPbProperty {
  public let p: PublicPoint
  public let s: PublicSize
  public let color: Int32

  public init(p: PublicPoint, s: PublicSize, color: Int32) {
    self.p = p
    self.s = s
    self.color = color
  }
}

results in

@"$s18package_resilience25PublicClassWithPbPropertyC1p16resilient_struct0C5PointVvpWvd" = hidden global i64 0, align 8

@elsh
Copy link
Contributor Author

elsh commented Jan 20, 2024

@swift-ci smoke test

If the defining module is built resiliently, treat the package decl as resilient,
just as we do for public decls.
Access methods to `package` should be the same as for non-frozen `public`, i.e. indirect.
Added tests for SIL/IR wrt serialization and indirect access with/out resilience enabled.

Resolves rdar://118947451
@elsh
Copy link
Contributor Author

elsh commented Jan 22, 2024

@swift-ci smoke test

@elsh
Copy link
Contributor Author

elsh commented Jan 22, 2024

@swift-ci smoke test linux

@elsh elsh changed the title Treat package decl as resilient, similar to non-frozen public decl Treat package as resilient as non-frozen public by default Jan 22, 2024
@elsh elsh merged commit 663f068 into main Jan 22, 2024
@elsh elsh deleted the es-res branch January 22, 2024 23:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants