@@ -259,8 +259,7 @@ abstract class ItemNode extends Locatable {
259259 kind .isInternal ( ) and
260260 useOpt .isNone ( )
261261 or
262- externCrateEdge ( this , name , result ) and
263- kind .isInternal ( ) and
262+ externCrateEdge ( this , name , kind , result ) and
264263 useOpt .isNone ( )
265264 or
266265 macroExportEdge ( this , name , result ) and
@@ -276,7 +275,7 @@ abstract class ItemNode extends Locatable {
276275 result = use_ .getASuccessor ( name , kind , _)
277276 )
278277 or
279- exists ( ExternCrateItemNode ec | result = ec .( ItemNode ) . getASuccessor ( name , kind , useOpt ) |
278+ exists ( ExternCrateItemNode ec | result = ec .getASuccessor ( name , kind , useOpt ) |
280279 ec = this .getASuccessor ( _, _, _)
281280 or
282281 // if the extern crate appears in the crate root, then the crate name is also added
@@ -527,7 +526,7 @@ class ExternCrateItemNode extends ItemNode instanceof ExternCrate {
527526
528527 override Namespace getNamespace ( ) { none ( ) }
529528
530- override Visibility getVisibility ( ) { none ( ) }
529+ override Visibility getVisibility ( ) { result = ExternCrate . super . getVisibility ( ) }
531530
532531 override Attr getAnAttr ( ) { result = ExternCrate .super .getAnAttr ( ) }
533532
@@ -2107,8 +2106,11 @@ private predicate useImportEdge(Use use, string name, ItemNode item, SuccessorKi
21072106
21082107/** Holds if `ec` imports `crate` as `name`. */
21092108pragma [ nomagic]
2110- private predicate externCrateEdge ( ExternCrateItemNode ec , string name , CrateItemNode crate ) {
2109+ private predicate externCrateEdge (
2110+ ExternCrateItemNode ec , string name , SuccessorKind kind , CrateItemNode crate
2111+ ) {
21112112 name = ec .getName ( ) and
2113+ ( if ec .isPublic ( ) then kind .isBoth ( ) else kind .isInternal ( ) ) and
21122114 exists ( SourceFile f , string s |
21132115 ec .getFile ( ) = f .getFile ( ) and
21142116 s = ec .( ExternCrate ) .getIdentifier ( ) .getText ( )
0 commit comments