зеркало из https://github.com/mozilla/gecko-dev.git
56e6865c9c
Before this change, the collection of typedefs to include in IPDL protocols was being performed in the _DecorateWithCXXStuff pass of lower.py. This pass iterates over all included headers, including recursively, so will also visit headers included by headers you import. The recursive behaviour caused issues because importing and forward-declaring imported types is non-recursive, looking at exported types only one layer deep. This could lead to typedefs being generated in IPDL protocols referencing types which could never be named by the IPDL code, and which had no definition in c++, leading to build errors. This patch changes the logic to instead happen during the _GenerateProtocolActorCode pass of lower.py, which is also where required forward declarations and imports are handled, allowing us to keep the set of typedefs generated more tightly in sync with the actual set of types available to the actor. This required some changes in client code which was relying on incorrectly generated typedefs, however these types have now been fixed. Differential Revision: https://phabricator.services.mozilla.com/D141032 |
||
---|---|---|
.. | ||
GIOChannelChild.cpp | ||
GIOChannelChild.h | ||
GIOChannelParent.cpp | ||
GIOChannelParent.h | ||
PGIOChannel.ipdl | ||
components.conf | ||
moz.build | ||
nsGIOProtocolHandler.cpp | ||
nsGIOProtocolHandler.h |