test/com/google/javascript/jscomp/IntegrationTest.java
// that removing abstract methods doesn't mess up disambiguation.
that removing abstract methods doesn't mess up disambiguation.
that removing abstract methods doesn ' t mess up disambiguation .
@Test
  public void testDisambiguateProperties2() {
    CompilerOptions options = createCompilerOptions();
    options.setClosurePass(true);
    options.setCheckTypes(true);
    options.setDisambiguateProperties(true);
    options.setRemoveDeadCode(true);
    options.setRemoveAbstractMethods(true);
    test(options,
        lines(
            "/** @const */ var goog = {};",
            "goog.abstractMethod = function() {};",
            "/** @interface */ function I() {}",
            "I.prototype.a = function(x) {};",
            "/** @constructor @implements {I} */ function Foo() {}",
            "/** @override */ Foo.prototype.a = goog.abstractMethod;",
            "/** @constructor @extends Foo */ function Bar() {}",
            "/** @override */ Bar.prototype.a = function(x) {};"),
        lines(
            "var goog={};",
            "goog.abstractMethod = function() {};",
            "function I(){}",
            "I.prototype.a=function(x){};",
            "function Foo(){}",
            "function Bar(){}",
            "Bar.prototype.a=function(x){};"));
  }
@ Test public void testDisambiguateProperties2 ( ) { CompilerOptions options = createCompilerOptions ( ) ; options . setClosurePass ( true ) ; options . setCheckTypes ( true ) ; options . setDisambiguateProperties ( true ) ; options . setRemoveDeadCode ( true ) ; options . setRemoveAbstractMethods ( true ) ; test ( options , lines ( "/** @const */ var goog = {};" , "goog.abstractMethod = function() {};" , "/** @interface */ function I() {}" , "I.prototype.a = function(x) {};" , "/** @constructor @implements {I} */ function Foo() {}" , "/** @override */ Foo.prototype.a = goog.abstractMethod;" , "/** @constructor @extends Foo */ function Bar() {}" , "/** @override */ Bar.prototype.a = function(x) {};" ) , lines ( "var goog={};" , "goog.abstractMethod = function() {};" , "function I(){}" , "I.prototype.a=function(x){};" , "function Foo(){}" , "function Bar(){}" , "Bar.prototype.a=function(x){};" ) ) ; }
that removing abstract methods doesn't mess up disambiguation.
that removing abstract methods doesn ' t mess up disambiguation .