#![allow(dead_code)]
struct Account;
mod token {
pub static ID: [u8; 1] = [1];
}
mod token_2022 {
pub static ID: [u8; 1] = [2];
}
impl Account {
fn as_token_mint_for_program(&self, _program: &[u8]) -> Result<(), ()> {
Ok(())
}
fn assert_associated_token_address(
&self,
_owner: &[u8],
_mint: &[u8],
_program: &[u8],
) -> Result<(), ()> {
Ok(())
}
}
fn process(
mint: &Account,
vault: &Account,
owner: &[u8],
program: &[u8],
other_program: &[u8],
) -> Result<(), ()> {
mint.as_token_mint_for_program(program)?;
vault.assert_associated_token_address(owner, owner, other_program)
}
fn process_mixed_constants(mint: &Account, vault: &Account, owner: &[u8]) -> Result<(), ()> {
mint.as_token_mint_for_program(&token::ID)?;
vault.assert_associated_token_address(owner, owner, &token_2022::ID)
}
fn process_equivalent_aliases(
mint: &Account,
vault: &Account,
owner: &[u8],
program: &[u8],
) -> Result<(), ()> {
let parsing_program = program;
let cpi_program = parsing_program;
mint.as_token_mint_for_program(parsing_program)?;
vault.assert_associated_token_address(owner, owner, cpi_program)
}
fn process_shadowed_program(
mint: &Account,
vault: &Account,
owner: &[u8],
program: &[u8],
) -> Result<(), ()> {
mint.as_token_mint_for_program(program)?;
let program = &token_2022::ID;
vault.assert_associated_token_address(owner, owner, program)
}
fn process_reassigned(
mint: &Account,
vault: &Account,
owner: &[u8],
mut program: &[u8],
) -> Result<(), ()> {
mint.as_token_mint_for_program(program)?;
program = &token_2022::ID;
vault.assert_associated_token_address(owner, owner, program)
}
fn main() {}