Fix mutual recursion checking for UniquePtr<> in IPDL
Categories
(Core :: IPC, task, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox68 | --- | fixed |
People
(Reporter: mccr8, Assigned: mccr8)
References
(Regression)
Details
(Keywords: regression)
Attachments
(1 file)
Bug 1500219 added UniquePtr<> support to IPDL, but it doesn't quite work in some cases.
One issue is that UniquePtr can't be used as the field of a struct. If you try to compile this IPDL file, then the type checker throws an exception:
struct Y { int y; };
struct X { UniquePtr<Y> x; };
protocol PUndefSelfRecUniquePtr {
child: async __delete__(X x);
};
This should also be rejected in the case where the type of the x field of X had type UniquePtr<X> instead.
I think array, maybe, and uniqueptr types can be dealt with more uniformly by adding a hasBaseType() method, rather than having a bunch of places where we check a list of these kind of mini aggregated types. I have some patches in progress to address this issue.
Comment 1•5 years ago
|
||
Bugbug thinks this bug is a task, but please change it back in case of error.
Assignee | ||
Comment 2•5 years ago
|
||
This consolidates array, maybe and unique ptrs in IPDL into a single
"has base type" qualifier, for types that wrap another type. I'm not
sure this patch fixes everything, but I think it is at least more
correct.
It also adds checking for the stuff inside the UniquePtr<>, because
the intent seems to be to allow things like protocol types in there.
Updated•5 years ago
|
Pushed by amccreight@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/3fa69313f159 Make UniquePtr work more like the other types with a base type. r=nika
Comment 4•5 years ago
|
||
bugherder |
Updated•2 years ago
|
Updated•2 years ago
|
Description
•