@@ -284,7 +284,7 @@ abstract class ImplOrTraitItemNode extends ItemNode {
284284 /** Gets a `Self` path that refers to this item. */
285285 Path getASelfPath ( ) {
286286 isUnqualifiedSelfPath ( result ) and
287- this = unqualifiedPathLookup ( result )
287+ this = unqualifiedPathLookup ( result , _ )
288288 }
289289
290290 /** Gets an associated item belonging to this trait or `impl` block. */
@@ -680,8 +680,8 @@ private ItemNode getASuccessor(ItemNode pred, string name, Namespace ns) {
680680}
681681
682682pragma [ nomagic]
683- private ItemNode unqualifiedPathLookup ( RelevantPath path ) {
684- exists ( ItemNode encl , Namespace ns , string name |
683+ private ItemNode unqualifiedPathLookup ( RelevantPath path , Namespace ns ) {
684+ exists ( ItemNode encl , string name |
685685 unqualifiedPathLookup ( path , name , ns , encl ) and
686686 result = getASuccessor ( encl , name , ns )
687687 )
@@ -691,9 +691,9 @@ pragma[nomagic]
691691private predicate isUnqualifiedSelfPath ( RelevantPath path ) { path .isUnqualified ( "Self" ) }
692692
693693pragma [ nomagic]
694- private ItemNode resolvePath0 ( RelevantPath path ) {
694+ private ItemNode resolvePath0 ( RelevantPath path , Namespace ns ) {
695695 exists ( ItemNode res |
696- res = unqualifiedPathLookup ( path ) and
696+ res = unqualifiedPathLookup ( path , ns ) and
697697 if
698698 not any ( RelevantPath parent ) .getQualifier ( ) = path and
699699 isUnqualifiedSelfPath ( path ) and
@@ -704,10 +704,12 @@ private ItemNode resolvePath0(RelevantPath path) {
704704 or
705705 exists ( ItemNode q , string name |
706706 q = resolvePathQualifier ( path , name ) and
707- result = q .getASuccessor ( name )
707+ result = q .getASuccessor ( name ) and
708+ ns = result .getNamespace ( )
708709 )
709710 or
710- result = resolveUseTreeListItem ( _, _, path )
711+ result = resolveUseTreeListItem ( _, _, path ) and
712+ ns = result .getNamespace ( )
711713}
712714
713715/** Holds if path `p` must be looked up in namespace `n`. */
@@ -743,9 +745,8 @@ private predicate pathUsesNamespace(Path p, Namespace n) {
743745/** Gets the item that `path` resolves to, if any. */
744746cached
745747ItemNode resolvePath ( RelevantPath path ) {
746- result = resolvePath0 ( path ) and
747- (
748- pathUsesNamespace ( path , result .getNamespace ( ) )
748+ exists ( Namespace ns | result = resolvePath0 ( path , ns ) |
749+ pathUsesNamespace ( path , ns )
749750 or
750751 not pathUsesNamespace ( path , _)
751752 )
0 commit comments