Skip to content

Commit

Permalink
Extract common visitors used by tests
Browse files Browse the repository at this point in the history
  • Loading branch information
dtolnay committed Dec 29, 2024
1 parent 8d1ca56 commit 3cfb0e7
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 58 deletions.
1 change: 1 addition & 0 deletions tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@

pub mod eq;
pub mod parse;
pub mod visit;
45 changes: 45 additions & 0 deletions tests/common/visit.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
use std::mem;
use syn::visit_mut::{self, VisitMut};
use syn::{Expr, Generics, LifetimeParam, TypeParam};

pub struct FlattenParens;

impl VisitMut for FlattenParens {
fn visit_expr_mut(&mut self, e: &mut Expr) {
while let Expr::Paren(paren) = e {
*e = mem::replace(&mut *paren.expr, Expr::PLACEHOLDER);
}
visit_mut::visit_expr_mut(self, e);
}
}

pub struct AsIfPrinted;

impl VisitMut for AsIfPrinted {
fn visit_generics_mut(&mut self, generics: &mut Generics) {
if generics.params.is_empty() {
generics.lt_token = None;
generics.gt_token = None;
}
if let Some(where_clause) = &generics.where_clause {
if where_clause.predicates.is_empty() {
generics.where_clause = None;
}
}
visit_mut::visit_generics_mut(self, generics);
}

fn visit_lifetime_param_mut(&mut self, param: &mut LifetimeParam) {
if param.bounds.is_empty() {
param.colon_token = None;
}
visit_mut::visit_lifetime_param_mut(self, param);
}

fn visit_type_param_mut(&mut self, param: &mut TypeParam) {
if param.bounds.is_empty() {
param.colon_token = None;
}
visit_mut::visit_type_param_mut(self, param);
}
}
20 changes: 7 additions & 13 deletions tests/test_expr.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#![cfg(not(miri))]
#![recursion_limit = "1024"]
#![feature(rustc_private)]
#![allow(
clippy::match_like_matches_macro,
clippy::needless_lifetimes,
clippy::single_element_loop,
clippy::too_many_lines,
Expand All @@ -10,12 +13,14 @@
#[macro_use]
mod macros;

mod common;

use crate::common::visit::FlattenParens;
use proc_macro2::{Delimiter, Group, Span};
use quote::{quote, ToTokens as _};
use std::mem;
use std::process::ExitCode;
use syn::punctuated::Punctuated;
use syn::visit_mut::{self, VisitMut};
use syn::visit_mut::VisitMut as _;
use syn::{
parse_quote, token, Arm, BinOp, Block, Expr, ExprAssign, ExprAwait, ExprBinary, ExprBlock,
ExprBreak, ExprCall, ExprCast, ExprClosure, ExprField, ExprForLoop, ExprIf, ExprIndex,
Expand Down Expand Up @@ -675,17 +680,6 @@ fn test_chained_comparison() {

#[test]
fn test_fixup() {
struct FlattenParens;

impl VisitMut for FlattenParens {
fn visit_expr_mut(&mut self, e: &mut Expr) {
while let Expr::Paren(paren) = e {
*e = mem::replace(&mut *paren.expr, Expr::PLACEHOLDER);
}
visit_mut::visit_expr_mut(self, e);
}
}

for tokens in [
quote! { 2 * (1 + 1) },
quote! { 0 + (0 + 0) },
Expand Down
51 changes: 6 additions & 45 deletions tests/test_unparenthesize.rs
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
#![cfg(not(miri))]
#![recursion_limit = "1024"]
#![feature(rustc_private)]
#![allow(
clippy::manual_assert,
clippy::match_like_matches_macro,
clippy::needless_lifetimes,
clippy::uninlined_format_args
)]

use crate::common::visit::{AsIfPrinted, FlattenParens};
use quote::ToTokens as _;
use std::fs;
use std::mem;
use std::panic;
use std::path::Path;
use std::sync::atomic::{AtomicUsize, Ordering};
use syn::visit_mut::{self, VisitMut};
use syn::{Expr, Generics, LifetimeParam, TypeParam};
use syn::visit_mut::VisitMut as _;

#[macro_use]
mod macros;

mod common;
mod repo;

#[test]
Expand All @@ -34,48 +37,6 @@ fn test_unparenthesize() {
}
}

struct FlattenParens;

impl VisitMut for FlattenParens {
fn visit_expr_mut(&mut self, e: &mut Expr) {
while let Expr::Paren(paren) = e {
*e = mem::replace(&mut *paren.expr, Expr::PLACEHOLDER);
}
visit_mut::visit_expr_mut(self, e);
}
}

struct AsIfPrinted;

impl VisitMut for AsIfPrinted {
fn visit_generics_mut(&mut self, generics: &mut Generics) {
if generics.params.is_empty() {
generics.lt_token = None;
generics.gt_token = None;
}
if let Some(where_clause) = &generics.where_clause {
if where_clause.predicates.is_empty() {
generics.where_clause = None;
}
}
visit_mut::visit_generics_mut(self, generics);
}

fn visit_lifetime_param_mut(&mut self, param: &mut LifetimeParam) {
if param.bounds.is_empty() {
param.colon_token = None;
}
visit_mut::visit_lifetime_param_mut(self, param);
}

fn visit_type_param_mut(&mut self, param: &mut TypeParam) {
if param.bounds.is_empty() {
param.colon_token = None;
}
visit_mut::visit_type_param_mut(self, param);
}
}

fn test(path: &Path, failed: &AtomicUsize) {
let content = fs::read_to_string(path).unwrap();

Expand Down

0 comments on commit 3cfb0e7

Please sign in to comment.