/*
AbstractClassName
format = (default)^Abstract.+$
ignoreModifier = (default)false
ignoreName = (default)false


*/

package com.puppycrawl.tools.checkstyle.checks.naming.abstractclassname;

// violation below 'Name 'InputAbstractClassNameVariants' must match pattern '\^Abstract\.\+\$'.'
abstract public class InputAbstractClassNameVariants {
}

// violation below 'Name 'NonAbstractClassNameVa' must match pattern '\^Abstract\.\+\$'.'
abstract class NonAbstractClassNameVa {
}

abstract class AbstractClassOtherVa { // ok
    // violation below 'Name 'NonAbstractInnerClassVa' must match pattern '\^Abstract\.\+\$'.'
    abstract class NonAbstractInnerClassVa {
    }
}

class NonAbstractClassVa {
}


class AbstractClassVa { // violation 'Class 'AbstractClassVa' must be declared as 'abstract'.'
}

abstract class AbstractClassName2Va { // ok
    // violation below 'Class 'AbstractInnerClassVa' must be declared as 'abstract'.'
    class AbstractInnerClassVa {
    }
}
