/*
* Copyright 2012 Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License
* is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
* or implied. See the License for the specific language governing permissions and limitations under
* the License.
*/
package com.google.errorprone.bugpatterns.testdata;
/**
* @author cushon@google.com (Liam Miller-Cushon)
*/
public class OverridesNegativeCase1 {
abstract class Base {
abstract void varargsMethod(Object... xs);
abstract void arrayMethod(Object[] xs);
}
abstract class Child1 extends Base {
@Override
abstract void varargsMethod(final Object... newNames);
}
abstract class Child2 extends Base {
@Override
abstract void arrayMethod(Object[] xs);
}
static class StaticClass {
static void staticVarargsMethod(Object... xs) {
}
static void staticArrayMethod(Object[] xs) {
}
}
interface Interface {
void varargsMethod(Object... xs);
void arrayMethod(Object[] xs);
}
abstract class ImplementsInterface implements Interface {
public abstract void varargsMethod(Object... xs);
public abstract void arrayMethod(Object[] xs);
}
}
// Varargs methods might end up overriding synthetic (e.g. bridge) methods, which will have already
// been lowered into a non-varargs form. Test that we don't report errors when a varargs method
// overrides a synthetic non-varargs method:
abstract class One {
static class Builder {
Builder varargsMethod(String... args) {
return this;
}
}
}
class Two extends One {
static class Builder extends One.Builder {
@Override
public Builder varargsMethod(String... args) {
super.varargsMethod(args);
return this;
}
}
}
class Three extends Two {
static class Builder extends Two.Builder {
@Override
public Builder varargsMethod(String... args) {
super.varargsMethod(args);
return this;
}
}
}