|
@@ -16,7 +16,7 @@ internal class XCTLRuntimeContext: XCTLRuntimeAbstractContext {
|
|
|
|
|
|
private var values = [String : XCTLRuntimeVariable]()
|
|
|
|
|
|
- internal private(set) var lazyRunStatements = [XCTLStatement]()
|
|
|
+ internal private(set) var lazyRunStatements = [XCTLReferencedVariableStatement]()
|
|
|
|
|
|
internal let stdout = XCTLStream(onAppendBlock: {
|
|
|
print($0, terminator: "")
|
|
@@ -189,11 +189,19 @@ internal class XCTLRuntimeContext: XCTLRuntimeAbstractContext {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- internal func setValueToRoot(_ value: XCTLRuntimeVariable, forName name: String) {
|
|
|
+ internal func setValueToRootAssumeExport(_ value: XCTLRuntimeVariable, forName name: String) {
|
|
|
self.values[name] = value
|
|
|
self.nativeObjectInstance.setValue(value.nativeValue, forKey: name)
|
|
|
}
|
|
|
|
|
|
+ internal func setValueToRoot(_ value: XCTLRuntimeVariable, forName name: String, assumeExport export: Bool) {
|
|
|
+ self.values[name] = value
|
|
|
+ let doExport = export || self.exportNames.contains(name)
|
|
|
+ if doExport {
|
|
|
+ self.nativeObjectInstance.setValue(value.nativeValue, forKey: name)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
internal func setValueIgnoreParent(_ value: XCTLRuntimeVariable, forName name: String) {
|
|
|
self.setValue(value, forName: name)
|
|
|
}
|
|
@@ -206,6 +214,10 @@ internal class XCTLRuntimeContext: XCTLRuntimeAbstractContext {
|
|
|
self.exportNames.insert(name)
|
|
|
}
|
|
|
|
|
|
+ internal func hasExport(name: String) -> Bool {
|
|
|
+ return self.exportNames.contains(name)
|
|
|
+ }
|
|
|
+
|
|
|
internal func allocateObject(name: String, args: [XCTLRuntimeVariable]) throws -> XCTLRuntimeVariable {
|
|
|
if let generator = self.generators[name] {
|
|
|
let nativeObject = try generator.initWithXCT(args.compactMap({ $0.nativeValue }))
|
|
@@ -223,7 +235,7 @@ internal class XCTLRuntimeContext: XCTLRuntimeAbstractContext {
|
|
|
throw XCTLRuntimeError.generateProtocolNotFoundedError(name: name)
|
|
|
}
|
|
|
|
|
|
- internal func addLazyStatement(_ stmt: XCTLStatement) {
|
|
|
+ internal func addLazyStatement(_ stmt: XCTLReferencedVariableStatement) {
|
|
|
self.lazyRunStatements.append(stmt)
|
|
|
}
|
|
|
|