fn make_attributized_specifier(&mut self, attributes: Self::R, hint: Self::R) -> Self::R {
        match attributes {
            Node::BracketedList((
                ltlt_pos,
                [Node::Attribute(UserAttributeNode {
                    name: Id(_, "__Soft"),
                    ..
                })],
                gtgt_pos,
            )) => {
                let attributes_pos = self.merge(*ltlt_pos, *gtgt_pos);
                let hint_pos = self.get_pos(hint);
                // Use the type of the hint as-is (i.e., throw away the
                // knowledge that we had a soft type specifier here--the
                // typechecker does not use it). Replace its Reason with one
                // including the position of the attribute list.
                let hint = match self.node_to_ty(hint) {
                    Some(ty) => ty,
                    None => return Node::Ignored(SK::AttributizedSpecifier),
                };
                self.hint_ty(self.merge(attributes_pos, hint_pos), *hint.1)
            }
            _ => hint,
        }
    }
// A type specifier preceded by an attribute list. At the time of writing,
// only the <<__Soft>> attribute is permitted here.
A type specifier preceded by an attribute list. At the time of writing,
only the <<__Soft>> attribute is permitted here.
A type specifier preceded by an attribute list . At the time of writing only the <<__Soft >> attribute is permitted here .
fn make_attributized_specifier(&mut self, attributes: Self::R, hint: Self::R) -> Self::R {
        match attributes {
            Node::BracketedList((
                ltlt_pos,
                [Node::Attribute(UserAttributeNode {
                    name: Id(_, "__Soft"),
                    ..
                })],
                gtgt_pos,
            )) => {
                let attributes_pos = self.merge(*ltlt_pos, *gtgt_pos);
                let hint_pos = self.get_pos(hint);
                // Use the type of the hint as-is (i.e., throw away the
                // knowledge that we had a soft type specifier here--the
                // typechecker does not use it). Replace its Reason with one
                // including the position of the attribute list.
                let hint = match self.node_to_ty(hint) {
                    Some(ty) => ty,
                    None => return Node::Ignored(SK::AttributizedSpecifier),
                };
                self.hint_ty(self.merge(attributes_pos, hint_pos), *hint.1)
            }
            _ => hint,
        }
    }
fn make_attributized_specifier ( & mut self , attributes : Self :: R , hint : Self :: R ) -> Self :: R { match attributes { Node :: BracketedList ( ( ltlt_pos , [ Node :: Attribute ( UserAttributeNode { name : Id ( _ , " " ) , .. } ) ] , gtgt_pos , ) ) => { let attributes_pos = self . merge ( * ltlt_pos , * gtgt_pos ) ; let hint_pos = self . get_pos ( hint ) ; // Use the type of the hint as-is (i.e., throw away the // knowledge that we had a soft type specifier here--the // typechecker does not use it). Replace its Reason with one // including the position of the attribute list. let hint = match self . node_to_ty ( hint ) { Some ( ty ) => ty , None => return Node :: Ignored ( SK :: AttributizedSpecifier ) , } ; self . hint_ty ( self . merge ( attributes_pos , hint_pos ) , * hint . 1 ) } _ => hint , } }
A type specifier preceded by an attribute list.
A type specifier preceded by an attribute list .
&mut self
attributes
Self::R
hint
Self::R