#data [*obsolete*] interface A {}; #parsed { "obsolete":1, "definitions": [ { "definition_type": "interface", "name": "A", "members": [], "index": 13 } ] } #data [*spec=HOGE*] interface A {}; #parsed { "spec": "HOGE", "definitions": [ { "definition_type": "interface", "name": "A", "members": [], "index": 14 } ] } #data [*spec=HOGE*][*obsolete*]interface A {}; #parsed { "spec": "HOGE", "obsolete": 1, "definitions": [ { "definition_type": "interface", "name": "A", "members": [], "index": 25 } ] } #data interface [*id="foo-bar-baz"*]A {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "id": "foo-bar-baz", "members": [], "index": 0 } ] } #data interface [*id="foo-bar-baz"*]A: [*id="super"*]B {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "id": "foo-bar-baz", "super_name": "B", "members": [], "index": 0 } ] } #data interface [*id="foo-bar-baz"*]A: [*id="super"*]B {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "id": "foo-bar-baz", "super_name": "B", "members": [], "index": 0 } ] } #data dictionary [*id="foo-bar-baz"*]A: [*id="super"*]B {}; #parsed { "definitions": [ { "definition_type": "dictionary", "name": "A", "id": "foo-bar-baz", "super_name": "B", "members": [], "index": 0 } ] } #data interface B:[*id="foo-bar-baz"*]A {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "B", "super_name": "A", "members": [], "index": 0 } ] } #data [[*id="foo-bar-baz"*]Constructor] interface A {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "members": [], "index": 0, "extended_attributes": [{ "name": "Constructor", "id": "foo-bar-baz", "index": 1 }] } ] } #data [NamedConstructor=[*id="foo-bar-baz"*]Hoge] interface A {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "members": [], "index": 0, "extended_attributes": [{ "name": "NamedConstructor", "value_names": ["Hoge"], "id": "foo-bar-baz", "index": 1 }] } ] } #data [NamedConstructor=[*id="foo-bar-baz"*]Hoge()] interface A {}; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "members": [], "index": 0, "extended_attributes": [{ "name": "NamedConstructor", "value_names": ["Hoge"], "arguments": [], "id": "foo-bar-baz", "index": 1 }] } ] } #data enum A { [*id="aa-bb"*]"", [*id=""*]"Ab" }; #parsed { "definitions": [{ "index": 0, "name": "A", "definition_type": "enum", "value_items": [ { "value_string": "", "id": "aa-bb" }, { "value_string": "Ab", "id": "" } ] }] } #data interface A { [*id="ab"*] stringifier; }; #parsed { "definitions": [ { "definition_type": "interface", "name": "A", "members": [ { "index": 16, "id": "ab", "member_type": "operation", "stringifier": 1, "type": "DOMString", "arguments": [] } ], "index": 0 } ] } #data interface A { [*id="ab"*] serializer; }; #errors 38;webidl:parse error;?, ;;m #data interface A { [*id="ab"*] serializer = [ab]; }; #errors 39;webidl:parse error;?, ;;m #data interface A { [*id="ab"*] legacycaller any (); }; #errors 41;webidl:parse error;?, ;;m #data typedef (Foo or [*id="Bar"*]Bar) Baz; #parsed { "definitions": [{ "index": 0, "definition_type": "typedef", "name": "Baz", "type_union": [ {"type_name": "Foo"}, {"type_name": "Bar"} ] }] } #data typedef [*id="Bar"*]Bar [*id="Baz"*]Baz; #parsed { "definitions": [{ "index": 0, "definition_type": "typedef", "name": "Baz", "id": "Baz", "type_name": "Bar" }] } #data interface A { [*id="a"*]setter [*id="b"*]creator DOMString (); }; #errors 51;webidl:parse error;?, ;;m #data interface A { [*id="a"*]setter [*id="b"*]creator DOMString [*id="ff"*]abc (); }; #errors 51;webidl:parse error;?, ;;m #data interface A { void foo (optional DOMString hoge = [*id="aa"*]"abcx"); }; #parsed { "definitions": [{ "definition_type": "interface", "name": "A", "index": 0, "members": [{ "index": 16, "member_type": "operation", "name": "foo", "type": "void", "arguments": [{ "name": "hoge", "type": "DOMString", "value_string": "abcx", "optional": 1, "index": 26 }] }] }] }