fixed some more inference bugs
This commit is contained in:
parent
a8f73dc8bd
commit
6ba128f7ba
@ -2096,12 +2096,19 @@ class Compiler(
|
|||||||
plan.captureOwners[name] = slotLoc
|
plan.captureOwners[name] = slotLoc
|
||||||
plan.captures += capture
|
plan.captures += capture
|
||||||
if (!plan.slotPlan.slots.containsKey(name)) {
|
if (!plan.slotPlan.slots.containsKey(name)) {
|
||||||
|
val newSlot = plan.slotPlan.nextIndex
|
||||||
plan.slotPlan.slots[name] = SlotEntry(
|
plan.slotPlan.slots[name] = SlotEntry(
|
||||||
plan.slotPlan.nextIndex,
|
newSlot,
|
||||||
isMutable = slotLoc.isMutable,
|
isMutable = slotLoc.isMutable,
|
||||||
isDelegated = slotLoc.isDelegated
|
isDelegated = slotLoc.isDelegated
|
||||||
)
|
)
|
||||||
plan.slotPlan.nextIndex += 1
|
plan.slotPlan.nextIndex += 1
|
||||||
|
slotTypeByScopeId[slotLoc.scopeId]?.get(slotLoc.slot)?.let { cls ->
|
||||||
|
slotTypeByScopeId.getOrPut(plan.slotPlan.id) { mutableMapOf() }[newSlot] = cls
|
||||||
|
}
|
||||||
|
slotTypeDeclByScopeId[slotLoc.scopeId]?.get(slotLoc.slot)?.let { decl ->
|
||||||
|
slotTypeDeclByScopeId.getOrPut(plan.slotPlan.id) { mutableMapOf() }[newSlot] = decl
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10346,6 +10353,9 @@ class Compiler(
|
|||||||
if (initClass != null) {
|
if (initClass != null) {
|
||||||
classFieldTypesByName.getOrPut(declaringClassNameCaptured) { mutableMapOf() }[name] = initClass
|
classFieldTypesByName.getOrPut(declaringClassNameCaptured) { mutableMapOf() }[name] = initClass
|
||||||
}
|
}
|
||||||
|
if (!isDelegate && varTypeDecl is TypeDecl.Generic) {
|
||||||
|
classMemberTypeDeclByName.getOrPut(declaringClassNameCaptured) { mutableMapOf() }[name] = varTypeDecl
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Emit MiniValDecl for this declaration (before execution wiring), attach doc if any
|
// Emit MiniValDecl for this declaration (before execution wiring), attach doc if any
|
||||||
|
|||||||
@ -545,8 +545,7 @@ class StackTraceEntry(
|
|||||||
}
|
}
|
||||||
// Private helper: starts one LaunchPool worker coroutine for the given queue.
|
// Private helper: starts one LaunchPool worker coroutine for the given queue.
|
||||||
// Defined outside LaunchPool so the global `launch` is not shadowed by the method.
|
// Defined outside LaunchPool so the global `launch` is not shadowed by the method.
|
||||||
private fun _launchPoolWorker(q) {
|
private fun _launchPoolWorker(ch: Channel): Deferred {
|
||||||
val ch = q as Channel
|
|
||||||
launch {
|
launch {
|
||||||
var task = ch.receive()
|
var task = ch.receive()
|
||||||
while (task != null) {
|
while (task != null) {
|
||||||
@ -618,7 +617,7 @@ class LaunchPool(maxWorkers, maxQueueSize = Channel.UNLIMITED) {
|
|||||||
*/
|
*/
|
||||||
fun cancel() {
|
fun cancel() {
|
||||||
closeQueue()
|
closeQueue()
|
||||||
workers.forEach { (it as Deferred).cancel() }
|
workers.forEach { it.cancel() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -628,7 +627,7 @@ class LaunchPool(maxWorkers, maxQueueSize = Channel.UNLIMITED) {
|
|||||||
*/
|
*/
|
||||||
fun cancelAndJoin() {
|
fun cancelAndJoin() {
|
||||||
closeQueue()
|
closeQueue()
|
||||||
workers.forEach { (it as Deferred).cancel() }
|
workers.forEach { it.cancel() }
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -639,7 +638,7 @@ class LaunchPool(maxWorkers, maxQueueSize = Channel.UNLIMITED) {
|
|||||||
fun closeAndJoin() {
|
fun closeAndJoin() {
|
||||||
closeQueue()
|
closeQueue()
|
||||||
for (w in workers) {
|
for (w in workers) {
|
||||||
(w as Deferred).await()
|
w.await()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user