def WebIDLTest(parser, harness): threw = False try: parser.parse( """ interface VariadicConstraints1 { undefined foo(byte... arg1, byte arg2); }; """ ) parser.finish() except Exception: threw = True harness.ok( threw, "Should have thrown on variadic argument followed by required " "argument.", ) parser = parser.reset() threw = False try: parser.parse( """ interface VariadicConstraints2 { undefined foo(byte... arg1, optional byte arg2); }; """ ) parser.finish() except Exception: threw = True harness.ok( threw, "Should have thrown on variadic argument followed by optional " "argument.", ) parser = parser.reset() threw = False try: parser.parse( """ interface VariadicConstraints3 { undefined foo(optional byte... arg1); }; """ ) parser.finish() except Exception: threw = True harness.ok( threw, "Should have thrown on variadic argument explicitly flagged as " "optional.", ) parser = parser.reset() threw = False try: parser.parse( """ interface VariadicConstraints4 { undefined foo(byte... arg1 = 0); }; """ ) parser.finish() except Exception: threw = True harness.ok(threw, "Should have thrown on variadic argument with default value.")