| /* Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. */ |
| |
| /* Test Interface productions |
| |
| Run with --test to generate an AST and verify that all comments accurately |
| reflect the state of the Nodes. |
| |
| BUILD Type(Name) |
| This comment signals that a node of type <Type> is created with the |
| name <Name>. |
| |
| ERROR Error String |
| This comment signals that a error of <Error String> is generated. The error |
| is not assigned to a node, but are expected in order. |
| |
| PROP Key=Value |
| This comment signals that a property has been set on the Node such that |
| <Key> = <Value>. |
| |
| TREE |
| Type(Name) |
| Type(Name) |
| Type(Name) |
| Type(Name) |
| ... |
| This comment signals that a tree of nodes matching the BUILD comment |
| symatics should exist. This is an exact match. |
| */ |
| |
| |
| /* TREE |
| *Interface(MyIFace) |
| */ |
| interface MyIFace { }; |
| |
| /* TREE |
| *Interface(MyIFaceInherit) |
| * Inherit(Foo) |
| */ |
| interface MyIFaceInherit : Foo {}; |
| |
| /* TREE |
| *Interface(MyIFacePartial) |
| */ |
| partial interface MyIFacePartial { }; |
| |
| /* ERROR Unexpected ":" after identifier "MyIFaceInherit". */ |
| partial interface MyIFaceInherit : Foo {}; |
| |
| /* TREE |
| *Interface(MyIFaceMissingArgument) |
| * Operation(foo) |
| * Arguments() |
| * Argument(arg) |
| * Type() |
| * StringType(DOMString) |
| * Error(Missing argument.) |
| * Type() |
| * PrimitiveType(void) |
| */ |
| interface MyIFaceMissingArgument { |
| void foo(DOMString arg, ); |
| }; |
| |
| /* TREE |
| *Error(Unexpected keyword "double" after keyword "readonly".) |
| */ |
| interface MyIFaceMissingAttribute { |
| readonly double foo; |
| }; |
| |
| /* TREE |
| *Interface(MyIFaceContainsUnresolvedConflictDiff) |
| * Operation(foo) |
| * Arguments() |
| * Type() |
| * StringType(DOMString) |
| * Error(Unexpected "<" after ";".) |
| */ |
| interface MyIFaceContainsUnresolvedConflictDiff { |
| DOMString foo(); |
| <<<<<< ours |
| DOMString bar(); |
| iterable<long>; |
| ====== |
| >>>>>> theirs |
| }; |
| |
| /* TREE |
| *Interface(MyIFaceWrongRecordKeyType) |
| * Operation(foo) |
| * Arguments() |
| * Argument(arg) |
| * Type() |
| * Error(Unexpected identifier "int" after "<".) |
| * Type() |
| * PrimitiveType(void) |
| */ |
| interface MyIFaceWrongRecordKeyType { |
| void foo(record<int, ByteString> arg); |
| }; |
| |
| /* TREE |
| *Interface(MyIFaceBig) |
| * Const(setString) |
| * StringType(DOMString) |
| * Value(NULL) |
| */ |
| interface MyIFaceBig { |
| const DOMString? setString = null; |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceEmptySequenceDefalutValue) |
| * Operation(foo) |
| * Arguments() |
| * Argument(arg) |
| * Type() |
| * Sequence() |
| * Type() |
| * StringType(DOMString) |
| * Default() |
| * Type() |
| * PrimitiveType(void) |
| */ |
| interface MyIfaceEmptySequenceDefalutValue { |
| void foo(optional sequence<DOMString> arg = []); |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceWithRecords) |
| * Operation(foo) |
| * Arguments() |
| * Argument(arg) |
| * Type() |
| * Record() |
| * StringType(DOMString) |
| * Type() |
| * PrimitiveType(long) |
| * Type() |
| * PrimitiveType(void) |
| * Operation(bar) |
| * Arguments() |
| * Argument(arg1) |
| * Type() |
| * Typeref(int) |
| * Argument(arg2) |
| * Type() |
| * Record() |
| * StringType(ByteString) |
| * Type() |
| * PrimitiveType(float) |
| * Type() |
| * PrimitiveType(double) |
| */ |
| interface MyIfaceWithRecords { |
| void foo(record<DOMString, long> arg); |
| double bar(int arg1, record<ByteString, float> arg2); |
| }; |
| |
| /* TREE |
| *Interface(MyIFaceBig2) |
| * Const(nullValue) |
| * StringType(DOMString) |
| * Value(NULL) |
| * Const(longValue) |
| * PrimitiveType(long) |
| * Value(123) |
| * Const(longValue2) |
| * PrimitiveType(long long) |
| * Value(123) |
| * Attribute(myString) |
| * Type() |
| * StringType(DOMString) |
| * Attribute(readOnlyString) |
| * Type() |
| * StringType(DOMString) |
| * Attribute(staticString) |
| * Type() |
| * StringType(DOMString) |
| * Operation(myFunction) |
| * Arguments() |
| * Argument(myLong) |
| * Type() |
| * PrimitiveType(long long) |
| * Type() |
| * PrimitiveType(void) |
| * Operation(staticFunction) |
| * Arguments() |
| * Argument(myLong) |
| * Type() |
| * PrimitiveType(long long) |
| * Type() |
| * PrimitiveType(void) |
| */ |
| interface MyIFaceBig2 { |
| const DOMString? nullValue = null; |
| const long longValue = 123; |
| const long long longValue2 = 123; |
| attribute DOMString myString; |
| readonly attribute DOMString readOnlyString; |
| static attribute DOMString staticString; |
| void myFunction(long long myLong); |
| static void staticFunction(long long myLong); |
| }; |
| |
| |
| /* TREE |
| *Interface(MyIFaceSpecials) |
| * Operation(set) |
| * Arguments() |
| * Argument(property) |
| * Type() |
| * StringType(DOMString) |
| * Type() |
| * PrimitiveType(void) |
| * Operation(_unnamed_) |
| * Arguments() |
| * Argument(property) |
| * Type() |
| * StringType(DOMString) |
| * Type() |
| * PrimitiveType(double) |
| * Operation(GetFiveSix) |
| * Arguments() |
| * Argument(arg) |
| * Type() |
| * Typeref(SomeType) |
| * Type() |
| * PrimitiveType(long long) |
| * Array(5) |
| * Array(6) |
| */ |
| interface MyIFaceSpecials { |
| setter creator void set(DOMString property); |
| getter double (DOMString property); |
| long long [5][6] GetFiveSix(SomeType arg); |
| }; |
| |
| /* TREE |
| *Interface(MyIFaceStringifiers) |
| * Stringifier() |
| * Stringifier() |
| * Operation(_unnamed_) |
| * Arguments() |
| * Type() |
| * StringType(DOMString) |
| * Stringifier() |
| * Operation(namedStringifier) |
| * Arguments() |
| * Type() |
| * StringType(DOMString) |
| * Stringifier() |
| * Attribute(stringValue) |
| * Type() |
| * StringType(DOMString) |
| */ |
| interface MyIFaceStringifiers { |
| stringifier; |
| stringifier DOMString (); |
| stringifier DOMString namedStringifier(); |
| stringifier attribute DOMString stringValue; |
| }; |
| |
| /* TREE |
| *Interface(MyExtendedAttributeInterface) |
| * Operation(method) |
| * Arguments() |
| * Type() |
| * PrimitiveType(void) |
| * ExtAttributes() |
| * ExtAttribute(Attr) |
| * ExtAttribute(MethodIdentList) |
| * ExtAttributes() |
| * ExtAttribute(MyExtendedAttribute) |
| * ExtAttribute(MyExtendedIdentListAttribute) |
| */ |
| [MyExtendedAttribute, |
| MyExtendedIdentListAttribute=(Foo, Bar, Baz)] |
| interface MyExtendedAttributeInterface { |
| [Attr, MethodIdentList=(Foo, Bar)] void method(); |
| }; |
| |
| /* TREE |
| *Interface(MyIfacePromise) |
| * Operation(method1) |
| * Arguments() |
| * Type() |
| * Promise(Promise) |
| * Type() |
| * PrimitiveType(void) |
| * Operation(method2) |
| * Arguments() |
| * Type() |
| * Promise(Promise) |
| * Type() |
| * PrimitiveType(long) |
| * Operation(method3) |
| * Arguments() |
| * Type() |
| * Promise(Promise) |
| * Type() |
| * Any() |
| * Operation(method4) |
| * Arguments() |
| * Type() |
| * Promise(Promise) |
| * Type() |
| * Any() |
| */ |
| interface MyIfacePromise { |
| Promise<void> method1(); |
| Promise<long> method2(); |
| Promise<any> method3(); |
| Promise method4(); |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceIterable) |
| * Iterable() |
| * Type() |
| * PrimitiveType(long) |
| * Iterable() |
| * Type() |
| * PrimitiveType(double) |
| * Type() |
| * StringType(DOMString) |
| * LegacyIterable() |
| * Type() |
| * PrimitiveType(boolean) |
| */ |
| interface MyIfaceIterable { |
| iterable<long>; |
| iterable<double, DOMString>; |
| legacyiterable<boolean>; |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceMaplike) |
| * Maplike() |
| * Type() |
| * PrimitiveType(long) |
| * Type() |
| * StringType(DOMString) |
| * Maplike() |
| * Type() |
| * PrimitiveType(double) |
| * Type() |
| * PrimitiveType(boolean) |
| */ |
| interface MyIfaceMaplike { |
| readonly maplike<long, DOMString>; |
| maplike<double, boolean>; |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceSetlike) |
| * Setlike() |
| * Type() |
| * PrimitiveType(long) |
| * Setlike() |
| * Type() |
| * PrimitiveType(double) |
| */ |
| interface MyIfaceSetlike { |
| readonly setlike<long>; |
| setlike<double>; |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceSerializer) |
| * Serializer() |
| * Serializer() |
| * Operation(toJSON) |
| * Arguments() |
| * Type() |
| * Any() |
| * Serializer() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * Map() |
| * Serializer() |
| * List() |
| * Serializer() |
| * List() |
| * Serializer() |
| * List() |
| */ |
| interface MyIfaceSerializer { |
| serializer; |
| serializer any toJSON(); |
| serializer = name; |
| serializer = {}; |
| serializer = { getter }; |
| serializer = { attribute }; |
| serializer = { inherit, attribute }; |
| serializer = { inherit }; |
| serializer = { inherit, name1, name2 }; |
| serializer = { name1, name2 }; |
| serializer = []; |
| serializer = [getter]; |
| serializer = [name1, name2]; |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceFrozenArray) |
| * Attribute(foo) |
| * Type() |
| * FrozenArray() |
| * Type() |
| * StringType(DOMString) |
| */ |
| interface MyIfaceFrozenArray { |
| readonly attribute FrozenArray<DOMString> foo; |
| }; |
| |
| /* TREE |
| *Interface(MyIfaceUnion) |
| * Attribute(foo) |
| * Type() |
| * UnionType() |
| * Type() |
| * StringType(DOMString) |
| * Type() |
| * PrimitiveType(long) |
| */ |
| interface MyIfaceUnion { |
| attribute (DOMString or long) foo; |
| }; |