@@ -743,6 +743,7 @@ module API {
743743 private predicate hasTypeUseLocal ( string moduleName , string exportName ) =
744744 forceLocal( hasTypeUse / 2 ) ( moduleName , exportName )
745745
746+ overlay [ local]
746747 cached
747748 newtype TApiNode =
748749 MkRoot ( ) or
@@ -1615,6 +1616,7 @@ module API {
16151616 class NewNode extends InvokeNode , DataFlow:: NewNode { }
16161617
16171618 /** Provides classes modeling the various edges (labels) in the API graph. */
1619+ overlay [ local]
16181620 module Label {
16191621 /** A label in the API-graph */
16201622 class ApiLabel extends TLabel {
@@ -1653,6 +1655,7 @@ module API {
16531655 * This is to support code patterns where the property name is actually constant,
16541656 * but the property name has been factored into a library.
16551657 */
1658+ overlay [ global]
16561659 private string getAnIndirectPropName ( DataFlow:: PropRef ref ) {
16571660 exists ( DataFlow:: Node pred |
16581661 FlowSteps:: propertyFlowStep ( pred , ref .getPropertyNameExpr ( ) .flow ( ) ) and
@@ -1663,16 +1666,19 @@ module API {
16631666 /**
16641667 * Gets unique result of `getAnIndirectPropName` if there is one.
16651668 */
1669+ overlay [ global]
16661670 private string getIndirectPropName ( DataFlow:: PropRef ref ) {
16671671 result = unique( string s | s = getAnIndirectPropName ( ref ) )
16681672 }
16691673
1674+ overlay [ global]
16701675 pragma [ nomagic]
16711676 private predicate isEnumeratedPropName ( DataFlow:: Node node ) {
16721677 node .getAPredecessor * ( ) instanceof EnumeratedPropName
16731678 }
16741679
16751680 /** Gets the `member` edge label for the given property reference. */
1681+ overlay [ global]
16761682 ApiLabel memberFromRef ( DataFlow:: PropRef pr ) {
16771683 exists ( string pn | pn = pr .getPropertyName ( ) or pn = getIndirectPropName ( pr ) |
16781684 result = member ( pn ) and
@@ -1739,9 +1745,17 @@ module API {
17391745 MkLabelInstance ( ) or
17401746 MkLabelContent ( DataFlow:: Content content ) or
17411747 MkLabelMember ( string name ) {
1742- name instanceof PropertyName
1748+ name instanceof ContentPrivate:: PropertyName
1749+ or
1750+ name = any ( DataFlow:: PropRef pr ) .getPropertyName ( )
1751+ or
1752+ AccessPath:: isAssignedInUniqueFile ( name )
1753+ or
1754+ exists ( AccessPath:: getAnAssignmentTo ( _, name ) )
1755+ or
1756+ name = DataFlow:: PseudoProperties:: arrayLikeElement ( )
17431757 or
1744- exists ( Impl :: MkTypeUse ( _ , name ) )
1758+ name = any ( TypeAccess t ) . getIdentifier ( ) . getName ( )
17451759 } or
17461760 MkLabelParameter ( int i ) {
17471761 i =
0 commit comments