Bug 1338915 - Print a more specific message for invalid compression. r=kanru
MozReview-Commit-ID: IeSOZNBDkSR
--- a/ipc/ipdl/ipdl/type.py
+++ b/ipc/ipdl/ipdl/type.py
@@ -1122,18 +1122,24 @@ class CheckTypes(TcheckVisitor):
if mtype.isAsync() and len(mtype.returns):
# XXX/cjones could modify grammar to disallow this ...
self.error(loc,
"asynchronous message `%s' declares return values",
mname)
if (mtype.compress and
(not mtype.isAsync() or mtype.isCtor() or mtype.isDtor())):
- self.error(
- loc,
- "message `%s' in protocol `%s' requests compression but is not async or is special (ctor or dtor)",
- mname[:-len('constructor')], pname)
+
+ if mtype.isCtor() or mtype.isDtor():
+ message_type = "constructor" if mtype.isCtor() else "destructor"
+ error_message = ("%s messages can't use compression (here, in protocol `%s'" %
+ (message_type, pname))
+ else:
+ error_message = ("message `%s' in protocol `%s' requests compression but is not async" %
+ (mname, pname))
+
+ self.error(loc, error_message)
if mtype.isCtor() and not ptype.isManagerOf(mtype.constructedType()):
self.error(
loc,
"ctor for protocol `%s', which is not managed by protocol `%s'",
mname[:-len('constructor')], pname)