swift-atomics icon indicating copy to clipboard operation
swift-atomics copied to clipboard

ManagedAtomic doesn't seem to work in test-cases

Open ThrudTheBarbarian opened this issue 1 year ago • 0 comments

If I have an I-var of a ManagedAtomic in a Swift framework, and then set up a test case in the same Xcode project, in the associated test target created by Xcode. Even importing "@testable" won't let me extend the class that contained the ManagedAtomic. It returns

"Cannot inherit from class 'QSEntity' because it has overridable members that could not be loaded"

Information

  • Package version: 1.2.0
  • Platform version: MacOS 14.3 (23D56)
  • Swift version:
swift-driver version: 1.87.3 Apple Swift version 5.9.2 (swiftlang-5.9.2.2.56 clang-1500.1.0.2.5)
Target: arm64-apple-macosx14.0

Checklist

  • [X] If possible, I've reproduced the issue using the main branch of this package.
  • [X] I've searched for existing reports of the same issue.

Steps to Reproduce

  • Set up a Swift framework project
  • Include the ManagedAtomics package using the package manager
  • Have a class with the following:
/*****************************************************************************\
|* Class definition
\*****************************************************************************/
class QSEntity : NSObject
	{
        ...
	/*************************************************************************\
	|* Model handling
	\*************************************************************************/
	private var nextModelIdValue : ManagedAtomic<Int64>	// Table's next model-id
        ...
        }
  • Set up a class in the associated tests project which imports the framework and extends the above Entity class
import Foundation
import OSLog
@testable import QuickSilver

/*****************************************************************************\
|* Class definition
\*****************************************************************************/
class TestEntity : QSEntity
        {
        }

Expected behavior

I'd expect a class containing a ManagedAtomic as an i-var to be importable into another class in the associated test target

Actual behavior

  • Set up as above
  • Notice that the error message Cannot inherit from class 'QSEntity' because it has overridable members that could not be loaded appears on the TestEntity declaration line.
  • Comment out the ManagedAtomic from the QSEntity class, ignoring any compilation issues where you've used it (for now)
  • Notice that the "Cannot inherit..." error goes away

ThrudTheBarbarian avatar Apr 13 '24 17:04 ThrudTheBarbarian