<commit_before>/**
 * Implements the CFML Function listcontains
 */
package railo.runtime.functions.arrays;

import railo.runtime.PageContext;
import railo.runtime.exp.FunctionException;
import railo.runtime.exp.PageException;
import railo.runtime.functions.BIF;
import railo.runtime.op.Caster;
import railo.runtime.op.Decision;
import railo.runtime.type.Array;
import railo.runtime.type.util.ArrayUtil;

public final class ArrayContains extends BIF {
	
	private static final long serialVersionUID = -5400552848978801342L;

	public static double call(PageContext pc, Array array, Object value, boolean substringMatch) throws PageException {

        if ( substringMatch ) {

            if ( !Decision.isSimpleValue( value ) )
                throw new FunctionException( pc, "ArrayContains", 3, "substringMatch", "substringMatch can not be true when the value that is searched for is a complex object" );

            return callLegacy( pc, array, value );
        }

        return ArrayFind.call( pc, array, value );
	}

    public static double call(PageContext pc , Array array, Object value) throws PageException {

        return call( pc, array, value, false );
    }

	@Override
	public Object invoke(PageContext pc, Object[] args) throws PageException {

        if ( args.length > 2 && Decision.isBoolean( args[2] ) )
    		return call( pc, Caster.toArray(args[0]),args[1], Caster.toBoolean( args[2] ) );

        return call(pc,Caster.toArray(args[0]),args[1]);
	}


    /** legacy implementation */
    static double callLegacy(PageContext pc, Array array, Object value) throws PageException {
        String str=Caster.toString(value,null);
        if(str!=null)
            return ArrayUtil.arrayContainsIgnoreEmpty(array,str,false)+1;
        return ArrayFind.call(pc, array, value);
    }

}<commit_msg>a non boolean 3th parameter should not be ignored, it should throw a cast exception<commit_after>/**
 * Implements the CFML Function listcontains
 */
package railo.runtime.functions.arrays;

import railo.runtime.PageContext;
import railo.runtime.exp.FunctionException;
import railo.runtime.exp.PageException;
import railo.runtime.functions.BIF;
import railo.runtime.op.Caster;
import railo.runtime.op.Decision;
import railo.runtime.type.Array;
import railo.runtime.type.util.ArrayUtil;

public final class ArrayContains extends BIF {
	
	private static final long serialVersionUID = -5400552848978801342L;

	public static double call(PageContext pc, Array array, Object value, boolean substringMatch) throws PageException {
        if (substringMatch) {
            if (!Decision.isSimpleValue(value))
                throw new FunctionException( pc, "ArrayContains", 3, "substringMatch", "substringMatch can not be true when the value that is searched for is a complex object" );
            return callLegacy( pc, array, value );
        }
        return ArrayFind.call( pc, array, value );
	}

    public static double call(PageContext pc , Array array, Object value) throws PageException {
        return call( pc, array, value, false );
    }

	@Override
	public Object invoke(PageContext pc, Object[] args) throws PageException {
        if ( args.length > 2)
    		return call( pc, Caster.toArray(args[0]),args[1], Caster.toBoolean( args[2] ) );
        return call(pc,Caster.toArray(args[0]),args[1]);
	}


    /* legacy implementation */
    static double callLegacy(PageContext pc, Array array, Object value) throws PageException {
        String str=Caster.toString(value,null);
        if(str!=null)
            return ArrayUtil.arrayContainsIgnoreEmpty(array,str,false)+1;
        return ArrayFind.call(pc, array, value);
    }

}
{'fraction_non_alphanumeric': 0.09967231021299836, 'fraction_numerical': 0.015292190060076462, 'mean_word_length': 3.6367088607594935, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1567845', 'n_tokens_mistral': 1076, 'n_tokens_neox': 1021, 'n_words': 305}