test/com/google/javascript/jscomp/TypeCheckTest.java
/**
   * structural interface matching will also be able to structurally match ordinary function types
   * check if the return types of the ordinary function types match (should not match)
   */
structural interface matching will also be able to structurally match ordinary function types
check if the return types of the ordinary function types match (should not match)
structural interface matching will also be able to structurally match ordinary function types check if the return types of the ordinary function types match ( should not match )
@Test
  public void testStructuralInterfaceMatching23() {
    testTypesWithExtraExterns(
        lines(
            EXTERNS_FOR_LONG_NONMATCHING_CHAIN,
            "/** @record */",
            "function I7() {}",
            "/** @type{function(): I5} */",
            "I7.prototype.getElement = function(){};",
            "",
            "/** @constructor */",
            "function C7() {}",
            "/** @type{function(): C5} */",
            "C7.prototype.getElement = function(){};"),
        lines(
            "/** @type {I7} */",
            "var i7;",
            "/** @type {C7} */",
            "var c7;",
            "",
            "i7 = c7;"),
        lines(
            "assignment",
            "found   : (C7|null)",
            "required: (I7|null)"));
  }
@ Test public void testStructuralInterfaceMatching23 ( ) { testTypesWithExtraExterns ( lines ( EXTERNS_FOR_LONG_NONMATCHING_CHAIN , "/** @record */" , "function I7() {}" , "/** @type{function(): I5} */" , "I7.prototype.getElement = function(){};" , "" , "/** @constructor */" , "function C7() {}" , "/** @type{function(): C5} */" , "C7.prototype.getElement = function(){};" ) , lines ( "/** @type {I7} */" , "var i7;" , "/** @type {C7} */" , "var c7;" , "" , "i7 = c7;" ) , lines ( "assignment" , "found   : (C7|null)" , "required: (I7|null)" ) ) ; }
structural interface matching will also be able to structurally match ordinary function types
 check if the return types of the ordinary function types match (should not match)
structural interface matching will also be able to structurally match ordinary function types check if the return types of the ordinary function types match ( should not match )
// the type structure of I5 and C5 are different