test/com/google/javascript/jscomp/TypeCheckTest.java
/**
   * structural interface matching will also be able to structurally match ordinary function types
   * check if the this types of the ordinary function types match (should match)
   */
structural interface matching will also be able to structurally match ordinary function types
check if the this types of the ordinary function types match (should match)
structural interface matching will also be able to structurally match ordinary function types check if the this types of the ordinary function types match ( should match )
@Test
  public void testStructuralInterfaceMatching31_1() {
    testTypesWithExtraExterns(
        lines(
            EXTERNS_FOR_LONG_MATCHING_CHAIN_RECORD,
            "/** @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 testStructuralInterfaceMatching31_1 ( ) { testTypesWithExtraExterns ( lines ( EXTERNS_FOR_LONG_MATCHING_CHAIN_RECORD , "/** @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;" ) ) ; }
structural interface matching will also be able to structurally match ordinary function types
 check if the this types of the ordinary function types match (should match)
structural interface matching will also be able to structurally match ordinary function types check if the this types of the ordinary function types match ( should match )
// I5 and C5 shares the same type structure