mirror of
https://github.com/servo/servo.git
synced 2025-06-20 23:28:59 +01:00
Auto merge of #18309 - servo:webidl, r=jdm
Update the WebIDL parser <!-- Reviewable:start --> This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18309) <!-- Reviewable:end -->
This commit is contained in:
commit
ed9fb55366
1 changed files with 31 additions and 8 deletions
|
@ -2064,6 +2064,9 @@ class IDLType(IDLObject):
|
||||||
def isRecord(self):
|
def isRecord(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def isReadableStream(self):
|
||||||
|
return False
|
||||||
|
|
||||||
def isArrayBuffer(self):
|
def isArrayBuffer(self):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -2091,12 +2094,12 @@ class IDLType(IDLObject):
|
||||||
|
|
||||||
def isSpiderMonkeyInterface(self):
|
def isSpiderMonkeyInterface(self):
|
||||||
""" Returns a boolean indicating whether this type is an 'interface'
|
""" Returns a boolean indicating whether this type is an 'interface'
|
||||||
type that is implemented in Spidermonkey. At the moment, this
|
type that is implemented in SpiderMonkey. """
|
||||||
only returns true for the types from the TypedArray spec. """
|
|
||||||
return self.isInterface() and (self.isArrayBuffer() or
|
return self.isInterface() and (self.isArrayBuffer() or
|
||||||
self.isArrayBufferView() or
|
self.isArrayBufferView() or
|
||||||
self.isSharedArrayBuffer() or
|
self.isSharedArrayBuffer() or
|
||||||
self.isTypedArray())
|
self.isTypedArray() or
|
||||||
|
self.isReadableStream())
|
||||||
|
|
||||||
def isDictionary(self):
|
def isDictionary(self):
|
||||||
return False
|
return False
|
||||||
|
@ -2289,6 +2292,9 @@ class IDLNullableType(IDLParametrizedType):
|
||||||
def isRecord(self):
|
def isRecord(self):
|
||||||
return self.inner.isRecord()
|
return self.inner.isRecord()
|
||||||
|
|
||||||
|
def isReadableStream(self):
|
||||||
|
return self.inner.isReadableStream()
|
||||||
|
|
||||||
def isArrayBuffer(self):
|
def isArrayBuffer(self):
|
||||||
return self.inner.isArrayBuffer()
|
return self.inner.isArrayBuffer()
|
||||||
|
|
||||||
|
@ -2656,6 +2662,9 @@ class IDLTypedefType(IDLType):
|
||||||
def isRecord(self):
|
def isRecord(self):
|
||||||
return self.inner.isRecord()
|
return self.inner.isRecord()
|
||||||
|
|
||||||
|
def isReadableStream(self):
|
||||||
|
return self.inner.isReadableStream()
|
||||||
|
|
||||||
def isDictionary(self):
|
def isDictionary(self):
|
||||||
return self.inner.isDictionary()
|
return self.inner.isDictionary()
|
||||||
|
|
||||||
|
@ -2970,7 +2979,8 @@ class IDLBuiltinType(IDLType):
|
||||||
'Int32Array',
|
'Int32Array',
|
||||||
'Uint32Array',
|
'Uint32Array',
|
||||||
'Float32Array',
|
'Float32Array',
|
||||||
'Float64Array'
|
'Float64Array',
|
||||||
|
'ReadableStream',
|
||||||
)
|
)
|
||||||
|
|
||||||
TagLookup = {
|
TagLookup = {
|
||||||
|
@ -3005,7 +3015,8 @@ class IDLBuiltinType(IDLType):
|
||||||
Types.Int32Array: IDLType.Tags.interface,
|
Types.Int32Array: IDLType.Tags.interface,
|
||||||
Types.Uint32Array: IDLType.Tags.interface,
|
Types.Uint32Array: IDLType.Tags.interface,
|
||||||
Types.Float32Array: IDLType.Tags.interface,
|
Types.Float32Array: IDLType.Tags.interface,
|
||||||
Types.Float64Array: IDLType.Tags.interface
|
Types.Float64Array: IDLType.Tags.interface,
|
||||||
|
Types.ReadableStream: IDLType.Tags.interface,
|
||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self, location, name, type):
|
def __init__(self, location, name, type):
|
||||||
|
@ -3052,6 +3063,9 @@ class IDLBuiltinType(IDLType):
|
||||||
return (self._typeTag >= IDLBuiltinType.Types.Int8Array and
|
return (self._typeTag >= IDLBuiltinType.Types.Int8Array and
|
||||||
self._typeTag <= IDLBuiltinType.Types.Float64Array)
|
self._typeTag <= IDLBuiltinType.Types.Float64Array)
|
||||||
|
|
||||||
|
def isReadableStream(self):
|
||||||
|
return self._typeTag == IDLBuiltinType.Types.ReadableStream
|
||||||
|
|
||||||
def isInterface(self):
|
def isInterface(self):
|
||||||
# TypedArray things are interface types per the TypedArray spec,
|
# TypedArray things are interface types per the TypedArray spec,
|
||||||
# but we handle them as builtins because SpiderMonkey implements
|
# but we handle them as builtins because SpiderMonkey implements
|
||||||
|
@ -3059,7 +3073,8 @@ class IDLBuiltinType(IDLType):
|
||||||
return (self.isArrayBuffer() or
|
return (self.isArrayBuffer() or
|
||||||
self.isArrayBufferView() or
|
self.isArrayBufferView() or
|
||||||
self.isSharedArrayBuffer() or
|
self.isSharedArrayBuffer() or
|
||||||
self.isTypedArray())
|
self.isTypedArray() or
|
||||||
|
self.isReadableStream())
|
||||||
|
|
||||||
def isNonCallbackInterface(self):
|
def isNonCallbackInterface(self):
|
||||||
# All the interfaces we can be are non-callback
|
# All the interfaces we can be are non-callback
|
||||||
|
@ -3129,6 +3144,7 @@ class IDLBuiltinType(IDLType):
|
||||||
# that's not an ArrayBuffer or a callback interface
|
# that's not an ArrayBuffer or a callback interface
|
||||||
(self.isArrayBuffer() and not other.isArrayBuffer()) or
|
(self.isArrayBuffer() and not other.isArrayBuffer()) or
|
||||||
(self.isSharedArrayBuffer() and not other.isSharedArrayBuffer()) or
|
(self.isSharedArrayBuffer() and not other.isSharedArrayBuffer()) or
|
||||||
|
(self.isReadableStream() and not other.isReadableStream()) or
|
||||||
# ArrayBufferView is distinguishable from everything
|
# ArrayBufferView is distinguishable from everything
|
||||||
# that's not an ArrayBufferView or typed array.
|
# that's not an ArrayBufferView or typed array.
|
||||||
(self.isArrayBufferView() and not other.isArrayBufferView() and
|
(self.isArrayBufferView() and not other.isArrayBufferView() and
|
||||||
|
@ -3238,7 +3254,10 @@ BuiltinTypes = {
|
||||||
IDLBuiltinType.Types.Float32Array),
|
IDLBuiltinType.Types.Float32Array),
|
||||||
IDLBuiltinType.Types.Float64Array:
|
IDLBuiltinType.Types.Float64Array:
|
||||||
IDLBuiltinType(BuiltinLocation("<builtin type>"), "Float64Array",
|
IDLBuiltinType(BuiltinLocation("<builtin type>"), "Float64Array",
|
||||||
IDLBuiltinType.Types.Float64Array)
|
IDLBuiltinType.Types.Float64Array),
|
||||||
|
IDLBuiltinType.Types.ReadableStream:
|
||||||
|
IDLBuiltinType(BuiltinLocation("<builtin type>"), "ReadableStream",
|
||||||
|
IDLBuiltinType.Types.ReadableStream),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -5287,7 +5306,8 @@ class Tokenizer(object):
|
||||||
"maplike": "MAPLIKE",
|
"maplike": "MAPLIKE",
|
||||||
"setlike": "SETLIKE",
|
"setlike": "SETLIKE",
|
||||||
"iterable": "ITERABLE",
|
"iterable": "ITERABLE",
|
||||||
"namespace": "NAMESPACE"
|
"namespace": "NAMESPACE",
|
||||||
|
"ReadableStream": "READABLESTREAM",
|
||||||
}
|
}
|
||||||
|
|
||||||
tokens.extend(keywords.values())
|
tokens.extend(keywords.values())
|
||||||
|
@ -6475,6 +6495,7 @@ class Parser(Tokenizer):
|
||||||
NonAnyType : PrimitiveType Null
|
NonAnyType : PrimitiveType Null
|
||||||
| ARRAYBUFFER Null
|
| ARRAYBUFFER Null
|
||||||
| SHAREDARRAYBUFFER Null
|
| SHAREDARRAYBUFFER Null
|
||||||
|
| READABLESTREAM Null
|
||||||
| OBJECT Null
|
| OBJECT Null
|
||||||
"""
|
"""
|
||||||
if p[1] == "object":
|
if p[1] == "object":
|
||||||
|
@ -6483,6 +6504,8 @@ class Parser(Tokenizer):
|
||||||
type = BuiltinTypes[IDLBuiltinType.Types.ArrayBuffer]
|
type = BuiltinTypes[IDLBuiltinType.Types.ArrayBuffer]
|
||||||
elif p[1] == "SharedArrayBuffer":
|
elif p[1] == "SharedArrayBuffer":
|
||||||
type = BuiltinTypes[IDLBuiltinType.Types.SharedArrayBuffer]
|
type = BuiltinTypes[IDLBuiltinType.Types.SharedArrayBuffer]
|
||||||
|
elif p[1] == "ReadableStream":
|
||||||
|
type = BuiltinTypes[IDLBuiltinType.Types.ReadableStream]
|
||||||
else:
|
else:
|
||||||
type = BuiltinTypes[p[1]]
|
type = BuiltinTypes[p[1]]
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue