<> <> <> <> DIRECTORY CedarBaseContext, SaffronAG7Def, CedarBaseMisc, ThreeC4Support, SaffronATDef; SaffronReplaceDescriptorImpl: CEDAR PROGRAM IMPORTS CedarBaseContext, CedarBaseMisc, ThreeC4Support EXPORTS SaffronAG7Def= BEGIN OPEN CedarBaseContext, SaffronAG7Def, CedarBaseMisc, ThreeC4Support, SaffronATDef; IdentidProdReplaceDescriptor: PUBLIC PROC[ref: REF ANY, descriptor: Descriptor, localContext: LocalContext] RETURNS[temp0: LocalContext] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; BEGIN assert: BOOLEAN; localContext1: LocalContext; ok: BOOLEAN; [localContext1, ok] _ ReplaceContext[localContext, treeData.id, descriptor]; assert _ Assert[ok, "undefined identifier", BotchAction.debug]; temp0 _ localContext1; END; END END; IdentListmanyProdReplaceDescriptor: PUBLIC PROC[ref: REF ANY, descriptor: Descriptor, localContext: LocalContext] RETURNS[temp0: LocalContext] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContext; localContext1: LocalContext; localContext1 _ treeData.IdentListhead.procs.ReplaceDescriptor[treeData.IdentListhead, descriptor, localContext]; localContext2 _ treeData.IdentListtail.procs.ReplaceDescriptor[treeData.IdentListtail, descriptor, localContext1]; temp0 _ localContext2; END; END END; IdentListoneProdReplaceDescriptor: PUBLIC PROC[ref: REF ANY, descriptor: Descriptor, localContext: LocalContext] RETURNS[temp0: LocalContext] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Ident.procs.ReplaceDescriptor[treeData.Ident, descriptor, localContext]; END END; END..