package com.puppycrawl.tools.checkstyle.checks.coding; public class InputClone {/* class body */ public InputClone() throws CloneNotSupportedException { //constructor body super.equals(new String()); super.clone(); } public Object clone() throws CloneNotSupportedException { return super.clone(); } public void method() throws CloneNotSupportedException { super.clone(); } { super.clone(); } } class NoSuperClone { public Object clone() { return null; } } class InnerClone { public Object clone() { class Inner { public Object clone() throws CloneNotSupportedException { return super.clone(); } } return null; } } // This could not pass as valid semantically but tests that // type arguments are ignored when checking super calls class CloneWithTypeArguments<T> extends CloneWithTypeArgumentsAndNoSuper<T> { public CloneWithTypeArguments<T> clone() throws CloneNotSupportedException { return (CloneWithTypeArguments<T>) super.<T>clone(); } } class CloneWithTypeArgumentsAndNoSuper<T> { public CloneWithTypeArgumentsAndNoSuper<T> clone() throws CloneNotSupportedException { return null; } } //Check that super keword isn't snagged here class MyClassWithGenericSuperMethod { void someMethod(java.util.List<? super java.util.Map<Object, Object>> l) { } /** * Not a valid clone override. Should not get flagged. * @param o some object * @return a cloned Object? */ public static Object clone(Object o) { return null; } } class AnotherClass { /** * Not a valid clone override. Should not get flagged. * @param t some type * @param <T> a type * @return a cloned type? */ public <T> T clone(T t) { return null; } } class NativeTest { public native Object clone(); }