mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
* Update WebIDL.py * Update WebIDL.py * Add builtin-array.patch * Fix CodegenRust.py and Configuration.py * Fix missing downcasts * mach fmt * Update check and comment to explain why we need this check * Update Global of DissimilarOriginWindow.webidl
86 lines
2 KiB
Python
86 lines
2 KiB
Python
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
|
|
import WebIDL
|
|
|
|
|
|
def should_throw(parser, harness, message, code):
|
|
parser = parser.reset()
|
|
threw = False
|
|
try:
|
|
parser.parse(code)
|
|
parser.finish()
|
|
except WebIDL.WebIDLError:
|
|
threw = True
|
|
|
|
harness.ok(threw, "Should have thrown: %s" % message)
|
|
|
|
|
|
def WebIDLTest(parser, harness):
|
|
# The [Replaceable] extended attribute MUST take no arguments.
|
|
should_throw(
|
|
parser,
|
|
harness,
|
|
"no arguments",
|
|
"""
|
|
interface I {
|
|
[Replaceable=X] readonly attribute long A;
|
|
};
|
|
""",
|
|
)
|
|
|
|
# An attribute with the [Replaceable] extended attribute MUST NOT also be
|
|
# declared with the [PutForwards] extended attribute.
|
|
should_throw(
|
|
parser,
|
|
harness,
|
|
"PutForwards",
|
|
"""
|
|
interface I {
|
|
[PutForwards=B, Replaceable] readonly attribute J A;
|
|
};
|
|
interface J {
|
|
attribute long B;
|
|
};
|
|
""",
|
|
)
|
|
|
|
# The [Replaceable] extended attribute MUST NOT be used on an attribute
|
|
# that is not read only.
|
|
should_throw(
|
|
parser,
|
|
harness,
|
|
"writable attribute",
|
|
"""
|
|
interface I {
|
|
[Replaceable] attribute long A;
|
|
};
|
|
""",
|
|
)
|
|
|
|
# The [Replaceable] extended attribute MUST NOT be used on a static
|
|
# attribute.
|
|
should_throw(
|
|
parser,
|
|
harness,
|
|
"static attribute",
|
|
"""
|
|
interface I {
|
|
[Replaceable] static readonly attribute long A;
|
|
};
|
|
""",
|
|
)
|
|
|
|
# The [Replaceable] extended attribute MUST NOT be used on an attribute
|
|
# declared on a callback interface.
|
|
should_throw(
|
|
parser,
|
|
harness,
|
|
"callback interface",
|
|
"""
|
|
callback interface I {
|
|
[Replaceable] readonly attribute long A;
|
|
};
|
|
""",
|
|
)
|