diff options
author | Kagami Sascha Rosylight <saschanaz@outlook.com> | 2022-01-05 03:39:33 +0100 |
---|---|---|
committer | Kagami Sascha Rosylight <saschanaz@outlook.com> | 2022-01-05 03:39:33 +0100 |
commit | 52ea5204a23d8cc9d40ac3e9eb4fd9e03c1cd1ca (patch) | |
tree | ff222506f529fb20f148b634161a10244fd2a7ec /components/script/dom/bindings/codegen/parser/WebIDL.py | |
parent | 5df705a41f6c4c1f2ffeec257dfe0129ce5fa8e0 (diff) | |
download | servo-52ea5204a23d8cc9d40ac3e9eb4fd9e03c1cd1ca.tar.gz servo-52ea5204a23d8cc9d40ac3e9eb4fd9e03c1cd1ca.zip |
Convert Web IDL void to undefined
Fixes #27660
Diffstat (limited to 'components/script/dom/bindings/codegen/parser/WebIDL.py')
-rw-r--r-- | components/script/dom/bindings/codegen/parser/WebIDL.py | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/components/script/dom/bindings/codegen/parser/WebIDL.py b/components/script/dom/bindings/codegen/parser/WebIDL.py index d74278c3e0c..85c0046549d 100644 --- a/components/script/dom/bindings/codegen/parser/WebIDL.py +++ b/components/script/dom/bindings/codegen/parser/WebIDL.py @@ -2093,7 +2093,7 @@ class IDLType(IDLObject): 'utf8string', 'jsstring', 'object', - 'void', + 'undefined', # Funny stuff 'interface', 'dictionary', @@ -2168,8 +2168,8 @@ class IDLType(IDLObject): def isJSString(self): return False - def isVoid(self): - return self.name == "Void" + def isUndefined(self): + return self.name == "Undefined" def isSequence(self): return False @@ -2355,7 +2355,7 @@ class IDLParametrizedType(IDLType): class IDLNullableType(IDLParametrizedType): def __init__(self, location, innerType): - assert not innerType.isVoid() + assert not innerType.isUndefined() assert not innerType == BuiltinTypes[IDLBuiltinType.Types.any] IDLParametrizedType.__init__(self, location, None, innerType) @@ -2414,7 +2414,7 @@ class IDLNullableType(IDLParametrizedType): def isInteger(self): return self.inner.isInteger() - def isVoid(self): + def isUndefined(self): return False def isSequence(self): @@ -2517,7 +2517,7 @@ class IDLNullableType(IDLParametrizedType): class IDLSequenceType(IDLParametrizedType): def __init__(self, location, parameterType): - assert not parameterType.isVoid() + assert not parameterType.isUndefined() IDLParametrizedType.__init__(self, location, parameterType.name, parameterType) # Need to set self.name up front if our inner type is already complete, @@ -2561,7 +2561,7 @@ class IDLSequenceType(IDLParametrizedType): def isJSString(self): return False - def isVoid(self): + def isUndefined(self): return False def isSequence(self): @@ -2602,7 +2602,7 @@ class IDLRecordType(IDLParametrizedType): def __init__(self, location, keyType, valueType): assert keyType.isString() assert keyType.isComplete() - assert not valueType.isVoid() + assert not valueType.isUndefined() IDLParametrizedType.__init__(self, location, valueType.name, valueType) self.keyType = keyType @@ -2673,7 +2673,7 @@ class IDLUnionType(IDLType): def prettyName(self): return "(" + " or ".join(m.prettyName() for m in self.memberTypes) + ")" - def isVoid(self): + def isUndefined(self): return False def isUnion(self): @@ -2836,8 +2836,8 @@ class IDLTypedefType(IDLType): def isJSString(self): return self.inner.isJSString() - def isVoid(self): - return self.inner.isVoid() + def isUndefined(self): + return self.inner.isUndefined() def isJSONType(self): return self.inner.isJSONType() @@ -2972,7 +2972,7 @@ class IDLWrapperType(IDLType): def isJSString(self): return False - def isVoid(self): + def isUndefined(self): return False def isSequence(self): @@ -3178,7 +3178,7 @@ class IDLBuiltinType(IDLType): 'utf8string', 'jsstring', 'object', - 'void', + 'undefined', # Funny stuff 'ArrayBuffer', 'ArrayBufferView', @@ -3215,7 +3215,7 @@ class IDLBuiltinType(IDLType): Types.utf8string: IDLType.Tags.utf8string, Types.jsstring: IDLType.Tags.jsstring, Types.object: IDLType.Tags.object, - Types.void: IDLType.Tags.void, + Types.undefined: IDLType.Tags.undefined, Types.ArrayBuffer: IDLType.Tags.interface, Types.ArrayBufferView: IDLType.Tags.interface, Types.Int8Array: IDLType.Tags.interface, @@ -3251,7 +3251,7 @@ class IDLBuiltinType(IDLType): Types.utf8string: "USVString", # That's what it is in spec terms Types.jsstring: "USVString", # Again, that's what it is in spec terms Types.object: "object", - Types.void: "void", + Types.undefined: "undefined", Types.ArrayBuffer: "ArrayBuffer", Types.ArrayBufferView: "ArrayBufferView", Types.Int8Array: "Int8Array", @@ -3456,8 +3456,8 @@ class IDLBuiltinType(IDLType): return False if self.isObject(): return other.isPrimitive() or other.isString() or other.isEnum() - if self.isVoid(): - return not other.isVoid() + if self.isUndefined(): + return not other.isUndefined() # Not much else we could be! assert self.isSpiderMonkeyInterface() # Like interfaces, but we know we're not a callback @@ -3591,9 +3591,9 @@ BuiltinTypes = { IDLBuiltinType.Types.object: IDLBuiltinType(BuiltinLocation("<builtin type>"), "Object", IDLBuiltinType.Types.object), - IDLBuiltinType.Types.void: - IDLBuiltinType(BuiltinLocation("<builtin type>"), "Void", - IDLBuiltinType.Types.void), + IDLBuiltinType.Types.undefined: + IDLBuiltinType(BuiltinLocation("<builtin type>"), "Undefined", + IDLBuiltinType.Types.undefined), IDLBuiltinType.Types.ArrayBuffer: IDLBuiltinType(BuiltinLocation("<builtin type>"), "ArrayBuffer", IDLBuiltinType.Types.ArrayBuffer), @@ -4196,9 +4196,9 @@ class IDLIterable(IDLMaplikeOrSetlikeOrIterableBase): self.addMethod("values", members, False, self.iteratorType, affectsNothing=True, newObject=True) - # void forEach(callback(valueType, keyType), optional any thisArg) + # undefined forEach(callback(valueType, keyType), optional any thisArg) self.addMethod("forEach", members, False, - BuiltinTypes[IDLBuiltinType.Types.void], + BuiltinTypes[IDLBuiltinType.Types.undefined], self.getForEachArguments()) def isValueIterator(self): @@ -4256,8 +4256,8 @@ class IDLMaplikeOrSetlike(IDLMaplikeOrSetlikeOrIterableBase): self.addMethod("values", members, False, BuiltinTypes[IDLBuiltinType.Types.object], affectsNothing=True, isIteratorAlias=self.isSetlike()) - # void forEach(callback(valueType, keyType), thisVal) - self.addMethod("forEach", members, False, BuiltinTypes[IDLBuiltinType.Types.void], + # undefined forEach(callback(valueType, keyType), thisVal) + self.addMethod("forEach", members, False, BuiltinTypes[IDLBuiltinType.Types.undefined], self.getForEachArguments()) def getKeyArg(): @@ -4270,8 +4270,8 @@ class IDLMaplikeOrSetlike(IDLMaplikeOrSetlikeOrIterableBase): [getKeyArg()], isPure=True) if not self.readonly: - # void clear() - self.addMethod("clear", members, True, BuiltinTypes[IDLBuiltinType.Types.void], + # undefined clear() + self.addMethod("clear", members, True, BuiltinTypes[IDLBuiltinType.Types.undefined], []) # boolean delete(keyType key) self.addMethod("delete", members, True, @@ -4280,8 +4280,8 @@ class IDLMaplikeOrSetlike(IDLMaplikeOrSetlikeOrIterableBase): # Always generate underscored functions (e.g. __add, __clear) for js # implemented interfaces as convenience functions. if isJSImplemented: - # void clear() - self.addMethod("clear", members, True, BuiltinTypes[IDLBuiltinType.Types.void], + # undefined clear() + self.addMethod("clear", members, True, BuiltinTypes[IDLBuiltinType.Types.undefined], [], chromeOnly=True) # boolean delete(keyType key) self.addMethod("delete", members, True, @@ -5119,7 +5119,7 @@ class IDLMethod(IDLInterfaceMember, IDLScope): assert (arguments[0].type == BuiltinTypes[IDLBuiltinType.Types.domstring] or arguments[0].type == BuiltinTypes[IDLBuiltinType.Types.unsigned_long]) assert not arguments[0].optional and not arguments[0].variadic - assert not self._getter or not overload.returnType.isVoid() + assert not self._getter or not overload.returnType.isUndefined() if self._setter: assert len(self._overloads) == 1 @@ -5480,8 +5480,8 @@ class IDLMethod(IDLInterfaceMember, IDLScope): # This is called before we've done overload resolution overloads = self._overloads assert len(overloads) == 1 - if not overloads[0].returnType.isVoid(): - raise WebIDLError("[LenientFloat] used on a non-void method", + if not overloads[0].returnType.isUndefined(): + raise WebIDLError("[LenientFloat] used on a non-undefined returning method", [attr.location, self.location]) if not overloads[0].includesRestrictedFloatArgument(): raise WebIDLError("[LenientFloat] used on an operation with no " @@ -5837,7 +5837,7 @@ class Tokenizer(object): "record": "RECORD", "short": "SHORT", "unsigned": "UNSIGNED", - "void": "VOID", + "undefined": "UNDEFINED", ":": "COLON", ";": "SEMICOLON", "{": "LBRACE", @@ -6722,8 +6722,8 @@ class Parser(Tokenizer): "optional" if arguments[0].optional else "variadic"), [arguments[0].location]) if getter: - if returnType.isVoid(): - raise WebIDLError("getter cannot have void return type", + if returnType.isUndefined(): + raise WebIDLError("getter cannot have undefined return type", [self.getLocation(p, 2)]) if setter: if len(arguments) != 2: @@ -7103,7 +7103,7 @@ class Parser(Tokenizer): | SYMBOL | TRUE | UNSIGNED - | VOID + | UNDEFINED | ArgumentNameKeyword """ pass @@ -7145,7 +7145,7 @@ class Parser(Tokenizer): """ p[0] = BuiltinTypes[IDLBuiltinType.Types.any] - # Note: Promise<void> is allowed, so we want to parametrize on ReturnType, + # Note: Promise<undefined> is allowed, so we want to parametrize on ReturnType, # not Type. Promise types can't be null, hence no "Null" in there. def p_SingleTypePromiseType(self, p): """ @@ -7413,11 +7413,11 @@ class Parser(Tokenizer): """ p[0] = p[1] - def p_ReturnTypeVoid(self, p): + def p_ReturnTypeUndefined(self, p): """ - ReturnType : VOID + ReturnType : UNDEFINED """ - p[0] = BuiltinTypes[IDLBuiltinType.Types.void] + p[0] = BuiltinTypes[IDLBuiltinType.Types.undefined] def p_ScopedName(self, p): """ @@ -7564,7 +7564,7 @@ class Parser(Tokenizer): def parse(self, t, filename=None): self._filename = filename - self.lexer.input(t.decode(encoding = 'utf-8')) + self.lexer.input(t) # for tok in iter(self.lexer.token, None): # print tok |