wasm-bindgen/crates/webidl-tests/simple.js
Alex Crichton 36b854b69c web-sys: Add support for Global-scope methods
This commit adds further support for the `Global` attribute to not only emit
structural accessors but also emit functions that don't take `&self`. All
methods on a `[Global]` interface will not require `&self` and will call
functions and/or access properties on the global scope.

This should enable things like:

    Window::location() // returns `Location`
    Window::fetch(...) // invokes the `fetch` function

Closes #659
2018-08-28 17:20:31 -07:00

145 lines
2.4 KiB
JavaScript

global.Method = class Method {
constructor(value) {
this.value = value;
}
myCmp(other) {
return this.value === other.value;
}
};
global.Property = class Property {
constructor(value) {
this._value = value;
}
get value() {
return this._value;
}
set value(value) {
this._value = value;
}
};
global.NamedConstructor = class NamedConstructor {
constructor() {
this._value = 0;
}
get value(){
return this._value;
}
};
global.NamedConstructorBar = class NamedConstructorBar extends NamedConstructor {
constructor(_value) {
super();
this._value = _value;
}
};
global.StaticMethod = class StaticMethod {
static swap(value) {
const res = StaticMethod.value;
StaticMethod.value = value;
return res;
}
};
StaticMethod.value = 0;
global.StaticProperty = class StaticProperty {
static get value(){
return StaticProperty._value;
}
static set value(value) {
StaticProperty._value = value;
}
};
StaticProperty._value = 0;
global.UndefinedMethod = class UndefinedMethod {
constructor() {}
ok_method() {
return true;
}
};
global.NullableMethod = class NullableMethod {
constructor() {}
opt(a) {
if (a == undefined) {
return undefined;
} else {
return a + 1;
}
}
};
global.Unforgeable = class Unforgeable {
constructor() {
this.uno = 1;
}
get dos() {
return 2;
}
};
global.m = () => 123;
global.Indexing = function () {
return new Proxy({}, {
get(obj, prop) {
return obj.hasOwnProperty(prop) ? obj[prop] : -1;
},
set(obj, prop, value) {
obj[prop] = value;
},
deleteProperty(obj, prop) {
delete obj[prop];
},
});
};
global.OptionalAndUnionArguments = class OptionalAndUnionArguments {
constructor() {}
m(a, b = true, c = 123, d = 456) {
return [typeof a, a, typeof b, b, typeof c, c, typeof d, d].join(', ');
}
};
global.PartialInterface = class PartialInterface {
get un() {
return 1;
}
deux() {
return 2;
}
get trois() {
return 3;
}
quatre() {
return 4;
}
};
global.MixinFoo = class MixinFoo {
constructor(bar) {
this._bar = bar | MixinFoo.defaultBar;
}
static get defaultBar() {
return MixinFoo._defaultBar;
}
static set defaultBar(defaultBar) {
MixinFoo._defaultBar = defaultBar;
}
get bar() {
return this._bar;
}
addToBar(other) {
this._bar += other;
}
};