-- SaffronMakeFieldListImpl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by Rauen.pa at September 1, 1988 6:29:54 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG7bDef, SaffronAG8Def, SaffronAG6cDef, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; SaffronMakeFieldListImpl: CEDAR PROGRAM IMPORTS ThreeC4Support, SaffronBaseDef EXPORTS SaffronAG7bDef, SaffronAG8Def, SaffronAG6cDef= BEGIN OPEN SaffronAG7bDef, SaffronAG8Def, SaffronAG6cDef, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; RecListemptyProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: RecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ CreateEmptyFieldList[]; temp0 _ FakeDamageContext[localContext]; END END; RecListpairlistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: RecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: RecListpairlistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.PairList.procs.AddPairsToFieldList[treeData.PairList, localContext, newFieldList, paintRecords, cs]; temp1 _ fieldList; temp0 _ localContext1; END; END END; RecListtypelistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: RecListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: RecListtypelistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.TypeList.procs.AddToFieldList[treeData.TypeList, localContext, newFieldList, paintRecords, cs]; temp1 _ fieldList; temp0 _ localContext1; END; END END; ParameterListemptyProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ CreateEmptyFieldList[]; temp0 _ FakeDamageContext[localContext]; END END; ParameterListanyProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp1 _ AnyFieldList[]; temp0 _ FakeDamageContext[localContext]; END END; ParameterListpairlistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ParameterListpairlistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.PairList.procs.AddPairsToFieldList[treeData.PairList, localContext, newFieldList, paintRecords, cs]; temp1 _ fieldList; temp0 _ localContext1; END; END END; ParameterListtypelistProdMakeFieldList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FieldListNode] = BEGIN tree: ParameterListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ParameterListtypelistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fieldList: FieldListNode; newFieldList: FieldListNode; newFieldList _ CreateEmptyFieldList[]; [localContext1, fieldList] _ treeData.TypeList.procs.AddToFieldList[treeData.TypeList, localContext, newFieldList, paintRecords, cs]; temp1 _ fieldList; temp0 _ localContext1; END; END END; VariantListoneProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; temp0 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext, tgn]; END END; VariantListoneProdMakeStarTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ CreateEmptyEnumTypeTGN[localContext, False[]]; localContext2 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext1, tgn]; temp1 _ tgn; temp0 _ localContext2; END; END END; VariantListoneProdAddVariantsToUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, unionList: UnionListNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext, unionList, paintRecords, cs]; END END; VariantListoneProdMakeUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListoneProdData _ NARROW[tree.data]; BEGIN newUnionList: UnionListNode; newUnionList _ CreateEmptyUnionList[]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext, newUnionList, paintRecords, cs]; END; END END; VariantListmoreProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ treeData.VariantList.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantList, localContext, tgn]; temp0 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext1, tgn]; END; END END; VariantListmoreProdMakeStarTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext3: LocalContextNode; localContext2: LocalContextNode; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ CreateEmptyEnumTypeTGN[localContext, False[]]; localContext2 _ treeData.VariantList.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantList, localContext1, tgn]; localContext3 _ treeData.VariantItem.procs.AddVariantNamesToEnumTypeTGN[treeData.VariantItem, localContext2, tgn]; temp1 _ tgn; temp0 _ localContext3; END; END END; VariantListmoreProdAddVariantsToUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, unionList: UnionListNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; unionList1: UnionListNode; [localContext1, unionList1] _ treeData.VariantList.procs.AddVariantsToUnionList[treeData.VariantList, localContext, unionList, paintRecords, cs]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext1, unionList1, paintRecords, cs]; END; END END; VariantListmoreProdMakeUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; unionList: UnionListNode; newUnionList: UnionListNode; newUnionList _ CreateEmptyUnionList[]; [localContext1, unionList] _ treeData.VariantList.procs.AddVariantsToUnionList[treeData.VariantList, localContext, newUnionList, paintRecords, cs]; [temp0, temp1] _ treeData.VariantItem.procs.AddVariantsToUnionList[treeData.VariantItem, localContext1, unionList, paintRecords, cs]; END; END END; VariantItemProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: VariantItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantItemProdData _ NARROW[tree.data]; temp0 _ treeData.IdList.procs.AddVariantNamesToEnumTypeTGN[treeData.IdList, localContext, tgn]; END END; VariantItemProdAddVariantsToUnionList: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, unionList: UnionListNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: UnionListNode] = BEGIN tree: VariantItemNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: VariantItemProdData _ NARROW[tree.data]; BEGIN ffl: FrozenFieldListNode; localContext1: LocalContextNode; fieldList: FieldListNode; [localContext1, fieldList] _ treeData.RecList.procs.MakeFieldList[treeData.RecList, localContext, paintRecords, cs]; ffl _ FreezeFieldList[fieldList]; temp1 _ treeData.IdList.procs.AddNamesToUnionList[treeData.IdList, ffl, unionList]; temp0 _ localContext1; END; END END; IdListoneProdAddIdsToRestrictionList: PUBLIC PROC[ref: REF ANY, namedTGN: TypeGraphNodeNode] RETURNS[temp0: TypeGraphNodeNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListoneProdData _ NARROW[tree.data]; temp0 _ AddIdToRestrictionList[treeData.Id, namedTGN]; END END; IdListoneProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListoneProdData _ NARROW[tree.data]; temp0 _ AppendElementToEnumTypeTGN[localContext, tgn, treeData.Id, MakeUnparsedNullValue[]]; END END; IdListoneProdAddNamesToUnionList: PUBLIC PROC[ref: REF ANY, ffl: FrozenFieldListNode, unionList: UnionListNode] RETURNS[temp0: UnionListNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListoneProdData _ NARROW[tree.data]; temp0 _ AppendToUnionList[unionList, treeData.Id, ffl]; END END; IdListmoreProdAddIdsToRestrictionList: PUBLIC PROC[ref: REF ANY, tgn: TypeGraphNodeNode] RETURNS[temp0: TypeGraphNodeNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListmoreProdData _ NARROW[tree.data]; BEGIN tgn2: TypeGraphNodeNode; tgn1: TypeGraphNodeNode; tgn1 _ AddIdToRestrictionList[treeData.Id, tgn]; tgn2 _ treeData.IdList.procs.AddIdsToRestrictionList[treeData.IdList, tgn1]; temp0 _ tgn2; END; END END; IdListmoreProdAddVariantNamesToEnumTypeTGN: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, tgn: TypeGraphNodeNode] RETURNS[temp0: LocalContextNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListmoreProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ AppendElementToEnumTypeTGN[localContext, tgn, treeData.Id, MakeUnparsedNullValue[]]; temp0 _ treeData.IdList.procs.AddVariantNamesToEnumTypeTGN[treeData.IdList, localContext1, tgn]; END; END END; IdListmoreProdAddNamesToUnionList: PUBLIC PROC[ref: REF ANY, ffl: FrozenFieldListNode, unionList: UnionListNode] RETURNS[temp0: UnionListNode] = BEGIN tree: IdListNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IdListmoreProdData _ NARROW[tree.data]; BEGIN unionList1: UnionListNode; unionList1 _ AppendToUnionList[unionList, treeData.Id, ffl]; temp0 _ treeData.IdList.procs.AddNamesToUnionList[treeData.IdList, ffl, unionList1]; END; END END; TagidentProdGetSequenceTagInfo: PUBLIC PROC[ref: REF ANY, cs: CompilerStateNode] RETURNS[temp0: IdNode, temp1: PositionValNode, temp2: AccessValNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagidentProdData _ NARROW[tree.data]; temp2 _ treeData.Access.procs.GetAccessVal[treeData.Access, GetDefaultAccess[cs]]; [temp0, temp1] _ treeData.Ident.procs.GetIdentInfo[treeData.Ident]; END END; TagidentProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagidentProdData _ NARROW[tree.data]; [temp0, temp1, temp2] _ treeData.TagType.procs.MakeTagType[treeData.TagType, localContext, paintRecords, cs]; END END; TagidentProdMakeVariantFlavor: PUBLIC PROC[ref: REF ANY, cs: CompilerStateNode] RETURNS[temp0: VariantFlavorNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagidentProdData _ NARROW[tree.data]; temp1: IdNode; temp2: PositionValNode; [temp1, temp2] _ treeData.Ident.procs.GetIdentInfo[treeData.Ident]; temp0 _ VanillaVariantFlavorVal[temp1, temp2, treeData.Access.procs.GetAccessVal[treeData.Access, GetDefaultAccess[cs]]]; END END; TagcomputedProdGetSequenceTagInfo: PUBLIC PROC[ref: REF ANY, cs: CompilerStateNode] RETURNS[temp0: IdNode, temp1: PositionValNode, temp2: AccessValNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagcomputedProdData _ NARROW[tree.data]; temp2 _ AccessValConst["empty"]; temp1 _ NullPosition[]; temp0 _ NullId[]; END END; TagcomputedProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagcomputedProdData _ NARROW[tree.data]; [temp0, temp1, temp2] _ treeData.TagType.procs.MakeTagType[treeData.TagType, localContext, paintRecords, cs]; END END; TagcomputedProdMakeVariantFlavor: PUBLIC PROC[ref: REF ANY, cs: CompilerStateNode] RETURNS[temp0: VariantFlavorNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagcomputedProdData _ NARROW[tree.data]; temp0 _ ComputedVariantFlavorConst[]; END END; TagoverlaidProdGetSequenceTagInfo: PUBLIC PROC[ref: REF ANY, cs: CompilerStateNode] RETURNS[temp0: IdNode, temp1: PositionValNode, temp2: AccessValNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagoverlaidProdData _ NARROW[tree.data]; BEGIN x: BOOLEAN; x _ Error["Sequences can't be overlaid"]; temp2 _ AccessValConst["empty"]; temp1 _ NullPosition[]; temp0 _ NullId[]; END; END END; TagoverlaidProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagoverlaidProdData _ NARROW[tree.data]; [temp0, temp1, temp2] _ treeData.TagType.procs.MakeTagType[treeData.TagType, localContext, paintRecords, cs]; END END; TagoverlaidProdMakeVariantFlavor: PUBLIC PROC[ref: REF ANY, cs: CompilerStateNode] RETURNS[temp0: VariantFlavorNode] = BEGIN tree: TagNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagoverlaidProdData _ NARROW[tree.data]; temp0 _ OverlaidVariantFlavorConst[]; END END; TagTypestarProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN localContext1: LocalContextNode; localContext1 _ FakeDamageContext[localContext]; temp2 _ True[]; temp1 _ GetBottom[cs]; temp0 _ localContext1; END; END END; TagTypetypeexpProdMakeTagType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode, temp2: BOOLEAN] = BEGIN tree: TagTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TagTypetypeexpProdData _ NARROW[tree.data]; temp2 _ False[]; [temp0, temp1] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; END END; END..