| Index: tools/idl_parser/idl_parser.py
|
| diff --git a/tools/idl_parser/idl_parser.py b/tools/idl_parser/idl_parser.py
|
| index ff787a46346568708f03dd954ce6a6b326dacd0c..e022603da5230f5dfe29dfc404c3007a5e8a34c8 100755
|
| --- a/tools/idl_parser/idl_parser.py
|
| +++ b/tools/idl_parser/idl_parser.py
|
| @@ -870,16 +870,28 @@ class IDLParser(object):
|
| # [75]
|
| def p_UnionType(self, p):
|
| """UnionType : '(' UnionMemberType OR UnionMemberType UnionMemberTypes ')'"""
|
| + members = ListFromConcat(p[2], p[4], p[5])
|
| + p[0] = self.BuildProduction('UnionType', p, 1, members)
|
|
|
| # [76]
|
| def p_UnionMemberType(self, p):
|
| """UnionMemberType : NonAnyType
|
| | UnionType TypeSuffix
|
| | ANY '[' ']' TypeSuffix"""
|
| + if len(p) == 2:
|
| + p[0] = self.BuildProduction('Type', p, 1, p[1])
|
| + elif len(p) == 3:
|
| + p[0] = self.BuildProduction('Type', p, 1, ListFromConcat(p[1], p[2]))
|
| + else:
|
| + any_node = ListFromConcat(self.BuildProduction('Any', p, 1), p[4])
|
| + p[0] = self.BuildProduction('Type', p, 1, any_node)
|
| +
|
| # [77]
|
| def p_UnionMemberTypes(self, p):
|
| """UnionMemberTypes : OR UnionMemberType UnionMemberTypes
|
| |"""
|
| + if len(p) > 2:
|
| + p[0] = ListFromConcat(p[2], p[3])
|
|
|
| # [78] Moved BYTESTRING, DOMSTRING, OBJECT, DATE, REGEXP to PrimitiveType
|
| # Moving all built-in types into PrimitiveType makes it easier to
|
|
|