-- SaffronScopeImpl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by Rauen.pa at September 1, 1988 6:30:06 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG7aDef, SaffronAG7bDef, SaffronAG9Def, SaffronAG5Def, SaffronAG4Def, Rope, ThreeC4Support, SaffronBaseDef, SaffronATDef; SaffronScopeImpl: CEDAR PROGRAM IMPORTS ThreeC4Support, SaffronBaseDef, SaffronATDef EXPORTS SaffronAG7aDef, SaffronAG7bDef, SaffronAG9Def, SaffronAG5Def, SaffronAG4Def= BEGIN OPEN SaffronAG7aDef, SaffronAG7bDef, SaffronAG9Def, SaffronAG5Def, SaffronAG4Def, Rope, ThreeC4Support, SaffronBaseDef, SaffronATDef; OptDecListabsentProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: OptDecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; OptDecListabsentProdUpdateLocalContext: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: OptDecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContext[localContext]; END END; OptDecListabsentProdAddDeclarationsToFieldList: PUBLIC PROC[ref: REF ANY, fieldList: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: OptDecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ FakeDamageContext[localContext]; temp0 _ FakeDamageFieldList[fieldList]; END END; OptDecListpresentProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: OptDecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptDecListpresentProdData _ NARROW[tree.data]; temp0 _ treeData.DecList.procs.HangContextsFromContextTree[treeData.DecList, contextTree, rib, paintRecords, cs]; END END; OptDecListpresentProdUpdateLocalContext: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: OptDecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptDecListpresentProdData _ NARROW[tree.data]; temp0 _ treeData.DecList.procs.UpdateLocalContext[treeData.DecList, localContext, paintRecords, cs]; END END; OptDecListpresentProdAddDeclarationsToFieldList: PUBLIC PROC[ref: REF ANY, fieldList: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: OptDecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptDecListpresentProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.DecList.procs.AddDeclarationsToFieldList[treeData.DecList, fieldList, localContext, cs]; END END; DecListmanyProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListmanyProdData _ NARROW[tree.data]; BEGIN contextTree1: ContextTreeNode; contextTree1 _ treeData.DecListhead.procs.HangContextsFromContextTree[treeData.DecListhead, contextTree, rib, paintRecords, cs]; temp0 _ treeData.DecListtail.procs.HangContextsFromContextTree[treeData.DecListtail, contextTree1, rib, paintRecords, cs]; END; END END; DecListmanyProdAddDeclarationsToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: DecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListmanyProdData _ NARROW[tree.data]; BEGIN fl2: FieldListNode; lc2: LocalContextNode; fl1: FieldListNode; lc1: LocalContextNode; [fl1, lc1] _ treeData.DecListhead.procs.AddDeclarationsToFieldList[treeData.DecListhead, fl, localContext, cs]; [fl2, lc2] _ treeData.DecListtail.procs.AddDeclarationsToFieldList[treeData.DecListtail, fl1, lc1, cs]; temp1 _ lc2; temp0 _ fl2; END; END END; DecListmanyProdUpdateLocalContext: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: DecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListmanyProdData _ NARROW[tree.data]; BEGIN lc1: LocalContextNode; lc1 _ FakeDamageContext[localContext]; temp0 _ lc1; END; END END; DecListoneProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Declaration.procs.HangContextsFromContextTree[treeData.Declaration, contextTree, rib, paintRecords, cs]; END END; DecListoneProdAddDeclarationsToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: DecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListoneProdData _ NARROW[tree.data]; BEGIN fl1: FieldListNode; lc1: LocalContextNode; [fl1, lc1] _ treeData.Declaration.procs.AddDeclarationToFieldList[treeData.Declaration, fl, localContext, cs]; temp1 _ lc1; temp0 _ fl1; END; END END; DecListoneProdUpdateLocalContext: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: DecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DecListoneProdData _ NARROW[tree.data]; BEGIN lc1: LocalContextNode; lc1 _ FakeDamageContext[localContext]; temp0 _ lc1; END; END END; DeclarationopaquetypeProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DeclarationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationopaquetypeProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; DeclarationopaquetypeProdAddDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: DeclarationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationopaquetypeProdData _ NARROW[tree.data]; BEGIN idAccess: AccessValNode; typeAccess: AccessValNode; typeExp: TypeExpPTreeNode; default: DefaultExpNode; lc2: LocalContextNode; tgn: TypeGraphNodeNode; lc1: LocalContextNode; paint: PaintNode; sizeExp: ValueNode; sizeExp _ treeData.OptSize.procs.GetExpVal[treeData.OptSize]; [lc1, paint] _ GetUniquePaint[localContext]; [lc2, tgn] _ CreateOpaqueTGN[lc1, paint, sizeExp]; default _ NullDefaultVal[]; typeExp _ BogusTypeExpPTree[]; typeAccess _ NullAccessVal[]; idAccess _ treeData.Access.procs.GetAccessVal[treeData.Access, GetDefaultAccess[cs]]; [temp0, temp1] _ treeData.IdentList.procs.AddTypeDeclarationToFieldList[treeData.IdentList, fl, lc2, cs, idAccess, typeAccess, tgn, typeExp, default]; END; END END; DeclarationtypeProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DeclarationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationtypeProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; DeclarationtypeProdAddDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: DeclarationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationtypeProdData _ NARROW[tree.data]; BEGIN idAccess: AccessValNode; typeAccess: AccessValNode; typeExp: TypeExpPTreeNode; default: DefaultExpNode; lc2: LocalContextNode; tgn: TypeGraphNodeNode; paintRecords: BOOLEAN; lc1: LocalContextNode; paint: PaintNode; [lc1, paint] _ GetUniquePaint[localContext]; paintRecords _ True[]; [lc2, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, lc1, paintRecords, cs]; default _ treeData.Default.procs.GetDefaultExpVal[treeData.Default]; typeExp _ TypeExpPTreeVal[treeData.TypeExp]; typeAccess _ treeData.Accesstype.procs.GetAccessVal[treeData.Accesstype, GetDefaultAccess[cs]]; idAccess _ treeData.Accessid.procs.GetAccessVal[treeData.Accessid, GetDefaultAccess[cs]]; [temp0, temp1] _ treeData.IdentList.procs.AddTypeDeclarationToFieldList[treeData.IdentList, fl, lc2, cs, idAccess, typeAccess, tgn, typeExp, default]; END; END END; DeclarationvalueProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: DeclarationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationvalueProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; DeclarationvalueProdAddDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, localContext: LocalContextNode, cs: CompilerStateNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: DeclarationNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DeclarationvalueProdData _ NARROW[tree.data]; BEGIN fl1: FieldListNode; parseTree: DeclarationPTreeNode; init: InitializationPTreeNode; access: AccessValNode; lc1: LocalContextNode; tgn: TypeGraphNodeNode; paintRecords: BOOLEAN; paintRecords _ True[]; [lc1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; access _ treeData.Access.procs.GetAccessVal[treeData.Access, GetDefaultAccess[cs]]; init _ InitializationPTreeVal[treeData.Initialization]; parseTree _ DeclarationPTreeVal[tree]; fl1 _ treeData.IdentList.procs.AddValueDeclarationToFieldList[treeData.IdentList, fl, cs, parseTree, access, tgn, init]; temp1 _ lc1; temp0 _ fl1; END; END END; IdentListmanyProdAddTypeDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, lc: LocalContextNode, cs: CompilerStateNode, idAccess: AccessValNode, typeAccess: AccessValNode, tgn: TypeGraphNodeNode, typeExp: TypeExpPTreeNode, default: DefaultExpNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN fl2: FieldListNode; lc2: LocalContextNode; fl1: FieldListNode; lc1: LocalContextNode; [fl1, lc1] _ treeData.IdentListhead.procs.AddTypeDeclarationToFieldList[treeData.IdentListhead, fl, lc, cs, idAccess, typeAccess, tgn, typeExp, default]; [fl2, lc2] _ treeData.IdentListtail.procs.AddTypeDeclarationToFieldList[treeData.IdentListtail, fl1, lc1, cs, idAccess, typeAccess, tgn, typeExp, default]; temp1 _ lc2; temp0 _ fl2; END; END END; IdentListmanyProdAddValueDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, cs: CompilerStateNode, parseTree: DeclarationPTreeNode, access: AccessValNode, tgn: TypeGraphNodeNode, init: InitializationPTreeNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListmanyProdData _ NARROW[tree.data]; BEGIN fl2: FieldListNode; fl1: FieldListNode; fl1 _ treeData.IdentListhead.procs.AddValueDeclarationToFieldList[treeData.IdentListhead, fl, cs, parseTree, access, tgn, init]; fl2 _ treeData.IdentListtail.procs.AddValueDeclarationToFieldList[treeData.IdentListtail, fl1, cs, parseTree, access, tgn, init]; temp0 _ fl2; END; END END; IdentListoneProdAddTypeDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, lc: LocalContextNode, cs: CompilerStateNode, idAccess: AccessValNode, typeAccess: AccessValNode, tgn: TypeGraphNodeNode, typeExp: TypeExpPTreeNode, default: DefaultExpNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.Ident.procs.AddTypeDeclarationToFieldList[treeData.Ident, fl, lc, cs, idAccess, typeAccess, tgn, typeExp, default]; END END; IdentListoneProdAddValueDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, cs: CompilerStateNode, access: DeclarationPTreeNode, parseTree: AccessValNode, tgn: TypeGraphNodeNode, init: InitializationPTreeNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentListoneProdData _ NARROW[tree.data]; temp0 _ treeData.Ident.procs.AddValueDeclarationToFieldList[treeData.Ident, fl, cs, access, parseTree, tgn, init]; END END; IdentidProdAddTypeDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, lc: LocalContextNode, cs: CompilerStateNode, idAccess: AccessValNode, typeAccess: AccessValNode, tgn: TypeGraphNodeNode, typeExp: TypeExpPTreeNode, default: DefaultExpNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; BEGIN fl1: FieldListNode; field: FieldNode; lc1: LocalContextNode; namedTGN: TypeGraphNodeNode; position: PositionValNode; position _ NullPosition[]; [lc1, namedTGN] _ CreateNamedTGN[lc, treeData.Id, position, typeAccess, tgn, default]; field _ CreateNamedTypeField[treeData.Id, position, idAccess, namedTGN, typeExp]; fl1 _ AppendFieldToFieldList[fl, field]; temp1 _ lc1; temp0 _ fl1; END; END END; IdentidProdAddValueDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, cs: CompilerStateNode, parseTree: DeclarationPTreeNode, access: AccessValNode, tgn: TypeGraphNodeNode, init: InitializationPTreeNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidProdData _ NARROW[tree.data]; BEGIN fl1: FieldListNode; field: FieldNode; temp1: InitializationNode; position: PositionValNode; position _ NullPosition[]; temp1 _ InitializationVal[init]; IF temp1.procs.InitializationIsBinding[temp1] THEN {field _ CreateConstantField[treeData.Id, position, parseTree, access, tgn, init]; } ELSE {field _ CreateVariableField[treeData.Id, position, parseTree, access, tgn, init]; }; fl1 _ AppendFieldToFieldList[fl, field]; temp0 _ fl1; END; END END; IdentidpositionProdAddTypeDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, lc: LocalContextNode, cs: CompilerStateNode, idAccess: AccessValNode, typeAccess: AccessValNode, tgn: TypeGraphNodeNode, typeExp: TypeExpPTreeNode, default: DefaultExpNode] RETURNS[temp0: FieldListNode, temp1: LocalContextNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; BEGIN fl1: FieldListNode; field: FieldNode; lc1: LocalContextNode; namedTGN: TypeGraphNodeNode; position: PositionValNode; position _ treeData.Position.procs.GetPositionVal[treeData.Position]; [lc1, namedTGN] _ CreateNamedTGN[lc, treeData.Id, position, typeAccess, tgn, default]; field _ CreateNamedTypeField[treeData.Id, position, idAccess, namedTGN, typeExp]; fl1 _ AppendFieldToFieldList[fl, field]; temp1 _ lc1; temp0 _ fl1; END; END END; IdentidpositionProdAddValueDeclarationToFieldList: PUBLIC PROC[ref: REF ANY, fl: FieldListNode, cs: CompilerStateNode, parseTree: DeclarationPTreeNode, access: AccessValNode, tgn: TypeGraphNodeNode, init: InitializationPTreeNode] RETURNS[temp0: FieldListNode] = BEGIN tree: IdentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdentidpositionProdData _ NARROW[tree.data]; BEGIN fl1: FieldListNode; field: FieldNode; temp1: InitializationNode; position: PositionValNode; position _ treeData.Position.procs.GetPositionVal[treeData.Position]; temp1 _ InitializationVal[init]; IF temp1.procs.InitializationIsBinding[temp1] THEN {field _ CreateConstantField[treeData.Id, position, parseTree, access, tgn, init]; } ELSE {field _ CreateVariableField[treeData.Id, position, parseTree, access, tgn, init]; }; fl1 _ AppendFieldToFieldList[fl, field]; temp0 _ fl1; END; END END; OptSizeabsentProdGetExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ValueNode] = BEGIN tree: OptSizeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ MakeUnparsedNullValue[]; END END; OptSizepresentProdGetExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ValueNode] = BEGIN tree: OptSizeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptSizepresentProdData _ NARROW[tree.data]; temp0 _ MakeUnparsedValue[treeData.Exp]; END END; StatementListemptyProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementListmoreProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementListmoreProdData _ NARROW[tree.data]; BEGIN contextTree1: ContextTreeNode; contextTree1 _ treeData.StatementList.procs.HangContextsFromContextTree[treeData.StatementList, contextTree, rib, paintRecords, cs]; temp0 _ treeData.Statement.procs.HangContextsFromContextTree[treeData.Statement, contextTree1, rib, paintRecords, cs]; END; END END; StatementifthenProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementifthenProdData _ NARROW[tree.data]; temp0 _ treeData.Statement.procs.HangContextsFromContextTree[treeData.Statement, contextTree, rib, paintRecords, cs]; END END; StatementifthenelseProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementifthenelseProdData _ NARROW[tree.data]; BEGIN contextTree1: ContextTreeNode; contextTree1 _ treeData.Statementthenpart.procs.HangContextsFromContextTree[treeData.Statementthenpart, contextTree, rib, paintRecords, cs]; temp0 _ treeData.Statementelsepart.procs.HangContextsFromContextTree[treeData.Statementelsepart, contextTree1, rib, paintRecords, cs]; END; END END; StatementselectProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementselectProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementexpProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementexpProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementassignProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementassignProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementmultiassignProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementmultiassignProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementblockProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementblockProdData _ NARROW[tree.data]; temp0 _ treeData.Block.procs.HangContextsFromContextTree[treeData.Block, contextTree, rib, paintRecords, cs]; END END; StatementloopcontrolProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementloopcontrolProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementexitProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementloopProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementgotoProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementgotoProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementreturnProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementreturnProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementtransferProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementtransferProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementfreeProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementfreeProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementwaitProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementwaitProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementerrorProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementstopProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementnullProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementresumeProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementresumeProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementrejectProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementcontinueProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementretryProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementgetstateProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementgetstateProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; StatementsetstateProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: StatementNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: StatementsetstateProdData _ NARROW[tree.data]; temp0 _ FakeDamageContextTree[contextTree]; END END; BlockProdMakeContextTree: PUBLIC PROC[ref: REF ANY, parentRib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: BlockNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: BlockProdData _ NARROW[tree.data]; BEGIN err: BOOLEAN; err _ Error["should not be here"]; temp0 _ EmptyContextTree[parentRib]; END; END END; BlockProdHangContextsFromContextTree: PUBLIC PROC[ref: REF ANY, contextTree: ContextTreeNode, rib: ContextRibNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: ContextTreeNode] = BEGIN tree: BlockNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: BlockProdData _ NARROW[tree.data]; BEGIN err: BOOLEAN; err _ Error["should not be here"]; temp0 _ FakeDamageContextTree[contextTree]; END; END END; IdOrStringidProdRopeFromIdOrString: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: IdOrStringNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdOrStringidProdData _ NARROW[tree.data]; temp0 _ RopeFromId[treeData.Id]; END END; IdOrStringstringProdRopeFromIdOrString: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: IdOrStringNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdOrStringstringProdData _ NARROW[tree.data]; temp0 _ RopeFromString[treeData.String]; END END; END..