From 780092de809d646672960ea197cac8a66ee21cb5 Mon Sep 17 00:00:00 2001 From: Pavel Vojtechovsky Date: Sat, 31 Aug 2019 13:26:30 +0200 Subject: [PATCH] fix(TypeNameScope): order of processing LexicalScope elements of Type (#3085) --- src/main/java/spoon/reflect/visitor/NameScopeImpl.java | 3 +++ src/main/java/spoon/reflect/visitor/TypeNameScope.java | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/spoon/reflect/visitor/NameScopeImpl.java b/src/main/java/spoon/reflect/visitor/NameScopeImpl.java index e9a6a12d364..f55ec058614 100644 --- a/src/main/java/spoon/reflect/visitor/NameScopeImpl.java +++ b/src/main/java/spoon/reflect/visitor/NameScopeImpl.java @@ -68,6 +68,9 @@ public final Optional getParent() { @Override public T forEachElementByName(String name, Function consumer) { T r = forEachByName(elementsByName, name, consumer); + if (r != null) { + return r; + } if (scopeElement instanceof CtNamedElement) { CtNamedElement named = (CtNamedElement) scopeElement; if (name.equals(named.getSimpleName())) { diff --git a/src/main/java/spoon/reflect/visitor/TypeNameScope.java b/src/main/java/spoon/reflect/visitor/TypeNameScope.java index 001549a0525..9690ba17315 100644 --- a/src/main/java/spoon/reflect/visitor/TypeNameScope.java +++ b/src/main/java/spoon/reflect/visitor/TypeNameScope.java @@ -41,9 +41,11 @@ class TypeNameScope extends NameScopeImpl { @Override public T forEachElementByName(String name, Function consumer) { - super.forEachElementByName(name, consumer); + //1st check scope of type members + //2nd check scope of type name itself + T r; assureCacheInitialized(); - T r = forEachByName(fieldsByName, name, consumer); + r = forEachByName(fieldsByName, name, consumer); if (r != null) { return r; } @@ -55,6 +57,10 @@ public T forEachElementByName(String name, Function