From 6e4401ae964e88a506590cc05049463b96343eec Mon Sep 17 00:00:00 2001 From: Jim Blandy Date: Fri, 24 Sep 2021 01:25:08 -0700 Subject: [PATCH] Rename `UniqueArena` methods to more closely resemble `HashSet`. `UniqueArena::fetch_or_append` becomes `insert`. `UniqueArena::try_get` becomes `get_handle`, by analogy with `get`, that takes a type as a key. --- src/arena.rs | 4 ++-- src/front/glsl/builtins.rs | 6 +++--- src/front/glsl/constants.rs | 10 +++++----- src/front/glsl/context.rs | 4 ++-- src/front/glsl/functions.rs | 8 ++++---- src/front/glsl/offset.rs | 4 ++-- src/front/glsl/parser/declarations.rs | 2 +- src/front/glsl/parser/expressions.rs | 2 +- src/front/glsl/parser/types.rs | 4 ++-- src/front/glsl/types.rs | 2 +- src/front/glsl/variables.rs | 4 ++-- src/front/spv/function.rs | 2 +- src/front/spv/image.rs | 2 +- src/front/spv/mod.rs | 28 +++++++++++++-------------- src/front/wgsl/mod.rs | 20 +++++++++---------- src/valid/analyzer.rs | 2 +- src/valid/compose.rs | 2 +- src/valid/expression.rs | 2 +- 18 files changed, 53 insertions(+), 55 deletions(-) diff --git a/src/arena.rs b/src/arena.rs index ed1aa3e0b7..5e1c65cf7b 100644 --- a/src/arena.rs +++ b/src/arena.rs @@ -476,7 +476,7 @@ impl UniqueArena { /// /// [`Handle`]: Handle /// [`get_span`]: UniqueArena::get_span - pub fn fetch_or_append(&mut self, value: T, span: Span) -> Handle { + pub fn insert(&mut self, value: T, span: Span) -> Handle { let (index, added) = self.set.insert_full(value); #[cfg(feature = "span")] @@ -503,7 +503,7 @@ impl UniqueArena { } /// Return this arena's value at `handle`, if that is a valid handle. - pub fn try_get(&self, handle: Handle) -> Option<&T> { + pub fn get_handle(&self, handle: Handle) -> Option<&T> { self.set.get_index(handle.index()) } } diff --git a/src/front/glsl/builtins.rs b/src/front/glsl/builtins.rs index 0c65d5f15f..ed678538c1 100644 --- a/src/front/glsl/builtins.rs +++ b/src/front/glsl/builtins.rs @@ -16,7 +16,7 @@ impl Module { let mut parameters_info = Vec::with_capacity(args.len()); for arg in args { - parameters.push(self.types.fetch_or_append( + parameters.push(self.types.insert( Type { name: None, inner: arg, @@ -1224,7 +1224,7 @@ fn inject_common_builtin( _ => Some(VectorSize::Quad), }; - let ty = module.types.fetch_or_append( + let ty = module.types.insert( Type { name: None, inner: match size { @@ -1937,7 +1937,7 @@ pub fn sampled_to_depth( arrayed, } => match class { ImageClass::Sampled { multi, .. } => { - *ty = module.types.fetch_or_append( + *ty = module.types.insert( Type { name: None, inner: TypeInner::Image { diff --git a/src/front/glsl/constants.rs b/src/front/glsl/constants.rs index 1584e9b526..e0cce72470 100644 --- a/src/front/glsl/constants.rs +++ b/src/front/glsl/constants.rs @@ -83,7 +83,7 @@ impl<'a> ConstantSolver<'a> { let ty = match self.constants[value_constant].inner { ConstantInner::Scalar { ref value, width } => { let kind = value.scalar_kind(); - self.types.fetch_or_append( + self.types.insert( Type { name: None, inner: TypeInner::Vector { size, kind, width }, @@ -127,7 +127,7 @@ impl<'a> ConstantSolver<'a> { kind, width, } => { - let dst_ty = self.types.fetch_or_append( + let dst_ty = self.types.insert( Type { name: None, inner: crate::TypeInner::Vector { size, kind, width }, @@ -542,7 +542,7 @@ mod tests { let mut expressions = Arena::new(); let mut constants = Arena::new(); - let vec_ty = types.fetch_or_append( + let vec_ty = types.insert( Type { name: None, inner: TypeInner::Vector { @@ -720,7 +720,7 @@ mod tests { let mut expressions = Arena::new(); let mut constants = Arena::new(); - let matrix_ty = types.fetch_or_append( + let matrix_ty = types.insert( Type { name: None, inner: TypeInner::Matrix { @@ -732,7 +732,7 @@ mod tests { Default::default(), ); - let vec_ty = types.fetch_or_append( + let vec_ty = types.insert( Type { name: None, inner: TypeInner::Vector { diff --git a/src/front/glsl/context.rs b/src/front/glsl/context.rs index d6dfa27382..dcbac22768 100644 --- a/src/front/glsl/context.rs +++ b/src/front/glsl/context.rs @@ -257,7 +257,7 @@ impl Context { if qualifier.is_lhs() { let span = parser.module.types.get_span(arg.ty); - arg.ty = parser.module.types.fetch_or_append( + arg.ty = parser.module.types.insert( Type { name: None, inner: TypeInner::Pointer { @@ -818,7 +818,7 @@ impl Context { self.add_expression(Expression::Splat { size, value: right }, meta, body); if let Some(cols) = columns { - let ty = parser.module.types.fetch_or_append( + let ty = parser.module.types.insert( Type { name: None, inner: ty_inner, diff --git a/src/front/glsl/functions.rs b/src/front/glsl/functions.rs index e46ababac1..1b84a10bb6 100644 --- a/src/front/glsl/functions.rs +++ b/src/front/glsl/functions.rs @@ -149,7 +149,7 @@ impl Parser { // value is used to initialize all the values along the diagonal of // the matrix; the rest are given zeros. let mut components = Vec::with_capacity(columns as usize); - let vector_ty = self.module.types.fetch_or_append( + let vector_ty = self.module.types.insert( Type { name: None, inner: TypeInner::Vector { @@ -296,7 +296,7 @@ impl Parser { } } - let ty = self.module.types.fetch_or_append( + let ty = self.module.types.insert( Type { name: None, inner: TypeInner::Vector { @@ -555,7 +555,7 @@ impl Parser { if let TypeInner::Vector { size, kind, width } = *self.resolve_type(ctx, handle, meta)? { - let ty = self.module.types.fetch_or_append( + let ty = self.module.types.insert( Type { name: None, inner: TypeInner::Vector { size, kind, width }, @@ -900,7 +900,7 @@ impl Parser { } let (ty, value) = if !components.is_empty() { - let ty = self.module.types.fetch_or_append( + let ty = self.module.types.insert( Type { name: None, inner: TypeInner::Struct { diff --git a/src/front/glsl/offset.rs b/src/front/glsl/offset.rs index 01c2edd15e..7a7b5e2f6e 100644 --- a/src/front/glsl/offset.rs +++ b/src/front/glsl/offset.rs @@ -85,7 +85,7 @@ pub fn calculate_offset( }; let ty_span = types.get_span(ty); - ty = types.fetch_or_append( + ty = types.insert( Type { name, inner: TypeInner::Array { @@ -145,7 +145,7 @@ pub fn calculate_offset( span = align_up(span, align); let ty_span = types.get_span(ty); - ty = types.fetch_or_append( + ty = types.insert( Type { name, inner: TypeInner::Struct { diff --git a/src/front/glsl/parser/declarations.rs b/src/front/glsl/parser/declarations.rs index 8ef71ef284..2cb4f43e0f 100644 --- a/src/front/glsl/parser/declarations.rs +++ b/src/front/glsl/parser/declarations.rs @@ -497,7 +497,7 @@ impl<'source> ParsingContext<'source> { let span = self.parse_struct_declaration_list(parser, &mut members, layout)?; self.expect(parser, TokenValue::RightBrace)?; - let mut ty = parser.module.types.fetch_or_append( + let mut ty = parser.module.types.insert( Type { name: Some(ty_name), inner: TypeInner::Struct { diff --git a/src/front/glsl/parser/expressions.rs b/src/front/glsl/parser/expressions.rs index 51acb05947..3f1d0fd398 100644 --- a/src/front/glsl/parser/expressions.rs +++ b/src/front/glsl/parser/expressions.rs @@ -147,7 +147,7 @@ impl<'source> ParsingContext<'source> { }, Span::default(), ); - handle = parser.module.types.fetch_or_append( + handle = parser.module.types.insert( Type { name: None, inner: TypeInner::Array { diff --git a/src/front/glsl/parser/types.rs b/src/front/glsl/parser/types.rs index 3dc00c33fd..fe6ed3b961 100644 --- a/src/front/glsl/parser/types.rs +++ b/src/front/glsl/parser/types.rs @@ -37,7 +37,7 @@ impl<'source> ParsingContext<'source> { let token = self.bump(parser)?; let handle = match token.value { TokenValue::Void => None, - TokenValue::TypeName(ty) => Some(parser.module.types.fetch_or_append(ty, token.meta)), + TokenValue::TypeName(ty) => Some(parser.module.types.insert(ty, token.meta)), TokenValue::Struct => { let mut meta = token.meta; let ty_name = self.expect_ident(parser)?.0; @@ -47,7 +47,7 @@ impl<'source> ParsingContext<'source> { self.parse_struct_declaration_list(parser, &mut members, StructLayout::Std140)?; let end_meta = self.expect(parser, TokenValue::RightBrace)?.meta; meta.subsume(end_meta); - let ty = parser.module.types.fetch_or_append( + let ty = parser.module.types.insert( Type { name: Some(ty_name.clone()), inner: TypeInner::Struct { diff --git a/src/front/glsl/types.rs b/src/front/glsl/types.rs index dd0942db9c..e008ec3822 100644 --- a/src/front/glsl/types.rs +++ b/src/front/glsl/types.rs @@ -262,7 +262,7 @@ impl Parser { array_specifier .map(|(size, size_meta)| { meta.subsume(size_meta); - self.module.types.fetch_or_append( + self.module.types.insert( Type { name: None, inner: TypeInner::Array { diff --git a/src/front/glsl/variables.rs b/src/front/glsl/variables.rs index 6d82a40a9e..d4043c033f 100644 --- a/src/front/glsl/variables.rs +++ b/src/front/glsl/variables.rs @@ -58,7 +58,7 @@ impl Parser { data: BuiltInData, meta: Span, ) -> Option { - let ty = self.module.types.fetch_or_append( + let ty = self.module.types.insert( Type { name: None, inner: data.inner, @@ -188,7 +188,7 @@ impl Parser { storage: StorageQualifier::Output, }, "gl_ClipDistance" | "gl_CullDistance" => { - let base = self.module.types.fetch_or_append( + let base = self.module.types.insert( Type { name: None, inner: TypeInner::Scalar { diff --git a/src/front/spv/function.rs b/src/front/spv/function.rs index 0c45aca718..04b67dd06a 100644 --- a/src/front/spv/function.rs +++ b/src/front/spv/function.rs @@ -477,7 +477,7 @@ impl> super::Parser { let span = crate::Span::total_span( components.iter().map(|h| function.expressions.get_span(*h)), ); - let ty = module.types.fetch_or_append( + let ty = module.types.insert( crate::Type { name: None, inner: crate::TypeInner::Struct { diff --git a/src/front/spv/image.rs b/src/front/spv/image.rs index c58fe370f5..48b38f6583 100644 --- a/src/front/spv/image.rs +++ b/src/front/spv/image.rs @@ -211,7 +211,7 @@ pub(super) fn patch_comparison_type( }; let name = original_ty.name.clone(); - var.ty = arena.fetch_or_append( + var.ty = arena.insert( crate::Type { name, inner: ty_inner, diff --git a/src/front/spv/mod.rs b/src/front/spv/mod.rs index 09c5103b20..8301f22299 100644 --- a/src/front/spv/mod.rs +++ b/src/front/spv/mod.rs @@ -3388,7 +3388,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: self.future_decor.remove(&id).and_then(|dec| dec.name), inner, @@ -3423,7 +3423,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: self.future_decor.remove(&id).and_then(|dec| dec.name), inner, @@ -3453,7 +3453,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: self.future_decor.remove(&id).and_then(|dec| dec.name), inner, @@ -3490,7 +3490,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: self.future_decor.remove(&id).and_then(|dec| dec.name), inner, @@ -3529,7 +3529,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: decor.and_then(|dec| dec.name), inner, @@ -3593,7 +3593,7 @@ impl> Parser { base_lookup_ty.clone() } else { LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: decor.and_then(|dec| dec.name), inner: crate::TypeInner::Pointer { @@ -3636,7 +3636,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: decor.name, inner, @@ -3673,7 +3673,7 @@ impl> Parser { self.lookup_type.insert( id, LookupType { - handle: module.types.fetch_or_append( + handle: module.types.insert( crate::Type { name: decor.name, inner, @@ -3777,7 +3777,7 @@ impl> Parser { members, }; - let ty_handle = module.types.fetch_or_append( + let ty_handle = module.types.insert( crate::Type { name: parent_decor.and_then(|dec| dec.name), inner, @@ -3825,7 +3825,7 @@ impl> Parser { let decor = self.future_decor.remove(&id).unwrap_or_default(); // ensure there is a type for texture coordinate without extra components - module.types.fetch_or_append( + module.types.insert( crate::Type { name: None, inner: { @@ -3862,7 +3862,7 @@ impl> Parser { arrayed: is_array, }; - let handle = module.types.fetch_or_append( + let handle = module.types.insert( crate::Type { name: decor.name, inner, @@ -3905,7 +3905,7 @@ impl> Parser { inst.expect(2)?; let id = self.next()?; let decor = self.future_decor.remove(&id).unwrap_or_default(); - let handle = module.types.fetch_or_append( + let handle = module.types.insert( crate::Type { name: decor.name, inner: crate::TypeInner::Sampler { comparison: false }, @@ -4151,7 +4151,7 @@ impl> Parser { class: crate::ImageClass::Storage { format, access }, }, }; - effective_ty = module.types.fetch_or_append(ty, Default::default()); + effective_ty = module.types.insert(ty, Default::default()); } let ext_class = match self.lookup_storage_buffer_types.get(&effective_ty) { @@ -4215,7 +4215,7 @@ impl> Parser { ) { unsigned_ty = module .types - .fetch_or_append(crate::Type { name: None, inner }, Default::default()); + .insert(crate::Type { name: None, inner }, Default::default()); } } diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index b665ce1e1a..6b13942a14 100644 --- a/src/front/wgsl/mod.rs +++ b/src/front/wgsl/mod.rs @@ -602,7 +602,7 @@ mod type_inner_tests { Default::default(), ); - let mytype1 = types.fetch_or_append( + let mytype1 = types.insert( crate::Type { name: Some("MyType1".to_string()), inner: crate::TypeInner::Struct { @@ -613,7 +613,7 @@ mod type_inner_tests { }, Default::default(), ); - let mytype2 = types.fetch_or_append( + let mytype2 = types.insert( crate::Type { name: Some("MyType2".to_string()), inner: crate::TypeInner::Struct { @@ -1982,7 +1982,7 @@ impl Parser { TypeResolution::Handle(handle) => handle, TypeResolution::Value(inner) => ctx .types - .fetch_or_append(crate::Type { name: None, inner }, Default::default()), + .insert(crate::Type { name: None, inner }, Default::default()), }; components.push(last_component); crate::Expression::Compose { ty, components } @@ -3047,7 +3047,7 @@ impl Parser { match self.parse_type_decl_impl(lexer, attribute, name, type_arena, const_arena)? { Some(inner) => { let span = name_span.start..lexer.current_byte_offset(); - type_arena.fetch_or_append( + type_arena.insert( crate::Type { name: debug_name.map(|s| s.to_string()), inner, @@ -3308,12 +3308,10 @@ impl Parser { // register the type, if needed match context.typifier[value].clone() { TypeResolution::Handle(ty) => ty, - TypeResolution::Value(inner) => { - context.types.fetch_or_append( - crate::Type { name: None, inner }, - Default::default(), - ) - } + TypeResolution::Value(inner) => context.types.insert( + crate::Type { name: None, inner }, + Default::default(), + ), } } }; @@ -4004,7 +4002,7 @@ impl Parser { let (members, span) = self.parse_struct_body(lexer, &mut module.types, &mut module.constants)?; let type_span = NagaSpan::from(lexer.span_from(start)); - let ty = module.types.fetch_or_append( + let ty = module.types.insert( crate::Type { name: Some(name.to_string()), inner: crate::TypeInner::Struct { diff --git a/src/valid/analyzer.rs b/src/valid/analyzer.rs index 3045defef3..1526856d0f 100644 --- a/src/valid/analyzer.rs +++ b/src/valid/analyzer.rs @@ -870,7 +870,7 @@ fn uniform_control_flow() { Default::default(), ); let mut type_arena = crate::UniqueArena::new(); - let ty = type_arena.fetch_or_append( + let ty = type_arena.insert( crate::Type { name: None, inner: crate::TypeInner::Vector { diff --git a/src/valid/compose.rs b/src/valid/compose.rs index 378f22faa3..9f3aa82424 100644 --- a/src/valid/compose.rs +++ b/src/valid/compose.rs @@ -25,7 +25,7 @@ pub fn validate_compose( use crate::TypeInner as Ti; let self_ty = type_arena - .try_get(self_ty_handle) + .get_handle(self_ty_handle) .ok_or(ComposeError::TypeDoesntExist(self_ty_handle))?; match self_ty.inner { // vectors are composed from scalars or other vectors diff --git a/src/valid/expression.rs b/src/valid/expression.rs index 56a464f9c5..547cef2b98 100644 --- a/src/valid/expression.rs +++ b/src/valid/expression.rs @@ -1224,7 +1224,7 @@ impl super::Validator { if let Some(&Ti::Array { size: crate::ArraySize::Dynamic, .. - }) = resolver.types.try_get(base).map(|ty| &ty.inner) + }) = resolver.types.get_handle(base).map(|ty| &ty.inner) { ShaderStages::all() } else {