-- SaffronMakeType2Impl.mesa -- Copyright Ó 1987 by Xerox Corporation. All rights reserved. -- Generated by Rauen.pa at September 1, 1988 2:51:25 pm PDT -- using ThreeCasabaFour [1.2] of June 1, 1987 6:00:00 pm PDT DIRECTORY SaffronAG7aDef, SaffronAG6aDef, SaffronAG7bDef, SaffronAG6bDef, SaffronAG3Def, SaffronAG9Def, SaffronAG6cDef, SaffronAG2Def, SaffronAG8Def, Rope, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; SaffronMakeType2Impl: CEDAR PROGRAM IMPORTS ThreeC4Support, SaffronBaseDef, SaffronATDef EXPORTS SaffronAG7aDef, SaffronAG6aDef, SaffronAG7bDef, SaffronAG6bDef, SaffronAG3Def, SaffronAG9Def, SaffronAG6cDef, SaffronAG2Def, SaffronAG8Def= BEGIN OPEN SaffronAG7aDef, SaffronAG6aDef, SaffronAG7bDef, SaffronAG6bDef, SaffronAG3Def, SaffronAG9Def, SaffronAG6cDef, SaffronAG2Def, SaffronAG8Def, Rope, SaffronGenericDef, ThreeC4Support, SaffronBaseDef, SaffronATDef; TypeExprecordProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprecordProdData _ NARROW[tree.data]; BEGIN localContext4: LocalContextNode; newTgn: TypeGraphNodeNode; frozenFieldList: FrozenFieldListNode; localContext2: LocalContextNode; fieldList: FieldListNode; localContext1: LocalContextNode; paint: PaintNode; machineDependent: BOOLEAN; monitored: BOOLEAN; monitored _ treeData.Monitored.procs.IsKeywordPresent[treeData.Monitored]; machineDependent _ treeData.MachineDependent.procs.IsKeywordPresent[treeData.MachineDependent]; IF paintRecords THEN {[localContext1, paint] _ GetUniquePaint[localContext]; } ELSE {[localContext1, paint] _ GetUnpaintedPaint[localContext]; }; [localContext2, fieldList] _ treeData.RecList.procs.MakeFieldList[treeData.RecList, localContext1, paintRecords, cs]; frozenFieldList _ FreezeFieldList[fieldList]; [localContext4, newTgn] _ CreateRecordTGN[localContext2, paint, machineDependent, monitored, frozenFieldList]; temp1 _ newTgn; temp0 _ localContext4; END; END END; TypeExpunionProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpunionProdData _ NARROW[tree.data]; BEGIN variantFlavor: VariantFlavorNode; localContext3: LocalContextNode; tagTypeTgn1: TypeGraphNodeNode; localContext2: LocalContextNode; tagTypeTgn: TypeGraphNodeNode; isStarTagType: BOOLEAN; localContext1: LocalContextNode; unionList: UnionListNode; [localContext1, unionList] _ treeData.VariantList.procs.MakeUnionList[treeData.VariantList, localContext, paintRecords, cs]; [localContext2, tagTypeTgn, isStarTagType] _ treeData.Tag.procs.MakeTagType[treeData.Tag, localContext1, paintRecords, cs]; IF isStarTagType THEN {[localContext3, tagTypeTgn1] _ treeData.VariantList.procs.MakeStarTagType[treeData.VariantList, localContext2]; } ELSE {tagTypeTgn1 _ tagTypeTgn; localContext3 _ FakeDamageContext[localContext2]; }; variantFlavor _ treeData.Tag.procs.MakeVariantFlavor[treeData.Tag, cs]; [temp0, temp1] _ CreateVariantPartTGN[localContext3, variantFlavor, tagTypeTgn1, unionList]; END; END END; TypeExpsequenceProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpsequenceProdData _ NARROW[tree.data]; BEGIN temp2: IdNode; temp3: PositionValNode; temp4: AccessValNode; packed: BOOLEAN; x: BOOLEAN; localContext2: LocalContextNode; tagTypeTgn: TypeGraphNodeNode; isStarTagType: BOOLEAN; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; [localContext2, tagTypeTgn, isStarTagType] _ treeData.Tag.procs.MakeTagType[treeData.Tag, localContext1, paintRecords, cs]; IF isStarTagType THEN {x _ Error["Sequence Tag must not be a star"]; } ELSE {x _ True[]; }; packed _ treeData.Packed.procs.IsKeywordPresent[treeData.Packed]; [temp2, temp3, temp4] _ treeData.Tag.procs.GetSequenceTagInfo[treeData.Tag, cs]; [temp0, temp1] _ CreateSequenceTGN[localContext2, packed, temp2, temp3, temp4, tagTypeTgn, tgn]; END; END END; TypeExpenumProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpenumProdData _ NARROW[tree.data]; BEGIN machineDependent: BOOLEAN; machineDependent _ treeData.MachineDependent.procs.IsKeywordPresent[treeData.MachineDependent]; [temp0, temp1] _ treeData.ElementList.procs.MakeElementList[treeData.ElementList, localContext, machineDependent]; END; END END; TypeExprefProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprefProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; referentTgn: TypeGraphNodeNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.IsKeywordPresent[treeData.ReadOnly]; [localContext1, referentTgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; [temp0, temp1] _ CreateRefTGN[localContext1, readOnly, referentTgn]; END; END END; TypeExprefanyProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprefanyProdData _ NARROW[tree.data]; BEGIN topTgn: TypeGraphNodeNode; localContext1: LocalContextNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.IsKeywordPresent[treeData.ReadOnly]; localContext1 _ FakeDamageContext[localContext]; topTgn _ GetTop[cs]; [temp0, temp1] _ CreateRefTGN[localContext1, readOnly, topTgn]; END; END END; TypeExprefunspecifiedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN topTgn: TypeGraphNodeNode; localContext1: LocalContextNode; readOnly: BOOLEAN; readOnly _ False[]; localContext1 _ FakeDamageContext[localContext]; topTgn _ GetTop[cs]; [temp0, temp1] _ CreateRefTGN[localContext1, readOnly, topTgn]; END; END END; TypeExptypeidProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptypeidProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.TypeId.procs.MakeType[treeData.TypeId, localContext, paintRecords, cs]; END END; TypeExpsubrangeProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpsubrangeProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.Subrange.procs.MakeType[treeData.Subrange, localContext, paintRecords, cs]; END END; TypeExppointerProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExppointerProdData _ NARROW[tree.data]; BEGIN ordered: BOOLEAN; base: BOOLEAN; localContext1: LocalContextNode; bounds: BoundsValNode; readOnly: BOOLEAN; tgn: TypeGraphNodeNode; [localContext1, bounds, readOnly, tgn] _ treeData.PointerType.procs.GetPointerTypeInfo[treeData.PointerType, localContext, paintRecords, cs]; base _ treeData.Base.procs.IsKeywordPresent[treeData.Base]; ordered _ treeData.Ordered.procs.IsKeywordPresent[treeData.Ordered]; [temp0, temp1] _ CreatePointerTGN[localContext1, ordered, base, bounds, readOnly, tgn]; END; END END; TypeExpvarProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpvarProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; [temp0, temp1] _ CreateVarTGN[localContext1, tgn]; END; END END; TypeExplistProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExplistProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; itemTgn: TypeGraphNodeNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.IsKeywordPresent[treeData.ReadOnly]; [localContext1, itemTgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; [temp0, temp1] _ CreateListTGN[localContext1, readOnly, itemTgn]; END; END END; TypeExparrayProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExparrayProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; itemTgn: TypeGraphNodeNode; localContext1: LocalContextNode; indexTgn: TypeGraphNodeNode; packed: BOOLEAN; packed _ treeData.Packed.procs.IsKeywordPresent[treeData.Packed]; [localContext1, indexTgn] _ treeData.OptType.procs.MakeType[treeData.OptType, localContext, paintRecords, cs]; [localContext2, itemTgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext1, paintRecords, cs]; [temp0, temp1] _ CreateArrayTGN[localContext2, packed, indexTgn, itemTgn]; END; END END; TypeExpdescriptorProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpdescriptorProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; readOnly: BOOLEAN; readOnly _ treeData.ReadOnly.procs.IsKeywordPresent[treeData.ReadOnly]; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; [temp0, temp1] _ CreateDescriptorTGN[localContext1, readOnly, tgn]; END; END END; TypeExptransferProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptransferProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; fflInput: FrozenFieldListNode; fflOutput: FrozenFieldListNode; transferMode: ROPE; safe: BOOLEAN; safe _ treeData.Safe.procs.IsKeywordPresent[treeData.Safe]; transferMode _ treeData.TransferMode.procs.MakeTransferMode[treeData.TransferMode]; [localContext1, fflInput, fflOutput] _ treeData.Arguments.procs.MakeArgumentLists[treeData.Arguments, localContext, paintRecords, cs]; [temp0, temp1] _ CreateTransferTGN[localContext1, safe, transferMode, fflInput, fflOutput]; END; END END; TypeExprelativeProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExprelativeProdData _ NARROW[tree.data]; BEGIN localContext2: LocalContextNode; tgn: TypeGraphNodeNode; localContext1: LocalContextNode; baseTgn: TypeGraphNodeNode; [localContext1, baseTgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [localContext2, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext1, paintRecords, cs]; [temp0, temp1] _ CreateRelativeTGN[localContext2, baseTgn, tgn]; END; END END; TypeExpzoneProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpzoneProdData _ NARROW[tree.data]; [temp0, temp1] _ CreateZoneTGN[localContext, treeData.Uncounted.procs.IsKeywordPresent[treeData.Uncounted]]; END END; TypeExplongProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExplongProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; [temp0, temp1] _ CreateLongTGN[localContext1, tgn]; END; END END; TypeExpframeProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExpframeProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; localContext1 _ FakeDamageContext[localContext]; temp1 _ FindFrameTGN[localContext1, treeData.Id]; temp0 _ localContext1; END; END END; TypeExppaintedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExppaintedProdData _ NARROW[tree.data]; BEGIN n: TypeGraphNodeNode; c: LocalContextNode; x: BOOLEAN; x _ Error[" Unimplemented Construct"]; c _ FakeDamageContext[localContext]; n _ GetBottom[cs]; temp1 _ n; temp0 _ c; END; END END; TypeExptypeapplyProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeExpNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeExptypeapplyProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.TypeApply.procs.MakeType[treeData.TypeApply, localContext, paintRecords, cs]; END END; TypeApplyoneProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeApplyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeApplyoneProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [temp0, temp1] _ CreateSpecianatedTGNUsingExp[localContext1, tgn, MakeUnparsedValue[treeData.Exp]]; END; END END; TypeApplymorelengthsProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeApplyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeApplymorelengthsProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeApply.procs.MakeType[treeData.TypeApply, localContext, paintRecords, cs]; [temp0, temp1] _ CreateSpecianatedTGNUsingExp[localContext1, tgn, MakeUnparsedValue[treeData.Exp]]; END; END END; TypeApplymoreidsProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeApplyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeApplymoreidsProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeApply.procs.MakeType[treeData.TypeApply, localContext, paintRecords, cs]; [temp0, temp1] _ CreateSpecianatedTGNUsingId[localContext1, tgn, treeData.Id]; END; END END; TypeIdidProdLookupTypeId: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdidProdData _ NARROW[tree.data]; [temp0, temp1] _ CreateIdentifierTGN[localContext, treeData.Id]; END END; TypeIdidProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdidProdData _ NARROW[tree.data]; [temp0, temp1] _ CreateIdentifierTGN[localContext, treeData.Id]; END END; TypeIdqualifierProdLookupTypeId: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdqualifierProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [temp0, temp1] _ CreateSpecianatedTGNUsingId[localContext1, tgn, treeData.Id]; END; END END; TypeIdqualifierProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: TypeIdNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: TypeIdqualifierProdData _ NARROW[tree.data]; [temp0, temp1] _ tree.procs.LookupTypeId[tree, localContext]; END END; OptTypeabsentProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: OptTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; tgn _ GetBottom[cs]; localContext1 _ FakeDamageContext[localContext]; temp1 _ tgn; temp0 _ localContext1; END; END END; OptTypepresentProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: OptTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptTypepresentProdData _ NARROW[tree.data]; [temp0, temp1] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; END END; SubrangenamedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: SubrangeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: SubrangenamedProdData _ NARROW[tree.data]; BEGIN localContext1: LocalContextNode; tgn: TypeGraphNodeNode; bounds: BoundsValNode; bounds _ treeData.Interval.procs.GetBoundsVal[treeData.Interval]; [localContext1, tgn] _ treeData.TypeId.procs.LookupTypeId[treeData.TypeId, localContext]; [temp0, temp1] _ CreateSubrangeTGN[localContext1, tgn, bounds]; END; END END; SubrangeunnamedProdMakeType: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: TypeGraphNodeNode] = BEGIN tree: SubrangeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: SubrangeunnamedProdData _ NARROW[tree.data]; BEGIN tgn: TypeGraphNodeNode; bounds: BoundsValNode; bounds _ treeData.Interval.procs.GetBoundsVal[treeData.Interval]; tgn _ GetBottom[cs]; [temp0, temp1] _ CreateSubrangeTGN[localContext, tgn, bounds]; END; END END; IntervalccProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalccProdData _ NARROW[tree.data]; temp1: ValueNode; temp2: ValueNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["[", temp1, temp2, "]"]; END END; IntervalcoProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalcoProdData _ NARROW[tree.data]; temp1: ValueNode; temp2: ValueNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["[", temp1, temp2, ")"]; END END; IntervalocProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalocProdData _ NARROW[tree.data]; temp1: ValueNode; temp2: ValueNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["(", temp1, temp2, "]"]; END END; IntervalooProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: IntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: IntervalooProdData _ NARROW[tree.data]; temp1: ValueNode; temp2: ValueNode; [temp1, temp2] _ treeData.Bounds.procs.GetLowerAndUpper[treeData.Bounds]; temp0 _ BoundsValFun["(", temp1, temp2, ")"]; END END; BoundsProdGetLowerAndUpper: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ValueNode, temp1: ValueNode] = BEGIN tree: BoundsNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: BoundsProdData _ NARROW[tree.data]; temp1 _ MakeUnparsedValue[treeData.Expupper]; temp0 _ MakeUnparsedValue[treeData.Explower]; END END; PointerTypeunspecifiedProdGetPointerTypeInfo: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: BoundsValNode, temp2: BOOLEAN, temp3: TypeGraphNodeNode] = BEGIN tree: PointerTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PointerTypeunspecifiedProdData _ NARROW[tree.data]; BEGIN bounds: BoundsValNode; readOnly: BOOLEAN; tgn: TypeGraphNodeNode; localContext1: LocalContextNode; localContext1 _ FakeDamageContext[localContext]; tgn _ GetBottom[cs]; readOnly _ False[]; bounds _ treeData.OptInterval.procs.GetBoundsVal[treeData.OptInterval]; temp3 _ tgn; temp2 _ readOnly; temp1 _ bounds; temp0 _ localContext1; END; END END; PointerTypespecifiedProdGetPointerTypeInfo: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: BoundsValNode, temp2: BOOLEAN, temp3: TypeGraphNodeNode] = BEGIN tree: PointerTypeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: PointerTypespecifiedProdData _ NARROW[tree.data]; BEGIN bounds: BoundsValNode; readOnly: BOOLEAN; localContext1: LocalContextNode; tgn: TypeGraphNodeNode; [localContext1, tgn] _ treeData.TypeExp.procs.MakeType[treeData.TypeExp, localContext, paintRecords, cs]; readOnly _ treeData.ReadOnly.procs.IsKeywordPresent[treeData.ReadOnly]; bounds _ treeData.OptInterval.procs.GetBoundsVal[treeData.OptInterval]; temp3 _ tgn; temp2 _ readOnly; temp1 _ bounds; temp0 _ localContext1; END; END END; OptIntervalabsentProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: OptIntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ NullBounds[]; END END; OptIntervalpresentProdGetBoundsVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BoundsValNode] = BEGIN tree: OptIntervalNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: OptIntervalpresentProdData _ NARROW[tree.data]; temp0 _ treeData.Interval.procs.GetBoundsVal[treeData.Interval]; END END; TransferModeprocProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "proc"; END END; TransferModeportProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "port"; END END; TransferModesignalProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "signal"; END END; TransferModeerrorProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "error"; END END; TransferModeprocessProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "process"; END END; TransferModeprogramProdMakeTransferMode: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: ROPE] = BEGIN tree: TransferModeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ "program"; END END; ArgumentsProdMakeArgumentLists: PUBLIC PROC[ref: REF ANY, localContext: LocalContextNode, paintRecords: BOOLEAN, cs: CompilerStateNode] RETURNS[temp0: LocalContextNode, temp1: FrozenFieldListNode, temp2: FrozenFieldListNode] = BEGIN tree: ArgumentsNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: ArgumentsProdData _ NARROW[tree.data]; BEGIN frozenOutputList: FrozenFieldListNode; localContext2: LocalContextNode; outputFieldList: FieldListNode; frozenInputlist: FrozenFieldListNode; localContext1: LocalContextNode; inputFieldList: FieldListNode; [localContext1, inputFieldList] _ treeData.ParameterListoutput.procs.MakeFieldList[treeData.ParameterListoutput, localContext, paintRecords, cs]; frozenInputlist _ FreezeFieldList[inputFieldList]; [localContext2, outputFieldList] _ treeData.ParameterListoutput.procs.MakeFieldList[treeData.ParameterListoutput, localContext1, paintRecords, cs]; frozenOutputList _ FreezeFieldList[outputFieldList]; temp2 _ frozenOutputList; temp1 _ frozenInputlist; temp0 _ localContext2; END; END END; DefaultemptyProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ DefaultExpVal["", MakeDummy["Default.empty"]]; END END; DefaultgetsProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ DefaultExpVal["_", MakeDummy["Default.gets"]]; END END; DefaultgetsexpProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DefaultgetsexpProdData _ NARROW[tree.data]; BEGIN instance: ValueNode; instance _ MakeDummy["Default.getsexp"]; temp0 _ DefaultExpVal["_e", instance]; END; END END; DefaultgetstrashProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ DefaultExpVal["_TRASH", MakeDummy["Default.getstrash"]]; END END; DefaultgetsexportrashProdGetDefaultExpVal: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: DefaultExpNode] = BEGIN tree: DefaultNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; treeData: DefaultgetsexportrashProdData _ NARROW[tree.data]; BEGIN instance: ValueNode; instance _ MakeDummy["Default.getsexportrash"]; temp0 _ DefaultExpVal["_e|TRASH", instance]; END; END END; PackedyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: PackedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; PackednoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: PackedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; MonitoredyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MonitoredNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; MonitorednoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MonitoredNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; MachineDependentyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MachineDependentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; MachineDependentnoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: MachineDependentNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; OrderedyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: OrderedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; OrderednoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: OrderedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; BaseyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: BaseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; BasenoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: BaseNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; CedaryesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: CedarNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; CedarnoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: CedarNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; SafeyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: SafeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; SafenoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: SafeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; SafeemptyProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: SafeNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; UncountedyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: UncountedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; UncountednoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: UncountedNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; ReadOnlyyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ReadOnlyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; ReadOnlynoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: ReadOnlyNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; InlineyesProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: InlineNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ True[]; END END; InlinenoProdIsKeywordPresent: PUBLIC PROC[ref: REF ANY] RETURNS[temp0: BOOLEAN] = BEGIN tree: InlineNode_ NARROW[ref]; BEGIN ENABLE ThreeC4Support.GetSourceInfo => RESUME[tree.position, tree.length]; temp0 _ False[]; END END; END..