michael@0: def WebIDLTest(parser, harness): michael@0: parser.parse(""" michael@0: [Global] michael@0: interface Foo : Bar { michael@0: getter any(DOMString name); michael@0: }; michael@0: interface Bar {}; michael@0: """) michael@0: michael@0: results = parser.finish() michael@0: michael@0: harness.ok(results[0].isOnGlobalProtoChain(), michael@0: "[Global] interface should be on global's proto chain") michael@0: harness.ok(results[1].isOnGlobalProtoChain(), michael@0: "[Global] interface should be on global's proto chain") michael@0: michael@0: parser = parser.reset() michael@0: threw = False michael@0: try: michael@0: parser.parse(""" michael@0: [Global] michael@0: interface Foo { michael@0: getter any(DOMString name); michael@0: setter void(DOMString name, any arg); michael@0: }; michael@0: """) michael@0: results = parser.finish() michael@0: except: michael@0: threw = True michael@0: michael@0: harness.ok(threw, michael@0: "Should have thrown for [Global] used on an interface with a " michael@0: "named setter") michael@0: michael@0: parser = parser.reset() michael@0: threw = False michael@0: try: michael@0: parser.parse(""" michael@0: [Global] michael@0: interface Foo { michael@0: getter any(DOMString name); michael@0: creator void(DOMString name, any arg); michael@0: }; michael@0: """) michael@0: results = parser.finish() michael@0: except: michael@0: threw = True michael@0: michael@0: harness.ok(threw, michael@0: "Should have thrown for [Global] used on an interface with a " michael@0: "named creator") michael@0: michael@0: parser = parser.reset() michael@0: threw = False michael@0: try: michael@0: parser.parse(""" michael@0: [Global] michael@0: interface Foo { michael@0: getter any(DOMString name); michael@0: deleter void(DOMString name); michael@0: }; michael@0: """) michael@0: results = parser.finish() michael@0: except: michael@0: threw = True michael@0: michael@0: harness.ok(threw, michael@0: "Should have thrown for [Global] used on an interface with a " michael@0: "named deleter") michael@0: michael@0: parser = parser.reset() michael@0: threw = False michael@0: try: michael@0: parser.parse(""" michael@0: [Global, OverrideBuiltins] michael@0: interface Foo { michael@0: }; michael@0: """) michael@0: results = parser.finish() michael@0: except: michael@0: threw = True michael@0: michael@0: harness.ok(threw, michael@0: "Should have thrown for [Global] used on an interface with a " michael@0: "[OverrideBuiltins]") michael@0: michael@0: parser = parser.reset() michael@0: threw = False michael@0: try: michael@0: parser.parse(""" michael@0: [Global] michael@0: interface Foo : Bar { michael@0: }; michael@0: [OverrideBuiltins] michael@0: interface Bar { michael@0: }; michael@0: """) michael@0: results = parser.finish() michael@0: except: michael@0: threw = True michael@0: michael@0: harness.ok(threw, michael@0: "Should have thrown for [Global] used on an interface with an " michael@0: "[OverrideBuiltins] ancestor") michael@0: michael@0: parser = parser.reset() michael@0: threw = False michael@0: try: michael@0: parser.parse(""" michael@0: [Global] michael@0: interface Foo { michael@0: }; michael@0: interface Bar : Foo { michael@0: }; michael@0: """) michael@0: results = parser.finish() michael@0: except: michael@0: threw = True michael@0: michael@0: harness.ok(threw, michael@0: "Should have thrown for [Global] used on an interface with a " michael@0: "descendant")