Name Description Size
header.ipdlh 198
MutRecHeader1.ipdlh MutRecHeader1 (H1) includes MutRecHeader2 (H2), and uses a struct from H2. H2 includes MutRecHeader3 (H3). H3 includes H1. When type checking H1, GatherDecls::visitInclude will recursively cause us to first check H2, which in turn will cause us to first check H3. H3 only includes H1, so when we check it, we do not have any declarations from H2 in the context. There used to be code in GatherDecls::visitTranslationUnit that would, as part of the "second pass", check the validity of all included structures. This would check Struct1, and fail, because Struct2 is not declared. Fundamentally, it doesn't make sense to check anything declared in an included file in the context of the file that included it. Note that this error did not show up when either H2 or H3 was checked. This is because in those cases we are not in the middle of checking H1 when we check H3, so we end up fully checking H1 before we get to the end of checking H3. This means the "visited" tag gets put on Struct1 before we get to the end of that troublesome block of code in visitTranslationUnit, and visitStructDecl doesn't do anything if that tag is set, so we don't end up actually checking H1 in the context of H3. 1270
MutRecHeader2.ipdlh 99
MutRecHeader3.ipdlh 99
MyTypes.ipdlh 109
Pactorparam.ipdl 77
Pactorreturn.ipdl 113
Parray_Basic.ipdl 78
Parray_OfActors.ipdl 196
Parray_OfActorsSub.ipdl 125
Parray_Union.ipdl 159
PAsyncReturn.ipdl 205
PbasicUsing.ipdl 1646
Pbuiltins.ipdl 432
Pbytebuf.ipdl 194
PDelete.ipdl 129
PDeleteSub.ipdl 118
Pempty.ipdl 57
PemptyStruct.ipdl 90
PEndpointDecl.ipdl 390
PEndpointUse.ipdl 286
PExtendedAttrMultipleAttributes.ipdl 132
PheaderProto.ipdl 146
Pjetpack.ipdl 76
PLazySend.ipdl 130
PManagedEndpointDecl.ipdl 546
PManagedEndpointManager.ipdl 312
PmanagedProtocol.ipdl 129
PmanagerProtocol.ipdl 204
PmanageSelf.ipdl 197
PmanageSelf_Toplevel.ipdl 164
PManualDealloc.ipdl 161
PManualDealloc_manager.ipdl 212
Pmaybe_Basic.ipdl 77
Pmaybe_OfActors.ipdl 195
Pmaybe_OfActorsSub.ipdl 125
Pmaybe_Union.ipdl 179
Pmedia.ipdl 74
PmessageCompress.ipdl 119
PMessageTainted.ipdl 85
PMessageTaintedWithPassback.ipdl 122
PmultiManaged.ipdl 173
PmultiManager1.ipdl 140
PmultiManager2.ipdl 140
PmultipleUsingCxxTypes.ipdl 206
PmutualRecStructUnion.ipdl 224
PmutualRecUnion.ipdl 209
PMyManaged.ipdl 210
PMyManager.ipdl 886
Pnamespace_Basic.ipdl 155
PNested.ipdl 240
PnoRedeclCrossMessage.ipdl 169
PNullable.ipdl 505
Prio.ipdl 429
PselfRecUnion.ipdl 138
Pshmem.ipdl 184
PSideImpl.ipdl 130
PStruct.ipdl 150
PStructComparable.ipdl 173
PsyncProtocol.ipdl 164
PSyncSyncManagee.ipdl 133
PSyncSyncManager.ipdl The main reason for this test is that it would have caught a bug in the Rust IPDL parser that was treating "sync" like "async" in the nested case. 332
PthreeDirections.ipdl 213
Punion_Basic.ipdl 138
Punion_Comparable.ipdl 156
Punion_Namespaced.ipdl 209
PUniquePtrBasic.ipdl 90
PUniquePtrOfActors.ipdl 220
PUniquePtrOfActorsSub.ipdl 134
PUniquePtrRecUnion.ipdl 222
PUniquePtrUnion.ipdl 208
PVirtualSendImpl.ipdl 101