Skip to content

Commit

Permalink
Fix two cases of non-deterministic iteration (#2304)
Browse files Browse the repository at this point in the history
* Fix two cases of non-deterministic iteration

This commit fixes an issue of nondeterministic JS generation when
closures were used, updating a few iterations of hash maps to iterate in
a sorted manner rather than via the raw internal order.

Closes #2302

* Reformat web-sys with latest proc-macro
  • Loading branch information
alexcrichton authored Sep 9, 2020
1 parent c34606e commit 1ca54f2
Show file tree
Hide file tree
Showing 1,140 changed files with 9,059 additions and 9,056 deletions.
5 changes: 4 additions & 1 deletion crates/cli-support/src/descriptors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,10 @@ impl WasmBindgenDescriptorsSection {
// freshly manufactured import. Save off the type of this import in
// ourselves, and then we're good to go.
let ty = module.funcs.get(wbindgen_describe_closure).ty();
for (func, descriptor) in func_to_descriptor {
// sort to ensure ids and caches are consistent across runs
let mut items = func_to_descriptor.into_iter().collect::<Vec<_>>();
items.sort_by_key(|i| i.0);
for (func, descriptor) in items {
// This uses a cache so that if the same closure exists multiple times it will
// deduplicate it so it only exists once.
let id = match self.cached_closures.get(&descriptor) {
Expand Down
4 changes: 2 additions & 2 deletions crates/cli-support/src/wit/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,13 +183,13 @@ impl<'a> Context<'a> {
// Finally we store all this metadata in the import map which we've
// learned so when a binding for the import is generated we can
// generate all the appropriate shims.
for (id, descriptor) in closure_imports {
for (id, descriptor) in crate::sorted_iter(&closure_imports) {
let signature = Function {
shim_idx: 0,
arguments: vec![Descriptor::I32; 3],
ret: Descriptor::Externref,
};
let id = self.import_adapter(id, signature, AdapterJsImportKind::Normal)?;
let id = self.import_adapter(*id, signature, AdapterJsImportKind::Normal)?;
// Synthesize the two integer pointers we pass through which
// aren't present in the signature but are present in the wasm
// signature.
Expand Down
6 changes: 3 additions & 3 deletions crates/web-sys/src/features/gen_AbortController.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AbortController , typescript_type = "AbortController" ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AbortController , typescript_type = "AbortController")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AbortController` class."]
#[doc = ""]
Expand All @@ -12,7 +12,7 @@ extern "C" {
#[doc = "*This API requires the following crate features to be activated: `AbortController`*"]
pub type AbortController;
#[cfg(feature = "AbortSignal")]
# [ wasm_bindgen ( structural , method , getter , js_class = "AbortController" , js_name = signal ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AbortController" , js_name = signal)]
#[doc = "Getter for the `signal` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/signal)"]
Expand All @@ -26,7 +26,7 @@ extern "C" {
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AbortController`*"]
pub fn new() -> Result<AbortController, JsValue>;
# [ wasm_bindgen ( method , structural , js_class = "AbortController" , js_name = abort ) ]
# [wasm_bindgen (method , structural , js_class = "AbortController" , js_name = abort)]
#[doc = "The `abort()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort)"]
Expand Down
8 changes: 4 additions & 4 deletions crates/web-sys/src/features/gen_AbortSignal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = EventTarget , extends = :: js_sys :: Object , js_name = AbortSignal , typescript_type = "AbortSignal" ) ]
# [wasm_bindgen (extends = EventTarget , extends = :: js_sys :: Object , js_name = AbortSignal , typescript_type = "AbortSignal")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AbortSignal` class."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AbortSignal`*"]
pub type AbortSignal;
# [ wasm_bindgen ( structural , method , getter , js_class = "AbortSignal" , js_name = aborted ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AbortSignal" , js_name = aborted)]
#[doc = "Getter for the `aborted` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/aborted)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AbortSignal`*"]
pub fn aborted(this: &AbortSignal) -> bool;
# [ wasm_bindgen ( structural , method , getter , js_class = "AbortSignal" , js_name = onabort ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AbortSignal" , js_name = onabort)]
#[doc = "Getter for the `onabort` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/onabort)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AbortSignal`*"]
pub fn onabort(this: &AbortSignal) -> Option<::js_sys::Function>;
# [ wasm_bindgen ( structural , method , setter , js_class = "AbortSignal" , js_name = onabort ) ]
# [wasm_bindgen (structural , method , setter , js_class = "AbortSignal" , js_name = onabort)]
#[doc = "Setter for the `onabort` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/onabort)"]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AddEventListenerOptions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AddEventListenerOptions ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AddEventListenerOptions)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AddEventListenerOptions` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AesCbcParams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AesCbcParams ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AesCbcParams)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AesCbcParams` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AesCtrParams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AesCtrParams ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AesCtrParams)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AesCtrParams` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AesDerivedKeyParams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AesDerivedKeyParams ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AesDerivedKeyParams)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AesDerivedKeyParams` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AesGcmParams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AesGcmParams ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AesGcmParams)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AesGcmParams` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AesKeyAlgorithm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AesKeyAlgorithm ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AesKeyAlgorithm)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AesKeyAlgorithm` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AesKeyGenParams.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AesKeyGenParams ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AesKeyGenParams)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AesKeyGenParams` dictionary."]
#[doc = ""]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_Algorithm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = Algorithm ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = Algorithm)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `Algorithm` dictionary."]
#[doc = ""]
Expand Down
28 changes: 14 additions & 14 deletions crates/web-sys/src/features/gen_AnalyserNode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,71 +3,71 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = AudioNode , extends = EventTarget , extends = :: js_sys :: Object , js_name = AnalyserNode , typescript_type = "AnalyserNode" ) ]
# [wasm_bindgen (extends = AudioNode , extends = EventTarget , extends = :: js_sys :: Object , js_name = AnalyserNode , typescript_type = "AnalyserNode")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AnalyserNode` class."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub type AnalyserNode;
# [ wasm_bindgen ( structural , method , getter , js_class = "AnalyserNode" , js_name = fftSize ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AnalyserNode" , js_name = fftSize)]
#[doc = "Getter for the `fftSize` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn fft_size(this: &AnalyserNode) -> u32;
# [ wasm_bindgen ( structural , method , setter , js_class = "AnalyserNode" , js_name = fftSize ) ]
# [wasm_bindgen (structural , method , setter , js_class = "AnalyserNode" , js_name = fftSize)]
#[doc = "Setter for the `fftSize` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn set_fft_size(this: &AnalyserNode, value: u32);
# [ wasm_bindgen ( structural , method , getter , js_class = "AnalyserNode" , js_name = frequencyBinCount ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AnalyserNode" , js_name = frequencyBinCount)]
#[doc = "Getter for the `frequencyBinCount` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn frequency_bin_count(this: &AnalyserNode) -> u32;
# [ wasm_bindgen ( structural , method , getter , js_class = "AnalyserNode" , js_name = minDecibels ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AnalyserNode" , js_name = minDecibels)]
#[doc = "Getter for the `minDecibels` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/minDecibels)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn min_decibels(this: &AnalyserNode) -> f64;
# [ wasm_bindgen ( structural , method , setter , js_class = "AnalyserNode" , js_name = minDecibels ) ]
# [wasm_bindgen (structural , method , setter , js_class = "AnalyserNode" , js_name = minDecibels)]
#[doc = "Setter for the `minDecibels` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/minDecibels)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn set_min_decibels(this: &AnalyserNode, value: f64);
# [ wasm_bindgen ( structural , method , getter , js_class = "AnalyserNode" , js_name = maxDecibels ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AnalyserNode" , js_name = maxDecibels)]
#[doc = "Getter for the `maxDecibels` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/maxDecibels)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn max_decibels(this: &AnalyserNode) -> f64;
# [ wasm_bindgen ( structural , method , setter , js_class = "AnalyserNode" , js_name = maxDecibels ) ]
# [wasm_bindgen (structural , method , setter , js_class = "AnalyserNode" , js_name = maxDecibels)]
#[doc = "Setter for the `maxDecibels` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/maxDecibels)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn set_max_decibels(this: &AnalyserNode, value: f64);
# [ wasm_bindgen ( structural , method , getter , js_class = "AnalyserNode" , js_name = smoothingTimeConstant ) ]
# [wasm_bindgen (structural , method , getter , js_class = "AnalyserNode" , js_name = smoothingTimeConstant)]
#[doc = "Getter for the `smoothingTimeConstant` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/smoothingTimeConstant)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn smoothing_time_constant(this: &AnalyserNode) -> f64;
# [ wasm_bindgen ( structural , method , setter , js_class = "AnalyserNode" , js_name = smoothingTimeConstant ) ]
# [wasm_bindgen (structural , method , setter , js_class = "AnalyserNode" , js_name = smoothingTimeConstant)]
#[doc = "Setter for the `smoothingTimeConstant` field of this object."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/smoothingTimeConstant)"]
Expand All @@ -93,28 +93,28 @@ extern "C" {
context: &BaseAudioContext,
options: &AnalyserOptions,
) -> Result<AnalyserNode, JsValue>;
# [ wasm_bindgen ( method , structural , js_class = "AnalyserNode" , js_name = getByteFrequencyData ) ]
# [wasm_bindgen (method , structural , js_class = "AnalyserNode" , js_name = getByteFrequencyData)]
#[doc = "The `getByteFrequencyData()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn get_byte_frequency_data(this: &AnalyserNode, array: &mut [u8]);
# [ wasm_bindgen ( method , structural , js_class = "AnalyserNode" , js_name = getByteTimeDomainData ) ]
# [wasm_bindgen (method , structural , js_class = "AnalyserNode" , js_name = getByteTimeDomainData)]
#[doc = "The `getByteTimeDomainData()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteTimeDomainData)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn get_byte_time_domain_data(this: &AnalyserNode, array: &mut [u8]);
# [ wasm_bindgen ( method , structural , js_class = "AnalyserNode" , js_name = getFloatFrequencyData ) ]
# [wasm_bindgen (method , structural , js_class = "AnalyserNode" , js_name = getFloatFrequencyData)]
#[doc = "The `getFloatFrequencyData()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getFloatFrequencyData)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AnalyserNode`*"]
pub fn get_float_frequency_data(this: &AnalyserNode, array: &mut [f32]);
# [ wasm_bindgen ( method , structural , js_class = "AnalyserNode" , js_name = getFloatTimeDomainData ) ]
# [wasm_bindgen (method , structural , js_class = "AnalyserNode" , js_name = getFloatTimeDomainData)]
#[doc = "The `getFloatTimeDomainData()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getFloatTimeDomainData)"]
Expand Down
2 changes: 1 addition & 1 deletion crates/web-sys/src/features/gen_AnalyserOptions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( extends = :: js_sys :: Object , js_name = AnalyserOptions ) ]
# [wasm_bindgen (extends = :: js_sys :: Object , js_name = AnalyserOptions)]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AnalyserOptions` dictionary."]
#[doc = ""]
Expand Down
10 changes: 5 additions & 5 deletions crates/web-sys/src/features/gen_AngleInstancedArrays.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ use super::*;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
# [ wasm_bindgen ( is_type_of = | _ | false , extends = :: js_sys :: Object , js_name = ANGLE_instanced_arrays , typescript_type = "ANGLE_instanced_arrays" ) ]
# [wasm_bindgen (is_type_of = | _ | false , extends = :: js_sys :: Object , js_name = ANGLE_instanced_arrays , typescript_type = "ANGLE_instanced_arrays")]
#[derive(Debug, Clone, PartialEq, Eq)]
#[doc = "The `AngleInstancedArrays` class."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/ANGLE_instanced_arrays)"]
#[doc = ""]
#[doc = "*This API requires the following crate features to be activated: `AngleInstancedArrays`*"]
pub type AngleInstancedArrays;
# [ wasm_bindgen ( method , structural , js_class = "ANGLE_instanced_arrays" , js_name = drawArraysInstancedANGLE ) ]
# [wasm_bindgen (method , structural , js_class = "ANGLE_instanced_arrays" , js_name = drawArraysInstancedANGLE)]
#[doc = "The `drawArraysInstancedANGLE()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/ANGLE_instanced_arrays/drawArraysInstancedANGLE)"]
Expand All @@ -24,7 +24,7 @@ extern "C" {
count: i32,
primcount: i32,
);
# [ wasm_bindgen ( method , structural , js_class = "ANGLE_instanced_arrays" , js_name = drawElementsInstancedANGLE ) ]
# [wasm_bindgen (method , structural , js_class = "ANGLE_instanced_arrays" , js_name = drawElementsInstancedANGLE)]
#[doc = "The `drawElementsInstancedANGLE()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/ANGLE_instanced_arrays/drawElementsInstancedANGLE)"]
Expand All @@ -38,7 +38,7 @@ extern "C" {
offset: i32,
primcount: i32,
);
# [ wasm_bindgen ( method , structural , js_class = "ANGLE_instanced_arrays" , js_name = drawElementsInstancedANGLE ) ]
# [wasm_bindgen (method , structural , js_class = "ANGLE_instanced_arrays" , js_name = drawElementsInstancedANGLE)]
#[doc = "The `drawElementsInstancedANGLE()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/ANGLE_instanced_arrays/drawElementsInstancedANGLE)"]
Expand All @@ -52,7 +52,7 @@ extern "C" {
offset: f64,
primcount: i32,
);
# [ wasm_bindgen ( method , structural , js_class = "ANGLE_instanced_arrays" , js_name = vertexAttribDivisorANGLE ) ]
# [wasm_bindgen (method , structural , js_class = "ANGLE_instanced_arrays" , js_name = vertexAttribDivisorANGLE)]
#[doc = "The `vertexAttribDivisorANGLE()` method."]
#[doc = ""]
#[doc = "[MDN Documentation](https://developer.mozilla.org/en-US/docs/Web/API/ANGLE_instanced_arrays/vertexAttribDivisorANGLE)"]
Expand Down
Loading

0 comments on commit 1ca54f2

Please sign in to comment.