langtools/src/jdk.jshell/share/classes/jdk/jshell/Unit.java
changeset 40304 0318f4e75c6d
parent 39807 ba0ff343d241
child 42827 36468b5fa7f4
equal deleted inserted replaced
40303:96a1226aca18 40304:0318f4e75c6d
   412     // Check if there is a method whose user-declared parameter types are
   412     // Check if there is a method whose user-declared parameter types are
   413     // different (and thus has a different snippet) but whose compiled parameter
   413     // different (and thus has a different snippet) but whose compiled parameter
   414     // types are the same. if so, consider it an overwrite replacement.
   414     // types are the same. if so, consider it an overwrite replacement.
   415     private Status overwriteMatchingMethod(MethodSnippet msi) {
   415     private Status overwriteMatchingMethod(MethodSnippet msi) {
   416         String qpt = msi.qualifiedParameterTypes();
   416         String qpt = msi.qualifiedParameterTypes();
       
   417         List<MethodSnippet> matching = state.methods()
       
   418                 .filter(sn ->
       
   419                            sn != null
       
   420                         && sn != msi
       
   421                         && sn.status().isActive()
       
   422                         && sn.name().equals(msi.name())
       
   423                         && qpt.equals(sn.qualifiedParameterTypes()))
       
   424                 .collect(toList());
   417 
   425 
   418         // Look through all methods for a method of the same name, with the
   426         // Look through all methods for a method of the same name, with the
   419         // same computed qualified parameter types
   427         // same computed qualified parameter types
   420         Status overwrittenStatus = null;
   428         Status overwrittenStatus = null;
   421         for (MethodSnippet sn : state.methods()) {
   429         for (MethodSnippet sn : matching) {
   422             if (sn != null && sn != msi && sn.status().isActive() && sn.name().equals(msi.name())) {
   430             overwrittenStatus = sn.status();
   423                 if (qpt.equals(sn.qualifiedParameterTypes())) {
   431             SnippetEvent se = new SnippetEvent(
   424                     overwrittenStatus = sn.status();
   432                     sn, overwrittenStatus, OVERWRITTEN,
   425                     SnippetEvent se = new SnippetEvent(
   433                     false, msi, null, null);
   426                             sn, overwrittenStatus, OVERWRITTEN,
   434             sn.setOverwritten();
   427                             false, msi, null, null);
   435             secondaryEvents.add(se);
   428                     sn.setOverwritten();
   436             state.debug(DBG_EVNT,
   429                     secondaryEvents.add(se);
   437                     "Overwrite event #%d -- key: %s before: %s status: %s sig: %b cause: %s\n",
   430                     state.debug(DBG_EVNT,
   438                     secondaryEvents.size(), se.snippet(), se.previousStatus(),
   431                             "Overwrite event #%d -- key: %s before: %s status: %s sig: %b cause: %s\n",
   439                     se.status(), se.isSignatureChange(), se.causeSnippet());
   432                             secondaryEvents.size(), se.snippet(), se.previousStatus(),
       
   433                             se.status(), se.isSignatureChange(), se.causeSnippet());
       
   434                 }
       
   435             }
       
   436         }
   440         }
   437         return overwrittenStatus;
   441         return overwrittenStatus;
   438     }
   442     }
   439 
   443 
   440     private String computeQualifiedParameterTypes(AnalyzeTask at, MethodSnippet msi) {
   444     private String computeQualifiedParameterTypes(AnalyzeTask at, MethodSnippet msi) {