|
@@ -12,6 +12,8 @@ internal class XCTLRuntimeContext: XCTLRuntimeAbstractContext {
|
|
|
|
|
|
public let nativeObjectInstance: NSObject
|
|
public let nativeObjectInstance: NSObject
|
|
|
|
|
|
|
|
+ public var nativeObjectMutations = [(String, XCTLRuntimeVariable)]()
|
|
|
|
+
|
|
private let generators: [String : XCTLGenerateProtocol.Type]
|
|
private let generators: [String : XCTLGenerateProtocol.Type]
|
|
|
|
|
|
private var values = [String : XCTLRuntimeVariable]()
|
|
private var values = [String : XCTLRuntimeVariable]()
|
|
@@ -184,21 +186,27 @@ internal class XCTLRuntimeContext: XCTLRuntimeAbstractContext {
|
|
for name in names {
|
|
for name in names {
|
|
self.values[name] = value
|
|
self.values[name] = value
|
|
if exportNames.contains(name) {
|
|
if exportNames.contains(name) {
|
|
- self.nativeObjectInstance.setValue(value.nativeValue, forKey: name)
|
|
|
|
|
|
+ self.nativeObjectMutations.append((name, value))
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
internal func setValueToRootAssumeExport(_ value: XCTLRuntimeVariable, forName name: String) {
|
|
internal func setValueToRootAssumeExport(_ value: XCTLRuntimeVariable, forName name: String) {
|
|
self.values[name] = value
|
|
self.values[name] = value
|
|
- self.nativeObjectInstance.setValue(value.nativeValue, forKey: name)
|
|
|
|
|
|
+ self.nativeObjectMutations.append((name, value))
|
|
}
|
|
}
|
|
|
|
|
|
internal func setValueToRoot(_ value: XCTLRuntimeVariable, forName name: String, assumeExport export: Bool) {
|
|
internal func setValueToRoot(_ value: XCTLRuntimeVariable, forName name: String, assumeExport export: Bool) {
|
|
self.values[name] = value
|
|
self.values[name] = value
|
|
let doExport = export || self.exportNames.contains(name)
|
|
let doExport = export || self.exportNames.contains(name)
|
|
if doExport {
|
|
if doExport {
|
|
- self.nativeObjectInstance.setValue(value.nativeValue, forKey: name)
|
|
|
|
|
|
+ self.nativeObjectMutations.append((name, value))
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ internal func applyNativeObjectMutations() {
|
|
|
|
+ for it in self.nativeObjectMutations {
|
|
|
|
+ self.nativeObjectInstance.setValue(it.1, forKey: it.0)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|