Name Description Size Coverage
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_Maybe.ipdl 113 -
Parray_OfActors.ipdl 196 -
Parray_OfActorsSub.ipdl 125 -
Parray_Recursive.ipdl 116 -
Parray_Union.ipdl 159 -
Parray_UniquePtr.ipdl 176 -
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_Recursive.ipdl 107 -
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 667 -
Prio.ipdl 463 -
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 -
PUniquePtrRecursive.ipdl 181 -
PUniquePtrUnion.ipdl 208 -
PVirtualSendImpl.ipdl 101 -