@@ -438,6 +438,7 @@ public void testBug572629_ChainFieldHover_ArrayLengthChainsOnVariableThisExpress
438438 removeAllBreakpoints ();
439439 }
440440 }
441+
441442 public void testBug572629_ChainFieldHover_3Chains_ExpectValueFromChainAtMiddle () throws Exception {
442443 sync (() -> TestUtil .waitForJobs (getName (), 1000 , 10000 , ProcessConsole .class ));
443444
@@ -1594,4 +1595,42 @@ public void testResolveSameFieldsInSuperAndSub() throws Exception {
15941595 }
15951596 }
15961597
1598+ public void testResolveFieldOnInheritedMethodFrame () throws Exception {
1599+ sync (() -> TestUtil .waitForJobs (getName (), 1000 , 10000 , ProcessConsole .class ));
1600+
1601+ final String typeName = "Element" ;
1602+ final String expectedMethod = "iterateElements" ;
1603+ final int framesNumber = 2 ;
1604+ final int bpLine1 = 26 ;
1605+
1606+ IJavaBreakpoint bp1 = createLineBreakpoint (bpLine1 , "" , typeName + ".java" , typeName );
1607+ bp1 .setSuspendPolicy (IJavaBreakpoint .SUSPEND_THREAD );
1608+ IFile file = (IFile ) bp1 .getMarker ().getResource ();
1609+ assertEquals (typeName + ".java" , file .getName ());
1610+ IJavaThread thread = null ;
1611+ try {
1612+ thread = launchToBreakpoint (typeName );
1613+ CompilationUnitEditor part = openEditorAndValidateStack (expectedMethod , framesNumber , file , thread );
1614+ JavaDebugHover hover = new JavaDebugHover ();
1615+ hover .setEditor (part );
1616+ int offset = part .getViewer ().getDocument ().get ().indexOf ("element);" );
1617+ String variableName = "element" ;
1618+ IRegion region = new Region (offset , variableName .length ());
1619+ String text = selectAndReveal (part , bpLine1 , region );
1620+ assertEquals (variableName , text );
1621+ IVariable info = (IVariable ) sync (() -> hover .getHoverInfo2 (part .getViewer (), region ));
1622+ assertNotNull (info );
1623+ String hoverVal = info .getValue ().toString ();
1624+ assertTrue (hoverVal .contains ("SubElement" ));
1625+ thread = resume (thread );
1626+ info = (IVariable ) sync (() -> hover .getHoverInfo2 (part .getViewer (), region ));
1627+ assertNotNull (info );
1628+ hoverVal = info .getValue ().toString ();
1629+ assertTrue (hoverVal .contains ("Element" ));
1630+ } finally {
1631+ terminateAndRemove (thread );
1632+ removeAllBreakpoints ();
1633+ }
1634+ }
1635+
15971636}
0 commit comments