Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 53 additions & 41 deletions widlparser/constructs.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,11 +55,7 @@ def _parse_extended_attributes(self, tokens: Tokenizer, parent: Construct) -> Op
@property
def idl_type(self) -> str:
"""Get construct type."""
raise NotImplementedError # subclasses must override

@property
def name(self) -> Optional[str]:
return None
raise NotImplementedError() # subclasses must override

@property
def constructors(self) -> List[Construct]:
Expand Down Expand Up @@ -227,7 +223,7 @@ def idl_type(self) -> str:
return 'const'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
"""Get name."""
return self._name.name

Expand Down Expand Up @@ -309,7 +305,7 @@ def idl_type(self) -> str:
return 'enum'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -368,7 +364,7 @@ def idl_type(self) -> str:
return 'typedef'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

def _str(self) -> str:
Expand Down Expand Up @@ -442,7 +438,7 @@ def idl_type(self) -> str:
return 'argument'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -531,8 +527,8 @@ def idl_type(self) -> str:
return self.member.idl_type

@property
def name(self) -> Optional[str]:
return self.member.name
def name(self) -> str:
return cast(str, self.member.name)

@property
def method_name(self) -> Optional[str]:
Expand Down Expand Up @@ -612,7 +608,8 @@ def idl_type(self) -> str:
return self.member.idl_type

@property
def name(self) -> Optional[str]:
def name(self) -> str:
assert (self.member.name is not None)
return self.member.name

@property
Expand Down Expand Up @@ -748,7 +745,7 @@ def idl_type(self) -> str:
return 'interface'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -923,7 +920,7 @@ def idl_type(self) -> str:
return 'interface'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -1077,8 +1074,8 @@ def idl_type(self) -> str:
return self.member.idl_type

@property
def name(self) -> Optional[str]:
return self.member.name
def name(self) -> str:
return cast(str, self.member.name)

@property
def method_name(self) -> Optional[str]:
Expand Down Expand Up @@ -1176,7 +1173,7 @@ def idl_type(self) -> str:
return 'namespace'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -1326,7 +1323,7 @@ def idl_type(self) -> str:
return 'dict-member'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

def _str(self) -> str:
Expand Down Expand Up @@ -1409,7 +1406,7 @@ def idl_type(self) -> str:
return 'dictionary'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -1576,7 +1573,7 @@ def idl_type(self) -> str:
return 'callback'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
Expand Down Expand Up @@ -1731,11 +1728,11 @@ def idl_type(self) -> str:
return 'implements'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
def implements(self) -> Optional[str]:
def implements(self) -> str:
return self._implements.name

def _str(self) -> str:
Expand Down Expand Up @@ -1784,11 +1781,11 @@ def idl_type(self) -> str:
return 'includes'

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self._name.name

@property
def includes(self) -> Optional[str]:
def includes(self) -> str:
return self._includes.name

def _str(self) -> str:
Expand Down Expand Up @@ -1826,8 +1823,12 @@ def idl_type(self) -> str:
return 'extended-attribute'

@property
def name(self) -> Optional[str]:
return None
def name(self) -> str:
return ''

@property
def normal_name(self) -> str:
return ''

def _str(self) -> str:
return ''.join([str(token) for token in self.tokens])
Expand Down Expand Up @@ -1868,11 +1869,11 @@ def attribute(self) -> str:
return _name(self._attribute)

@property
def name(self) -> Optional[str]:
return self.parent.name if ('constructor' == self.idl_type) else self.attribute
def name(self) -> str:
return str(self.parent.name) if ('constructor' == self.idl_type) else self.attribute

@property
def normal_name(self) -> Optional[str]:
def normal_name(self) -> str:
return f'{self.parent.name}()' if ('constructor' == self.idl_type) else self.attribute

def _str(self) -> str:
Expand Down Expand Up @@ -1927,11 +1928,11 @@ def attribute(self) -> str:
return _name(self._attribute)

@property
def name(self) -> Optional[str]:
return self.parent.name if ('constructor' == self.idl_type) else self.attribute
def name(self) -> str:
return str(self.parent.name) if ('constructor' == self.idl_type) else self.attribute

@property
def normal_name(self) -> Optional[str]:
def normal_name(self) -> str:
if ('constructor' == self.idl_type):
return (f'{self.parent.name}('
+ (', '.join(argument.name for argument in self._arguments if (argument.name)) if (self._arguments) else '') + ')')
Expand Down Expand Up @@ -1995,11 +1996,11 @@ def value(self) -> str:
return _name(self._value)

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self.value if ('constructor' == self.idl_type) else self.attribute

@property
def normal_name(self) -> Optional[str]:
def normal_name(self) -> str:
return (str(self.value) + '()') if ('constructor' == self.idl_type) else self.attribute

def _str(self) -> str:
Expand Down Expand Up @@ -2066,11 +2067,11 @@ def value(self) -> str:
return _name(self._value)

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self.value if ('constructor' == self.idl_type) else self.attribute

@property
def normal_name(self) -> Optional[str]:
def normal_name(self) -> str:
return (str(self.value) + '()') if ('constructor' == self.idl_type) else self.attribute

def _str(self) -> str:
Expand Down Expand Up @@ -2146,11 +2147,11 @@ def value(self) -> str:
return _name(self._value)

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self.value if ('constructor' == self.idl_type) else self.attribute

@property
def normal_name(self) -> Optional[str]:
def normal_name(self) -> str:
if ('constructor' == self.idl_type):
return self.value + '(' + (', '.join(argument.name for argument in self._arguments if (argument.name)) if (self._arguments) else '') + ')'
return self.attribute
Expand Down Expand Up @@ -2225,7 +2226,7 @@ def attribute(self) -> str:
return _name(self._attribute)

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self.attribute

def _str(self) -> str:
Expand Down Expand Up @@ -2256,7 +2257,7 @@ class ExtendedAttribute(Construct):
| ExtendedAttributeIdentList | ExtendedAttributeTypePair
"""

attribute: Construct
attribute: ExtendedAttributeType

@classmethod
def peek(cls, tokens: Tokenizer) -> bool:
Expand Down Expand Up @@ -2290,7 +2291,7 @@ def idl_type(self) -> str:
return self.attribute.idl_type

@property
def name(self) -> Optional[str]:
def name(self) -> str:
return self.attribute.name

@property
Expand Down Expand Up @@ -2328,3 +2329,14 @@ def _define_markup(self, generator: MarkupGenerator) -> Production:

def __repr__(self) -> str:
return repr(self.attribute)


ExtendedAttributeType = Union[
ExtendedAttributeNamedArgList,
ExtendedAttributeArgList,
ExtendedAttributeNoArgs,
ExtendedAttributeTypePair,
ExtendedAttributeIdentList,
ExtendedAttributeIdent,
ExtendedAttributeUnknown,
]
Loading