<> <> DIRECTORY AMBridge, AMTypes, IO, PrincOps, PrincOpsUtils, PrintTV, ViewerIO; PrintStack: CEDAR PROGRAM IMPORTS AMBridge, AMTypes, IO, PrincOpsUtils, PrintTV, ViewerIO = BEGIN TV: TYPE = AMTypes.TV; log: IO.STREAM _ ViewerIO.CreateViewerStreams["PrintStack"].out; Print: PROC = BEGIN me, local: TV; TRUSTED {me _ AMBridge.TVForFrame[PrincOpsUtils.MyLocalFrame[]]}; FOR local _ me, AMTypes.DynamicParent[local] WHILE local # NIL DO what: TV; what _ AMTypes.Procedure[local !AMTypes.Error => {what _ NIL; CONTINUE}]; IF what = NIL THEN what _ AMTypes.Signal[local !AMTypes.Error => {what _ NIL; CONTINUE}]; PrintTV.Print[what, log]; log.PutRope["\n"]; ENDLOOP; END; Signal: SIGNAL = CODE; SigTest: PROC = BEGIN Sub: PROC = {SIGNAL Signal[]}; Sub[!Signal => {Print[]; CONTINUE}]; END; SigTest2: PROC = BEGIN Signal2: SIGNAL = CODE; Sub: PROC = {SIGNAL Signal2[]}; Sub[!Signal2 => {Print[]; CONTINUE}]; END; END.