test/com/google/javascript/jscomp/TypeCheckTest.java
/**
   * Verify that using @override to declare the signature for an implementing class works correctly
   * when the interface is generic.
   */
Verify that using @override to declare the signature for an implementing class works correctly
when the interface is generic.
Verify that using @override to declare the signature for an implementing class works correctly when the interface is generic .
@Test
  public void testInterfaceInheritanceCheck16() {
    testTypes(
        "/** @interface\n @template T */function A() {};" +
        "/** @return {T} */A.prototype.foo = function() {};" +
        "/** @return {T} */A.prototype.bar = function() {};" +
        "/** @constructor\n @implements {A<string>} */function B() {};" +
        "/** @override */B.prototype.foo = function() { return 'string'};" +
        "/** @override */B.prototype.bar = function() { return 3 };",
        "inconsistent return type\n" +
        "found   : number\n" +
        "required: string");
  }
@ Test public void testInterfaceInheritanceCheck16 ( ) { testTypes ( "/** @interface\n @template T */function A() {};" + "/** @return {T} */A.prototype.foo = function() {};" + "/** @return {T} */A.prototype.bar = function() {};" + "/** @constructor\n @implements {A<string>} */function B() {};" + "/** @override */B.prototype.foo = function() { return 'string'};" + "/** @override */B.prototype.bar = function() { return 3 };" , "inconsistent return type\n" + "found   : number\n" + "required: string" ) ; }
Verify that using @override to declare the signature for an implementing class works correctly
 when the interface is generic.
Verify that using @override to declare the signature for an implementing class works correctly when the interface is generic .