test/com/google/javascript/jscomp/TypeCheckTest.java
/** I7 is declared with @record tag, so it will match */
I7 is declared with @record tag, so it will match
I7 is declared with @record tag so it will match
@Test
  public void testStructuralInterfaceMatching30_3_2() {
    testTypesWithExtraExterns(
        lines(
            "/** @interface */ function I5() {}",
            "/** @constructor @implements {I5} */ function C5() {}",
            "/** @record */",
            "function I7() {}",
            "/** @type{function(this:C5, C5, C5, I5=): I5} */",
            "I7.prototype.getElement = function(){};",
            "",
            "/** @constructor */",
            "function C7() {}",
            "/** @type{function(this:I5, I5, C5=, I5=): C5} */",
            "C7.prototype.getElement = function(){};"),
        lines(
            "/** @type {I7} */",
            "var i7;",
            "/** @type {C7} */",
            "var c7;",
            "",
            "i7 = c7;"));
  }
@ Test public void testStructuralInterfaceMatching30_3_2 ( ) { testTypesWithExtraExterns ( lines ( "/** @interface */ function I5() {}" , "/** @constructor @implements {I5} */ function C5() {}" , "/** @record */" , "function I7() {}" , "/** @type{function(this:C5, C5, C5, I5=): I5} */" , "I7.prototype.getElement = function(){};" , "" , "/** @constructor */" , "function C7() {}" , "/** @type{function(this:I5, I5, C5=, I5=): C5} */" , "C7.prototype.getElement = function(){};" ) , lines ( "/** @type {I7} */" , "var i7;" , "/** @type {C7} */" , "var c7;" , "" , "i7 = c7;" ) ) ; }
I7 is declared with @record tag, so it will match
I7 is declared with @record tag so it will match