Skip to content

Commit 67f7a4e

Browse files
petamorikenErichDonGubler
authored andcommitted
[deno] add illegal constructor errors
(cherry-picked from denoland/deno#30500)
1 parent 492fb59 commit 67f7a4e

21 files changed

+184
-1
lines changed

deno_webgpu/adapter.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use deno_core::V8TaskSpawner;
1313
use deno_core::WebIDL;
1414

1515
use super::device::GPUDevice;
16+
use crate::error::GPUGenericError;
1617
use crate::webidl::features_to_feature_names;
1718
use crate::webidl::GPUFeatureName;
1819
use crate::Instance;
@@ -68,6 +69,12 @@ impl GarbageCollected for GPUAdapter {
6869

6970
#[op2]
7071
impl GPUAdapter {
72+
#[constructor]
73+
#[cppgc]
74+
fn constructor(_: bool) -> Result<GPUAdapter, GPUGenericError> {
75+
Err(GPUGenericError::InvalidConstructor)
76+
}
77+
7178
#[getter]
7279
#[global]
7380
fn info(&self, scope: &mut v8::HandleScope) -> v8::Global<v8::Object> {
@@ -223,6 +230,12 @@ impl GarbageCollected for GPUSupportedLimits {
223230

224231
#[op2]
225232
impl GPUSupportedLimits {
233+
#[constructor]
234+
#[cppgc]
235+
fn constructor(_: bool) -> Result<GPUSupportedLimits, GPUGenericError> {
236+
Err(GPUGenericError::InvalidConstructor)
237+
}
238+
226239
#[getter]
227240
fn maxTextureDimension1D(&self) -> u32 {
228241
self.0.max_texture_dimension_1d
@@ -401,6 +414,12 @@ impl GPUSupportedFeatures {
401414

402415
#[op2]
403416
impl GPUSupportedFeatures {
417+
#[constructor]
418+
#[cppgc]
419+
fn constructor(_: bool) -> Result<GPUSupportedFeatures, GPUGenericError> {
420+
Err(GPUGenericError::InvalidConstructor)
421+
}
422+
404423
#[global]
405424
#[symbol("setlike_set")]
406425
fn set(&self) -> v8::Global<v8::Value> {
@@ -422,6 +441,12 @@ impl GarbageCollected for GPUAdapterInfo {
422441

423442
#[op2]
424443
impl GPUAdapterInfo {
444+
#[constructor]
445+
#[cppgc]
446+
fn constructor(_: bool) -> Result<GPUAdapterInfo, GPUGenericError> {
447+
Err(GPUGenericError::InvalidConstructor)
448+
}
449+
425450
#[getter]
426451
#[string]
427452
fn vendor(&self) -> String {

deno_webgpu/bind_group.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ use deno_core::GarbageCollected;
1515
use deno_core::WebIDL;
1616

1717
use crate::buffer::GPUBuffer;
18+
use crate::error::GPUGenericError;
1819
use crate::sampler::GPUSampler;
1920
use crate::texture::GPUTextureView;
2021
use crate::Instance;
@@ -43,6 +44,12 @@ impl GarbageCollected for GPUBindGroup {
4344

4445
#[op2]
4546
impl GPUBindGroup {
47+
#[constructor]
48+
#[cppgc]
49+
fn constructor(_: bool) -> Result<GPUBindGroup, GPUGenericError> {
50+
Err(GPUGenericError::InvalidConstructor)
51+
}
52+
4653
#[getter]
4754
#[string]
4855
fn label(&self) -> String {

deno_webgpu/bind_group_layout.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use deno_core::op2;
44
use deno_core::GarbageCollected;
55
use deno_core::WebIDL;
66

7+
use crate::error::GPUGenericError;
78
use crate::texture::GPUTextureViewDimension;
89
use crate::Instance;
910

@@ -31,6 +32,12 @@ impl GarbageCollected for GPUBindGroupLayout {
3132

3233
#[op2]
3334
impl GPUBindGroupLayout {
35+
#[constructor]
36+
#[cppgc]
37+
fn constructor(_: bool) -> Result<GPUBindGroupLayout, GPUGenericError> {
38+
Err(GPUGenericError::InvalidConstructor)
39+
}
40+
3441
#[getter]
3542
#[string]
3643
fn label(&self) -> String {

deno_webgpu/buffer.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use deno_core::WebIDL;
1313
use deno_error::JsErrorBox;
1414
use wgpu_core::device::HostMap as MapMode;
1515

16+
use crate::error::GPUGenericError;
1617
use crate::Instance;
1718

1819
#[derive(WebIDL)]
@@ -80,6 +81,12 @@ impl GarbageCollected for GPUBuffer {
8081

8182
#[op2]
8283
impl GPUBuffer {
84+
#[constructor]
85+
#[cppgc]
86+
fn constructor(_: bool) -> Result<GPUBuffer, GPUGenericError> {
87+
Err(GPUGenericError::InvalidConstructor)
88+
}
89+
8390
#[getter]
8491
#[string]
8592
fn label(&self) -> String {

deno_webgpu/command_buffer.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use deno_core::op2;
44
use deno_core::GarbageCollected;
55
use deno_core::WebIDL;
66

7+
use crate::error::GPUGenericError;
78
use crate::Instance;
89

910
pub struct GPUCommandBuffer {
@@ -30,6 +31,12 @@ impl GarbageCollected for GPUCommandBuffer {
3031

3132
#[op2]
3233
impl GPUCommandBuffer {
34+
#[constructor]
35+
#[cppgc]
36+
fn constructor(_: bool) -> Result<GPUCommandBuffer, GPUGenericError> {
37+
Err(GPUGenericError::InvalidConstructor)
38+
}
39+
3340
#[getter]
3441
#[string]
3542
fn label(&self) -> String {

deno_webgpu/command_encoder.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ use wgpu_types::{BufferAddress, TexelCopyBufferInfo};
1616
use crate::buffer::GPUBuffer;
1717
use crate::command_buffer::GPUCommandBuffer;
1818
use crate::compute_pass::GPUComputePassEncoder;
19+
use crate::error::GPUGenericError;
1920
use crate::queue::GPUTexelCopyTextureInfo;
2021
use crate::render_pass::GPULoadOp;
2122
use crate::render_pass::GPURenderPassEncoder;
@@ -44,6 +45,12 @@ impl GarbageCollected for GPUCommandEncoder {
4445

4546
#[op2]
4647
impl GPUCommandEncoder {
48+
#[constructor]
49+
#[cppgc]
50+
fn constructor(_: bool) -> Result<GPUCommandEncoder, GPUGenericError> {
51+
Err(GPUGenericError::InvalidConstructor)
52+
}
53+
4754
#[getter]
4855
#[string]
4956
fn label(&self) -> String {

deno_webgpu/compute_pass.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use deno_core::webidl::WebIdlError;
1313
use deno_core::GarbageCollected;
1414
use deno_core::WebIDL;
1515

16+
use crate::error::GPUGenericError;
1617
use crate::Instance;
1718

1819
pub struct GPUComputePassEncoder {
@@ -31,6 +32,12 @@ impl GarbageCollected for GPUComputePassEncoder {
3132

3233
#[op2]
3334
impl GPUComputePassEncoder {
35+
#[constructor]
36+
#[cppgc]
37+
fn constructor(_: bool) -> Result<GPUComputePassEncoder, GPUGenericError> {
38+
Err(GPUGenericError::InvalidConstructor)
39+
}
40+
3441
#[getter]
3542
#[string]
3643
fn label(&self) -> String {

deno_webgpu/compute_pipeline.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use deno_core::WebIDL;
88
use indexmap::IndexMap;
99

1010
use crate::bind_group_layout::GPUBindGroupLayout;
11+
use crate::error::GPUGenericError;
1112
use crate::shader::GPUShaderModule;
1213
use crate::webidl::GPUPipelineLayoutOrGPUAutoLayoutMode;
1314
use crate::Instance;
@@ -38,6 +39,12 @@ impl GarbageCollected for GPUComputePipeline {
3839

3940
#[op2]
4041
impl GPUComputePipeline {
42+
#[constructor]
43+
#[cppgc]
44+
fn constructor(_: bool) -> Result<GPUComputePipeline, GPUGenericError> {
45+
Err(GPUGenericError::InvalidConstructor)
46+
}
47+
4148
#[getter]
4249
#[string]
4350
fn label(&self) -> String {

deno_webgpu/device.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use crate::adapter::GPUAdapterInfo;
3030
use crate::adapter::GPUSupportedFeatures;
3131
use crate::adapter::GPUSupportedLimits;
3232
use crate::command_encoder::GPUCommandEncoder;
33-
use crate::error::GPUError;
33+
use crate::error::{GPUError, GPUGenericError};
3434
use crate::query_set::GPUQuerySet;
3535
use crate::render_bundle::GPURenderBundleEncoder;
3636
use crate::render_pipeline::GPURenderPipeline;
@@ -75,6 +75,12 @@ impl GarbageCollected for GPUDevice {
7575
// EventTarget is extended in JS
7676
#[op2]
7777
impl GPUDevice {
78+
#[constructor]
79+
#[cppgc]
80+
fn constructor(_: bool) -> Result<GPUDevice, GPUGenericError> {
81+
Err(GPUGenericError::InvalidConstructor)
82+
}
83+
7884
#[getter]
7985
#[string]
8086
fn label(&self) -> String {
@@ -909,6 +915,12 @@ impl GarbageCollected for GPUDeviceLostInfo {
909915

910916
#[op2]
911917
impl GPUDeviceLostInfo {
918+
#[constructor]
919+
#[cppgc]
920+
fn constructor(_: bool) -> Result<GPUDeviceLostInfo, GPUGenericError> {
921+
Err(GPUGenericError::InvalidConstructor)
922+
}
923+
912924
#[getter]
913925
#[string]
914926
fn reason(&self) -> &'static str {

deno_webgpu/error.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -372,3 +372,10 @@ impl From<ConfigureSurfaceError> for GPUError {
372372
GPUError::from_webgpu(err)
373373
}
374374
}
375+
376+
#[derive(Debug, thiserror::Error, deno_error::JsError)]
377+
pub enum GPUGenericError {
378+
#[class(type)]
379+
#[error("Illegal constructor")]
380+
InvalidConstructor,
381+
}

0 commit comments

Comments
 (0)