Trace named Swift function steps as one ordered replay panel.

Callback Step Panel

base
callback_step_panel.swift
Replay: real traced execution (multi-file project)
func addStep(_ value: Int) -> Int {
    return value + 4
}

func doubleStep(_ value: Int) -> Int {
    return value * 2
}

let base = 6
let first = addStep(base)
let second = doubleStep(first)

print("base=\(base)")
print("first=\(first)")
print("second=\(second)")
func addStep(_ value: Int) -> Int {
    return value + 4
}

func doubleStep(_ value: Int) -> Int {
    return value * 2
}

let base = 3
let first = addStep(base)
let second = doubleStep(first)

print("base=\(base)")
print("first=\(first)")
print("second=\(second)")
func addStep(_ value: Int) -> Int {
    return value + 4
}

func doubleStep(_ value: Int) -> Int {
    return value * 2
}

let base = 9
let first = addStep(base)
let second = doubleStep(first)

print("base=\(base)")
print("first=\(first)")
print("second=\(second)")
  1. base ← 6

    9let base→ 6 = 6  //@base=3, 910let first = addStep(base6)11let second = doubleStep(first)
  2. func addStep(_ value: Int) -> Int

    1func addStep(_ value6: Int) -> Int {2    return value6 + 43}
  3. first ← 10

    9let base = 6  //@base=3, 910let first→ 10 = addStep(base6)11let second = doubleStep(first10)
  4. func doubleStep(_ value: Int) -> Int

    5func doubleStep(_ value10: Int) -> Int {6    return value10 * 27}
  5. second ← 20

    10let first = addStep(base)11let second→ 20 = doubleStep(first10)1213print("base=\(base6)")14print("first=\(first10)")15print("second=\(second20)")
    outputbase=6
    first=10
    second=20
  1. base ← 3

    9let base→ 3 = 310let first = addStep(base3)11let second = doubleStep(first)
  2. func addStep(_ value: Int) -> Int

    1func addStep(_ value3: Int) -> Int {2    return value3 + 43}
  3. first ← 7

    9let base = 310let first→ 7 = addStep(base3)11let second = doubleStep(first7)
  4. func doubleStep(_ value: Int) -> Int

    5func doubleStep(_ value7: Int) -> Int {6    return value7 * 27}
  5. second ← 14

    10let first = addStep(base)11let second→ 14 = doubleStep(first7)1213print("base=\(base3)")14print("first=\(first7)")15print("second=\(second14)")
    outputbase=3
    first=7
    second=14
  1. base ← 9

    9let base→ 9 = 910let first = addStep(base9)11let second = doubleStep(first)
  2. func addStep(_ value: Int) -> Int

    1func addStep(_ value9: Int) -> Int {2    return value9 + 43}
  3. first ← 13

    9let base = 910let first→ 13 = addStep(base9)11let second = doubleStep(first13)
  4. func doubleStep(_ value: Int) -> Int

    5func doubleStep(_ value13: Int) -> Int {6    return value13 * 27}
  5. second ← 26

    10let first = addStep(base)11let second→ 26 = doubleStep(first13)1213print("base=\(base9)")14print("first=\(first13)")15print("second=\(second26)")
    outputbase=9
    first=13
    second=26
callback step Small named functions keep each transformation visible in replay while this example stays in a single source panel.