langtools/test/jdk/jshell/ReplaceTest.java
changeset 37644 33cf53901cac
parent 36780 6bf2bef08a91
child 40304 0318f4e75c6d
equal deleted inserted replaced
37643:626e07816dce 37644:33cf53901cac
    95         Snippet musn = methodKey(assertEval("double mu() { return x * 4; }"));
    95         Snippet musn = methodKey(assertEval("double mu() { return x * 4; }"));
    96         assertEval("x == 0;", "true");
    96         assertEval("x == 0;", "true");
    97         assertEval("mu() == 0.0;", "true");
    97         assertEval("mu() == 0.0;", "true");
    98         assertEval("double x = 2.5;",
    98         assertEval("double x = 2.5;",
    99                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
    99                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   100                 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   100                 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET));
   101                 ste(musn, VALID, VALID, false, MAIN_SNIPPET));
       
   102         Collection<MethodSnippet> meths = getState().methods();
   101         Collection<MethodSnippet> meths = getState().methods();
   103         assertEquals(meths.size(), 1);
   102         assertEquals(meths.size(), 1);
   104         assertTrue(musn == meths.iterator().next(), "Identity must not change");
   103         assertTrue(musn == meths.iterator().next(), "Identity must not change");
   105         assertEval("x == 2.5;", "true");
   104         assertEval("x == 2.5;", "true");
   106         assertEval("mu() == 10.0;", "true");  // Auto redefine
   105         assertEval("mu() == 10.0;", "true");  // Auto redefine
   113         assertEval("double c() { return b() * 3; }");
   112         assertEval("double c() { return b() * 3; }");
   114         assertEval("double d() { return c() + 1000; }");
   113         assertEval("double d() { return c() + 1000; }");
   115         assertEval("d();", "1060.0");
   114         assertEval("d();", "1060.0");
   116         assertEval("int a() { return 5; }",
   115         assertEval("int a() { return 5; }",
   117                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   116                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   118                 ste(a, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   117                 ste(a, VALID, OVERWRITTEN, false, MAIN_SNIPPET));
   119                 ste(b, VALID, VALID, false, MAIN_SNIPPET));
       
   120         assertEval("d();", "1150.0");
   118         assertEval("d();", "1150.0");
   121         assertActiveKeys();
   119         assertActiveKeys();
   122     }
   120     }
   123 
   121 
   124     public void testReplaceClassToMethod() {
   122     public void testReplaceClassToMethod() {
   125         Snippet c = classKey(assertEval("class C { int f() { return 7; } }"));
   123         Snippet c = classKey(assertEval("class C { int f() { return 7; } }"));
   126         Snippet m = methodKey(assertEval("int m() { return new C().f(); }"));
   124         Snippet m = methodKey(assertEval("int m() { return new C().f(); }"));
   127         assertEval("m();", "7");
   125         assertEval("m();", "7");
   128         assertEval("class C { int x = 99; int f() { return x; } }",
   126         assertEval("class C { int x = 99; int f() { return x; } }",
   129                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   127                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   130                 ste(c, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   128                 ste(c, VALID, OVERWRITTEN, false, MAIN_SNIPPET));
   131                 ste(m, VALID, VALID, false, MAIN_SNIPPET));
       
   132         assertEval("m();", "99");
   129         assertEval("m();", "99");
   133         assertActiveKeys();
   130         assertActiveKeys();
   134     }
   131     }
   135 
   132 
   136     public void testReplaceVarToClass() {
   133     public void testReplaceVarToClass() {
   138         Snippet c = classKey(assertEval("class A { double a = 4 * x; }"));
   135         Snippet c = classKey(assertEval("class A { double a = 4 * x; }"));
   139         assertEval("x == 0;", "true");
   136         assertEval("x == 0;", "true");
   140         assertEval("new A().a == 0.0;", "true");
   137         assertEval("new A().a == 0.0;", "true");
   141         assertEval("double x = 2.5;",
   138         assertEval("double x = 2.5;",
   142                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   139                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   143                 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   140                 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET));
   144                 ste(c, VALID, VALID, false, MAIN_SNIPPET));
       
   145         Collection<TypeDeclSnippet> classes = getState().types();
   141         Collection<TypeDeclSnippet> classes = getState().types();
   146         assertEquals(classes.size(), 1);
   142         assertEquals(classes.size(), 1);
   147         assertTrue(c == classes.iterator().next(), "Identity must not change");
   143         assertTrue(c == classes.iterator().next(), "Identity must not change");
   148         assertEval("x == 2.5;", "true");
   144         assertEval("x == 2.5;", "true");
   149         assertEval("new A().a == 10.0;", "true");
   145         assertEval("new A().a == 10.0;", "true");
   155         Snippet c = classKey(assertEval("class A { double a = 4 * x(); }"));
   151         Snippet c = classKey(assertEval("class A { double a = 4 * x(); }"));
   156         assertEval("x() == 0;", "true");
   152         assertEval("x() == 0;", "true");
   157         assertEval("new A().a == 0.0;", "true");
   153         assertEval("new A().a == 0.0;", "true");
   158         assertEval("double x() { return 2.5; }",
   154         assertEval("double x() { return 2.5; }",
   159                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   155                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   160                 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   156                 ste(x, VALID, OVERWRITTEN, false, MAIN_SNIPPET));
   161                 ste(c, VALID, VALID, false, MAIN_SNIPPET));
       
   162         assertEval("x();", "2.5");
   157         assertEval("x();", "2.5");
   163         Collection<TypeDeclSnippet> classes = getState().types();
   158         Collection<TypeDeclSnippet> classes = getState().types();
   164         assertEquals(classes.size(), 1);
   159         assertEquals(classes.size(), 1);
   165         assertTrue(c == classes.iterator().next(), "Identity must not change");
   160         assertTrue(c == classes.iterator().next(), "Identity must not change");
   166         assertEval("x() == 2.5;", "true");
   161         assertEval("x() == 2.5;", "true");
   873         String ms1 = "double m(Integer i) { return i + x; }";
   868         String ms1 = "double m(Integer i) { return i + x; }";
   874         String ms2 = "double m(java.lang.Integer i) { return i + x; }";
   869         String ms2 = "double m(java.lang.Integer i) { return i + x; }";
   875         MethodSnippet k1 = methodKey(assertEval(ms1, added(VALID)));
   870         MethodSnippet k1 = methodKey(assertEval(ms1, added(VALID)));
   876         VarSnippet xd = varKey(assertEval(xsd,
   871         VarSnippet xd = varKey(assertEval(xsd,
   877                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   872                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   878                 ste(xi, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   873                 ste(xi, VALID, OVERWRITTEN, false, MAIN_SNIPPET)));
   879                 ste(k1, VALID, VALID, false, MAIN_SNIPPET)));
       
   880         MethodSnippet k2 = methodKey(assertEval(ms2,
   874         MethodSnippet k2 = methodKey(assertEval(ms2,
   881                 ste(MAIN_SNIPPET, VALID, VALID, true, null), //TODO: technically, should be false
   875                 ste(MAIN_SNIPPET, VALID, VALID, true, null), //TODO: technically, should be false
   882                 ste(k1, VALID, OVERWRITTEN, false, MAIN_SNIPPET)));
   876                 ste(k1, VALID, OVERWRITTEN, false, MAIN_SNIPPET)));
   883         VarSnippet xi2 = varKey(assertEval(xsi,
   877         VarSnippet xi2 = varKey(assertEval(xsi,
   884                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   878                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   885                 ste(xd, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   879                 ste(xd, VALID, OVERWRITTEN, false, MAIN_SNIPPET)));
   886                 ste(k2, VALID, VALID, false, MAIN_SNIPPET)));
       
   887         varKey(assertEval(xsd,
   880         varKey(assertEval(xsd,
   888                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   881                 ste(MAIN_SNIPPET, VALID, VALID, true, null),
   889                 ste(xi2, VALID, OVERWRITTEN, false, MAIN_SNIPPET),
   882                 ste(xi2, VALID, OVERWRITTEN, false, MAIN_SNIPPET)));
   890                 ste(k2, VALID, VALID, false, MAIN_SNIPPET)));
       
   891     }
   883     }
   892 }
   884 }