Bug 1338915 - Print a more specific message for invalid compression. r=kanru draft
authorAndrew McCreight <continuation@gmail.com>
Tue, 14 Feb 2017 08:54:27 -0800
changeset 483658 3e1cfaee75636fb7c230c5f221c9931cc4c50491
parent 483657 6ab5cad6a335456c4d423400d8a2ad39575f8c07
child 483664 87fb62d6c2d2047cb492d9f6d50eff993f251263
push id45362
push userbmo:continuation@gmail.com
push dateTue, 14 Feb 2017 17:15:30 +0000
reviewerskanru
bugs1338915
milestone54.0a1
Bug 1338915 - Print a more specific message for invalid compression. r=kanru MozReview-Commit-ID: IeSOZNBDkSR
ipc/ipdl/ipdl/type.py
--- 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)