mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-08 10:44:56 +00:00
Bug 1600719. Add some sanity-checking for redundant can_run_script annotations on XPIDL attributes. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D55529 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
265915f2fb
commit
d9695ff145
@ -71,10 +71,10 @@ def attributeReturnType(a, getter, macro):
|
||||
ret = "MOZ_MUST_USE " + ret
|
||||
# Ideally, we'd set MOZ_CAN_RUN_SCRIPT in the "scriptable and not
|
||||
# builtinclass" case too, so we'd just have memberCanRunScript() check
|
||||
# can_explicitly_run_script and call it here. But that would likely require
|
||||
# a fair amount of Gecko-side annotation work. See bug 1534292.
|
||||
if (a.explicit_can_run_script or
|
||||
(a.explicit_getter_can_run_script and getter) or
|
||||
# explicit_setter_can_run_script/explicit_setter_can_run_script and call it
|
||||
# here. But that would likely require a fair amount of Gecko-side
|
||||
# annotation work. See bug 1534292.
|
||||
if ((a.explicit_getter_can_run_script and getter) or
|
||||
(a.explicit_setter_can_run_script and not getter)):
|
||||
ret = "MOZ_CAN_RUN_SCRIPT " + ret
|
||||
return ret
|
||||
@ -125,7 +125,7 @@ def methodReturnType(m, macro):
|
||||
ret = "MOZ_MUST_USE " + ret
|
||||
# Ideally, we'd set MOZ_CAN_RUN_SCRIPT in the "scriptable and not
|
||||
# builtinclass" case too, so we'd just have memberCanRunScript() check
|
||||
# can_explicitly_run_script and call it here. But that would likely require
|
||||
# explicit_can_run_script and call it here. But that would likely require
|
||||
# a fair amount of Gecko-side annotation work. See bug 1534292.
|
||||
if m.explicit_can_run_script:
|
||||
ret = "MOZ_CAN_RUN_SCRIPT " + ret
|
||||
|
@ -980,9 +980,6 @@ class Attribute(object):
|
||||
must_use = False
|
||||
binaryname = None
|
||||
infallible = False
|
||||
# explicit_can_run_script is true if the attribute is explicitly annotated
|
||||
# as being able to cause script to run.
|
||||
explicit_can_run_script = False
|
||||
# explicit_setter_can_run_script is true if the attribute is explicitly
|
||||
# annotated as having a setter that can cause script to run.
|
||||
explicit_setter_can_run_script = False
|
||||
@ -1025,10 +1022,22 @@ class Attribute(object):
|
||||
elif name == 'infallible':
|
||||
self.infallible = True
|
||||
elif name == 'can_run_script':
|
||||
self.explicit_can_run_script = True
|
||||
if (self.explicit_setter_can_run_script or
|
||||
self.explicit_getter_can_run_script):
|
||||
raise IDLError("Redundant getter_can_run_script or "
|
||||
"setter_can_run_script annotation on "
|
||||
"attribute", aloc)
|
||||
self.explicit_setter_can_run_script = True
|
||||
self.explicit_getter_can_run_script = True
|
||||
elif name == 'setter_can_run_script':
|
||||
if self.explicit_setter_can_run_script:
|
||||
raise IDLError("Redundant setter_can_run_script annotation "
|
||||
"on attribute", aloc)
|
||||
self.explicit_setter_can_run_script = True
|
||||
elif name == 'getter_can_run_script':
|
||||
if self.explicit_getter_can_run_script:
|
||||
raise IDLError("Redundant getter_can_run_script annotation "
|
||||
"on attribute", aloc)
|
||||
self.explicit_getter_can_run_script = True
|
||||
else:
|
||||
raise IDLError("Unexpected attribute '%s'" % name, aloc)
|
||||
|
Loading…
Reference in New Issue
Block a user