@@ -35,8 +35,10 @@ abstract class TypePage extends CustomLineNumbersPage implements UriGettable, Ur
3535 this . entry = entry
3636 }
3737
38+ @Override
3839 protected boolean isHyperlinkEnabled (HyperlinkPage.HyperlinkData hyperlinkData ) { hyperlinkData. reference. enabled }
3940
41+ @Override
4042 protected void openHyperlink (int x , int y , HyperlinkPage.HyperlinkData hyperlinkData ) {
4143 if (hyperlinkData. reference. enabled) {
4244 // Save current position in history
@@ -74,12 +76,13 @@ abstract class TypePage extends CustomLineNumbersPage implements UriGettable, Ur
7476 }
7577
7678 // --- UriGettable --- //
77- URI getUri () { entry. uri }
79+ @Override URI getUri () { entry. uri }
7880
7981 // --- UriOpenable --- //
8082 /**
8183 * @param uri for URI format, @see jd.gui.api.feature.UriOpenable
8284 */
85+ @Override
8386 boolean openUri (URI uri ) {
8487 List<DocumentRange > ranges = []
8588 def fragment = uri. fragment
@@ -289,11 +292,12 @@ abstract class TypePage extends CustomLineNumbersPage implements UriGettable, Ur
289292 }
290293
291294 // --- FocusedTypeGettable --- //
292- String getFocusedTypeName () { typeDeclarations. floorEntry(textArea. caretPosition)?. value?. typeName }
295+ @Override String getFocusedTypeName () { typeDeclarations. floorEntry(textArea. caretPosition)?. value?. typeName }
293296
294- Container.Entry getEntry () { entry }
297+ @Override Container.Entry getEntry () { entry }
295298
296299 // --- IndexesChangeListener --- //
300+ @Override
297301 @CompileStatic
298302 void indexesChanged (Collection<Indexes > collectionOfIndexes ) {
299303 // Update the list of containers
@@ -306,12 +310,18 @@ abstract class TypePage extends CustomLineNumbersPage implements UriGettable, Ur
306310 boolean enabled
307311
308312 if (reference. name) {
309- typeName = searchTypeHavingMember(typeName, reference. name, reference. descriptor, entry)
310- if (typeName) {
311- // Replace type with the real type containing the referenced member
312- reference. typeName = typeName
313- enabled = true
314- } else {
313+ try {
314+ // Recursive search
315+ typeName = searchTypeHavingMember(typeName, reference. name, reference. descriptor, entry)
316+ if (typeName) {
317+ // Replace type with the real type having the referenced member
318+ reference. typeName = typeName
319+ enabled = true
320+ } else {
321+ enabled = false
322+ }
323+ } catch (Error ignore) {
324+ // Catch StackOverflowError or OutOfMemoryError
315325 enabled = false
316326 }
317327 } else {
0 commit comments