@@ -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
@@ -1623,6 +1624,7 @@ module API {
16231624 class NewNode extends InvokeNode , DataFlow:: NewNode { }
16241625
16251626 /** Provides classes modeling the various edges (labels) in the API graph. */
1627+ overlay [ local]
16261628 module Label {
16271629 /** A label in the API-graph */
16281630 class ApiLabel extends TLabel {
@@ -1661,6 +1663,7 @@ module API {
16611663 * This is to support code patterns where the property name is actually constant,
16621664 * but the property name has been factored into a library.
16631665 */
1666+ overlay [ global]
16641667 private string getAnIndirectPropName ( DataFlow:: PropRef ref ) {
16651668 exists ( DataFlow:: Node pred |
16661669 FlowSteps:: propertyFlowStep ( pred , ref .getPropertyNameExpr ( ) .flow ( ) ) and
@@ -1671,16 +1674,19 @@ module API {
16711674 /**
16721675 * Gets unique result of `getAnIndirectPropName` if there is one.
16731676 */
1677+ overlay [ global]
16741678 private string getIndirectPropName ( DataFlow:: PropRef ref ) {
16751679 result = unique( string s | s = getAnIndirectPropName ( ref ) )
16761680 }
16771681
1682+ overlay [ global]
16781683 pragma [ nomagic]
16791684 private predicate isEnumeratedPropName ( DataFlow:: Node node ) {
16801685 node .getAPredecessor * ( ) instanceof EnumeratedPropName
16811686 }
16821687
16831688 /** Gets the `member` edge label for the given property reference. */
1689+ overlay [ global]
16841690 ApiLabel memberFromRef ( DataFlow:: PropRef pr ) {
16851691 exists ( string pn | pn = pr .getPropertyName ( ) or pn = getIndirectPropName ( pr ) |
16861692 result = member ( pn ) and
@@ -1747,9 +1753,17 @@ module API {
17471753 MkLabelInstance ( ) or
17481754 MkLabelContent ( DataFlow:: Content content ) or
17491755 MkLabelMember ( string name ) {
1750- name instanceof PropertyName
1756+ name instanceof ContentPrivate:: PropertyName
1757+ or
1758+ name = any ( DataFlow:: PropRef pr ) .getPropertyName ( )
1759+ or
1760+ AccessPath:: isAssignedInUniqueFile ( name )
1761+ or
1762+ exists ( AccessPath:: getAnAssignmentTo ( _, name ) )
1763+ or
1764+ name = DataFlow:: PseudoProperties:: arrayLikeElement ( )
17511765 or
1752- exists ( Impl :: MkTypeUse ( _ , name ) )
1766+ name = any ( TypeAccess t ) . getIdentifier ( ) . getName ( )
17531767 } or
17541768 MkLabelParameter ( int i ) {
17551769 i =
0 commit comments